openvibers/openvibe.network Commits

GET /release.json and /shared/release-watch.js on every Network page (ADR-016); openvibe-shared v1.1.1

OP OpenVibers committed 23 Sept 2026 · 585e2fd570 · 7 files, +14 −5


Changes

ddiff --git a/package-lock.json b/package-lock.json
iindex 65022cdc..c7b65d29 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -21,7 +21,7 @@
"jsonwebtoken": "^9.0.0",
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.8.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.0.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.1.1",
"uuid": "^11.1.0",
"web-push": "^3.6.7"
}
@@@ -1480,9 +1480,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.0.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.0.0",
-- "integrity": "sha512-JOSH6LbIVzE9oiVWZmUnjZ+Ab8dRQ/SPk9aqBjbJGXp6kBoJA+tj7x1mp6vCusaxGHp17b2r9gmJQXk1TRL/JA==",
++ "version": "1.1.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.1.1",
++ "integrity": "sha512-9RRfNN+5C4lxjjbdrs+i+LbE4ye+zT4jSPbtsmTMU2FHoyhx1Qo8uy9LsN9uBE4GB2BzzDub7v2OuLHK7z0sGw==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/package.json b/package.json
iindex be9f353b..3a8bd72e 100644
---- a/package.json
++++ b/package.json
@@@ -24,7 +24,7 @@
"jsonwebtoken": "^9.0.0",
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.8.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.0.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.1.1",
"uuid": "^11.1.0",
"web-push": "^3.6.7"
}
ddiff --git a/public/admin.html b/public/admin.html
iindex 14ff5cbf..de788d00 100644
---- a/public/admin.html
++++ b/public/admin.html
@@@ -698,6 +698,7 @@ body{min-height:100%;color:var(--text);font-family:'Inter',-apple-system,BlinkMa
<!-- Shared scripts -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js"></script>
<script src="/shared/navbar.js"></script>
++<script src="/shared/release-watch.js" defer></script>
<script src="/shared/notification-ui.js"></script>
<script src="/shared/account-switcher.js"></script>
ddiff --git a/public/index.html b/public/index.html
iindex 233e462e..ae261887 100644
---- a/public/index.html
++++ b/public/index.html
@@@ -183,6 +183,7 @@ footer{border-top:1px solid var(--border);background:var(--bg-secondary)}
<div id="ov-footer"></div>
<script src="/shared/navbar.js"></script>
++<script src="/shared/release-watch.js" defer></script>
<script src="/shared/footer.js"></script>
<script>
(function () {
ddiff --git a/public/my.html b/public/my.html
iindex 702c9838..74edf622 100644
---- a/public/my.html
++++ b/public/my.html
@@@ -474,6 +474,7 @@ a.linked-item:hover{background:var(--bg-hover,var(--bg-card));transform:translat
<!-- Shared scripts -->
<script src="/shared/theme-loader.js"></script>
<script src="/shared/navbar.js"></script>
++<script src="/shared/release-watch.js" defer></script>
<script src="/shared/notification-ui.js"></script>
<script src="/shared/account-switcher.js"></script>
ddiff --git a/public/verify-email.html b/public/verify-email.html
iindex 62b3dc91..0a904533 100644
---- a/public/verify-email.html
++++ b/public/verify-email.html
@@@ -81,6 +81,7 @@ p{color:var(--text-secondary);font-size:14px;line-height:1.6}
</section>
</main>
<script src="/shared/navbar.js"></script>
++<script src="/shared/release-watch.js" defer></script>
<script>
(function () {
if (window.OpenVibeNavbar) { try { OpenVibeNavbar.init({ service: 'network', apiBase: location.origin }); } catch (e) { /* */ } }
ddiff --git a/server/index.js b/server/index.js
iindex d847099f..5307d369 100644
---- a/server/index.js
++++ b/server/index.js
@@@ -630,6 +630,11 @@ function serveShared(req, res, next) {
app.use('/shared/v1', serveShared);
app.use('/shared', serveShared);
++// What this server is running (ADR-016, registry.release-manifest@1); open tabs poll it through
++// /shared/release-watch.js and are prompted, or reloaded when safe, after a deploy.
++const release = require('openvibe-shared/release').createRelease({ service: 'network', root: path.join(__dirname, '..') });
++app.get('/release.json', release.handler);
++
// Avatar serving
const avatarDir = path.resolve(config.avatars.path);
if (!fs.existsSync(avatarDir)) fs.mkdirSync(avatarDir, { recursive: true });