{"id":"pst_01M53MT99WYS0EYD6NF0YDZ14S","url":"https://openvibe.blog/@openvibe/patch-notes-48-changes-across-9-sites","blog":{"id":"blg_01M362MF0EDJ7QHQTRD8A3Q981","handle":"openvibe","title":"The OpenVibe blog","url":"https://openvibe.blog/"},"title":"Patch notes: 48 changes across 9 sites","summary":"What shipped on OpenVibe from 2026-10-16 to 2026-10-17: 48 changes to OpenVibe.Live, OpenVibe.AI, OpenVibe.Space, OpenVibe.Network, OpenVibe.Wiki, OpenVibe.Bot and 3 more.","body_markdown":"What shipped on OpenVibe from 2026-10-16 to 2026-10-17: 48 changes to OpenVibe.Live, OpenVibe.AI, OpenVibe.Space, OpenVibe.Network, OpenVibe.Wiki, OpenVibe.Bot and 3 more. Every line below is a commit message from the OpenVibers repositories, linked to the change itself.\n\n## Highlights\n\n- **OpenVibe.Space:** Space: spaces — apps people make on their OpenVibe account: described to the AI builder or started from a template, edited with a live preview, published at <slug>.openvibe.website with the space SDK (sign-in, shared lists, private… ([`cde5878`](https://github.com/OpenVibers/OpenVibe.Space/commit/cde5878890bcfd7d7bed29b3786ca6b851d350fd))\n- **OpenVibe.Space:** Spaces: server functions (functions/<name>.js) run in a QuickJS sandbox at /api/<name>, from OV.fn and in the editor's preview, with a Trivia starter whose answers stay on the server (#62) ([`f11b5e8`](https://github.com/OpenVibers/OpenVibe.Space/commit/f11b5e83a3342950e38edbc2980c9ab0b608f0cf))\n- **OpenVibe.Live:** Broadcast: a live studio on phones (full-screen camera, one-tap flip, mute, camera off, light, chat over the picture, clip, a More sheet, End asks first); the camera buttons no longer vanish when the live view shows before the camera; live… ([`f6d6219`](https://github.com/OpenVibers/OpenVibe.Live/commit/f6d6219e900ce923ab6566470218c76fc0105fc2))\n\n## OpenVibe.Live\n\n[openvibe.live](https://openvibe.live) · [repository](https://github.com/OpenVibers/OpenVibe.Live)\n\n- Arena: a live cam whose stream frame is not there yet (a restart, a new stream) or fails shows the streamer's portrait, not a broken image (#155) ([`94db1cd`](https://github.com/OpenVibers/OpenVibe.Live/commit/94db1cd6f0b9a11205039070ae85af5a6e98edeb))\n- Live: public AI text never describes how a person looks (stored rows repaired) (#154) ([`9d27bc3`](https://github.com/OpenVibers/OpenVibe.Live/commit/9d27bc327a0d93964de6aa66cff7a9e5e891bafd))\n- Arena: a live cam's frame is awaited (it was an un-awaited lookup, serialized as {}, so /arena asked for /[object Object] and showed a broken image) (#156) ([`66f336a`](https://github.com/OpenVibers/OpenVibe.Live/commit/66f336aa8f2832c4723f24266fd6db5fdcceff87))\n- Live README: VOD/clip transcripts (OpenVibe.AI) and live captions (Live) both use Parakeet for English and 24 European languages, whisper.cpp for the rest (#157) ([`6808e33`](https://github.com/OpenVibers/OpenVibe.Live/commit/6808e3386c05a00eb2c4177adfbf61e90488edb1))\n- Broadcast: a live studio on phones (full-screen camera, one-tap flip, mute, camera off, light, chat over the picture, clip, a More sheet, End asks first); the camera buttons no longer vanish when the live view shows before the camera; live… ([`f6d6219`](https://github.com/OpenVibers/OpenVibe.Live/commit/f6d6219e900ce923ab6566470218c76fc0105fc2))\n- Broadcast: before going live on a phone, a Go live bar stays in reach while the slot's own button is two screens down (#159) ([`50dc892`](https://github.com/OpenVibers/OpenVibe.Live/commit/50dc892fdf6d124bb5a7c6e14b280449090995ac))\n- Broadcast studio: nothing takes a phone off the live tab (no Reload to update for the broadcaster, the viewer preview opens over the page muted, Copy link instead of the share sheet, leaving asks first, a note after coming back); the chat… ([`4643576`](https://github.com/OpenVibers/OpenVibe.Live/commit/4643576481232564d62fd4304f818d1a25bba764))\n- Restream: a platform that refuses the key says so (it read as a TLS failure), and the OpenSSL FFmpeg is found in the data dir again (release folders hold no binaries since 09-27) (#161) ([`364d434`](https://github.com/OpenVibers/OpenVibe.Live/commit/364d4345a8c3669e873e89ec4da7d8a13da47159))\n- Restream OAuth: a redirect mismatch says which URL to add to the platform's app (the owner saw only Twitch's 'redirect_uri does not match') (#162) ([`235a5db`](https://github.com/OpenVibers/OpenVibe.Live/commit/235a5db91d8f0e71a6b077e7629874abf69042fd))\n- Channel: on a phone held upright a live channel's chat sits under the stream info and fills the screen (a third of the screen was empty while chat waited behind a button) (#163) ([`6130079`](https://github.com/OpenVibers/OpenVibe.Live/commit/61300795350361d43271fbebd0ba04006d9a74f7))\n- Live home: going live from the browser leads the first screen again (Go live button, and No OBS · No downloads · No follower minimum · How it works under the buttons); the checklist was seven phone screens down (#164) ([`0f6f34c`](https://github.com/OpenVibers/OpenVibe.Live/commit/0f6f34ce6a9c40c763c83b21c99b85dace9a3824))\n- VOD and clip pages: the after-show report reads as one wrapping line on phones (its label wrapped onto three), and 1 view is '1 view' (#165) ([`6b9c9f4`](https://github.com/OpenVibers/OpenVibe.Live/commit/6b9c9f4e290b668ecba7c51845effc97324f586d))\n- Live home: nobody live right now says 'quiet now', not '-100%' in red (#166) ([`8e18eec`](https://github.com/OpenVibers/OpenVibe.Live/commit/8e18eecdfb6acbacde73d3267c6f41c0e636b2cb))\n\n## OpenVibe.AI\n\n[ai.openvibe.services](https://ai.openvibe.services) · [repository](https://github.com/OpenVibers/OpenVibe.AI)\n\n- AI: a channel description names the streamer or says \"they\", never a guessed pronoun (#103) ([`610f0da`](https://github.com/OpenVibers/OpenVibe.AI/commit/610f0daea62dcb6242fed541f25c0a71da5e547c))\n- AI: Live's frame notes, stream summaries, moment picks, after-show reports and person overviews describe what happens, never how people look (body, clothing, age, ethnicity, perceived gender); a person is \"the streamer\" or their name (#104) ([`840f214`](https://github.com/OpenVibers/OpenVibe.AI/commit/840f214c7b61ce880f0ddca08213007a6bfb65f8))\n- AI: Live's home hero copy never mentions anyone's looks, body, clothing or age (production printed \"ara007 shirtless thoughts, comfy takes\") (#105) ([`6f7337a`](https://github.com/OpenVibers/OpenVibe.AI/commit/6f7337a24781616dde9bfd7100ca8092029d4da1))\n- AI speech-to-text: NVIDIA Parakeet TDT 0.6B v3 for English and 24 European languages when PARAKEET_MODEL is set (VOD and clip transcripts: more words, punctuated, about 4x faster than large-v3-turbo); whisper keeps the rest and takes any… ([`425414d`](https://github.com/OpenVibers/OpenVibe.AI/commit/425414db946ca94f42f5236a9e9c0ea0a75d11bb))\n- AI: the ARENA ALERT desk calls people by name or \"they\", never a guessed pronoun (#106) ([`c5e6e0c`](https://github.com/OpenVibers/OpenVibe.AI/commit/c5e6e0c8fd2050cb18b56d0ea427147f8d9d3cbb))\n- AI: space.app.build (the AI builder of OpenVibe.Space's spaces: a whole working app from a request, or a change to one) and space.app.ask (a space's own AI, on behalf of the visitor); routes space.build and space.ask (#108) ([`b2d2862`](https://github.com/OpenVibers/OpenVibe.AI/commit/b2d286208a8eba5f0e67e628f0a80ef0c4e5959c))\n- AI: the space builder answers in its schema without length caps and not strict (strict decoding of a whole app spent the budget reasoning and answered nothing) (#109) ([`f4c883e`](https://github.com/OpenVibers/OpenVibe.AI/commit/f4c883e969b507d6d87e9d1b989d599322028549))\n- AI: a route's longer timeout wins over the provider's chat timeout (#110) ([`74eb61b`](https://github.com/OpenVibers/OpenVibe.AI/commit/74eb61bfd10a4d3f2f9a397caa403fa5f3811971))\n- AI: the space builder designs for phones first (no squeezed columns at 360 px, 44 px taps, avatar fallbacks) (#111) ([`cba9c51`](https://github.com/OpenVibers/OpenVibe.AI/commit/cba9c51d43baaf9baebbbcf705be3ced96229ce6))\n- AI: the space builder writes server functions (functions/<name>.js, OV.fn) when an idea needs code the visitor must not see or change (#112) ([`1410d23`](https://github.com/OpenVibers/OpenVibe.AI/commit/1410d232aa94b6c3556b471958b7818441bf0aa0))\n- AI: the space builder writes a function as a plain script (it wrote export async function handle) (#113) ([`f9122f9`](https://github.com/OpenVibers/OpenVibe.AI/commit/f9122f92cc1f45a0c778f6ce4da6f7f2718a6032))\n- AI: the space builder reads the visitor from ov.user (it wrote request.ov.user, so per-person logic never ran) (#114) ([`2ce4cec`](https://github.com/OpenVibers/OpenVibe.AI/commit/2ce4cec30377371a58dfdf1aec21e790927a1d0f))\n\n## OpenVibe.Space\n\n[openvibe.space](https://openvibe.space) · [repository](https://github.com/OpenVibers/OpenVibe.Space)\n\n- Space: spaces — apps people make on their OpenVibe account: described to the AI builder or started from a template, edited with a live preview, published at <slug>.openvibe.website with the space SDK (sign-in, shared lists, private… ([`cde5878`](https://github.com/OpenVibers/OpenVibe.Space/commit/cde5878890bcfd7d7bed29b3786ca6b851d350fd))\n- Space: account export and deletion again (ADR-033, openvibe-sdk/account-data): a person's spaces with their files, their list items, private storage and sign-ins; deletion closes their published spaces and removes their data from… ([`06c5232`](https://github.com/OpenVibers/OpenVibe.Space/commit/06c52329d6829d4a78f069fd277416e93a156d98))\n- Space vhost: /spaces itself goes to the app (a prefix location for /spaces/ made nginx answer /spaces with a 301 to /spaces/) (#60) ([`2406dc6`](https://github.com/OpenVibers/OpenVibe.Space/commit/2406dc6ee63d5b8e476654c36e37df72b8cfcd7d))\n- Space: deleting a space is for good (it was only marked deleted, so its files, list items and visitors' private storage stayed in the database) (#61) ([`6b1e3d3`](https://github.com/OpenVibers/OpenVibe.Space/commit/6b1e3d3024ffc299915614a1852621f1d0333804))\n- Spaces: server functions (functions/<name>.js) run in a QuickJS sandbox at /api/<name>, from OV.fn and in the editor's preview, with a Trivia starter whose answers stay on the server (#62) ([`f11b5e8`](https://github.com/OpenVibers/OpenVibe.Space/commit/f11b5e83a3342950e38edbc2980c9ab0b608f0cf))\n- Space: the tenant vhost's function location quotes its regex (nginx reads an unquoted {0,39} as a block) (#63) ([`6e24526`](https://github.com/OpenVibers/OpenVibe.Space/commit/6e245267858b4f9c3528fd7c2fd74a30b2207acf))\n- Space functions: export/export default/module.exports handlers work (the AI builder wrote export async function handle), always run as a script, and an error names its line (#64) ([`4ae17af`](https://github.com/OpenVibers/OpenVibe.Space/commit/4ae17af52c08062106b21f94144c8e7233dbf12a))\n- Space STATUS.json: spaces, the SDK and space functions are built; publishing waits for the hosting launch (#65) ([`ce98257`](https://github.com/OpenVibers/OpenVibe.Space/commit/ce98257b1404868b869a51e7d86067e5f57e4324))\n- Spaces gallery: the lede says spaces run their own server code (#66) ([`19916be`](https://github.com/OpenVibers/OpenVibe.Space/commit/19916bec0acbef94f89c4bd134eed98221f18852))\n\n## OpenVibe.Network\n\n[openvibe.network](https://openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Network)\n\n- Network: Space may run OpenVibe.AI's space.* workflows (the space builder and a space's own AI, plan T20 step 2) (#249) ([`8d7dd8b`](https://github.com/OpenVibers/OpenVibe.Network/commit/8d7dd8ba702ba512ec926bd39465abb9c648bb06))\n- Network: Space subscribes to the account events again (spaces hold personal data; export and deletion grants follow once it answers) (#250) ([`ef6163a`](https://github.com/OpenVibers/OpenVibe.Network/commit/ef6163a48b4efd21b2ebefdb7cee8532a58a3ea5))\n- Network: Space answers account export and deletion again (spaces hold personal data; its subscriptions were verified first) (#251) ([`900e8f4`](https://github.com/OpenVibers/OpenVibe.Network/commit/900e8f45a73a5bc5f6a2877448a90cba57d4052f))\n- openvibe-contracts v0.199.2 (was v0.199.1) (#252) ([`9f95da2`](https://github.com/OpenVibers/OpenVibe.Network/commit/9f95da2e90a44782e329e639c51a59f6f393128c))\n- Network home: Chat says what it is now (AI members, servers with voice, pictures) and the front door gets \"Make an app\" (OpenVibe.Space spaces) (#253) ([`f7b0f08`](https://github.com/OpenVibers/OpenVibe.Network/commit/f7b0f08f0d9fd9ee81bb2a32af0757a393422162))\n- openvibe-contracts v0.199.3 (was v0.199.2) (#254) ([`730fa07`](https://github.com/OpenVibers/OpenVibe.Network/commit/730fa07aef9153069a89d31dc2f2aceb9233278f))\n- Network home: constellation labels near the top and bottom alternate their distance (\"ZoneLiveTools\" and \"BotVideoSpace\" ran together); \"Make an app\" in fewer words (#255) ([`d3c364d`](https://github.com/OpenVibers/OpenVibe.Network/commit/d3c364d68eddaf4577fa19c03687c2b92fa2526a))\n\n## OpenVibe.Wiki\n\n[openvibe.wiki](https://openvibe.wiki) · [repository](https://github.com/OpenVibers/OpenVibe.Wiki)\n\n- Wiki: the OpenVibe.Live page names ARENA ALERT (was \"the Arena (Battle Cam)\") and Parakeet transcripts, cited to Live's README at 94db1cd (#69) ([`67f5b1d`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/67f5b1d9575c5e156132f871da16bdd80b12e661))\n- Wiki: OpenVibe.Space describes spaces (#70) ([`b48cf73`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/b48cf73d98d81fbdd10fcdb2859c84f80cb7e2b5))\n- Wiki: OpenVibe.Space's page names space functions (server code in a sandbox) and the trivia starter, cited to Space's README at f11b5e8 (#71) ([`4da7642`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/4da7642c012f29b20f5880eed46b056dc5db1803))\n\n## OpenVibe.Bot\n\n[openvibe.bot](https://openvibe.bot) · [repository](https://github.com/OpenVibers/OpenVibe.Bot)\n\n- Bot panel on a phone: the camera stays pinned under the e-stop bar while the controls scroll, and the drive pad comes right under it (it was last, below every readout), so you can watch while you drive (#132) ([`457b59c`](https://github.com/OpenVibers/OpenVibe.Bot/commit/457b59ce6242789aa6321b52ae981a0d35595770))\n\n## OpenVibe.Coupons\n\n[openvibe.coupons](https://openvibe.coupons) · [repository](https://github.com/OpenVibers/OpenVibe.Coupons)\n\n- Coupons: a request path that would leave the origin is a 404, not a 500 (the not-found page's canonical threw) (#68) ([`1e23ab5`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/1e23ab522b08fa1b78a0d95207d8e3ec98886b97))\n\n## OpenVibe.Help\n\n[openvibe.help](https://openvibe.help) · [repository](https://github.com/OpenVibers/OpenVibe.Help)\n\n- openvibe-contracts v0.199.2 (was v0.199.1) (#59) ([`992fc51`](https://github.com/OpenVibers/OpenVibe.Help/commit/992fc511321f909518ce3fd76cac62f32627755d))\n\n## OpenVibe.MediaHub\n\n[openvibe.video](https://openvibe.video) · [repository](https://github.com/OpenVibers/OpenVibe.MediaHub)\n\n- Video: when Live does not answer, a page shows Live's last answer (up to 30 min) instead of an error (#85) ([`ca6f8ba`](https://github.com/OpenVibers/OpenVibe.MediaHub/commit/ca6f8babb5ef833380da1386772b84c57e7ee496))\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-10-17T00:40:00.593Z","revised_at":"2026-10-17T00:40:00.578Z","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","live","ai","space","network","wiki","bot","coupons","help","media-hub"],"categories":[],"series":{"title":"Patch notes","url":"https://openvibe.blog/@openvibe/series/patch-notes","position":null},"media":[],"citations":[],"indexability":{"indexable":true,"robots":"index, follow","reasons":[]}}