openvibers/openvibe.media Commits

Align version pins and declare shield, lineage and paste-route env vars (#13)

OP OpenVibers committed 2 Oct 2026 · fa04eb8ee9 · 3 files, +19 −4

checks run by GitHub CI (test, test-pg) · CI ✓ 3/3 · review SHIP by DeepSeek harness

https://github.com/OpenVibers/OpenVibe.Media/pull/13

Changes

ddiff --git a/.env.example b/.env.example
iindex af815df..1bdb573 100644
---- a/.env.example
++++ b/.env.example
@@@ -29,6 +29,9 @@ MEDIA_DATA_DIR=./data
VOD_PATH=./data/vods
CLIPS_PATH=./data/clips
PASTES_PATH=./data/pastes
++# Where pastes live now (2026-09-22): /p/:slug and /p/:slug/raw 301 there when set. Stored screenshot
++# bytes under PASTES_PATH/screenshots are still served; every write to the paste API answers 410.
++#PASTES_MOVED_TO=https://openvibe.community
THUMBNAILS_PATH=./data/thumbnails
FILES_PATH=./data/files
@@@ -47,6 +50,11 @@ OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000
MEDIA_OWNER_SUBJECT_SYNC=
MEDIA_OWNER_SUBJECT_INTERVAL_MIN=10
++# OpenVibe.Live lineage (server/lineage-client.js): channel owners are resolved through Live's canonical
++# resolver with Media's service token (OV_OAUTH_CLIENT_ID / OV_OAUTH_CLIENT_SECRET, audience
++# openvibe.live, OV_LIVE_INTERNAL_URL) instead of a local username mapping. MEDIA_LINEAGE=off disables it.
++MEDIA_LINEAGE=
++
# ── Tenant (app) seeding ─────────────────────────────────────
# JSON array, upserted into the `apps` table on every boot (api_key is hashed,
# never stored in plaintext). allowed_origins guards browser (user-JWT) calls.
@@@ -87,6 +95,13 @@ MEDIA_R2_SECRET_ACCESS_KEY=
# removes a provider from every class whose requirements its last completed probe failed. Enforce only after the
# production results were read: S3-compatible APIs differ, and If-Range especially.
MEDIA_CAPABILITY_GATE=report
++# Media shield (server/placement/shield.js): hand eligible public reads to the nginx edge cache
++# (X-Accel-Redirect) instead of streaming them from this process, for the comma-separated providers
++# listed. It answers only on MEDIA_SHIELD_HOST (a DNS-only edge name, never through Cloudflare's proxy);
++# MEDIA_SHIELD_REFRESH_URL is the loopback purge listener used to refresh cached slices.
++#MEDIA_SHIELD=b2
++#MEDIA_SHIELD_HOST=edge.openvibe.media
++#MEDIA_SHIELD_REFRESH_URL=http://127.0.0.1:8479
# ── Recording knobs (defaults match the inherited recorder) ──
# VOD_STOP_GRACE_MS=60000
ddiff --git a/README.md b/README.md
iindex 1d4fde9..a158397 100644
---- a/README.md
++++ b/README.md
@@@ -44,8 +44,8 @@ without `DATABASE_URL`, development uses an embedded PGlite database in `data/pg
export and deletion), OpenVibe.Live (`live.lineage.resolve`), OpenVibe.Events (the outbox relay and
the account and revocation subscriptions)
- Backblaze B2 and Cloudflare R2 (S3 API) when configured; `ffmpeg`/`ffprobe` on the host
--- `openvibe-contracts` v0.76.0, `openvibe-sdk` v0.21.2 (tokens, events outbox, per-actor limits),
-- `openvibe-shared` v1.28.0, pinned by release tarball
++- `openvibe-contracts` v0.79.0, `openvibe-sdk` v0.21.2 (tokens, events outbox, per-actor limits),
++ `openvibe-shared` v2.3.1, pinned by release tarball
## Capabilities
@@@ -111,7 +111,7 @@ server/
vod.duration.reconcile (stored vs measured durations, local and B2/R2),
storage.orphans.scan (monthly storage orphan report, service-wide, report only)
client-ip.js trust proxy = loopback; req.ip is the only client address
--(openvibe-shared v1.25.0, openvibe-contracts v0.71.0, openvibe-sdk v0.12.0: pinned release tarballs, installed by npm)
++(openvibe-shared v2.3.1, openvibe-contracts v0.79.0, openvibe-sdk v0.21.2: pinned release tarballs, installed by npm)
scripts/smoke-test.sh end-to-end smoke test (boots a temp instance)
scripts/reconcile-objects.js / object-invariant.js / object-drift-report.js / no-good-copy-report.js object-model operator tools
scripts/media-jobs.js list jobs, run the size-invariant scan (dry run by default), approve/cancel proposals
ddiff --git a/STATUS.json b/STATUS.json
iindex 6791d83..f959e9f 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -6,7 +6,7 @@
"runtime": "node 22, express, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9, ffmpeg",
"port": 4100,
"domain": "openvibe.media",
-- "contracts": "openvibe-contracts v0.76.0",
++ "contracts": "openvibe-contracts v0.79.0",
"capabilities": [
"media.object.upload",
"media.object.read",