{"service":"live","entries":[{"service":"live","sha":"654ad1ab36e0b675d9fb3dbf9e6cd0546023beb1","short":"654ad1a","subject":"Restore 'shipped' on the home page, /updates and chat deploy notices: since the release layout (C-76) the release worktree is root-owned, so git refused the service user ('dubious ownership') and all three read nothing; their read-only git…","author":"OpenVibers","committed_at":"2026-09-24T06:37:51Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/654ad1ab36e0b675d9fb3dbf9e6cd0546023beb1","post_id":null},{"service":"live","sha":"ce6a7332cf6ed425707fbeba995d5977a3a8dc94","short":"ce6a733","subject":"Kiosk companion and hardware scripts moved to OpenVibe.Extensions (ADR-023, W18): browser-extension/ and hardware/ keep only redirect READMEs pointing at OpenVibe.Extensions kiosk-companion/ and hardware/ (moved unchanged at 9c5aa64)","author":"OpenVibers","committed_at":"2026-09-24T06:36:27Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/ce6a7332cf6ed425707fbeba995d5977a3a8dc94","post_id":null},{"service":"live","sha":"9c5aa64fe8d8acddebf01903da30e5bc3fa557b5","short":"9c5aa64","subject":"Production runs the release layout (C-76 done 2026-09-24 05:51 UTC): deploy from /opt/openvibe.live/current; the old checkout files are stale; release ids come from the directory name; the host inventory runs git for Live as root","author":"OpenVibers","committed_at":"2026-09-24T05:55:44Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/9c5aa64fe8d8acddebf01903da30e5bc3fa557b5","post_id":null},{"service":"live","sha":"f15023a83bf1acc58540afe4ab733cd7e60a7de9","short":"f15023a","subject":"release.json names the release in the release layout: the service user cannot run git in a root-owned release worktree, so the manifest said 0000000 (open tabs could not tell releases apart); RELEASE_COMMIT, else the <time>-<sha> release…","author":"OpenVibers","committed_at":"2026-09-24T05:53:10Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/f15023a83bf1acc58540afe4ab733cd7e60a7de9","post_id":null},{"service":"live","sha":"9f7f36c7d492266f27484c659ed84a7481803345","short":"9f7f36c","subject":"Unit description matches production (no 'Free' copy) in both the in-place and release units","author":"OpenVibers","committed_at":"2026-09-24T05:50:15Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/9f7f36c7d492266f27484c659ed84a7481803345","post_id":null},{"service":"live","sha":"862bc470701aad2942f48ab6409feb8c6d2d424e","short":"862bc47","subject":"CI calls the shared test workflow (Track Q): OpenVibe.Shared test.yml@e8b0caf (install, node --check over server/, scripts/ and public/js/, npm test with the size budgets, openvibe-contracts-check) instead of a copy of those steps","author":"OpenVibers","committed_at":"2026-09-24T05:46:38Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/862bc470701aad2942f48ab6409feb8c6d2d424e","post_id":null},{"service":"live","sha":"e08bbecdb2ebdef57d0da64213deb765e18a94ce","short":"e08bbec","subject":"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)…","author":"OpenVibers","committed_at":"2026-09-24T05:33:18Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/e08bbecdb2ebdef57d0da64213deb765e18a94ce","post_id":null},{"service":"live","sha":"d4ccdfb0ee695be1ed8ec9702eea036cf8885a28","short":"d4ccdfb","subject":"Crawlable pages for the Content and Moments feeds (D44): /content?page=N and /moments?page=N render page N of the cursor feed in the initial HTML (following N-1 cursors, each page cached, 20 deep), self-canonical, with newer/older…","author":"OpenVibers","committed_at":"2026-09-24T04:56:24Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/d4ccdfb0ee695be1ed8ec9702eea036cf8885a28","post_id":null},{"service":"live","sha":"03e38148376f515b93877839759837bcbe94eb02","short":"03e3814","subject":"Home cards say when the AI inferred a category (roadmap 33.4): live stream cards, featured cards and the Star card show 'Gaming · inferred' with a tooltip when the category is the stream's or channel's ai_category, as the channel and…","author":"OpenVibers","committed_at":"2026-09-24T04:56:24Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/03e38148376f515b93877839759837bcbe94eb02","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"ff7c5418e6e2f8502e7804b7fc6a245fd15fac8c","short":"ff7c541","subject":"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…","author":"OpenVibers","committed_at":"2026-09-24T04:39:49Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/ff7c5418e6e2f8502e7804b7fc6a245fd15fac8c","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"b36028851e472d538260ecdda630c6809665a5cd","short":"b360288","subject":"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…","author":"OpenVibers","committed_at":"2026-09-24T04:30:44Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/b36028851e472d538260ecdda630c6809665a5cd","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"cf72bd94d507b9f4fa3fb7260cf436c015cdd767","short":"cf72bd9","subject":"Kiosk omnibar titles through OpenVibe.Tools (platform S9): /api/kiosk/site asks the opengraph tool's run API with Live's service token (tools.tool.run on openvibe.tools; anonymous tier without one) and decodes entities in the title; Live…","author":"OpenVibers","committed_at":"2026-09-24T03:58:31Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/cf72bd94d507b9f4fa3fb7260cf436c015cdd767","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"12c1c11920027b5c511a2916bbe63aae699596e7","short":"12c1c11","subject":"SECURITY.md: how to report a vulnerability (contact@openvibe.network, 7-day reply, scope, supported versions)","author":"OpenVibers","committed_at":"2026-09-24T02:28:11Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/12c1c11920027b5c511a2916bbe63aae699596e7","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"80f42213f3b0e654ec7105de6157e3411fdf7160","short":"80f4221","subject":"Staff scope on streams: an admin may moderate another streamer's slot or stream (edit, end, delete, read status) but never the site owner's, and nobody acts as another streamer: regenerating a stream key, the ingest endpoint, going live on…","author":"OpenVibers","committed_at":"2026-09-24T02:05:38Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/80f42213f3b0e654ec7105de6157e3411fdf7160","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"25c12797fc2a669c93e6e5ed8e2cbb3492a72abd","short":"25c1279","subject":"Merge L1: AI Moments noindex + canonical to the source VOD, AI attribution in the UI, paste canonical handover, server-rendered channel/VOD/clip pages, llms.txt, per-channel AI derivation opt-out, creators above the about block","author":"OpenVibers","committed_at":"2026-09-24T01:57:31Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/25c12797fc2a669c93e6e5ed8e2cbb3492a72abd","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"9721fea47eb6b175f97d1bae9ab5a330175ef9a9","short":"9721fea","subject":"docs/dashboard.md: the AI Moments sub-tab, what My Clips holds, and the channel's 'AI Moments from my streams' switch (what it stops, what stays) and the 'inferred' category marker.","author":"OpenVibers","committed_at":"2026-09-24T01:56:43Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/9721fea47eb6b175f97d1bae9ab5a330175ef9a9","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"b91058fe4bf03031299fba4bfc25e177ab01ec63","short":"b91058f","subject":"Merge L2: restream and RobotStreamer slot-only, anonymous Go Live gate, deterministic loyalty keys, persisted Tips delivery idempotency, internal-key hardening, narrow vibe-coding scope, HoboQuest remnants removed","author":"OpenVibers","committed_at":"2026-09-24T01:52:17Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/b91058fe4bf03031299fba4bfc25e177ab01ec63","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"1240dea5664124b405cc75d3d8fc2ff78c4f6caa","short":"1240dea","subject":"Media requests paid in Vibes on Billing: when Billing never answers (an 'unknown' outcome) the request row is kept out of the queue with charge_state 'unknown' instead of being deleted, so the billing action keyed…","author":"OpenVibers","committed_at":"2026-09-24T01:51:24Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/1240dea5664124b405cc75d3d8fc2ff78c4f6caa","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"411fa858c269b040031a4f356fe51a61e2d3b7b9","short":"411fa85","subject":"Browser smoke: the guest /broadcast gate check ignores session plumbing (a guest's POST /api/auth/refresh) and analytics beacons when it looks for writes; only the page acting counts. Full smoke (signed in with a local token, and as a…","author":"OpenVibers","committed_at":"2026-09-24T01:49:47Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/411fa858c269b040031a4f356fe51a61e2d3b7b9","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"live","sha":"66a2b1b30fb4a733719676b7ccc3471abd4bacdd","short":"66a2b1b","subject":"Follow-ups from running the pages in a browser: the sitemap names channel pages from Live's accounts (Media VOD and clip rows carry user ids, not usernames, so /@user pages were never listed; banned accounts stay out); the channel page…","author":"OpenVibers","committed_at":"2026-09-24T01:48:30Z","deployed_at":"2026-09-24T06:39:08.030Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Live/commit/66a2b1b30fb4a733719676b7ccc3471abd4bacdd","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"}],"next":"MjAyNi0wOS0yNFQwNjozOTowOC4wMzBafDcx","latest_post":{"id":"pst_01M39313D833G8QVPQ9FGEEF5E","title":"Patch notes: 120 changes across 18 sites","url":"https://openvibe.blog/@openvibe/patch-notes-120-changes-across-18-sites","published_at":1790232792495,"entries":120},"posts":[{"id":"pst_01M39313D833G8QVPQ9FGEEF5E","title":"Patch notes: 120 changes across 18 sites","url":"https://openvibe.blog/@openvibe/patch-notes-120-changes-across-18-sites","published_at":1790232792495,"entries":120}]}