Skip to content
openvibers/openvibe.live
Commits
main · package-lock.json
-
Loyalty summary (WS-K task 9): Live writes its private live.loyalty user module on Network: channel points across channels and the top ten by points, the Arena Trash Level and XP (loyalty, never money; contracts 0.56.0). Viewers with points get it without streaming; points change while people watch, so at most one write per half hour except the daily refresh; the scan picks up changed points and Arena XP; a record whose points are gone is zeroed, not left stale. Pins: openvibe-contracts 0.52.0 -> 0.56.0OpenVibers · 26 Sept 2026
bf068778
-
Site settings as revisioned configuration (WS-C task 7): live.site_settings on openvibe-shared/config 1.14.0 journals every admin change to site_settings as a revision with who and why (bulk and single PUT, DELETE), rows written around it are recorded as a sync revision first so nothing is reverted, history with secrets as keyed fingerprints (GET /api/admin/config…), owner-only rollback; readers (db.getSetting) unchanged; job state and the money freeze stay outside; pins shared 1.14.0, contracts 0.52.0OpenVibers · 26 Sept 2026
c7cb6285
-
Pins: openvibe-contracts 0.46.0 → 0.49.0, openvibe-shared 1.12.0 → 1.13.0, openvibe-sdk 0.9.1 → 0.11.0OpenVibers · 25 Sept 2026
ddb620d7
-
Live's staff actions reach the network moderation audit log (ADR-022, WS-D task 1, Contracts 0.46.0): logModerationAction writes live.moderation.action to the outbox in the same transaction as the row (actor = the staff member's subject, target subject when linked); tidying one's own messages, configuring one's own channel or acting on oneself stays local. Browser smoke covers /searchOpenVibers · 25 Sept 2026
cf3e516b
-
VODs and clips in OpenVibe.Search (WS-O task 10, Contracts 0.45.0): Live owns their canonical /vod and /clip pages, so it sends live.index_document type vod and clip (title, channel, category, Live's AI overview and transcript), read from Media, never the frozen tables; re-checked right after a change through /api/vods or /api/clips and when Media announces an item ready or failed, a 5-minute scan of the newest, and a daily refresh that removes what Media stopped listing (never after a partial listing); AI clips and NSFW streams are noindex; private, unlisted, deleted or failed items get one tombstoneOpenVibers · 25 Sept 2026
90641f59
-
Channels in OpenVibe.Search (WS-O task 10, Contracts 0.44.0): each streamer's channel is a Search document sent through the outbox as live.index_document.upserted (name, bio, recent stream titles, category, live, followers; NSFW channels noindex) only when it changed, with a tombstone once a channel is banned; a 5-minute scan of what changed and a daily refreshOpenVibers · 25 Sept 2026
80a6b5a6
-
Live follows the OpenVibe account (WS-B task 2, Contracts 0.43.0): subject_projection kept from Network's network.user.updated (POST /internal/network-events; the subscribe script's --network asks for it), and the linked account follows it: role both ways (a downgrade too), picture, colour, display name and username; an older revision changes nothing, the local owner stays admin, a Network ban never touches Live's own. Live keeps no passwords or emails: createUser refuses a real password hash and never stores an address, the profile route ignores email, the bootstrap admin gets the SSO placeholder instead of a bcrypt hash, the settings page links to the account for email and password; test/identity-columns.test.js is the tripwireOpenVibers · 25 Sept 2026
f7050296
-
Pins: openvibe-sdk 0.7.0 → 0.9.1, openvibe-contracts 0.41.0 → 0.42.0; CI uses the shared workflows at 423fe51, which run the pin-drift check (WS-C task 5)OpenVibers · 25 Sept 2026
6e74ed30
-
User modules (Contracts 0.41.0, WS-B task 9): Live writes live.profile and live.stats to Network (server/auth/module-summaries.js: a 5-minute scan of ended streams and new followers, a daily refresh of the 30-day window, written only when changed); the chat panel's text-to-speech and sound settings follow the person through chat.tts_defaults (/api/chat/tts-settings) like the display onesOpenVibers · 25 Sept 2026
c3c95dba
-
Revocation propagation (WS-B task 4, Contracts 0.39.0): POST /internal/network-events (signature v2, LIVE_EVENTS_SECRET else MEDIA_EVENTS_SECRET) records network.user.token_valid_after per subject, only ever forwards; verifyToken refuses a Network session token issued before its subject's cutoff (reason revoked), so a signed-out device stops working on Live at once. scripts/subscribe-media-events.js --network subscribes to it. test/revocation.test.jsOpenVibers · 24 Sept 2026
a48c5a2a
-
openvibe-shared 1.12.0 (the navbar loads its siblings from this site's own /shared/ copy)OpenVibers · 24 Sept 2026
7b2b2f4c
-
What shipped on Live comes from the network's shared system (openvibe-shared 1.11.1 shipped.js, fed by the network changelog of deployed commits): the hero one-liner, the home Recent Changes (same day groups, same expand button) and /updates (this site or all of OpenVibe, Load more, Patch notes); the footer links this site's log. No 'free'/'$0' copy: the footer tagline and a fallback slogan said 'Free', the slogan prompt asked for it, and generated or stored slogans with it are now dropped. test/shipped-live.test.jsOpenVibers · 24 Sept 2026
a49efd5e
-
VIP first for subscriber perks (W10, proof flow 3): with Billing as the money authority, whether a viewer is subscribed to a channel (channel state, chat and AI perks) is OpenVibe.VIP's entitlement answer through openvibe-sdk/vip (v0.7.0) with Live's service token (vip.entitlement.check); Billing's own answer stands in only when VIP cannot say, and the purchase check still asks Billing. LIVE_VIP_ENTITLEMENTS=off asks Billing only. Inactive while Live is the authority. Test in billing-authority.test.jsOpenVibers · 24 Sept 2026
e08bbecd
-
Staff gates ask the contracts staff map (D05, ADR-022): permissions.can(user, 'staff.<area>.<action>') and requireCap() over openvibe-contracts v0.35.0 (staff-roles.json; issued staff_caps claims win when Network sends them). Every actor role comparison in server/ now names its capability (hardware, streams, assets, site configure, moderation calls/pastes, limits exempt, content view_private), and the role helpers (admin panel, users, secrets, money, bans, logs, force-end, …) answer through the map; /api/auth/me capabilities carry staff_caps. What remains compares a target's rank. Two answers now follow the map: global moderators may see private VODs and clips on stream pages (staff.content.view_private), and only admins skip the per-IP call-socket cap (staff.limits.exempt). test/staff-capabilities.test.js pins helper-map parity for every role and fails on any new raw role checkOpenVibers · 24 Sept 2026
ff7c5418
-
Egress on openvibe-shared 1.6.0: the address policy and connect-time lookup come from openvibe-shared/egress (the rule Events and Tools use; now also refuses 3fff::/20, 5f00::/16, NAT64 64:ff9b:1::/48 and internal names at lookup), Live keeps its redirect-checking fetches and the child-process proxy on top. Shared 1.6.0 also fixes release beacons keyed by the proxy's addressOpenVibers · 24 Sept 2026
b3602885
-
openvibe-shared v1.5.1 (Track R release manifest), openvibe-contracts v0.33.0, openvibe-sdk v0.5.0OpenVibers · 23 Sept 2026
7ae1b24c
-
openvibe-contracts v0.32.0: live.lineage.resolve is written inline in the guard, so the CI contract check enforces it (6 capabilities now); the lineage resolver test requires lineage.resolution@1 and validates every answer; live.stream.started/ended and live.release.deployed payloads are validated against their new contracts (and the started event's channel link is /@<username>). Stale comments saying these were not in the registry are goneOpenVibers · 23 Sept 2026
ca7cc876
-
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
-
openvibe-contracts v0.30.2 (live.follower.read is registered)OpenVibers · 23 Sept 2026
5595de01
-
Deploys are announced as OpenVibe.Events events: the deploy notice queues live.release.deployed (subject release <head sha>; payload service, release, commit, previous, commit_count, commits[] up to 40, deployed_at, notes_url; visibility internal) through Live's outbox in the SAME transaction that records the commits as announced and, with local chat, stores the rolling chat row, so there is never a notice without its event or the other way round; the chat notice itself is unchanged (local row, or OpenVibe.Chat over the bridge). stream-events.js exposes enqueue()/kick() so Live's other events share the one outbox. openvibe-contracts v0.29.0 → v0.30.1 (no contract for this type yet: a live.* contract addition). test/release-events.test.js: envelope valid against event-envelope@1, published, silent without new code, rolled back when the outbox insert fails, bridge path keptOpenVibers · 23 Sept 2026
e73a92d0
-
OpenRe mirror requires Events signature v2 (replay window); openvibe-sdk v0.4.0OpenVibers · 23 Sept 2026
ae075531
-
AI through OpenVibe.AI (Wave 13): with AI_SERVICE=remote, llm.complete and the translation, paste/frame, overview, media, recap and site-copy call sites run OpenVibe.AI workflows (service token, audience openvibe.ai); unset = unchanged; openvibe-contracts v0.29.0OpenVibers · 23 Sept 2026
fa22de52
-
OpenRe.Stream integration (Wave 7): per-slot ingest_authority switch (default live: no behaviour change), OpenRe keys/ingest URL on Go Live, session mirror from openre.session.* events; inert until OPENRE_URL is set; openvibe-contracts v0.16.0OpenVibers · 23 Sept 2026
f0ca18bd
-
POST /internal/tips/deliveries: OpenVibe.Tips announces settled tips in the creator's chat (service token, live.tips_delivery.write); openvibe-contracts v0.15.0OpenVibers · 23 Sept 2026
f11f8097
-
Observability (Track O): loopback-only /metrics with golden signals by route template and live gauges (streams, sockets per server, outbox); truthful /api/ready (db required; SFU, Media, Network optional → degraded); openvibe-shared v1.3.0OpenVibers · 23 Sept 2026
6090d00b
-
Chat extraction, Live side (Wave 6): service-token internal routes for OpenVibe.Chat (chat context, effects, mirror), CHAT_AUTHORITY=chat hands chat to OpenVibe.Chat (off by default: no behaviour change); openvibe-contracts v0.13.0OpenVibers · 23 Sept 2026
e032d782
-
GET /release.json; openvibe-shared v1.2.1 (the navbar loads release-watch.js: open tabs are prompted after a deploy and never reloaded while watching, broadcasting or typing)OpenVibers · 23 Sept 2026
829ac9fb
-
Stream lifecycle as durable events: live.stream.started/ended go to OpenVibe.Events through a transactional outbox (openvibe-sdk 0.2.2); openvibe-contracts v0.8.0OpenVibers · 23 Sept 2026
8a678c89
-
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
-
Pastes can live in OpenVibe.Community: PASTES_AUTHORITY=community routes every paste read and write there with a service tokenOpenVibers · 22 Sept 2026
6be1fd53
More commits