{"id":"pst_01M3QBQRRH5042HFQQC3XBKBRS","url":"https://openvibe.blog/@openvibe/patch-notes-chat-serves-the-features-built-on-the-six-chat-tables","blog":{"id":"blg_01M362MF0EDJ7QHQTRD8A3Q981","handle":"openvibe","title":"The OpenVibe blog","url":"https://openvibe.blog/"},"title":"Patch notes: Chat serves the features built on the six chat tables","summary":"What shipped on OpenVibe on 2026-09-29: 72 changes to OpenVibe.Host, OpenVibe.Live, OpenVibe.Events, OpenVibe.Chat, OpenVibe.Trade, OpenVibe.Deals and 16 more.","body_markdown":"What shipped on OpenVibe on 2026-09-29: 72 changes to OpenVibe.Host, OpenVibe.Live, OpenVibe.Events, OpenVibe.Chat, OpenVibe.Trade, OpenVibe.Deals and 16 more. Every line below is a commit message from the OpenVibers repositories, linked to the change itself.\n\n## Highlights\n\n- **OpenVibe.Chat:** Chat serves the features built on the six chat tables (plan T3 step 1): Live's read API GET /internal/moderation/channels/:id, /users/:id/channels and /channels/:id/emote-count (chat.moderation.read, loopback, service token; answers… ([`0e38083`](https://github.com/OpenVibers/OpenVibe.Chat/commit/0e38083384c699d494bfe1122e1743c9b05ad1d5))\n- **OpenVibe.Chat:** The chat-AI summaries run in Chat (plan T3 step 2): Live's job ported over Chat's own messages and projections (same cadence, selection, prompts, fields and limits), calling OpenVibe.AI with Chat's own token (workflows… ([`adb2ab3`](https://github.com/OpenVibers/OpenVibe.Chat/commit/adb2ab3faafcfa2bc08e8535b1997c3284ab100a))\n- **OpenVibe.Events:** Events on current pins (plan T7, A1 + A2): openvibe-contracts v0.80.0, openvibe-sdk v0.25.1, openvibe-shared v2.2.0 (no removed export was in use; behaviour unchanged); docs/replay-window-rollout.md and docs/capabilities-proposal/ deleted… ([`d42168e`](https://github.com/OpenVibers/OpenVibe.Events/commit/d42168e566dc5b8f43aa8fdd6c2a8f2515bc7687))\n- **OpenRe.Stream:** OpenRe carries JSMPEG (plan T4, transports step 1): one protocol name per transport (rtmp, webrtc, jsmpeg; whip accepted on input as webrtc; worker kinds rtmp-ingest, restream, webrtc, jsmpeg; migration 0002 rewrites stored names), and a… ([`63c9ad0`](https://github.com/OpenVibers/OpenRe.Stream/commit/63c9ad02e013edbd062887491f6c22aaf64f2923))\n- **OpenVibe.Tools:** Every Tools app on openvibe-sdk v0.25.1 and openvibe-shared v2.3.1 (from 0.12.0 and 1.29.2; no removed Shared export was in use): the PostgreSQL port needs openvibe-sdk/db, valkey, the limit store, createPgOutbox and the revocation store.… ([`4a5479b`](https://github.com/OpenVibers/OpenVibe.Tools/commit/4a5479b35ca3468a1acf3f891b319733f7a25c18))\n- **OpenVibe.Community:** Community is the only paste authority, moves between pages without a reload, and tells search engines when a page changes (plans T10 J6 and T11). The PASTES_AUTHORITY=live path is gone: the Live paste proxy (server/pastes/proxy.js), the… ([`c4b171a`](https://github.com/OpenVibers/OpenVibe.Community/commit/c4b171a75ccd19daa10e74d401176b4a262a37a1))\n- **OpenVibe.Deals:** Deals on the Publishing 1.1.0 chassis (plan T9 J4): the Sources client, change cursor and pull loop, signed event consumer, normalisers and publication glue come from openvibe-publishing/ingest and /publication; Deals keeps its domain half… ([`c56acd8`](https://github.com/OpenVibers/OpenVibe.Deals/commit/c56acd8b35f7c0caed7481fa17639651b8a60d11))\n- **OpenVibe.News:** News on the Publishing 1.1.0 chassis (plan T9 J2) with IndexNow and a CI performance budget (plan T11 decision 4): the Sources client, change cursor and pull loop, signed event consumer and normalisers come from openvibe-publishing/ingest… ([`99e3641`](https://github.com/OpenVibers/OpenVibe.News/commit/99e3641036d4652e30d674a2ac174e1f80e32e8f))\n\n## OpenVibe.Host\n\n[openvibe.host](https://openvibe.host) · [repository](https://github.com/OpenVibers/OpenVibe.Host)\n\n- Compatibility register: C-82 (OpenVibe.Realtime) is closed with nothing to migrate: the repository never carried code, its Contracts manifest was removed in Contracts v0.78.0, the repository is archived as ADR-005's decision record, and… ([`93971d2`](https://github.com/OpenVibers/OpenVibe.Host/commit/93971d2ecfa3bcb72954d9c33bb80e47899f7ba6))\n- Compatibility register: the shared internal key is retired (C-50 to C-59 closed in one sweep, plan T2): Network, Live, Media, Tools and Shared on service tokens with per-route capabilities (Contracts v0.79.0), INTERNAL_API_KEY gone from… ([`6547316`](https://github.com/OpenVibers/OpenVibe.Host/commit/6547316da4dfb13b84c9a055b5a9843f7bf73de3))\n- Compatibility register: C-89 closed. The SQLite files of the 19 services on PostgreSQL (and older pre-migration backups, Billing's stale Live snapshot) are archived off-host (ovhost archive 20260929-124813, 44 files, restore verified) and… ([`9feaac5`](https://github.com/OpenVibers/OpenVibe.Host/commit/9feaac550cbeb8441d594a1c598c27b9259c23d7))\n- Host on the service kit (plan T1): sign-in is openvibe-sdk/sso createSsoClient (state + PKCE S256, server-side exchange, next limited to this site and the Network), service tokens are checked by openvibe-sdk/auth verifyServiceToken (the… ([`4030fdc`](https://github.com/OpenVibers/OpenVibe.Host/commit/4030fdc12a58bde6e43bf6e139f202a4a331c1ca))\n- Host moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`92e4727`](https://github.com/OpenVibers/OpenVibe.Host/commit/92e47274491591aa354c1f140f701a8d5267b3a9))\n- Host tells search engines when a hosted site changes (plan T11, IndexNow): with INDEXNOW_KEY set, a production site's deploy, rollback, domain change or removal pings the engines for that site (its root and sitemap); sandbox sites never… ([`bf33758`](https://github.com/OpenVibers/OpenVibe.Host/commit/bf33758d958d6d910cdd3904ee73bbf8edd0ff7b))\n- Host: certificate lifecycle, per-site config, tenant sitemaps and preview deploys (plan T12 J1, J3, J4, J6; behind the loopback service until the launch). ([`4cbdf05`](https://github.com/OpenVibers/OpenVibe.Host/commit/4cbdf05650d577205e53560970c818826dd68398))\n- Host on openvibe-contracts v0.83.0, which releases host.site.config: the local 'proposed capability' path and docs/capabilities-proposal/ plus the service manifest proposal are gone; capabilities are checked by the library alone, and the… ([`dee29c4`](https://github.com/OpenVibers/OpenVibe.Host/commit/dee29c461c8b52efcfd46987d8945e0eec7fb023))\n\n## OpenVibe.Live\n\n[openvibe.live](https://openvibe.live) · [repository](https://github.com/OpenVibers/OpenVibe.Live)\n\n- N-1 fixtures re-recorded from 6e7ed60, the release now in production (npm run n-1:record). ([`97b1588`](https://github.com/OpenVibers/OpenVibe.Live/commit/97b15888034e4e97a0a4b1b0ff57711559b2ca8b))\n- Stream thumbnails may be embedded by other OpenVibe sites (Cross-Origin-Resource-Policy: cross-origin on /api/thumbnails): the network's front door shows who is live with their current frame. Everything else keeps helmet's same-origin… ([`971b3cd`](https://github.com/OpenVibers/OpenVibe.Live/commit/971b3cd0e726d70c245d5043b75ec82563df723d))\n- 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… ([`06f752a`](https://github.com/OpenVibers/OpenVibe.Live/commit/06f752afdff43bc2d85bfd35ea9caa673f1637fb))\n- Live reads the six chat tables from Chat (plan T3 step 3; Chat has been their writer since 14:46 UTC): server/chat/moderation-client.js asks Chat's internal read API (chat.moderation.read, service token, 30 s cache, a failure answers 'not… ([`8cead36`](https://github.com/OpenVibers/OpenVibe.Live/commit/8cead3637816b496cbd5657753a8ca8e8555a1e8))\n- N-1 fixtures re-recorded from 8cead36, the release now in production (npm run n-1:record). ([`50eab3b`](https://github.com/OpenVibers/OpenVibe.Live/commit/50eab3bd6c1b72c994bbeb6f7736ffa53854fe7c))\n- Live's T3 N+1 release: the staged-table machinery, Live's chat-AI job and the old emote and channel-moderation routes are deleted (plan T3 step 5; OpenVibe.Chat has written the six tables since 14:46 UTC and serves their APIs). ([`8654ef6`](https://github.com/OpenVibers/OpenVibe.Live/commit/8654ef6b86143d4117ff010ce19aa0124a6bcd57))\n- N-1 fixtures re-recorded from 8654ef6, the release now in production (npm run n-1:record). ([`3bb2976`](https://github.com/OpenVibers/OpenVibe.Live/commit/3bb297694fb80123b90418eaf780def4d20a34ec))\n- Live T3 N+2: Live's copies of seven chat tables are dropped, and robot commands from chat pass the control gate. ([`fb3957f`](https://github.com/OpenVibers/OpenVibe.Live/commit/fb3957f3ca2b54b65f3e51aa70eff606a47c5928))\n\n## OpenVibe.Events\n\n[events.openvibe.network](https://events.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Events)\n\n- Events on current pins (plan T7, A1 + A2): openvibe-contracts v0.80.0, openvibe-sdk v0.25.1, openvibe-shared v2.2.0 (no removed export was in use; behaviour unchanged); docs/replay-window-rollout.md and docs/capabilities-proposal/ deleted… ([`d42168e`](https://github.com/OpenVibers/OpenVibe.Events/commit/d42168e566dc5b8f43aa8fdd6c2a8f2515bc7687))\n- Deliveries are claimed with a database lease (plan T7, ADR-042 decision 3): the claim locks the subscription rows FOR UPDATE SKIP LOCKED and leases each one's next due delivery (lease_owner, lease_until; migration 0002, which also adds… ([`f7f592b`](https://github.com/OpenVibers/OpenVibe.Events/commit/f7f592b93891640adc462bfaad88143c4e734cdf))\n- One inbox (plan T7, ADR-042 decision 9): lib/client.js re-exports openvibe-sdk's PostgreSQL outbox and inbox (createPgOutbox, createPgInbox, outboxSchema, inboxSchema) and its own SQLite copies are gone, with better-sqlite3; the README… ([`9b8b2b6`](https://github.com/OpenVibers/OpenVibe.Events/commit/9b8b2b61351e078af54acebf39bd2d4242a27d8d))\n- Opaque cursors beside the global seq (plan T7, ADR-042 decision 7; openvibe-contracts v0.81.0): every answer that carries a seq also carries its cursor (publish results, pulls with next_cursor, single events, checkpoints with epoch and… ([`2863954`](https://github.com/OpenVibers/OpenVibe.Events/commit/2863954778b3144532ef2f86e835ddef0d12cbc6))\n- Delivery policies and per-key ordering (plan T7, ADR-042 decisions 1 and 4): server/fabric/policy.js resolves an event type's events.delivery-policy@1 (the most specific delivery_policies pattern, else the default: domain, durability… ([`351f4e9`](https://github.com/OpenVibers/OpenVibe.Events/commit/351f4e9ec04f092a238627876309ce4db4a3240e))\n- Carriers, the planner and explain (plan T7, ADR-042 decisions 2 and 5): pg-v1 (the poll, every class) and valkey-v1 (QUEUE: a Valkey stream per carrier class through openvibe-sdk/queue, whose consumers take a delivery with a targeted… ([`d705349`](https://github.com/OpenVibers/OpenVibe.Events/commit/d705349ad1a703ad3e9528a67628fc4d3389db42))\n\n## OpenVibe.Chat\n\n[openvibe.chat](https://openvibe.chat) · [repository](https://github.com/OpenVibers/OpenVibe.Chat)\n\n- Chat serves the features built on the six chat tables (plan T3 step 1): Live's read API GET /internal/moderation/channels/:id, /users/:id/channels and /channels/:id/emote-count (chat.moderation.read, loopback, service token; answers… ([`0e38083`](https://github.com/OpenVibers/OpenVibe.Chat/commit/0e38083384c699d494bfe1122e1743c9b05ad1d5))\n- The chat-AI summaries run in Chat (plan T3 step 2): Live's job ported over Chat's own messages and projections (same cadence, selection, prompts, fields and limits), calling OpenVibe.AI with Chat's own token (workflows… ([`adb2ab3`](https://github.com/OpenVibers/OpenVibe.Chat/commit/adb2ab3faafcfa2bc08e8535b1997c3284ab100a))\n- Chat drops the staged-table machinery (plan T3 step 4; Chat has written all six tables since 2026-09-29 14:46 UTC): STAGED_TABLES/KEYS, the authority cache and checks, applyStagedChanges/sliceHash/stagedSlice, the staged mirror triggers… ([`f7bf6a6`](https://github.com/OpenVibers/OpenVibe.Chat/commit/f7bf6a6c3b055e5ff08a1da9b8687e4978d90127))\n- openvibe.live's /api/emotes goes to Chat (plan T3): Chat has owned the emotes table since 2026-09-29 14:46 UTC and serves the emote API with Live's paths, shapes and limits; POST /api/emotes (upload) and /api/emotes/* get Live's /api/… ([`04d2625`](https://github.com/OpenVibers/OpenVibe.Chat/commit/04d2625d98d26fc3b7a55f7a3996e42a1ad6e4d4))\n- Chat drops table_authority (plan T3): the previous release (04d2625, now the N-1 fixture, re-recorded) no longer reads it, so it goes from existing databases at boot and from schema.sql. npm test 42/42. ([`c90745a`](https://github.com/OpenVibers/OpenVibe.Chat/commit/c90745a942ffa373a5607b17a923fca93c0cec97))\n\n## OpenVibe.Trade\n\n[openvibe.trade](https://openvibe.trade) · [repository](https://github.com/OpenVibers/OpenVibe.Trade)\n\n- A regression test pins nested transactions: an inner store.tx that throws rolls back only its own writes while the outer one commits, and an outer throw rolls back everything (plan T0; the SDK makes an inner tx a savepoint). Built on a… ([`211ed12`](https://github.com/OpenVibers/OpenVibe.Trade/commit/211ed1213e1f7ad20dbe74711a1012d3bd4d24ec))\n- Trade on the service kit (plan T1): sign-in is openvibe-sdk/sso createSsoClient (state + PKCE S256, server-side exchange, next limited to this site and the Network), service tokens are checked by openvibe-sdk/auth verifyServiceToken (the… ([`72f807b`](https://github.com/OpenVibers/OpenVibe.Trade/commit/72f807b94f934e6ff6753ab2a84b64453b499d96))\n- Trade moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`a7c11cd`](https://github.com/OpenVibers/OpenVibe.Trade/commit/a7c11cd8bd985c3a83ca0091bb2f49efc018df86))\n- Trade tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable page appearing, changing or going away pings the engines (its path and the sitemap); drafts… ([`6b255e5`](https://github.com/OpenVibers/OpenVibe.Trade/commit/6b255e58e00032136d0c2a44575dfc5270974efb))\n- Trade on the Publishing 1.1.0 chassis (plan T9 J6): the Sources client, change cursor and pull loop, signed event consumer, normalisers, freshness verdict and Search publication glue come from openvibe-publishing/ingest and /publication… ([`e0fffe7`](https://github.com/OpenVibers/OpenVibe.Trade/commit/e0fffe7e97df79735e74fa667183bf6b475b7215))\n\n## OpenVibe.Deals\n\n[openvibe.deals](https://openvibe.deals) · [repository](https://github.com/OpenVibers/OpenVibe.Deals)\n\n- README names openvibe-sdk v0.25.1, the pinned release. ([`3c57d05`](https://github.com/OpenVibers/OpenVibe.Deals/commit/3c57d05ea249d6ecdb43859fdb4a3e9360e314c2))\n- Deals moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`2bcad35`](https://github.com/OpenVibers/OpenVibe.Deals/commit/2bcad35cd46103c61c0ceb6fd3f989684a258628))\n- Deals tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable deal or product page appearing, changing or going away pings the engines (its path and the… ([`3ed88be`](https://github.com/OpenVibers/OpenVibe.Deals/commit/3ed88be2d22fe44976e38524b2fc224e66ba696b))\n- Deals on the Publishing 1.1.0 chassis (plan T9 J4): the Sources client, change cursor and pull loop, signed event consumer, normalisers and publication glue come from openvibe-publishing/ingest and /publication; Deals keeps its domain half… ([`c56acd8`](https://github.com/OpenVibers/OpenVibe.Deals/commit/c56acd8b35f7c0caed7481fa17639651b8a60d11))\n\n## OpenVibe.AI\n\n[ai.openvibe.network](https://ai.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.AI)\n\n- AI phase 0 of the provider router (plan T6): every finished attempt rolls up into provider_stats_daily (requests, ok, errors, tokens, cost, a fixed-bucket latency histogram with p50/p95) and moves the route's placement_state EWMA (latency… ([`2ac514b`](https://github.com/OpenVibers/OpenVibe.AI/commit/2ac514be82d0bf2b82f57beda63591777da25eaf))\n- chat.global and chat.profile workflows under Chat's own namespace (plan T3): OpenVibe.Chat runs the chat summaries now, with its own token (ai.run.* on chat.*), so it never needs Live's namespace. Same templates, schemas and… ([`ad7be2a`](https://github.com/OpenVibers/OpenVibe.AI/commit/ad7be2aa9f56ee0f6acecd1590e7fd641ae0bb85))\n- Capability pools placed by the SDK planner, with explain on every run (plan T6 phase 1; openvibe-sdk v0.25.2): a route may name a capability instead of a fixed primary and fallbacks, and the router asks openvibe-sdk/placement for the order… ([`5a418a5`](https://github.com/OpenVibers/OpenVibe.AI/commit/5a418a5904e31fa5b38d7f74cc66bd76dd4f9cc0))\n\n## OpenVibe.Blog\n\n[openvibe.blog](https://openvibe.blog) · [repository](https://github.com/OpenVibers/OpenVibe.Blog)\n\n- Blog moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`12380d2`](https://github.com/OpenVibers/OpenVibe.Blog/commit/12380d2077d6377ce8b0b9971c6c5bed72f6053f))\n- Blog tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable page appearing, changing or going away pings the engines (its path and the sitemap); drafts… ([`9d00e2b`](https://github.com/OpenVibers/OpenVibe.Blog/commit/9d00e2b22b5720aae94f8d26fc31780e0fb16bf7))\n- The Blog home opens with what OpenVibe.Blog is for (plan T11, D92; openvibe-shared v2.3.1 showcase): 'Write on OpenVibe', where to start (Start writing, or read the OpenVibe blog below), and the six things a blog really gets today (drafts… ([`05b8bbb`](https://github.com/OpenVibers/OpenVibe.Blog/commit/05b8bbbe004458f3875723fe62188f0ebdd93d83))\n\n## OpenVibe.Codes\n\n[openvibe.codes](https://openvibe.codes) · [repository](https://github.com/OpenVibers/OpenVibe.Codes)\n\n- Codes moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`feb3d8b`](https://github.com/OpenVibers/OpenVibe.Codes/commit/feb3d8b2a74fa0b071ec358b9369e4d62d76a3e7))\n- Codes tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and a release or app page appearing, changing or going away pings the engines (its path and the sitemap)… ([`98bb8f9`](https://github.com/OpenVibers/OpenVibe.Codes/commit/98bb8f9a27d5238de3fa648fafcbf873086877b7))\n- The Codes home is built from the showcase kit (plan T11, D92; openvibe-shared v2.3.1): a hero with where to start and a working SDK sample, what an integration gets (credentials, grants, events, generated reference, playgrounds, the SDK)… ([`f15150d`](https://github.com/OpenVibers/OpenVibe.Codes/commit/f15150db778586dd777c27171fe92f5b122f6981))\n\n## OpenVibe.Coupons\n\n[openvibe.coupons](https://openvibe.coupons) · [repository](https://github.com/OpenVibers/OpenVibe.Coupons)\n\n- Coupons moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`2988c6a`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/2988c6ad4437caf7e1c64f0aa44d2bee66af1e69))\n- Coupons tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable page appearing, changing or going away pings the engines (its path and the sitemap); drafts… ([`36f2f08`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/36f2f0868cc2e51c51866d35b069ebddd6899421))\n- Coupons on the Publishing 1.1.0 chassis (plan T9 J5): the Sources client, change cursor and pull loop come from openvibe-publishing/ingest (clients/sources.js keeps only the coupons policy per item, on the caller's transaction), Search… ([`0b72fa1`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/0b72fa1e93e9e48d890f3a59ffb1dc4e9e137998))\n\n## OpenVibe.News\n\n[openvibe.news](https://openvibe.news) · [repository](https://github.com/OpenVibers/OpenVibe.News)\n\n- News on the service kit (plan T1): sign-in is openvibe-sdk/sso createSsoClient (state + PKCE S256, server-side exchange, next limited to this site and the Network), service tokens are checked by openvibe-sdk/auth verifyServiceToken (the… ([`6023be4`](https://github.com/OpenVibers/OpenVibe.News/commit/6023be4e082121055ff4a7ffa6eee203d14a91e2))\n- News moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`ff65515`](https://github.com/OpenVibers/OpenVibe.News/commit/ff65515cb8aa21ce1c010a741953f9148db0ec98))\n- News on the Publishing 1.1.0 chassis (plan T9 J2) with IndexNow and a CI performance budget (plan T11 decision 4): the Sources client, change cursor and pull loop, signed event consumer and normalisers come from openvibe-publishing/ingest… ([`99e3641`](https://github.com/OpenVibers/OpenVibe.News/commit/99e3641036d4652e30d674a2ac174e1f80e32e8f))\n\n## OpenVibe.Reviews\n\n[openvibe.reviews](https://openvibe.reviews) · [repository](https://github.com/OpenVibers/OpenVibe.Reviews)\n\n- Reviews moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`4054ffa`](https://github.com/OpenVibers/OpenVibe.Reviews/commit/4054ffa3bcdaf0dc17f40823271371f916ddcba9))\n- Reviews tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable review or product page appearing, changing or going away pings the engines (its path and the… ([`1db22ff`](https://github.com/OpenVibers/OpenVibe.Reviews/commit/1db22ffb24f82da08971d9dc06954a324a6a6fa9))\n- Reviews on the Publishing 1.1.0 chassis (plan T9 J3): the Sources client, change cursor and pull loop, signed event consumer and normalisers come from openvibe-publishing/ingest; Reviews keeps its domain half (reviews/source-items.js… ([`e53a5dd`](https://github.com/OpenVibers/OpenVibe.Reviews/commit/e53a5dd2df6a67c93b5d0dca38d4b00b61fc47aa))\n\n## OpenVibe.Wiki\n\n[openvibe.wiki](https://openvibe.wiki) · [repository](https://github.com/OpenVibers/OpenVibe.Wiki)\n\n- Wiki moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the… ([`f36c942`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/f36c94290f7ce3867309f20c6f8e5b8e64d98892))\n- Wiki tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable page appearing, changing or going away pings the engines (its path and the sitemap); drafts… ([`31f8ee0`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/31f8ee068cf4eb75075c2d057b9e1c0c6d6ff398))\n- The Wiki home opens with what OpenVibe.Wiki is for (plan T11, D92; openvibe-shared v2.3.1 showcase): 'Knowledge, with sources', where to start (start a space, or sign in to), and the six things a space gets today (page trees, revision… ([`c6e6f4d`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/c6e6f4de0f4c930c7865d4481b8c814e40806d82))\n\n## OpenVibe.Community\n\n[openvibe.community](https://openvibe.community) · [repository](https://github.com/OpenVibers/OpenVibe.Community)\n\n- Community is the only paste authority, moves between pages without a reload, and tells search engines when a page changes (plans T10 J6 and T11). The PASTES_AUTHORITY=live path is gone: the Live paste proxy (server/pastes/proxy.js), the… ([`c4b171a`](https://github.com/OpenVibers/OpenVibe.Community/commit/c4b171a75ccd19daa10e74d401176b4a262a37a1))\n- The Community home is built with the showcase kit (plan T11, openvibe-shared v2.3.1): a hero with the terminal sample beside it, the latest and most-viewed pastes as before (the language cloud now under Latest), what lives here (pastes… ([`d4b42e9`](https://github.com/OpenVibers/OpenVibe.Community/commit/d4b42e9bcd8e653ae1aa0b510dd3064a29142f77))\n\n## OpenVibe.Games\n\n[openvibe.games](https://openvibe.games) · [repository](https://github.com/OpenVibers/OpenVibe.Games)\n\n- Games M1 step 3 (ADR-0007): intent input. One frozen, versioned intent bitfield in packages/shared (the movement layer re-exports it, the protocol's copy is gone); look is absolute and quantised to int16 (1/65536 turn) on the wire, the… ([`2abbb15`](https://github.com/OpenVibers/OpenVibe.Games/commit/2abbb1593574aea54a16820b8ea76ff84792e6cc))\n- Rapier replaces Havok behind the unchanged physics seam (ADR-0007 M1 steps 4-7), and Games serves its own legal pages (plan T11 decision 6). ([`9201a6f`](https://github.com/OpenVibers/OpenVibe.Games/commit/9201a6f399fcee8f46a7db21ef7ded6a66db7b3f))\n\n## OpenVibe.Media\n\n[openvibe.media](https://openvibe.media) · [repository](https://github.com/OpenVibers/OpenVibe.Media)\n\n- X-Internal-Key is gone from Media (plan T2, the last step): POST /internal/avatar-ingest takes only a Network service token holding media.avatar.ingest, loopback only; guardOrKey, config.network.internalApiKey and INTERNAL_API_KEY are… ([`809b06b`](https://github.com/OpenVibers/OpenVibe.Media/commit/809b06bb41660c196b3572a401f9194e8e53f414))\n- Media serves Live and OpenRe on their own service tokens (plan T4, Media cleanup D8): every v1 tenant route Live or OpenRe calls names the verb it performs (read, list, upload, delete), so a token is checked against the right capability… ([`29be23a`](https://github.com/OpenVibers/OpenVibe.Media/commit/29be23a78e8e84216e411721529e28b45cb6c481))\n\n## OpenRe.Stream\n\n[openre.stream](https://openre.stream) · [repository](https://github.com/OpenVibers/OpenRe.Stream)\n\n- OpenRe carries JSMPEG (plan T4, transports step 1): one protocol name per transport (rtmp, webrtc, jsmpeg; whip accepted on input as webrtc; worker kinds rtmp-ingest, restream, webrtc, jsmpeg; migration 0002 rewrites stored names), and a… ([`63c9ad0`](https://github.com/OpenVibers/OpenRe.Stream/commit/63c9ad02e013edbd062887491f6c22aaf64f2923))\n- OpenRe's webrtc worker (plan T4, transports step 2): WHIP ingest, the mediasoup SFU and viewer signaling in one worker kind (workers/webrtc.js + webrtc/{sfu,sdp,signaling}.js; UDP 10200-10300 beside Live's 10000-10100), a WHIP session… ([`75a5dd7`](https://github.com/OpenVibers/OpenRe.Stream/commit/75a5dd78462571361971ac20e0cfb6332759ec77))\n\n## OpenVibe.Tools\n\n[openvibe.tools](https://openvibe.tools) · [repository](https://github.com/OpenVibers/OpenVibe.Tools)\n\n- Tools on PostgreSQL, the groundwork (plan T8): migrations 0001_tools (one tools database for the eight apps: the job store and guard_abuse with app in every key that could collide; guard counters and salt go to Valkey) and 0002_analytics… ([`58f8b51`](https://github.com/OpenVibers/OpenVibe.Tools/commit/58f8b51f20cb071614e41d164d62ed794d61157c))\n- Every Tools app on openvibe-sdk v0.25.1 and openvibe-shared v2.3.1 (from 0.12.0 and 1.29.2; no removed Shared export was in use): the PostgreSQL port needs openvibe-sdk/db, valkey, the limit store, createPgOutbox and the revocation store.… ([`4a5479b`](https://github.com/OpenVibers/OpenVibe.Tools/commit/4a5479b35ca3468a1acf3f891b319733f7a25c18))\n\n## OpenVibe.VIP\n\n[openvibe.vip](https://openvibe.vip) · [repository](https://github.com/OpenVibers/OpenVibe.VIP)\n\n- VIP on the service kit (plan T1): the outbox is openvibe-sdk/events createServiceOutbox (callers emitIn inside the change's transaction). Pins: openvibe-sdk v0.25.0, openvibe-contracts v0.79.0, openvibe-shared v2.0.0. Both suites green… ([`323872f`](https://github.com/OpenVibers/OpenVibe.VIP/commit/323872f3105df99c00694322632722c85da8fe48))\n- VIP moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition and does a normal load across a deploy (the ov-boost marker carries the release); page scripts that… ([`453d347`](https://github.com/OpenVibers/OpenVibe.VIP/commit/453d347b2a513abf3c688fd99885a634e5907554))\n\n## OpenVibe.Network\n\n[openvibe.network](https://openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Network)\n\n- The network's front door (plan T11, D93): the home page starts from what you came to do. A search box ('What do you want to do?') lights the intent it names and opens it, anything else is a tool search (the form's own action, so it works… ([`20dd7ff`](https://github.com/OpenVibers/OpenVibe.Network/commit/20dd7ff02e0c42e932f3a3f30686744384478145))\n\n## OpenVibe.Search\n\n[search.openvibe.network](https://search.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Search)\n\n- Search moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition and does a normal load across a deploy (the ov-boost marker carries the release); page scripts… ([`eea0abe`](https://github.com/OpenVibers/OpenVibe.Search/commit/eea0abe7f09a1d668c5da710870b8bfdd93ed447))\n\n## OpenVibe.Tips\n\n[openvibe.tips](https://openvibe.tips) · [repository](https://github.com/OpenVibers/OpenVibe.Tips)\n\n- Tips moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first and does a normal load across a deploy (the ov-boost marker carries the release); page scripts that wire <main> also run on… ([`ebb0aa1`](https://github.com/OpenVibers/OpenVibe.Tips/commit/ebb0aa15cd5d64875913ed229a20dfe2bc96e535))\n\n---\n\nPatch notes are put together automatically when enough changes have shipped, or when a large feature lands. See every site's own updates page for the live list.","revision":1,"state":"published","visibility":"public","published_at":"2026-09-29T19:54:45.923Z","revised_at":"2026-09-29T19:54:45.911Z","author":{"subject":"usr_01KKT9AC60KM7CRTB3WN1Z8P56","name":"goosely","username":"goosely"},"authorship":{"mode":"imported","workflow":null,"reviewed":false,"disclosure":{"mode":"imported","short":"Imported","long":"Imported from Commit messages from the OpenVibers repositories on GitHub; originally by OpenVibers."}},"tags":["patch-notes","host","live","events","chat","trade","deals","ai","blog","codes","coupons"],"categories":[],"series":{"title":"Patch notes","url":"https://openvibe.blog/@openvibe/series/patch-notes","position":null},"media":[],"citations":[],"indexability":{"indexable":true,"robots":"index, follow","reasons":[]}}