{"id":"pst_01M5QB8E7BM2KFGYV78GQ1KGEN","url":"https://openvibe.blog/@openvibe/patch-notes-41-changes-across-24-sites-oct-24","blog":{"id":"blg_01M362MF0EDJ7QHQTRD8A3Q981","handle":"openvibe","title":"The OpenVibe blog","url":"https://openvibe.blog/"},"title":"Patch notes: 41 changes across 24 sites (Oct 24)","summary":"What shipped on OpenVibe on 2026-10-24: 41 changes to OpenVibe.Live, OpenVibe.Bot, OpenVibe.Chat, OpenVibe.Media, OpenVibe.AI, OpenVibe.Community and 18 more.","body_markdown":"What shipped on OpenVibe on 2026-10-24: 41 changes to OpenVibe.Live, OpenVibe.Bot, OpenVibe.Chat, OpenVibe.Media, OpenVibe.AI, OpenVibe.Community and 18 more. Every line below is a commit message from the OpenVibers repositories, linked to the change itself.\n\n## OpenVibe.Live\n\n[openvibe.live](https://openvibe.live) · [repository](https://github.com/OpenVibers/OpenVibe.Live)\n\n- Live's own money ledger goes (contract 0016, after 0009): transactions, payment_orders, subscriptions, the users money columns, and vpn_approvals (#336) ([`ccbc98a`](https://github.com/OpenVibers/OpenVibe.Live/commit/ccbc98ac7c75a35644e125cc1bb541b3021e60fe))\n- A moment the AI describes as sexual content is never posted or clipped, and an AI-made clip whose overview turns out explicit goes private (clip 483 went public on openvibe.media and Live's home) (#344) ([`cd02b9e`](https://github.com/OpenVibers/OpenVibe.Live/commit/cd02b9e4cca466adab555b8340a5757814850e0b))\n- The home's \"Lately on OpenVibe\" quotes skip a take with a slur, strong profanity or a hate topic and show the next best; the Rundown keeps every take (#345) ([`48596b5`](https://github.com/OpenVibers/OpenVibe.Live/commit/48596b5f5199bb10a2176f849b9afae8ed022166))\n- The home's quote strip also leaves out strong profanity in Portuguese, Spanish, French and German (#346) ([`ea02541`](https://github.com/OpenVibers/OpenVibe.Live/commit/ea02541b2312be5a1ad5074ad665b9c4b30135e3))\n- The AI backfill drops the state of a VOD or clip Media no longer has (a 404), so items deleted on openvibe.video stop blocking the transcript queue (49 clips waited) (#347) ([`2c7a276`](https://github.com/OpenVibers/OpenVibe.Live/commit/2c7a276ef8fed1dbbf33446411f97b8a8b111c85))\n\n## OpenVibe.Bot\n\n[openvibe.bot](https://openvibe.bot) · [repository](https://github.com/OpenVibers/OpenVibe.Bot)\n\n- A robot from a blank microSD card: /setup/sd-card makes the card's first-boot files in the browser, and the card adds the robot by itself with a setup key (no screen, keyboard or code) (#152) ([`64e9c53`](https://github.com/OpenVibers/OpenVibe.Bot/commit/64e9c537b961a2b7cebeaa5efdac9794bae855e9))\n- A queue robot is halted when a turn ends or its holder leaves, before the next person drives: Bot's own halt (operator role system), audited (#153) ([`808f452`](https://github.com/OpenVibers/OpenVibe.Bot/commit/808f452af6c2cbab40c83497299501b544b605ed))\n- /robots' Have a robot? card offers the blank microSD card path too (#154) ([`32d608d`](https://github.com/OpenVibers/OpenVibe.Bot/commit/32d608d464e17a6c30eaafe76414d5334d2b224f))\n\n## OpenVibe.Chat\n\n[openvibe.chat](https://openvibe.chat) · [repository](https://github.com/OpenVibers/OpenVibe.Chat)\n\n- Chat's front page headings use the network's heading face and sizes, like its showcase section; the app keeps its compact type (#135) ([`c637dff`](https://github.com/OpenVibers/OpenVibe.Chat/commit/c637dff6182410af634ff839f0cadf64dc1d98ec))\n- The global room shows no slur spelled a few letters a line, and no mirrored wall or line of symbols (openvibe.chat's front page showed both on 10-24) (#136) ([`b3ac18b`](https://github.com/OpenVibers/OpenVibe.Chat/commit/b3ac18b406df337ad27788e94399bf8269417c35))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#137) ([`6dc49ca`](https://github.com/OpenVibers/OpenVibe.Chat/commit/6dc49ca3ae19ed0aa72601c9136b6027e2b5bc6b))\n\n## OpenVibe.Media\n\n[openvibe.media](https://openvibe.media) · [repository](https://github.com/OpenVibers/OpenVibe.Media)\n\n- The live DVR copy of an MP4 recording is written once per pass, its index last: +faststart rewrote the whole copy a second time (#164) ([`bb8d258`](https://github.com/OpenVibers/OpenVibe.Media/commit/bb8d2580ce5d8cbc918637d430c919951d42fbfd))\n- Media's home: a portrait recording's preview keeps the 16:9 box (it stretched its row to ~640 px), and the list heading matches the showcase (#165) ([`683a59c`](https://github.com/OpenVibers/OpenVibe.Media/commit/683a59c010f544b27e34d9048cf43787d4d62250))\n- Under disk pressure the drain moves the largest finished recordings first, and a finished recording leaves the local disk after a day whatever its views (the disk reached 0 GB free) (#166) ([`be22378`](https://github.com/OpenVibers/OpenVibe.Media/commit/be2237857b8a45dbef560362d5408901fdcc4b18))\n\n## OpenVibe.AI\n\n[ai.openvibe.services](https://ai.openvibe.services) · [repository](https://github.com/OpenVibers/OpenVibe.AI)\n\n- ai.openvibe.services' vhost passes POST /release-metrics to the app (the GET-only catch-all refused open tabs' update reports with a 403) (#142) ([`41a1af6`](https://github.com/OpenVibers/OpenVibe.AI/commit/41a1af67033ef194d9b034a622432807cdfda708))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#143) ([`98c6a23`](https://github.com/OpenVibers/OpenVibe.AI/commit/98c6a23d4a4f3713625edac35f39e9eb4eb6eaee))\n\n## OpenVibe.Community\n\n[openvibe.community](https://openvibe.community) · [repository](https://github.com/OpenVibers/OpenVibe.Community)\n\n- The public paste API no longer serves an uploader's browser, file name or page; profile pictures leave the home's latest pastes; home headings match the showcase (#127) ([`f14c619`](https://github.com/OpenVibers/OpenVibe.Community/commit/f14c6191612e5b499c34670da1e1431f85bb3411))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#128) ([`e8d01d7`](https://github.com/OpenVibers/OpenVibe.Community/commit/e8d01d7c6aa7d81e89169f04e3d633e968574ee3))\n\n## OpenVibe.Coupons\n\n[openvibe.coupons](https://openvibe.coupons) · [repository](https://github.com/OpenVibers/OpenVibe.Coupons)\n\n- Coupons' own home sections use the showcase's typeface, heading size and spacing: \"Ending soon\", \"New codes\" and the questions read like the rest of the page (#87) ([`4955f2c`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/4955f2c1fc3f2b5c2c6c36f022baa89646210759))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#88) ([`80f2d78`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/80f2d78d02d2f3b451ca5cd648da336048bccd2d))\n\n## OpenVibe.Deals\n\n[openvibe.deals](https://openvibe.deals) · [repository](https://github.com/OpenVibers/OpenVibe.Deals)\n\n- Deals' home section headings take the showcase's size (30 px, not 28) (#85) ([`3b278df`](https://github.com/OpenVibers/OpenVibe.Deals/commit/3b278dfd5603ca74f04c69af18d1f9eb4091dd5b))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#86) ([`af78f4f`](https://github.com/OpenVibers/OpenVibe.Deals/commit/af78f4f661aeba4f443fd99f406830debebf13c7))\n\n## OpenVibe.Games\n\n[openvibe.games](https://openvibe.games) · [repository](https://github.com/OpenVibers/OpenVibe.Games)\n\n- Games serves the shared page shell's web app manifest and touch icon (/steam, /updates and world pages logged a manifest 404) (#143) ([`81bbe33`](https://github.com/OpenVibers/OpenVibe.Games/commit/81bbe33265ee45d61ff84ba6317191e6bc9b0e99))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#144) ([`d649d5c`](https://github.com/OpenVibers/OpenVibe.Games/commit/d649d5c992f7374570d6f360b935bea3be3157c5))\n\n## OpenVibe.MediaHub\n\n[openvibe.video](https://openvibe.video) · [repository](https://github.com/OpenVibers/OpenVibe.MediaHub)\n\n- openvibe.pics: the six feature cards sit in two rows of three on a desktop (they were four, then two beside two empty slots) (#120) ([`0384406`](https://github.com/OpenVibers/OpenVibe.MediaHub/commit/038440600020e7268e84f056079ff0f40ebfa5de))\n- openvibe.video and openvibe.pics front pages use the network's heading face and sizes; inner pages keep their compact headings (#121) ([`151aba9`](https://github.com/OpenVibers/OpenVibe.MediaHub/commit/151aba93926aaae61703b3fbea34571f52db8fd7))\n\n## OpenVibe.Tips\n\n[openvibe.tips](https://openvibe.tips) · [repository](https://github.com/OpenVibers/OpenVibe.Tips)\n\n- Tips' own home sections use the showcase's typeface, heading size and spacing: \"Other ways to support\" and the questions read like the rest of the page (#81) ([`0582688`](https://github.com/OpenVibers/OpenVibe.Tips/commit/0582688af49e5fdfa6048ecae483ed6fcb129031))\n- openvibe.tips's CSP allows Cloudflare Web Analytics' beacon (it was refused in every visitor's console) (#82) ([`7f0f22f`](https://github.com/OpenVibers/OpenVibe.Tips/commit/7f0f22f24bc5131a098fcf20ed85651623f6534f))\n\n## OpenVibe.Actor\n\n[openvibe.actor](https://openvibe.actor) · [repository](https://github.com/OpenVibers/OpenVibe.Actor)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#106) ([`a67bc14`](https://github.com/OpenVibers/OpenVibe.Actor/commit/a67bc1455db2b7da68d20ac35c54b274ddb5679d))\n\n## OpenVibe.Billing\n\n[billing.openvibe.network](https://billing.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Billing)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#93) ([`a7bef93`](https://github.com/OpenVibers/OpenVibe.Billing/commit/a7bef93dab5b69a183298fd14e99132a1f64e3e0))\n\n## OpenVibe.Blog\n\n[openvibe.blog](https://openvibe.blog) · [repository](https://github.com/OpenVibers/OpenVibe.Blog)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#77) ([`211c44e`](https://github.com/OpenVibers/OpenVibe.Blog/commit/211c44e0ebf9138ab1822c8d6e3df74dd682df4e))\n\n## OpenVibe.Events\n\n[openvibe.events](https://openvibe.events) · [repository](https://github.com/OpenVibers/OpenVibe.Events)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#110) ([`83c18fe`](https://github.com/OpenVibers/OpenVibe.Events/commit/83c18feb6f5735774a9f51573c3a3ddddc03bb33))\n\n## OpenVibe.Food\n\n[openvibe.food](https://openvibe.food) · [repository](https://github.com/OpenVibers/OpenVibe.Food)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#82) ([`6a2081f`](https://github.com/OpenVibers/OpenVibe.Food/commit/6a2081f6c1ce17738b4296b66aa86e810f56b3c0))\n\n## OpenVibe.Host\n\n[openvibe.host](https://openvibe.host) · [repository](https://github.com/OpenVibers/OpenVibe.Host)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#150) ([`3b5c4e6`](https://github.com/OpenVibers/OpenVibe.Host/commit/3b5c4e66f498e3d1b77c2d6b7b7398a907fe418c))\n\n## OpenVibe.Inventory\n\n[inventory.openvibe.network](https://inventory.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Inventory)\n\n- openvibe-contracts v0.212.0 (was v0.209.0) (#73) ([`c8aba47`](https://github.com/OpenVibers/OpenVibe.Inventory/commit/c8aba4713a6807aff2164be23147e240e1823b2b))\n\n## OpenVibe.Network\n\n[openvibe.network](https://openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Network)\n\n- Signed out, the account hub asks no API on its way to /login (history, themes and notifications logged 401s) (#316) ([`8c5da17`](https://github.com/OpenVibers/OpenVibe.Network/commit/8c5da17f5a8c71a9fdd8f3132603836f8de3b882))\n\n## OpenVibe.Play\n\n[play.openvibe.network](https://play.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Play)\n\n- Play's home sections (games, most earned, questions) use the showcase's typeface and heading size (#32) ([`e0e6536`](https://github.com/OpenVibers/OpenVibe.Play/commit/e0e653653f24aeb2d780a2d170c98d94c832bd19))\n\n## OpenVibe.Search\n\n[search.openvibe.network](https://search.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Search)\n\n- Search's CSP allows its own web manifest (manifest-src 'self'; default-src 'none' refused it in every console) (#86) ([`568f5fa`](https://github.com/OpenVibers/OpenVibe.Search/commit/568f5fa564cf85af29de32ca18b288843ae89d62))\n\n## OpenVibe.Trade\n\n[openvibe.trade](https://openvibe.trade) · [repository](https://github.com/OpenVibers/OpenVibe.Trade)\n\n- Trade's home section headings take the showcase's size (30 px, not 28) (#89) ([`3194133`](https://github.com/OpenVibers/OpenVibe.Trade/commit/3194133c0daf686f43919d63b3534beeef7dc8e0))\n\n## OpenVibe.VIP\n\n[openvibe.vip](https://openvibe.vip) · [repository](https://github.com/OpenVibers/OpenVibe.VIP)\n\n- openvibe.vip's CSP allows Cloudflare Web Analytics' beacon (it was refused in every visitor's console) (#80) ([`e686fd0`](https://github.com/OpenVibers/OpenVibe.VIP/commit/e686fd0ccb0524609258e37660cb176cc767f503))\n\n## OpenVibe.Zone\n\n[openvibe.zone](https://openvibe.zone) · [repository](https://github.com/OpenVibers/OpenVibe.Zone)\n\n- The Zone home's own sections use the showcase's typeface and heading size, like the sections between them (#35) ([`2b2ac49`](https://github.com/OpenVibers/OpenVibe.Zone/commit/2b2ac495f8d3c1caa0215592ab844514d0873daa))\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-24T16:17:47.266Z","revised_at":"2026-10-24T16:17:47.250Z","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","bot","chat","media","ai","community","coupons","deals","games","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":[]}}