openvibers/openvibe.shared Commits

Navbar: Work together (openvibe.chat/work) beside Ask Vibe: start a workspace room where a team and Vibe work together (#111)

OP OpenVibers committed 19 days ago · 9579a13420 · 3 files, +8 −3

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex b8cb96c..0d7cc0c 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -9,7 +9,9 @@ A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).
- **Ask Vibe from every site** (`navbar.js`). The account menu's "Ask Actor" is now **Ask Vibe**: it opens a new chat
with Vibe, OpenVibe's assistant, at `openvibe.chat/vibe`, with the text selected on the page and the page's address
filled in (never sent by itself; OpenVibe.Chat#165). `_ask.askVibeHref` replaces `askActorHref`;
-- `test/navbar-ask-vibe.test.js` replaces `navbar-ask-actor.test.js`.
++ `test/navbar-ask-vibe.test.js` replaces `navbar-ask-actor.test.js`. Beside it, **Work together** starts a workspace
++ room on OpenVibe.Chat (`openvibe.chat/work`): a team and Vibe with a work queue, alerts from other systems and a
++ shared screen (OpenVibe.Chat#163–#168).
- **Richer home pages for every site** (`showcase.js`, `showcase.css`, `docs/home-pages.md`). The owner, 2026-10-25:
"more rich content and different types… shared code so you can make nice home pages across all our different sites…
and other people can reuse too". About 30 sites build their homes from showcase.
ddiff --git a/navbar.js b/navbar.js
iindex 0b0eb0c..b2257a9 100644
---- a/navbar.js
++++ b/navbar.js
@@@ -1509,7 +1509,7 @@
${!isAnon && u.username ? `<a href="https://openvibe.network/@${escapeAttr(u.username)}"><span class="icon">${navIcon('fa-id-card')}</span> My Profile</a>` : ''}
${!isAnon && u.username ? `<a href="https://openvibe.live/@${escapeAttr(u.username)}"><span class="icon">${navIcon('fa-tower-broadcast')}</span> My Channel</a>` : ''}
<a href="https://openvibe.network/my#notifications"><span class="icon">${navIcon('fa-bell')}</span> Notifications</a>
-- ${!isAnon ? `<a href="https://openvibe.chat/vibe" data-ov-ask><span class="icon">${navIcon('fa-brain')}</span> Ask Vibe</a>` : ''}
++ ${!isAnon ? `<a href="https://openvibe.chat/vibe" data-ov-ask><span class="icon">${navIcon('fa-brain')}</span> Ask Vibe</a><a href="https://openvibe.chat/work" data-ov-work><span class="icon">${navIcon('fa-plus')}</span> Work together</a>` : ''}
<div class="sep"></div>`}
<div class="ud-label">Display</div>
<div class="ud-scheme" role="group" aria-label="Light or dark" hidden><button type="button" data-ov-scheme="light" aria-pressed="false"><span class="icon">${navIcon('fa-sun')}</span> Light</button><button type="button" data-ov-scheme="dark" aria-pressed="false"><span class="icon">${navIcon('fa-moon')}</span> Dark</button><button type="button" data-ov-scheme="auto" aria-pressed="false" title="Follow this device's light or dark setting"><span class="icon">${navIcon('fa-circle-half-stroke')}</span> Auto</button></div>
ddiff --git a/test/navbar-ask-vibe.test.js b/test/navbar-ask-vibe.test.js
iindex 9a18329..9777834 100644
---- a/test/navbar-ask-vibe.test.js
++++ b/test/navbar-ask-vibe.test.js
@@@ -1,5 +1,5 @@
'use strict';
--// "Ask Vibe" in the account menu (the OpenVibe Frame's button): signed in only, it opens a new chat with Vibe (openvibe.chat/vibe)
++// "Ask Vibe" and "Work together" in the account menu (the OpenVibe Frame's button): signed in only, it opens a new chat with Vibe (openvibe.chat/vibe)
// with the text selected on the page as the ask and the page as where it came from. The link part runs in plain node;
// the selection part runs in a real headless Chrome (skipped without Chrome or with OV_SKIP_BROWSER=1): text selected,
// then a real press on the avatar, must reach the link even though the press can clear the selection.
@@@ -69,10 +69,13 @@ const server = http.createServer((req, res) => {
await p.goto(`${base}/out`, { maxMs: 5000 });
await p.evaluate(ready);
assert.strictEqual(await p.evaluate(`!!document.querySelector('[data-ov-ask]')`), false, 'signed out: no Ask Vibe');
++ assert.strictEqual(await p.evaluate(`!!document.querySelector('[data-ov-work]')`), false, 'signed out: no Work together');
await p.goto(`${base}/in`, { maxMs: 5000 });
await p.evaluate(ready);
assert.strictEqual(await p.evaluate(`document.querySelector('[data-ov-ask]').textContent.trim()`), 'Ask Vibe');
++ // Work together: a new workspace room on OpenVibe.Chat (a team and Vibe, a work queue, a shared screen).
++ assert.strictEqual(await p.evaluate(`document.querySelector('[data-ov-work]').href`), 'https://openvibe.chat/work');
// Nothing selected: the plain console.
await press();