openvibers/openvibe.live Commits

openvibe-shared v4.13.0 (was v4.12.0) (#367)

OP OpenVibers committed 18 days ago · 4739739a51 · 5 files, +11 −9

* openvibe-shared v4.13.0 (was v4.12.0)

Opened by scripts/pin-bump.js in OpenVibers/OpenVibe.Shared after the v4.13.0 release.

* Shared 4.13.0 pin: seo-discovery reads robots.txt after its content-signals note (and checks it)

Changes

ddiff --git a/README.md b/README.md
iindex 54e915d9..7941e582 100644
---- a/README.md
++++ b/README.md
@@@ -177,5 +177,5 @@ Minimum `.env`: `BASE_URL`, `JWT_SECRET`, `OV_NETWORK_URL`, `OV_NETWORK_INTERNAL
<!-- versions:start -->
- openvibe-contracts: v0.213.0
- openvibe-sdk: v0.64.0
--- openvibe-shared: v4.12.0
++- openvibe-shared: v4.13.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex f4d92e1e..04df9fcc 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -7,7 +7,7 @@
"domain": "openvibe.live (www, ingest, whip)",
"contracts": "openvibe-contracts v0.213.0",
"sdk": "openvibe-sdk v0.64.0",
-- "shared": "openvibe-shared v4.12.0",
++ "shared": "openvibe-shared v4.13.0",
"capabilities": [
"live.chat_context.read",
"live.chat_effects.write",
@@@ -32,5 +32,5 @@
"per-actor limits on API writes; account export and deletion contributions; follows on OpenVibe.Network",
"channel ↔ OpenVibe.Bot robot binding, its dashboard field and the Bot panel iframe on the channel page behind LIVE_BOT_EMBED (off by default; on in production)"
],
-- "updated": "2026-10-25"
++ "updated": "2026-10-26"
}
ddiff --git a/package-lock.json b/package-lock.json
iindex 5db7096e..6841ba6e 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -25,7 +25,7 @@
"onnxruntime-node": "^1.20.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.213.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.64.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.12.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.13.0",
"pg": "^8.23.1",
"sanitize-html": "^2.17.7",
"sdp-transform": "^3.0.0",
@@@ -2688,9 +2688,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "4.12.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.12.0",
-- "integrity": "sha512-k0i63sCPfHtz1KF5MJSI+CGv5VwBf4ISRzxJRQdorkeMKOTtABlAQfiH1uf9kJsd5/Wn7VUTTHlhhOLSX6ZTzw==",
++ "version": "4.13.0",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.13.0",
++ "integrity": "sha512-wvoTn4M1N/cQyO0LSQsuFkj8dIAO0o/wAaRaHsUICWtVQ5WsLXr2n4cwh0367yZBEtpa5yIWyF2Tg0fiOU50mw==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/package.json b/package.json
iindex b8c379a9..4272a01b 100644
---- a/package.json
++++ b/package.json
@@@ -44,7 +44,7 @@
"onnxruntime-node": "^1.20.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.213.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.64.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.12.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.13.0",
"pg": "^8.23.1",
"sanitize-html": "^2.17.7",
"sdp-transform": "^3.0.0",
ddiff --git a/test/seo-discovery.test.js b/test/seo-discovery.test.js
iindex afaf58a2..278c1e9c 100644
---- a/test/seo-discovery.test.js
++++ b/test/seo-discovery.test.js
@@@ -30,7 +30,9 @@ async function check(name, fn) {
const r = await get('/robots.txt');
assert.strictEqual(r.status, 200);
assert.match(r.headers['content-type'], /^text\/plain/);
-- assert.ok(r.text.startsWith('User-agent: *\nAllow: /\n'), r.text.slice(0, 80));
++ // Shared 4.13 opens robots.txt with its content-signals note (a comment and Content-Signal); the rules follow.
++ assert.ok(r.text.replace(/^(?:#[^\n]*\n|Content-Signal:[^\n]*\n|\n)*/, '').startsWith('User-agent: *\nAllow: /\n'), r.text.slice(0, 160));
++ assert.ok(/^Content-Signal: search=yes, ai-input=yes, ai-train=yes$/m.test(r.text), 'search, AI answers and AI training allowed in words');
assert.ok(/^User-agent: GPTBot$/m.test(r.text) && /^User-agent: ClaudeBot$/m.test(r.text));
assert.ok(r.text.includes('Sitemap: https://openvibe.live/sitemap.xml'));
assert.strictEqual(r.headers['cache-control'], 'public, max-age=3600, stale-while-revalidate=3600');