openvibers/openvibe.network Commits
GET /release.json and /shared/release-watch.js on every Network page (ADR-016); openvibe-shared v1.1.1
Changes
@@@ -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"@@@ -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"}@@@ -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>@@@ -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 () {@@@ -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>@@@ -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) { /* */ } }@@@ -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 servingconst avatarDir = path.resolve(config.avatars.path);if (!fs.existsSync(avatarDir)) fs.mkdirSync(avatarDir, { recursive: true });
@@ -21,7 +21,7 @@
@@ -21,7 +21,7 @@
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
"multer": "^1.4.5-lts.1",
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.8.0",
"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",
"uuid": "^11.1.0",
"web-push": "^3.6.7"
"web-push": "^3.6.7"
}
}
@@ -1480,9 +1480,9 @@
@@ -1480,9 +1480,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"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",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0"
"jsonwebtoken": "^9.0.0"
@@ -24,7 +24,7 @@
@@ -24,7 +24,7 @@
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
"multer": "^1.4.5-lts.1",
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.8.0",
"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",
"uuid": "^11.1.0",
"web-push": "^3.6.7"
"web-push": "^3.6.7"
}
}
@@ -698,6 +698,7 @@ body{min-height:100%;color:var(--text);font-family:'Inter',-apple-system,BlinkMa
@@ -698,6 +698,7 @@ body{min-height:100%;color:var(--text);font-family:'Inter',-apple-system,BlinkMa
<!-- Shared scripts -->
<!-- Shared scripts -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.umd.min.js"></script>
<script src="/shared/navbar.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/notification-ui.js"></script>
<script src="/shared/account-switcher.js"></script>
<script src="/shared/account-switcher.js"></script>
@@ -183,6 +183,7 @@ footer{border-top:1px solid var(--border);background:var(--bg-secondary)}
@@ -183,6 +183,7 @@ footer{border-top:1px solid var(--border);background:var(--bg-secondary)}
<div id="ov-footer"></div>
<div id="ov-footer"></div>
<script src="/shared/navbar.js"></script>
<script src="/shared/navbar.js"></script>
+<script src="/shared/release-watch.js" defer></script>
<script src="/shared/footer.js"></script>
<script src="/shared/footer.js"></script>
<script>
<script>
(function () {
(function () {
@@ -474,6 +474,7 @@ a.linked-item:hover{background:var(--bg-hover,var(--bg-card));transform:translat
@@ -474,6 +474,7 @@ a.linked-item:hover{background:var(--bg-hover,var(--bg-card));transform:translat
<!-- Shared scripts -->
<!-- Shared scripts -->
<script src="/shared/theme-loader.js"></script>
<script src="/shared/theme-loader.js"></script>
<script src="/shared/navbar.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/notification-ui.js"></script>
<script src="/shared/account-switcher.js"></script>
<script src="/shared/account-switcher.js"></script>
@@ -81,6 +81,7 @@ p{color:var(--text-secondary);font-size:14px;line-height:1.6}
@@ -81,6 +81,7 @@ p{color:var(--text-secondary);font-size:14px;line-height:1.6}
</section>
</section>
</main>
</main>
<script src="/shared/navbar.js"></script>
<script src="/shared/navbar.js"></script>
+<script src="/shared/release-watch.js" defer></script>
<script>
<script>
(function () {
(function () {
if (window.OpenVibeNavbar) { try { OpenVibeNavbar.init({ service: 'network', apiBase: location.origin }); } catch (e) { /* */ } }
if (window.OpenVibeNavbar) { try { OpenVibeNavbar.init({ service: 'network', apiBase: location.origin }); } catch (e) { /* */ } }
@@ -630,6 +630,11 @@ function serveShared(req, res, next) {
@@ -630,6 +630,11 @@ function serveShared(req, res, next) {
app.use('/shared/v1', serveShared);
app.use('/shared/v1', serveShared);
app.use('/shared', 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
// Avatar serving
const avatarDir = path.resolve(config.avatars.path);
const avatarDir = path.resolve(config.avatars.path);
if (!fs.existsSync(avatarDir)) fs.mkdirSync(avatarDir, { recursive: true });
if (!fs.existsSync(avatarDir)) fs.mkdirSync(avatarDir, { recursive: true });