Skip to content
-
Drop Live's twelve legacy chat tables at boot (007_drop_chat_tables, owner-approved); N-1 fixtures re-recorded from 1d49484e, the release now in production (#34)OpenVibers · 5 Oct 2026
2176be56
-
Live keeps no copy of Chat's twelve chat tables: every use removed, boot no longer creates them, the drop is op_003 (after this release is N-1) (#33)OpenVibers · 5 Oct 2026
1d49484e
-
Delete the chat read mirror's receiver: POST /internal/chat-effects/mirror, delivery.mirror() and every call site; Chat retired the sender in #25 (#32)OpenVibers · 5 Oct 2026
d2379317
-
Deliver chat only through Chat's ingress and drop the bridge outbox (#21)OpenVibers · 4 Oct 2026
c1bd342c
-
Render the Bot robot panel iframe on bound channel pagesOpenVibers · 4 Oct 2026
53e60b11
-
Bind a channel to a Bot robot and expose botembed behind LIVEBOTEMBED (#22)OpenVibers · 4 Oct 2026
587d1c9e
-
Route Live's chat producers through Chat's ingress behind a flagOpenVibers · 4 Oct 2026
14ef3781
-
Plan T2 follow-graph completion in OpenVibe.Live (#14)OpenVibers · 3 Oct 2026
913876f1
-
Live reaches Media with its own service token (plan T4, Media cleanup D8): media-client and the lineage media source send a client-credentials token for audience openvibe.media (media.object.read/list/upload/delete on namespace live), one shared cached client, off under LIVE_DRILL, X-OV-User-Id unchanged; MEDIA_API_KEY is gone from code, docs and tests. test/media-service-token.test.js drives the token path, reuse, no-secret and the retired key never being sent. npm test 153/154, 1 skipped.OpenVibers · 29 Sept 2026
06f752af
-
X-Internal-Key is gone from Live (plan T2, step 3 of the sweep): every internal route takes only a Network service token with the capability it performs (live.avatar.write, live.url_registry.refresh, live.analytics.read, live.chat_mirror.write for Chat's staged-table handoff), loopback only. server/net/internal-key.js and config.internalApiKey are deleted; the proxy rule lives in service-guard.js. Network already sends its token on every call to Live (79a4eea). Tests: the retired key opens nothing (alone or beside a bad token), a token through the public edge is refused, and no server file reads or sends the key. SETUP, README, .env.example and the API docs describe the service token. npm test 151/152, 1 skipped.OpenVibers · 29 Sept 2026
66f590b7
-
README and STATUS.json are current (roadmap WS-U task 3; Contracts scripts/docs-currency.js passes). The README gains Purpose, Owns, Does not own, Depends on, Capabilities (what Live implements and the grants its principal holds), Acceptance, Security and Deploy (ovhost deploy and rollback, release layout, N-1 fixtures). The ownership now says what moved out: chat to Chat, pastes and comments to Community, AI to OpenVibe.AI (no provider calls; transcripts by window), follows to Network. The tagline is 'Open Live Streaming', not 'Free'. STATUS.json is new: stage, contracts and SDK pins, capabilities, deployment and features.OpenVibers · 28 Sept 2026
65b0dc80
-
deploy/scripts/deploy.sh hands over to ovhost deploy live (OpenVibe.Host strategy release-layout; roadmap WS-N task 11). The old script is kept, unchanged, as deploy/scripts/deploy-legacy.sh. The wrapper maps --wait-idle, --restart, --rollback (ovhost rollback live), DRY_RUN=1 (ovhost plan live) and READY_TIMEOUT, and refuses --force, which meant 'discard local tracked changes' here but drops live streams in ovhost. It asks ovhost capabilities live first and runs deploy-legacy.sh with the same arguments, saying why, when ovhost is missing, too old (no capabilities, deploy-api < 1) or the host inventory does not deploy live with release-layout (OVHOST_LEGACY=1 forces it), so a deploy never breaks while the host is cut over. test/deploy-wrapper.test.js covers the mapping and the fallback; test/deploy-sim.test.js now runs deploy-legacy.sh; test/systemd-units.test.js keeps the listener check and the changed-socket restart assertions on deploy-legacy.sh and checks the wrapper only hands over to release-layout, whose socket rule OpenVibe.Host tests. docs/deploy.md, deploy/README.md, README.md.OpenVibers · 27 Sept 2026
f0edbc03
-
Analytics comes from openvibe-shared/analytics (v1.4.0; retires C-80): Live's hand-copied ADR-021 module in server/analytics/ is deleted, server/index.js requires the package (retention: false kept; the jobs.js analytics-prune job still runs retention.pruneRawEvents), scripts/analytics-prune.js is a thin wrapper over openvibe-shared/analytics/prune-cli (default $ANALYTICS_DB, else data/analytics.db; backups are now owner-only), test/analytics-privacy.test.js tests the package. New with v1.4.0: a request with Sec-GPC: 1 or DNT: 1 is not recorded at all (no raw row, visitor hash, session id or rate counter), noted in README and docs/architecture.md; SECURITY_AUDIT.md's analytics row points at the package (roll-ups still synchronous; the prune is 30 days in bounded batches)OpenVibers · 23 Sept 2026
c893c6ca
-
Live consumes Media's outcomes from OpenVibe.Events: POST /internal/media-events takes Live's subscriptions to media.vod.*, media.clip.* and media.storage.* (MEDIA_EVENTS_SECRET, signature v2 only via openvibe-sdk parseDelivery requireV2), Live's tenant only (MEDIA_APP_ID), media.object.uploaded ignored. What Live does with an outcome moved to server/media-proxy/outcomes.js, shared with the direct webhook, and each outcome is applied once whichever copy arrives first: an inbox receipt (consumer live-media-outcomes, key media:<object type>:<object id>:<event id>, Media puts the event id in the webhook body since cbf8410) in the same transaction as Live's writes; recorder/AI/ops-alert side effects run after the commit for the winning copy only. MEDIA_EVENTS_AUTHORITY=webhook (default) | both | events picks the path that acts; under events a webhook with an event_id is acknowledged and dropped, one without still acts. scripts/subscribe-media-events.js creates, lists (--dry-run), disables and re-enables the three subscriptions as Live. docs/architecture.md: the events Live produces and consumes, the transition and the webhook removal steps. Tests: test/media-events.test.js (both paths, each authority, duplicates both ways, tenant/source filters, v2 signatures), test/subscribe-media-events.test.jsOpenVibers · 23 Sept 2026
d2715e5f
-
Live listens on 127.0.0.1:3000 only (0.0.0.0 answered on the public IP, past Cloudflare and nginx); WHIP is advertised on whip.openvibe.live behind Cloudflare and RTMP on DNS-only ingest.openvibe.live (the registry had RTMP on openvibe.live, which Cloudflare does not carry); drop the announced-IP-vs-WHIP-host warningOpenVibers · 23 Sept 2026
047f895f
-
Analytics within ADR-021: no IP, user id or city in raw events; route templates, referer origins and user-agent classes; rotating session ids; raw events pruned after 30 days (nightly job, bounded batches), rollups keptOpenVibers · 23 Sept 2026
0e07aec7
-
openvibe-shared is the pinned OpenVibe.Shared v1.0.0 release: /shared/* serves the package's own browser-file list (now with nav-icons.js and user-card.js) from node_modules, vendor/openvibe-shared is goneOpenVibers · 23 Sept 2026
c9af7800
-
Stream keys no longer public; pages load only what their route needs; safe deploysOpenVibers · 17 Sept 2026
8fa04ccc
-
Docs served on-site at /docs/<name>; WHIP ingest host → ingest.openvibe.liveOpenVibers · 29 Aug 2026
ddb287ac
-
WHIP: open CORS so a backend-less web page can publish; docs/whip.md + browser publisherOpenVibers · 28 Aug 2026
d10a5cf3
-
Initial OpenVibe releaseOpenVibers · 17 Aug 2026
ac0d6a47