openvibers/openvibe.shared Commits

4.105.1: OpenVibe Connect draws the plug in the launcher (#269)

OP OpenVibers committed 10 days ago · 8261ffe1c9 · 7 files, +25 −6

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 0f5bc82..8bfaa28 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -4,6 +4,12 @@ All notable changes to `openvibe-shared`. Versions follow [semver](https://semve
breaking change to any exported module, browser global or served file name is a new major.
A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).
++## 4.105.1 — 2026-11-02
++
++- **OpenVibe Connect draws the plug in the launcher** (`ov-icons.js` ALIASES `connect: 'plug'`), not the fallback mark.
++ Connect went live with Contracts 0.279.0 (Website Connect v0). `test/site-icons.test.js` checks that every live
++ site's launcher icon is a real glyph.
++
## 4.105.0 — 2026-11-02
- **Eight more solid drawings**, the next by use with a shape to fill: umbrella, parking, medical, drive, skull,
ddiff --git a/README.md b/README.md
iindex a0118ce..bef945b 100644
---- a/README.md
++++ b/README.md
@@@ -2,7 +2,7 @@
> Versioned UI, the OpenVibe Frame (the navbar, footer and "shipped" views every site sits in), SEO, legal and release-client packages every OpenVibe site renders.
--**Status:** alpha, v4.105.0 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed
++**Status:** alpha, v4.105.1 (every release is a tag; see [CHANGELOG.md](CHANGELOG.md)). Every deployed
consumer installs a tagged release and none keeps a vendored copy
([docs/migration-plan.md](docs/migration-plan.md) is done); each repository's `package.json` names
the tag it pins.
ddiff --git a/STATUS.json b/STATUS.json
iindex da2f291..9e6edc5 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -4,7 +4,7 @@
"code": true,
"wave": "W2",
"package": "openvibe-shared",
-- "version": "4.105.0",
++ "version": "4.105.1",
"plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026)",
"deployed": false,
"deployment": "none of its own: a package released as git tags; OpenVibe.Network serves /shared/* from its pinned tag, and a site can serve its own pinned copy (openvibe-shared/serve)",
ddiff --git a/ov-icons.js b/ov-icons.js
iindex c28c06f..e2686b8 100644
---- a/ov-icons.js
++++ b/ov-icons.js
@@@ -109,7 +109,9 @@
const OFFSETS = {"ov":[0,-0.5],"network":[0.56,-0.39],"live":[-0.01,-0.38],"tools":[0,-0.39],"media":[0,-0.39],"games":[0,-0.39],"community":[0,-0.39],"chat":[0,-0.39],"codes":[0,-0.39],"bot":[0,-0.39],"code":[0,-0.39],"blog":[0,-0.39],"wiki":[-0.01,-0.39],"news":[0,-0.39],"reviews":[-0.02,-0.39],"tips":[0,-0.39],"vip":[-0.01,-0.39],"trade":[0,-0.39],"host":[0,-0.39],"deals":[0.19,-0.21],"coupons":[-0.01,-0.39],"stream":[0,-0.39],"video":[-0.01,-0.39],"download":[0,-0.39],"upload":[0,-0.39],"image":[0,-0.39],"audio":[0,-0.38],"pdf":[0.28,-0.39],"docs":[0,-0.39],"text":[-0.01,-0.39],"logo":[-1.25,-0.5],"dns":[0,-0.39],"ip":[0,-0.37],"ssl":[-0.01,-0.39],"ping":[0,-0.39],"whois":[0,-0.39],"search":[0,-0.39],"map":[-0.01,-0.39],"food":[-0.01,-0.39],"gauge":[0,-0.39],"link":[0,-0.39],"shield":[0,-0.33],"plug":[0,-0.39],"work":[0,0.17],"rent":[0,-0.39],"help":[0,-0.39],"quest":[-0.01,-0.39],"inventory":[0,-0.37],"play":[0,-0.39],"drive":[0,-0.39],"services":[-0.01,-0.39],"space":[0,-0.39],"watch":[-0.02,-0.39],"actor":[0,-0.39],"events":[-0.01,-0.39],"ai":[0,-0.39],"run":[-0.01,-0.39],"billing":[0,-0.39],"feeds":[-0.01,-0.39],"pics":[-0.01,-0.39],"homes":[-0.01,-0.39],"website":[0,-0.39],"zone":[-0.01,-0.39],"fund":[-0.01,-0.39],"paste":[0,-0.39],"account":[-0.01,-0.39],"bell":[-0.01,-0.39],"history":[0,-0.39],"theme":[0,-0.39],"check":[-0.01,-0.39],"error":[0,-0.39],"clip":[0.13,-0.39]};
const ALIASES = { yt: 'youtube', net: 'dns', dev: 'code', img: 'image', sound: 'audio', document: 'pdf', pastes: 'paste', openre: 'stream', maps: 'map', user: 'account', notifications: 'bell', 'media-hub': 'drive', mediahub: 'drive', sources: 'feeds', agent: 'actor', jobs: 'work', homes: 'homes', page: 'docs', db: 'zone', database: 'zone', location: 'ip', gamepad: 'games', robot: 'bot', deploy: 'upload', copy: 'paste', activity: 'ping',
// The 2026-10-28 rooms, on the nearest glyph until each has its own (rooms.js): never the fallback mark.
-- domains: 'dns', design: 'theme', today: 'history', report: 'gauge', surf: 'games', casino: 'games', fun: 'quest', meme: 'image', exchange: 'trade', cam: 'video', tours: 'map', vision: 'ai', shoes: 'deals' };
++ domains: 'dns', design: 'theme', today: 'history', report: 'gauge', surf: 'games', casino: 'games', fun: 'quest', meme: 'image', exchange: 'trade', cam: 'video', tours: 'map', vision: 'ai', shoes: 'deals',
++ // OpenVibe Connect (Website Connect v0, 2026-11-02): a port on your machine, on the web.
++ connect: 'plug' };
const registry = Object.create(null);
for (const [k, g] of Object.entries(GLYPHS)) registry[k] = { glyph: g };
ddiff --git a/package-lock.json b/package-lock.json
iindex 643cdcc..49a4c39 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-shared",
-- "version": "4.105.0",
++ "version": "4.105.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-shared",
-- "version": "4.105.0",
++ "version": "4.105.1",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0",
ddiff --git a/package.json b/package.json
iindex c4c1a80..f6dcb99 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-shared",
-- "version": "4.105.0",
++ "version": "4.105.1",
"description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site",
"main": "index.js",
"bin": {
ddiff --git a/test/site-icons.test.js b/test/site-icons.test.js
nnew file mode 100644
iindex 0000000..d3ca554
---- /dev/null
++++ b/test/site-icons.test.js
@@@ -0,0 +1,11 @@
++'use strict';
++// Every live site's launcher icon is a real glyph, never the fallback mark (ov-icons.js ALIASES): the 2026-10-28 rooms
++// borrow the nearest glyph until each has its own, and OpenVibe Connect (2026-11-02) is the plug.
++const assert = require('assert');
++const icons = require('../ov-icons.js');
++
++const fallback = icons.resolve('zz-not-an-icon');
++const sites = ['live', 'network', 'tools', 'space', 'website', 'connect', 'shoes', 'tours', 'cam', 'vision', 'design', 'domains', 'report', 'today', 'casino', 'fun', 'meme', 'exchange', 'surf'];
++sites.forEach((id) => assert.notStrictEqual(icons.resolve(id), fallback, `${id} draws a real glyph`));
++assert.strictEqual(icons.resolve('connect'), 'plug');
++console.log(`site icons: ${sites.length} sites draw a real glyph; Connect is the plug`);