Commits
-
Media pins openvibe-sdk v0.35.1 and drops its PGlite timer workaround: the SDK now unrefs PGlite's alarms itself (#51)OpenVibers · 8 Oct 2026
094d9bf -
openvibe-sdk v0.35.0 (was v0.32.0) (#50)OpenVibers · 8 Oct 2026
57c56fc -
openvibe-contracts v0.112.0 (was v0.107.0) (#49)OpenVibers · 7 Oct 2026
0ae22fb -
openvibe-shared 2.13.0: release notifications connect to openvibe.events (plan T7) (#48)OpenVibers · 7 Oct 2026
b97cb16 -
Media: the resource index (GET /api/v1/resources, media.object) under media.resource.read; contracts v0.107.0 (T13 step 8). (#47)OpenVibers · 7 Oct 2026
446da58 -
Emit Media storage and delivery usage readings to Billing through openvibe-sdk/usage (off by default); pin openvibe-sdk v0.32.0 (#43)OpenVibers · 5 Oct 2026
3e029a1 -
Compose Media's pages through openvibe-shared/shell; add /llms-full.txt and IndexNow; pin openvibe-shared v2.10.0 (#41)OpenVibers · 5 Oct 2026
8d41bca -
Move Media's shutdown onto openvibe-sdk/service gracefulStop with the 70 s drain (#33)OpenVibers · 5 Oct 2026
809ddfc -
Bump openvibe-shared v2.3.1 → v2.5.0 (#16)OpenVibers · 3 Oct 2026
6fc4e52 -
Bump openvibe-shared v1.29.2 → v2.3.1OpenVibers · 1 Oct 2026
14d6846 -
X-Internal-Key retirement, Media's step (plan T2): POST /internal/avatar-ingest takes Network's service token with media.avatar.ingest (server/service-guard.js, loopback only; a Bearer is judged on the token alone, the key still passes without one until Network stops sending it). The owner resolution to Network's resolve-batch sends only Media's token: the key fallback is gone, and a refused token is retried once with a fresh one. openvibe-contracts v0.79.0. Tests: capability, audience, sandbox, a bad Bearer beside the key, the public edge, the key alone; the key is never sent to Network. npm test and test:pg green.OpenVibers · 29 Sept 2026
8364eee -
openvibe-shared v1.29.2 (from its earlier pin): navbar dropdowns are no longer clipped by the links row, changing the theme repaints the page background, bright accents get dark button text (WCAG), the navbar brand is more compact. npm test: 63/64 test files passed, 1 skipped (n-1.test.js: N-1 SQL: skipped (N-1 runs on SOpenVibers · 29 Sept 2026
5224f70 -
openvibe-shared v1.28.1 (from its earlier pin): the account panel keeps its sections' height on phones, the codes mark at rest shows its V, no empty space under the footer on phones. npm test: 63/64 test files passed, 1 skipped (n-1.test.js: N-1 SQL: skipped (N-1 runs on SOpenVibers · 29 Sept 2026
a865d84 -
Media on PostgreSQL (ADR-035, roadmap WS-X2): openvibe-sdk/db, async throughout, jobs and quotas safe under concurrency.OpenVibers · 28 Sept 2026
e3f2239 -
npm test no longer counts a skipped test as passed (roadmap WS-Q task 7; Shared v1.25.0 openvibe-shared/test-runner). The test script was a shell loop that stopped at the first failure and counted nothing, so a test that printed "⚠️ ffmpeg not found: … skipped" and exited 0 was as good as a pass. test/run.js is now the shared runner: every file, one at a time as before (parallel 1), a 300 s timeout per file, and a summary; a file that prints "<label>: skipped (<why>)" is listed with ○ and not counted as passed, and --strict fails on it. The six tests that skipped in free-form words now print that line: jobs-invariant (split/remux execution), clip-cut-job (clip.cut), jobs-previews (preview jobs), duration-reconcile (measurement checks) and vod-duration (real-file finalize check) without ffmpeg, and trust-proxy (direct-caller check) without a non-loopback interface. openvibe-shared is pinned at v1.25.0 (from v1.24.0), named in the README. npm test (Node 22) 64/64 test files passed.OpenVibers · 28 Sept 2026
47b21bd -
Media's readiness has no fake green (roadmap WS-Q task 7, Shared v1.24.0). events_outbox answered ok with { enabled: false } while the relay was off, and an unconfigured remote tier (b2, r2) had no check at all, so nothing showed it was not in use. The relay off is now skipped with the reason (detail { enabled: false } kept), and an unconfigured tier is listed as remote_<name> skipped "not configured"; neither is ever ok, and an optional skip leaves a service whose checks passed ready. Drill mode still lists no remote tier. openvibe-shared is pinned at v1.24.0 (from v1.22.0), named in the README. test/observability.test.js checks both skips (the configured-tier and failure cases are unchanged). npm test passes.OpenVibers · 28 Sept 2026
51283d3 -
Per-actor rate limits at Media's capability boundaries (roadmap WS-R task 4, openvibe-sdk v0.12.0 limits). server/actor-limits.js makes one limiter that counts each caller: the Network token's principal (svc:community, app:app_… of a developer project), the person signed in to /api/v2/me, or an app acting for one of its users (X-OV-User-Id, counted per user). An app's own API key is not counted, since that first-party server speaks for every visitor of its site and limits them itself; a browser with only an upload token is counted by address. Past a limit the route answers 429 problem+json rate_limited with Retry-After before any work, logs one [Limits] line and counts media_rate_limited_total{limit,window}.OpenVibers · 28 Sept 2026
1125a3c -
Media takes part in account export and deletion (roadmap WS-B task 7, ADR-033; openvibe-contracts 0.54.0 -> 0.71.0). POST /internal/events takes network.account.export_requested and network.account.deleted (the boot subscriptions now include both). server/account-data.js applies each once per export or deletion (account_data_events) and answers after Network took the part or confirmation, so a failure is redelivered without erasing twice.OpenVibers · 27 Sept 2026
a207b1d -
N-1 tests (roadmap WS-P task 11): the previous release's clients against this server, and its SQL against this schema. test/n-1.test.js boots this checkout as a real server/index.js in the drill sandbox (MEDIA_DRILL: loopback, no outbound connection, program or background job; test/n-1/preload.js lets writes through) on a database created from the previous release's schema, so Media's migrations run over it, and replays test/fixtures/n-1/client.json inside openvibe-shared's mixed-version matrix (release-compat assertMixedVersion): 64 requests (the openvibe-sdk media and objects clients, anonymously and with an app key as the SDK signs in: files v1, Object API v2 and jobs; the object explorer; and every player URL, link, script and form of the /, /browse, /v, /c, /p, /me and /updates pages that release served), each answered compatibly (any 2xx for a 2xx, the same status otherwise, JSON where there was JSON, redirects to the same place, every response field the client reads with a type it had; a route that answers as an unknown path fails). Then every statement in test/fixtures/n-1/worker.json (331: what that release ran, plus its SQL literals, workers included) must still prepare on the migrated schema, and no old INSERT may miss a new NOT NULL column without a default. Fixtures recorded from b7fbe65, the release in production; refresh after each deploy with `npm run n-1:record [ref]` (a temporary worktree of the release, seeded, booted, replayed). The harness is the file Live, Chat and Community share (test/n-1/harness.js); test/n-1/service.js is Media's part. In npm test, so in CI, no git history or network. Checked by breaking it: renaming /v/:id/transcript.json and /p/:slug/raw fails it.OpenVibers · 26 Sept 2026
44bc3f2 -
Pins: openvibe-shared 1.20.0 -> 1.22.0 (realtime notification badge, off until a site turns it on; the unreachable-host browser check)OpenVibers · 26 Sept 2026
b7fbe65 -
Pins: openvibe-shared 1.18.0 -> 1.20.0 (the update matrix and release manifest 1.2.0: client generations, the shell)OpenVibers · 26 Sept 2026
a11fe37 -
Pins: openvibe-shared 1.17.1 -> 1.18.0 (update telemetry: prompted count, sessions by generation)OpenVibers · 26 Sept 2026
b353594 -
Pins: openvibe-shared 1.16.1 -> 1.17.1 (release notifications)OpenVibers · 26 Sept 2026
7d765ea -
Pins: openvibe-shared 1.16.0 -> 1.16.1 (the OV mark stops animating when idle, hidden or off-screen)OpenVibers · 26 Sept 2026
c110173 -
Pins: openvibe-shared 1.15.0 -> 1.16.0OpenVibers · 26 Sept 2026
8c3c6fa -
Size budgets for the home page (WS-T task 1): openvibe-shared/perf-budget (shared 1.15.0) measures / as the server answers it on a fresh database, no browser, in npm test; budgets a little above the 2026-09-26 measurementOpenVibers · 26 Sept 2026
37accc9 -
Moderation audit (WS-D task 1): placing or releasing a staff hold (moderation, dmca, admin, evidence) announces media.moderation.action (common.moderation-action@1) in the same transaction, the staff subject as actor when named; a creator's own pin, a repeat release and sandbox tenants announce nothing; contracts 0.54.0OpenVibers · 26 Sept 2026
c90ea88 -
Storage-tier policy as revisioned configuration (WS-C task 7): media.storage_tier on openvibe-shared/config 1.14.0: revision 1 imported from media_settings, PUT /tiers/settings is one validated revision (types, 1-100 percentages, interval floors, threshold order; refused changes change nothing, 422), the admin config routes (list, history, rollback), media_settings mirrors the active revision for older releases, the sweep restarts with a new policy; pins shared 1.14.0, contracts 0.52.0OpenVibers · 26 Sept 2026
41b548e -
Pins: openvibe-contracts 0.45.0 → 0.49.0, openvibe-shared 1.12.0 → 1.13.0, openvibe-sdk 0.9.1 → 0.11.0OpenVibers · 25 Sept 2026
91520ee -
Media's own watch pages in OpenVibe.Search (WS-O task 10, Contracts 0.45.0): media.index_document.upserted for exactly the pages the sitemap lists (one WATCH_WHERE rule shared by both: public, finished, playable, made by a person, not Live's, no sandbox), a tombstone once one stops qualifying, sent only when it changed, every 10 minutes through the outbox; Live's VODs and clips stay Live's documentsOpenVibers · 25 Sept 2026
bc7b1a5