{"id":"pst_01M5TBRVXJSEQFW1D80WP2026Z","url":"https://openvibe.blog/@openvibe/patch-notes-40-changes-across-12-sites-oct-25","blog":{"id":"blg_01M362MF0EDJ7QHQTRD8A3Q981","handle":"openvibe","title":"The OpenVibe blog","url":"https://openvibe.blog/"},"title":"Patch notes: 40 changes across 12 sites (Oct 25)","summary":"What shipped on OpenVibe on 2026-10-25: 40 changes to OpenVibe.Chat, OpenVibe.Media, OpenVibe.Actor, OpenVibe.Play, OpenVibe.AI, OpenVibe.Food and 6 more.","body_markdown":"What shipped on OpenVibe on 2026-10-25: 40 changes to OpenVibe.Chat, OpenVibe.Media, OpenVibe.Actor, OpenVibe.Play, OpenVibe.AI, OpenVibe.Food and 6 more. Every line below is a commit message from the OpenVibers repositories, linked to the change itself.\n\n## OpenVibe.Chat\n\n[openvibe.chat](https://openvibe.chat) · [repository](https://github.com/OpenVibers/OpenVibe.Chat)\n\n- Vibe's rail: Tasks (Actor), Computers & robots (Bot) and Work together beside Messages, Rooms and Global chat; its hover only where a pointer hovers (#172) ([`837b362`](https://github.com/OpenVibers/OpenVibe.Chat/commit/837b362698fae66a3ccc0fb4cd2678164735e846))\n- Code blocks are reachable from the keyboard (tabindex=0 and a focus ring): /developers failed axe's scrollable-region-focusable, which paged the owner (#173) ([`af09381`](https://github.com/OpenVibers/OpenVibe.Chat/commit/af09381798e6b5e47c28375a5cd6cb2ac396851b))\n- Vibe: search your chats (#174) ([`e63177c`](https://github.com/OpenVibers/OpenVibe.Chat/commit/e63177c85a301200e97b7a5f76a6fdce88a6bd9d))\n- Vibe: \"How Vibe did this\" folded under an agent task's answer (agent and model, the check, time, cost, sources, every step on Actor); Chat now reads Actor's cost as cost.usd (it read total_usd, so every task's cost was null) (#175) ([`bc69e5b`](https://github.com/OpenVibers/OpenVibe.Chat/commit/bc69e5b7aea9a290796c9dd9fe7e722c4ce7139f))\n- Vibe's rail: Your agents (recurring work in plain words, with a memory, a schedule and quiet hours, on openvibe.actor/me/agents) (#176) ([`542e10e`](https://github.com/OpenVibers/OpenVibe.Chat/commit/542e10e034b200ec7a3179dd80fec4d30f3f21cd))\n- Vibe: one <h1> on a new chat (the greeting); the header's name is a heading only inside a chat (#177) ([`1b979be`](https://github.com/OpenVibers/OpenVibe.Chat/commit/1b979be9ca27acd82bef6c22a0a43e1f5a2c6f62))\n- Vibe remembers you (Memory): it keeps a short note when you ask it to remember something or tell it a lasting preference, reads the notes in your own chats only, and openvibe.chat/vibe/memory lists them to add, delete, forget all or switch… ([`adfc522`](https://github.com/OpenVibers/OpenVibe.Chat/commit/adfc522ef4f57a8da25a025bfecdad34b33eb166))\n- Vibe sets up recurring work: in your own chat, once you agree, it makes one of your OpenVibe Agents (daily or weekly, on your allowance) and lists the ones you have; Memory made reliable: an explicit instruction, and a plain \"remember that… ([`e045523`](https://github.com/OpenVibers/OpenVibe.Chat/commit/e04552319c1362901a7f8c8bec9103a7cb8a6002))\n- Vibe's greeting fits a short phone: tighter copy, and under 700 px tall the mark goes and one suggestion stays (at 320x640 the heading was above the screen) (#181) ([`ccfac99`](https://github.com/OpenVibers/OpenVibe.Chat/commit/ccfac99bfe647419fb341a01a360e13b0791207c))\n- Vibe's answers stream: each turn is read from AI as it is written (runs?stream=1) and the chat sees room_ai_delta with the text so far; the waiting bubble renders it as Markdown until the finished message replaces it (an AI without the… ([`274a8f6`](https://github.com/OpenVibers/OpenVibe.Chat/commit/274a8f6eb22cd8ece9f3d27eb60badece29b3ec5))\n- How Vibe did this, under chat answers too: the tools Vibe used (searched what, read which page, a note saved, an agent set up) are kept with its answer in plain words and folded under it, live and on the page (migration 0032) (#183) ([`13a6c7e`](https://github.com/OpenVibers/OpenVibe.Chat/commit/13a6c7e9111606c36be06393733184fc4f61e6ca))\n- Vibe takes long text: up to 12000 characters in your own chat (a pasted page, a file, code), read whole, with no spam guess there; the attach button takes text files, read in the browser into the box (#184) ([`1c8a689`](https://github.com/OpenVibers/OpenVibe.Chat/commit/1c8a689a69c50737ed9faa9b38fc9addb1d457cd))\n- Copy and Try again under Vibe's answers: Copy takes the whole answer or one code block; Try again replaces the answer to your last message with a new one (counted like any answer; a form without JavaScript) (#185) ([`bf64853`](https://github.com/OpenVibers/OpenVibe.Chat/commit/bf6485334f13cb257d432d4b52d1810fd66c99d9))\n- Stop while Vibe writes: what it wrote so far stays as its answer, marked as stopped, and the run is cancelled at AI (POST /api/chat/vibe/:slug/stop; a Stop button in the writing bubble) (#186) ([`12e0132`](https://github.com/OpenVibers/OpenVibe.Chat/commit/12e01329608bbbb7dab522cc2c423d64c0015f6d))\n- Try again asks AI anew: the retried answer's runs have their own idempotency key (-r<the answer it replaces>), so AI no longer replays the first answer's run (the same text, or a stopped run's fallback) (#187) ([`f1f061a`](https://github.com/OpenVibers/OpenVibe.Chat/commit/f1f061aca8d7c2993539e71b5dab9bec5ea71bd3))\n- openvibe.chat's front page leads to Vibe: Chat with Vibe first in the hero, an Ask Vibe box that opens a Vibe chat with the question in it (never sent for you), and What is Vibe? in the questions (#188) ([`8c9c860`](https://github.com/OpenVibers/OpenVibe.Chat/commit/8c9c860d2a4985b75f7a291c7bc5e34ea9858add))\n- Search engines find Vibe: /vibe in the sitemap and llms.txt, the WebApplication keywords name an AI assistant, and robots.txt keeps crawlers off a person's own Vibe chats and memory (/vibe/) (#189) ([`4841460`](https://github.com/OpenVibers/OpenVibe.Chat/commit/48414606f5d09759baac4e9b77a428bab16a148c))\n\n## OpenVibe.Media\n\n[openvibe.media](https://openvibe.media) · [repository](https://github.com/OpenVibers/OpenVibe.Media)\n\n- openvibe-contracts v0.213.0 (was v0.212.0) (#170) ([`d8286e9`](https://github.com/OpenVibers/OpenVibe.Media/commit/d8286e91cec86eb90ab3b737440c8b3d7cff1e38))\n- openvibe-sdk v0.64.0 (was v0.62.0) (#171) ([`d8b85e6`](https://github.com/OpenVibers/OpenVibe.Media/commit/d8b85e6401b9914299149c322a0428268f5c7f27))\n- openvibe-shared v4.12.0 (was v4.10.0) (#172) ([`cbec8cd`](https://github.com/OpenVibers/OpenVibe.Media/commit/cbec8cdf3834008ff6b2857c49a5fc616e19efa5))\n- Home: part of OpenVibe Services (the eyebrow says so, and one line under the hero links to openvibe.services) (#173) ([`15eb592`](https://github.com/OpenVibers/OpenVibe.Media/commit/15eb5923879adb0fe3a001ac0d0e0af7924a8327))\n- Home: the media list is a section like the ones around it, so its heading, tabs and grid line up with the hero and the developer sections (it started 24 px further left) (#174) ([`4bffbff`](https://github.com/OpenVibers/OpenVibe.Media/commit/4bffbff154dd8ea838009b4d3b3cc1bfedd87e02))\n\n## OpenVibe.Actor\n\n[openvibe.actor](https://openvibe.actor) · [repository](https://github.com/OpenVibers/OpenVibe.Actor)\n\n- Your agents: five templates (job search, research brief, price watch, morning briefing, make something) fill the form; an agent is not made while a part in <angle brackets> is left (#113) ([`481f400`](https://github.com/OpenVibers/OpenVibe.Actor/commit/481f400249e5768cdb39af98861a887ad52357bc))\n- Your agents: quiet hours (quiet_from to quiet_to, UTC, may cross midnight): no scheduled run starts inside them; an hourly run waits for their end, a daily or weekly time inside them is refused; Run now still runs (#114) ([`2184625`](https://github.com/OpenVibers/OpenVibe.Actor/commit/2184625c10b77b6961ba89770f865b166263ce38))\n- Your agents grow up: an agent may suggest a line for its instructions after a run that passed its check (IMPROVE:), which you add, dismiss or undo; the agent page's runs show their first line and cost (a run journal) (#115) ([`c9de866`](https://github.com/OpenVibers/OpenVibe.Actor/commit/c9de866663b4f9a94907b303d7c41a928b9a1c5d))\n\n## OpenVibe.Play\n\n[play.openvibe.network](https://play.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Play)\n\n- Home: part of OpenVibe Services (the eyebrow says so, and one line under the hero links to openvibe.services) (#40) ([`15c40a1`](https://github.com/OpenVibers/OpenVibe.Play/commit/15c40a1c0b4c04b1d03413d72f49119b8b85396e))\n- Your own game, from the sandbox: a developer's sandbox app registers up to 3 sandbox- titles (guest players only, never adopted, listed, counted or indexed); a production app takes the real name (#41) ([`afb065c`](https://github.com/OpenVibers/OpenVibe.Play/commit/afb065cebca399b22769d77465b6abc752fa0ae4))\n- A sandbox title is deleted by its app with everything in it (DELETE /titles/:title); a production title never is (#42) ([`f445996`](https://github.com/OpenVibers/OpenVibe.Play/commit/f445996969575339b31e0157f49dda51b249c753))\n\n## OpenVibe.AI\n\n[ai.openvibe.services](https://ai.openvibe.services) · [repository](https://github.com/OpenVibers/OpenVibe.AI)\n\n- Home: part of OpenVibe Services (the eyebrow says so, and one line under the hero links to openvibe.services) (#152) ([`1e665c5`](https://github.com/OpenVibers/OpenVibe.AI/commit/1e665c57ee07359fb650c0b6a0f8d529bc0a86ed))\n- Runs may stream: POST /api/v1/runs?stream=1 answers server-sent events, delta { text } as the provider writes the answer, then run { run } (a replay or a cached run sends only its run; a refused one keeps its status) (#153) ([`ead4809`](https://github.com/OpenVibers/OpenVibe.AI/commit/ead4809db8852fd40a33d9944f0d8d2a44e0b2f2))\n\n## OpenVibe.Food\n\n[openvibe.food](https://openvibe.food) · [repository](https://github.com/OpenVibers/OpenVibe.Food)\n\n- Food near you: the home's cities are warmed in the background, a query that just failed answers at once, and VK Maps replaces kumi.systems (private.coffee's old name) among the Overpass fallbacks (#88) ([`ce5c15f`](https://github.com/OpenVibers/OpenVibe.Food/commit/ce5c15fd06a02313cc1d083f75e9644c83380ef2))\n- Overpass: the server that answered last is asked first (a search spent 16 s on two dead servers before reaching the one that answered) (#89) ([`cb93aec`](https://github.com/OpenVibers/OpenVibe.Food/commit/cb93aec01135237fe7aadfae19f0f7734f67a5af))\n\n## OpenVibe.Live\n\n[openvibe.live](https://openvibe.live) · [repository](https://github.com/OpenVibers/OpenVibe.Live)\n\n- Chat page: its one heading (visually hidden, for screen readers and search engines); /chat had no <h1> (#360) ([`58b75e4`](https://github.com/OpenVibers/OpenVibe.Live/commit/58b75e48b1d1cd109a8a3415acbe066d5dfd712a))\n- Phones: turn the phone and the stream fills the screen (the player was capped at half its height: 195px of 390); the player's buttons fit a 360px screen (clip and fullscreen were off its edge); the floating buttons step aside while you… ([`11ceb88`](https://github.com/OpenVibers/OpenVibe.Live/commit/11ceb8871bff6bd72e84744007be8c3e591b920f))\n\n## OpenVibe.Network\n\n[openvibe.network](https://openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Network)\n\n- Sandbox apps may call Play: openvibe.play joins the default sandbox audiences and play.title.manage, play.result.write and play.player.read the sandbox allowance (Play keeps sandbox- titles apart: guests only, unlisted, at most 3) (#337) ([`ab5aaba`](https://github.com/OpenVibers/OpenVibe.Network/commit/ab5aaba1ec24b1230f44d28b3dc67e3655150909))\n- Chat may manage a person's OpenVibe Agents for them (actor.agent.manage on openvibe.actor): Vibe sets up recurring work in their own chat after they agree, and lists their agents (#338) ([`d95a76a`](https://github.com/OpenVibers/OpenVibe.Network/commit/d95a76a21231a0533d3f424738db99d0298b089a))\n\n## OpenVibe.Events\n\n[openvibe.events](https://openvibe.events) · [repository](https://github.com/OpenVibers/OpenVibe.Events)\n\n- Home: part of OpenVibe Services (the eyebrow says so, and one line under the hero links to openvibe.services) (#115) ([`011f229`](https://github.com/OpenVibers/OpenVibe.Events/commit/011f2292d21ea3f3c93cb29c5b1be8995ae2f728))\n\n## OpenVibe.Games\n\n[openvibe.games](https://openvibe.games) · [repository](https://github.com/OpenVibers/OpenVibe.Games)\n\n- Vibe Heroes on OpenVibe.Play: a furthest-stage board and six stage milestones (first win … all 100 stages), synced from the saves like rounds and hauls (#151) ([`32687d1`](https://github.com/OpenVibers/OpenVibe.Games/commit/32687d1afc16b8022ffe335f7a8146349bd0c1cc))\n\n## OpenVibe.MediaHub\n\n[openvibe.video](https://openvibe.video) · [repository](https://github.com/OpenVibers/OpenVibe.MediaHub)\n\n- Video cards' tags use the readable fill pair (accent-strong / on-accent-strong): October's orange failed axe color-contrast under white text, which paged the owner (#130) ([`88640c7`](https://github.com/OpenVibers/OpenVibe.MediaHub/commit/88640c7824fd1eba389ec19c7dd1f30a3fa5c189))\n\n## OpenVibe.Search\n\n[search.openvibe.network](https://search.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Search)\n\n- Home: part of OpenVibe Services (the eyebrow says so, and one line under the hero links to openvibe.services) (#92) ([`799eaa8`](https://github.com/OpenVibers/OpenVibe.Search/commit/799eaa86c9a6efc7ca6311b759beb5c54978ee1e))\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-25T20:24:28.872Z","revised_at":"2026-10-25T20:24:28.855Z","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","chat","media","actor","play","ai","food","live","network","events","games"],"categories":[],"series":{"title":"Patch notes","url":"https://openvibe.blog/@openvibe/series/patch-notes","position":null},"media":[],"citations":[],"indexability":{"indexable":true,"robots":"index, follow","reasons":[]}}