openvibers/openvibe.actor Commits
openvibe-shared v4.186.0 (was v4.183.0) (#405)
Changes
@@@ -266,5 +266,5 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [<!-- versions:start -->- openvibe-contracts: v0.384.0- openvibe-sdk: v0.133.0--- openvibe-shared: v4.183.0++- openvibe-shared: v4.186.0<!-- versions:end -->@@@ -9,11 +9,11 @@"domain": "openvibe.actor","contracts": "openvibe-contracts v0.384.0","sdk": "openvibe-sdk v0.133.0",-- "shared": "openvibe-shared v4.183.0",++ "shared": "openvibe-shared v4.186.0","packages": ["openvibe-contracts v0.384.0","openvibe-sdk v0.133.0",-- "openvibe-shared v4.183.0"++ "openvibe-shared v4.186.0"],"summary": "Public at https://openvibe.actor (sudo ovhost deploy actor; unit openvibe-actor on 127.0.0.1:4950). A task in plain words is classified, routed by openvibe-sdk/placement to the agent system that can do it (the OpenVibe runtime acting through OpenVibe.Search and OpenVibe.Tools, OpenAI's web agent, an open model on OpenVibe's server for private mode), run with its steps streamed live, checked by a model of another family, and delivered as platform.task@1 with its cost to a fraction of a cent and the explanation; a failed agent or check hands it to the next agent. Free tier per person with an operator ceiling.","works": [@@@ -17,7 +17,7 @@"iovalkey": "^0.4.0","openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0","pg": "^8.23.0","sharp": "^0.34.5"},@@@ -1675,9 +1675,9 @@}},"node_modules/openvibe-shared": {-- "version": "4.183.0",-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",-- "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==",++ "version": "4.186.0",++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",++ "integrity": "sha512-wD4net+UjO0a6OG73W+RR1z5MIWtPgj407xLEWphiVWgLTQ4V1r76+DtLOfSf6RfEda/ALizRu1zmxbvuGGZOw==","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0",@@@ -30,7 +30,7 @@"iovalkey": "^0.4.0","openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0","pg": "^8.23.0","sharp": "^0.34.5"},@@@ -110,7 +110,6 @@ ${render(scripts)}<meta name="ov-boost" content="actor@${esc(RELEASE)}"><script src="${ovServe.url('boost.js')}" data-main="#main" defer></script>`,body: `<a class="skip" href="#main">Skip to content</a>--<div id="navbar-mount"></div><noscript><div class="account-bar" role="navigation" aria-label="Account">${render(account)}</div></noscript><main id="main" class="page${o.app ? ' page-app' : ''}">${o.app ? '' : render(crumbs)}@@@ -119,11 +119,14 @@ const cookieJar = (res) => res.headers.getSetCookie().map((c) => c.split(';')[0]assert.notStrictEqual(proxied.status, 200, 'a proxied request is not loopback');});-- await check('public pages are complete without JavaScript (noscript nav, SSR footer)', async () => {++ await check('public pages are complete without JavaScript (server-rendered nav, SSR footer)', async () => {for (const p of ['/', '/agents', '/docs', '/updates']) {const r = await t.get(p);assert.strictEqual(r.status, 200, p);-- assert.match(r.text, /<noscript><nav/);++ // openvibe-shared 4.184.0 moved the bar's links into the first HTML (frame.serverNav, inside++ // #navbar-mount), so the no-JavaScript navigation is that server nav, not a <noscript> block.++ assert.match(r.text, /<div id="navbar-mount"><nav class="openvibe-navbar"[^>]*data-ov-server-nav="true"/, `${p}: the server-rendered navbar is in the first HTML`);++ assert.match(r.text, /<a data-ov-nav-link="true" href="[^"]+">/, `${p}: the bar's links are in the first HTML`);assert.match(r.text, /<footer id="ov-footer"/);assert.match(r.text, /<main id="main"/);}@@@ -19,7 +19,7 @@ const BUDGETS = {htmlBrotliKB: 15.6, // 15.6: measured 15.1 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09jsFiles: 5, // 5 (theme-loader, web-runtime, navbar, footer, boost: openvibe-shared/shell)jsRawKB: 376.7, // 376.7: measured 368.7 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09-- jsBrotliKB: 89.5, // 89.5: measured 87.5 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09++ jsBrotliKB: 89.8, // 89.8: measured 89.7 KB brotli with openvibe-shared 4.186.0 (the mark's Working and Thinking states, the Dock and the menu as one sheet, bare controls), 2026-11-10; 89.5: measured 87.5 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09cssFiles: 5, // 5 with the shared kit.css and room.css (2026-10-29: the home as a taste and a door, 17 → 5.1 phone screens); 2 (actor.css + the cached /shared/showcase.css); 3 with home.css, the home's own sections (10-22)cssRawKB: 128.7, // 128.7: measured 123.7 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09cssBrotliKB: 28.3, // 28.3: measured 27.1 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
@@ -266,5 +266,5 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
@@ -266,5 +266,5 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
<!-- versions:start -->
<!-- versions:start -->
- openvibe-contracts: v0.384.0
- openvibe-contracts: v0.384.0
- openvibe-sdk: v0.133.0
- openvibe-sdk: v0.133.0
-- openvibe-shared: v4.183.0
+- openvibe-shared: v4.186.0
<!-- versions:end -->
<!-- versions:end -->
@@ -9,11 +9,11 @@
@@ -9,11 +9,11 @@
"domain": "openvibe.actor",
"domain": "openvibe.actor",
"contracts": "openvibe-contracts v0.384.0",
"contracts": "openvibe-contracts v0.384.0",
"sdk": "openvibe-sdk v0.133.0",
"sdk": "openvibe-sdk v0.133.0",
- "shared": "openvibe-shared v4.183.0",
+ "shared": "openvibe-shared v4.186.0",
"packages": [
"packages": [
"openvibe-contracts v0.384.0",
"openvibe-contracts v0.384.0",
"openvibe-sdk v0.133.0",
"openvibe-sdk v0.133.0",
- "openvibe-shared v4.183.0"
+ "openvibe-shared v4.186.0"
],
],
"summary": "Public at https://openvibe.actor (sudo ovhost deploy actor; unit openvibe-actor on 127.0.0.1:4950). A task in plain words is classified, routed by openvibe-sdk/placement to the agent system that can do it (the OpenVibe runtime acting through OpenVibe.Search and OpenVibe.Tools, OpenAI's web agent, an open model on OpenVibe's server for private mode), run with its steps streamed live, checked by a model of another family, and delivered as platform.task@1 with its cost to a fraction of a cent and the explanation; a failed agent or check hands it to the next agent. Free tier per person with an operator ceiling.",
"summary": "Public at https://openvibe.actor (sudo ovhost deploy actor; unit openvibe-actor on 127.0.0.1:4950). A task in plain words is classified, routed by openvibe-sdk/placement to the agent system that can do it (the OpenVibe runtime acting through OpenVibe.Search and OpenVibe.Tools, OpenAI's web agent, an open model on OpenVibe's server for private mode), run with its steps streamed live, checked by a model of another family, and delivered as platform.task@1 with its cost to a fraction of a cent and the explanation; a failed agent or check hands it to the next agent. Free tier per person with an operator ceiling.",
"works": [
"works": [
@@ -17,7 +17,7 @@
@@ -17,7 +17,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",
"pg": "^8.23.0",
"pg": "^8.23.0",
"sharp": "^0.34.5"
"sharp": "^0.34.5"
},
},
@@ -1675,9 +1675,9 @@
@@ -1675,9 +1675,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"node_modules/openvibe-shared": {
- "version": "4.183.0",
- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
- "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==",
+ "version": "4.186.0",
+ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",
+ "integrity": "sha512-wD4net+UjO0a6OG73W+RR1z5MIWtPgj407xLEWphiVWgLTQ4V1r76+DtLOfSf6RfEda/ALizRu1zmxbvuGGZOw==",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
@@ -30,7 +30,7 @@
@@ -30,7 +30,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.133.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",
"pg": "^8.23.0",
"pg": "^8.23.0",
"sharp": "^0.34.5"
"sharp": "^0.34.5"
},
},
@@ -110,7 +110,6 @@ ${render(scripts)}
@@ -110,7 +110,6 @@ ${render(scripts)}
<meta name="ov-boost" content="actor@${esc(RELEASE)}">
<meta name="ov-boost" content="actor@${esc(RELEASE)}">
<script src="${ovServe.url('boost.js')}" data-main="#main" defer></script>`,
<script src="${ovServe.url('boost.js')}" data-main="#main" defer></script>`,
body: `<a class="skip" href="#main">Skip to content</a>
body: `<a class="skip" href="#main">Skip to content</a>
-<div id="navbar-mount"></div>
<noscript><div class="account-bar" role="navigation" aria-label="Account">${render(account)}</div></noscript>
<noscript><div class="account-bar" role="navigation" aria-label="Account">${render(account)}</div></noscript>
<main id="main" class="page${o.app ? ' page-app' : ''}">
<main id="main" class="page${o.app ? ' page-app' : ''}">
${o.app ? '' : render(crumbs)}
${o.app ? '' : render(crumbs)}
@@ -119,11 +119,14 @@ const cookieJar = (res) => res.headers.getSetCookie().map((c) => c.split(';')[0]
@@ -119,11 +119,14 @@ const cookieJar = (res) => res.headers.getSetCookie().map((c) => c.split(';')[0]
assert.notStrictEqual(proxied.status, 200, 'a proxied request is not loopback');
assert.notStrictEqual(proxied.status, 200, 'a proxied request is not loopback');
});
});
- await check('public pages are complete without JavaScript (noscript nav, SSR footer)', async () => {
+ await check('public pages are complete without JavaScript (server-rendered nav, SSR footer)', async () => {
for (const p of ['/', '/agents', '/docs', '/updates']) {
for (const p of ['/', '/agents', '/docs', '/updates']) {
const r = await t.get(p);
const r = await t.get(p);
assert.strictEqual(r.status, 200, p);
assert.strictEqual(r.status, 200, p);
- assert.match(r.text, /<noscript><nav/);
+ // openvibe-shared 4.184.0 moved the bar's links into the first HTML (frame.serverNav, inside
+ // #navbar-mount), so the no-JavaScript navigation is that server nav, not a <noscript> block.
+ assert.match(r.text, /<div id="navbar-mount"><nav class="openvibe-navbar"[^>]*data-ov-server-nav="true"/, `${p}: the server-rendered navbar is in the first HTML`);
+ assert.match(r.text, /<a data-ov-nav-link="true" href="[^"]+">/, `${p}: the bar's links are in the first HTML`);
assert.match(r.text, /<footer id="ov-footer"/);
assert.match(r.text, /<footer id="ov-footer"/);
assert.match(r.text, /<main id="main"/);
assert.match(r.text, /<main id="main"/);
}
}
@@ -19,7 +19,7 @@ const BUDGETS = {
@@ -19,7 +19,7 @@ const BUDGETS = {
htmlBrotliKB: 15.6, // 15.6: measured 15.1 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
htmlBrotliKB: 15.6, // 15.6: measured 15.1 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
jsFiles: 5, // 5 (theme-loader, web-runtime, navbar, footer, boost: openvibe-shared/shell)
jsFiles: 5, // 5 (theme-loader, web-runtime, navbar, footer, boost: openvibe-shared/shell)
jsRawKB: 376.7, // 376.7: measured 368.7 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
jsRawKB: 376.7, // 376.7: measured 368.7 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
- jsBrotliKB: 89.5, // 89.5: measured 87.5 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
+ jsBrotliKB: 89.8, // 89.8: measured 89.7 KB brotli with openvibe-shared 4.186.0 (the mark's Working and Thinking states, the Dock and the menu as one sheet, bare controls), 2026-11-10; 89.5: measured 87.5 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
cssFiles: 5, // 5 with the shared kit.css and room.css (2026-10-29: the home as a taste and a door, 17 → 5.1 phone screens); 2 (actor.css + the cached /shared/showcase.css); 3 with home.css, the home's own sections (10-22)
cssFiles: 5, // 5 with the shared kit.css and room.css (2026-10-29: the home as a taste and a door, 17 → 5.1 phone screens); 2 (actor.css + the cached /shared/showcase.css); 3 with home.css, the home's own sections (10-22)
cssRawKB: 128.7, // 128.7: measured 123.7 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
cssRawKB: 128.7, // 128.7: measured 123.7 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
cssBrotliKB: 28.3, // 28.3: measured 27.1 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09
cssBrotliKB: 28.3, // 28.3: measured 27.1 with openvibe-shared 4.163.0, plus room for 4.162.0–4.163.0, 2026-11-09