openvibers/openvibe.mediahub Commits

openvibe-shared v4.15.0 (was v4.14.0) (#147)

OP OpenVibers committed 17 days ago · 1a223d3e39 · 6 files, +14 −12

* openvibe-shared v4.15.0 (was v4.14.0)

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

* Pin 4.15.0: JS budgets 275 / 68.5 (measured 273.2 / 67.9); the Pics FAQ check reads its own section (the footer's More from OpenVibe is a summary too)

Changes

ddiff --git a/README.md b/README.md
iindex e2357fe..716a71b 100644
---- a/README.md
++++ b/README.md
@@@ -525,5 +525,5 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
<!-- versions:start -->
- openvibe-contracts: v0.214.0
- openvibe-sdk: v0.65.0
--- openvibe-shared: v4.14.0
++- openvibe-shared: v4.15.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex ffd27d7..cc5a5d5 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -10,7 +10,7 @@
"packages": [
"openvibe-contracts v0.214.0",
"openvibe-sdk v0.65.0",
-- "openvibe-shared v4.14.0"
++ "openvibe-shared v4.15.0"
],
"summary": "OpenVibe.MediaHub: openvibe.download as a private drive. Account-only uploads stream into OpenVibe.Media (a plain form up to 256 MB, resumable parts beyond). Files are private. Share links expire in 1 hour to 7 days, need a signed-in downloader and can be limited to named accounts (matched by subject). Reports suspend a share for staff. Downloads are always sandboxed attachments. Per-person quotas, and account export and deletion (ADR-033). openvibe.video serves public watch pages and playlists for Live's recordings and clips (no uploads); openvibe.pics is parked and redirects to openvibe.network.",
"works": [
@@@ -44,7 +44,7 @@
],
"contracts": "openvibe-contracts v0.214.0",
"sdk": "openvibe-sdk v0.65.0",
-- "shared": "openvibe-shared v4.14.0",
++ "shared": "openvibe-shared v4.15.0",
"deployment": "openvibe-ovh: unit openvibe-media-hub.service on 127.0.0.1:4990 (git checkout /opt/openvibe.download, env /etc/openvibe/media-hub.env, database ov_media_hub), deployed with `sudo ovhost deploy media-hub`; public at https://openvibe.download since 2026-10-08, https://openvibe.video since 2026-10-12 and https://openvibe.pics since 2026-10-15.",
-- "updated": "2026-10-26"
++ "updated": "2026-10-27"
}
ddiff --git a/package-lock.json b/package-lock.json
iindex d787b8c..eed46c9 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -17,7 +17,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.214.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.65.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.14.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.15.0",
"pg": "^8.23.0",
"sharp": "^0.33.5"
},
@@@ -1379,9 +1379,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "4.14.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.14.0",
-- "integrity": "sha512-ZDGfX/fDOhpAfEvT+TEmj4Uz5spyE+gjqdEfY+iE623MLFQq6SFCj+qhdDxWsDS3X0UESAcf445OxSevbPOV9g==",
++ "version": "4.15.0",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.15.0",
++ "integrity": "sha512-v5iz3ZlLSuT3uYwHjBkR4ryeAxVA2ejmrrYSDAkaaXeYfTb4mIPjwoiM7V3tT4jA+Q2SJu1B+XUL5FkOt34ghg==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/package.json b/package.json
iindex 53cac25..48086c4 100644
---- a/package.json
++++ b/package.json
@@@ -24,7 +24,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.214.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.65.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.14.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.15.0",
"pg": "^8.23.0",
"sharp": "^0.33.5"
},
ddiff --git a/test/perf-budget.test.js b/test/perf-budget.test.js
iindex 7f3edaa..8d0a0da 100644
---- a/test/perf-budget.test.js
++++ b/test/perf-budget.test.js
@@@ -18,8 +18,8 @@ const BUDGETS = {
// FAQPage JSON-LD) and next steps on the network; was 29.7 at 27.5
htmlBrotliKB: 10.4, // 9.4 on 10-22 (the same sections); was 7.7 at 7.1
jsFiles: 5, // 5 (theme-loader, web-runtime, navbar, footer, boost: openvibe-shared/shell)
-- jsRawKB: 269, // 264.3 with Shared 4.13.0 (2026-10-26: account links); 239.8
-- jsBrotliKB: 67, // 65.3 Shared 4.12.0: the light/dark switch, the seasonal mark and the theme pairs; 56.5
++ jsRawKB: 275, // 273.2 with Shared 4.15.0 (2026-10-27: the compact footer opens into the whole one, the pulse line); 264.3 with Shared 4.13.0; 239.8
++ jsBrotliKB: 68.5, // 67.9 Shared 4.15.0; 65.3 Shared 4.12.0: the light/dark switch, the seasonal mark and the theme pairs; 56.5
cssFiles: 2, // 2 (app.css + the cached /shared/showcase.css)
cssRawKB: 28, // 23.6 with Shared 4.13.0 (2026-10-26: account links); measured 16.6 (shared 4.1.8: four steps two by two); was 16.5 at 15.0
cssBrotliKB: 7, // 5.4 with Shared 4.13.0 (2026-10-26: account links); 3.7; 4.2 with the drive previews (10-15)
ddiff --git a/test/pics.test.js b/test/pics.test.js
iindex 6e75721..c50fdd6 100644
---- a/test/pics.test.js
++++ b/test/pics.test.js
@@@ -86,7 +86,9 @@ function multipart(fields, file) {
assert.ok(home.includes('/api/v1/images \\\n -H "Authorization: Bearer $OPENVIBE_TOKEN" \\\n'), 'the curl sample keeps its line breaks');
const ld = [...home.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)].flatMap((m) => [].concat(JSON.parse(m[1])));
const faq = ld.find((x) => x['@type'] === 'FAQPage');
-- const shown = [...home.matchAll(/<summary>([^<]*)<\/summary>/g)].map((m) => m[1].replace(/&#39;/g, "'"));
++ // The questions section's own disclosures: the shared footer's "More from OpenVibe" is one too (openvibe-shared 4.15).
++ const questions = home.slice(home.indexOf('>Questions</h2>'), home.indexOf('>More on OpenVibe</h2>'));
++ const shown = [...questions.matchAll(/<summary>([^<]*)<\/summary>/g)].map((m) => m[1].replace(/&#39;/g, "'"));
assert.deepStrictEqual(faq.mainEntity.map((q) => q.name), shown, 'every question in the FAQPage is on the page');
const map = (await t.get('/sitemap.xml', { headers: PICS })).text;
assert.ok(map.includes('<loc>https://openvibe.pics/</loc>') && map.includes('<loc>https://openvibe.pics/dmca</loc>'), 'the sitemap lists the home and the rules');