{"id":"pst_01M5NTT2DHRMNERGA6P8BEW05H","url":"https://openvibe.blog/@openvibe/patch-notes-each-page-carries-only-its-own-markup-and-one-h1-oct-24","blog":{"id":"blg_01M362MF0EDJ7QHQTRD8A3Q981","handle":"openvibe","title":"The OpenVibe blog","url":"https://openvibe.blog/"},"title":"Patch notes: Each page carries only its own markup and one <h1> (Oct 24)","summary":"What shipped on OpenVibe from 2026-10-23 to 2026-10-24: 74 changes to OpenVibe.Live, OpenVibe.Host, OpenVibe.Sources, OpenVibe.Network, OpenVibe.Tools, OpenVibe.Bot and 31 more.","body_markdown":"What shipped on OpenVibe from 2026-10-23 to 2026-10-24: 74 changes to OpenVibe.Live, OpenVibe.Host, OpenVibe.Sources, OpenVibe.Network, OpenVibe.Tools, OpenVibe.Bot and 31 more. Every line below is a commit message from the OpenVibers repositories, linked to the change itself.\n\n## Highlights\n\n- **OpenVibe.Live:** Each page carries only its own markup and one <h1>: the home page, Updates and the Rundown are fragments inlined on their own route, so other pages lose the home hero's 37 KB and its <h1> (#343) ([`d8b4159`](https://github.com/OpenVibers/OpenVibe.Live/commit/d8b415911cb82fbeda6ddabb7d18e0a1e8d1772e))\n\n## OpenVibe.Live\n\n[openvibe.live](https://openvibe.live) · [repository](https://github.com/OpenVibers/OpenVibe.Live)\n\n- A clip whose speech-to-text failed is retried instead of keeping an empty transcript; the moments job reads chat spikes over the stream's own span (#337) ([`61d0bb5`](https://github.com/OpenVibers/OpenVibe.Live/commit/61d0bb5074a7fb964867dc8bdc6d1f283ae6aa9b))\n- WebSocket paths Live does not serve get a plain HTTP answer (410 for the retired /ws/control, else 404) instead of a dropped socket nginx logged as a 502 (#338) ([`977e078`](https://github.com/OpenVibers/OpenVibe.Live/commit/977e0788921067dc854a446db635413799b661a3))\n- AI moment and clip titles also pass the shared looks rule (db.hasLooks): \"A Naked Man Lying On Their Back\" reached Live's home (#339) ([`4b0f808`](https://github.com/OpenVibers/OpenVibe.Live/commit/4b0f808876cd3aec323b5b6ffd85f9a29a1777a6))\n- A browser chunk opens a new VOD only for a live stream and only when it starts a WebM file; the broadcast page stops or restarts its recorder when told (#340) ([`9656cad`](https://github.com/OpenVibers/OpenVibe.Live/commit/9656cadf8416cd71ab552a80d469923a871ddfaf))\n- At 1280 px and wider the home's stat pills take the card's whole width and the labels sit tighter: the pills and STREAMERS were cut off (#341) ([`02fc1d8`](https://github.com/OpenVibers/OpenVibe.Live/commit/02fc1d823ca9e68b1e9ba37bf0fd859617791a0d))\n- openvibe-shared v4.10.0 (was v4.9.0) (#342) ([`c37386b`](https://github.com/OpenVibers/OpenVibe.Live/commit/c37386ba6e52461d288acf95a67f3d06c20573df))\n- Each page carries only its own markup and one <h1>: the home page, Updates and the Rundown are fragments inlined on their own route, so other pages lose the home hero's 37 KB and its <h1> (#343) ([`d8b4159`](https://github.com/OpenVibers/OpenVibe.Live/commit/d8b415911cb82fbeda6ddabb7d18e0a1e8d1772e))\n\n## OpenVibe.Host\n\n[openvibe.host](https://openvibe.host) · [repository](https://github.com/OpenVibers/OpenVibe.Host)\n\n- Every openvibe-* and openre-* service starts after PostgreSQL, PgBouncer and Valkey, and PgBouncer after PostgreSQL (boot-order drop-ins) (#145) ([`46d0606`](https://github.com/OpenVibers/OpenVibe.Host/commit/46d06063275a0cd9105755c72b5dc15d6f31cf67))\n- deploy --install-units on a service already at its target installs unit files that differ, and restarts nothing (#146) ([`dccb160`](https://github.com/OpenVibers/OpenVibe.Host/commit/dccb16083c3cba435de420206cd55260013d34cb))\n- Root runs a command as another user through setpriv, not runuser: no PAM session, so the 5-minute reconcile stops writing ~700 pam_unix lines a run (#147) ([`9012b0c`](https://github.com/OpenVibers/OpenVibe.Host/commit/9012b0cd3940b783e69c168ecc262286d6ad5b46))\n- PgBouncer logs pooler errors, not every client login and close (#148) ([`884a7d5`](https://github.com/OpenVibers/OpenVibe.Host/commit/884a7d56b54c8b115eff9dd5aa75100b4c8675b8))\n- openvibe-shared v4.10.0 (was v4.9.0) (#149) ([`eb8361a`](https://github.com/OpenVibers/OpenVibe.Host/commit/eb8361a345e022dd8c5543aeea9be667ca780d86))\n\n## OpenVibe.Sources\n\n[sources.openvibe.network](https://sources.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Sources)\n\n- An api endpoint may map lists (extra_lists: tags, job types); Arbeitnow maps both (contracts v0.212.0) (#92) ([`aea3106`](https://github.com/OpenVibers/OpenVibe.Sources/commit/aea3106f998ac3d5b87816321a91b6051fdfad03))\n- An api endpoint may read a tab-separated body (format tsv) and keep the newest of a series' rows (duplicates last); BLS average food prices seeded (disabled) (#97) ([`bf98f3e`](https://github.com/OpenVibers/OpenVibe.Sources/commit/bf98f3ede7c6e6f6b012f62537f04edaf8c191e0))\n- openvibe-shared v4.10.0 (was v4.9.0) (#98) ([`e02d5b8`](https://github.com/OpenVibers/OpenVibe.Sources/commit/e02d5b82c33004e84f0519773fa7c4e15a1ad942))\n- The registry keeps an api endpoint's duplicates setting; a seed test checks no endpoint field is dropped (BLS kept every series' 1995 price) (#99) ([`7d933ba`](https://github.com/OpenVibers/OpenVibe.Sources/commit/7d933ba8c4122096b356ac7a19bb33489b1d2822))\n- A patch that changes a source's endpoints clears their stored ETag and Last-Modified, so the next fetch parses with the new settings (#100) ([`e4e55d6`](https://github.com/OpenVibers/OpenVibe.Sources/commit/e4e55d65b69da28be6c1f4726e3d0c5eebf0eef4))\n\n## OpenVibe.Network\n\n[openvibe.network](https://openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Network)\n\n- Deploy drift and library tags await their GitHub token: unawaited, every call sent \"Bearer [object Promise]\" and GitHub answered 401 (#312) ([`2d17315`](https://github.com/OpenVibers/OpenVibe.Network/commit/2d17315b801ab546363bfbbe04db3b76fde54595))\n- openvibe-shared v4.10.0 (was v4.9.0) (#313) ([`22b85dc`](https://github.com/OpenVibers/OpenVibe.Network/commit/22b85dcfc7efd7112c46624f7a44511f15e65bce))\n- openvibe-contracts v0.212.0 (was v0.209.3) (#314) ([`3b1ce67`](https://github.com/OpenVibers/OpenVibe.Network/commit/3b1ce670ebe4969427c4e136e4c894ee49b2b18c))\n- Network keeps raw bot analytics 7 days (visitors 30): 1.22M of its 2.46M raw rows were bots (#315) ([`2115d37`](https://github.com/OpenVibers/OpenVibe.Network/commit/2115d374ef0d563b1048d9f640f0cd45c0e4fd7d))\n\n## OpenVibe.Tools\n\n[openvibe.tools](https://openvibe.tools) · [repository](https://github.com/OpenVibers/OpenVibe.Tools)\n\n- STATUS names the SDK and Shared it pins: v0.62.0 and v4.9.0 (it said v0.60.0 and v4.4.0) (#90) ([`663ea7e`](https://github.com/OpenVibers/OpenVibe.Tools/commit/663ea7eacfc650a961bb9b80f4f30f6de5a2ae56))\n- The gateway keeps retrying Network's public key every 30 s until it loads, instead of only at boot and on a signed-in request (#91) ([`113974c`](https://github.com/OpenVibers/OpenVibe.Tools/commit/113974c9d5472e7a7d54b98731c8db7a80f14a40))\n- openvibe-shared v4.10.0 (was v4.9.0) (#92) ([`aa91e36`](https://github.com/OpenVibers/OpenVibe.Tools/commit/aa91e369ac021ceac5f872c56a1a1bff8b1a86e7))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#93) ([`d497d90`](https://github.com/OpenVibers/OpenVibe.Tools/commit/d497d9081b917f953e100db0958c61bfe87bb5d0))\n\n## OpenVibe.Bot\n\n[openvibe.bot](https://openvibe.bot) · [repository](https://github.com/OpenVibers/OpenVibe.Bot)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#149) ([`439d422`](https://github.com/OpenVibers/OpenVibe.Bot/commit/439d42275deb44b60223fe89b9ecb2e24a04fadd))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#150) ([`90c268e`](https://github.com/OpenVibers/OpenVibe.Bot/commit/90c268edaca7c78af47049d6f5380a8540aac9d1))\n- A shared /try link shows Bot's card: panel pages with a description carry og:url, og:image and a large Twitter card (#151) ([`bb2d94a`](https://github.com/OpenVibers/OpenVibe.Bot/commit/bb2d94a8b461e41ff3b78f1d79ca8cb826346fcf))\n\n## OpenVibe.Deals\n\n[openvibe.deals](https://openvibe.deals) · [repository](https://github.com/OpenVibers/OpenVibe.Deals)\n\n- The sitemaps' offer and product lists are built once for concurrent readers, 8 views at a time, and reused for 10 minutes in production: each /sitemap.xml fetch read every view at once (#82) ([`c27ead8`](https://github.com/OpenVibers/OpenVibe.Deals/commit/c27ead8d2eab3f3010eb223e55ca207f21ff5ce8))\n- openvibe-shared v4.10.0 (was v4.9.0) (#83) ([`a6e15ac`](https://github.com/OpenVibers/OpenVibe.Deals/commit/a6e15acda63ec5a33e0d7a0bb9eb352f1692e983))\n- openvibe-sdk v0.63.0 (was v0.62.0) (#84) ([`d786deb`](https://github.com/OpenVibers/OpenVibe.Deals/commit/d786deb04d4e7fd135687a62ae3d672bf86149ac))\n\n## OpenVibe.Food\n\n[openvibe.food](https://openvibe.food) · [repository](https://github.com/OpenVibers/OpenVibe.Food)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#79) ([`d6c6f2f`](https://github.com/OpenVibers/OpenVibe.Food/commit/d6c6f2f0dc773da250010ebe5a2a2b2a34bb6cc4))\n- Food near you tries Overpass servers in order, each with a share of the budget, and falls back to the last cached answer: one overloaded server held every search for 25 s (#80) ([`1d8abf1`](https://github.com/OpenVibers/OpenVibe.Food/commit/1d8abf1ba9bf5bce2e55a235fc732091becea9ee))\n- The US average price sentence keeps the BLS item's inner capitals (eggs, grade A, large) (#81) ([`7bb3028`](https://github.com/OpenVibers/OpenVibe.Food/commit/7bb3028b00423254bc57c4504b919f17a1e13fb6))\n\n## OpenVibe.Help\n\n[openvibe.help](https://openvibe.help) · [repository](https://github.com/OpenVibers/OpenVibe.Help)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#82) ([`be40083`](https://github.com/OpenVibers/OpenVibe.Help/commit/be400836952d9a74470c672f84a38f0cbd302cf5))\n- openvibe-sdk v0.63.0 (was v0.62.0) (#83) ([`def7a79`](https://github.com/OpenVibers/OpenVibe.Help/commit/def7a79cf6dd4c0f5d2b65d91ad35c5a0f487671))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#84) ([`59c565e`](https://github.com/OpenVibers/OpenVibe.Help/commit/59c565e65d146b12dc24458542e7522ae584efa3))\n\n## OpenVibe.AI\n\n[ai.openvibe.services](https://ai.openvibe.services) · [repository](https://github.com/OpenVibers/OpenVibe.AI)\n\n- The loopback media reader rewrites HLS playlists, so Media's virtual clips (a playlist, no file) are transcribed instead of failing as unreadable (#140) ([`1218cac`](https://github.com/OpenVibers/OpenVibe.AI/commit/1218cacb9e0eb771793bb3f9d6ddc2fdfcdca8a6))\n- openvibe-shared v4.10.0 (was v4.9.0) (#141) ([`492dfe3`](https://github.com/OpenVibers/OpenVibe.AI/commit/492dfe38f83f1eba8f604e27684b15ddd422c5e2))\n\n## OpenVibe.Codes\n\n[openvibe.codes](https://openvibe.codes) · [repository](https://github.com/OpenVibers/OpenVibe.Codes)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#101) ([`a91064f`](https://github.com/OpenVibers/OpenVibe.Codes/commit/a91064fc2be018da7c2ef1368b78085c6316d746))\n- openvibe-contracts v0.212.0 (was v0.209.0) (#102) ([`c163645`](https://github.com/OpenVibers/OpenVibe.Codes/commit/c16364546a9f08570dd47f4bb9ea177cde975b53))\n\n## OpenVibe.Games\n\n[openvibe.games](https://openvibe.games) · [repository](https://github.com/OpenVibers/OpenVibe.Games)\n\n- STATUS names the SDK and Shared it pins: v0.62.0 and v4.9.0 (it said v0.60.0 and v4.4.0) (#141) ([`45175ac`](https://github.com/OpenVibers/OpenVibe.Games/commit/45175ac47dbda82b45e6206da849d44a4cbb0d7b))\n- openvibe-shared v4.10.0 (was v4.9.0) (#142) ([`87a4787`](https://github.com/OpenVibers/OpenVibe.Games/commit/87a47871addcc0129f97463ec26545e67e92810b))\n\n## OpenVibe.Media\n\n[openvibe.media](https://openvibe.media) · [repository](https://github.com/OpenVibers/OpenVibe.Media)\n\n- Under VOD_DISK_STOP_GB free (3) the recorder stops the largest running recording, one per minute, so a long stream cannot fill the disk PostgreSQL shares (#162) ([`895a390`](https://github.com/OpenVibers/OpenVibe.Media/commit/895a390048a124855ad1394f01a78b4a5a28af95))\n- openvibe-shared v4.10.0 (was v4.9.0) (#163) ([`6dea21c`](https://github.com/OpenVibers/OpenVibe.Media/commit/6dea21c7bb82bf9d52ccca8d82ed66c056a4b72e))\n\n## OpenVibe.Reviews\n\n[openvibe.reviews](https://openvibe.reviews) · [repository](https://github.com/OpenVibers/OpenVibe.Reviews)\n\n- The sitemaps' entity list is built once for concurrent readers, 8 entities at a time, and reused for 10 minutes in production: each /sitemap.xml fetch fired ~30,000 queries at once (#93) ([`58ec028`](https://github.com/OpenVibers/OpenVibe.Reviews/commit/58ec0288659f7c5f452bd20ea4b8724ba26dba7d))\n- openvibe-shared v4.10.0 (was v4.9.0) (#94) ([`520f305`](https://github.com/OpenVibers/OpenVibe.Reviews/commit/520f305e7056e1ca013bcc29d55fb4b857c2cafc))\n\n## OpenVibe.Search\n\n[search.openvibe.network](https://search.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Search)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#84) ([`4a0452c`](https://github.com/OpenVibers/OpenVibe.Search/commit/4a0452c3707deba085537fee3555af4c29237887))\n- openvibe-sdk v0.63.0 (was v0.62.0) (#85) ([`f1eccbd`](https://github.com/OpenVibers/OpenVibe.Search/commit/f1eccbde58f1a6c29080c28c0d0add958bb1e7b4))\n\n## OpenVibe.Services\n\n[openvibe.services](https://openvibe.services) · [repository](https://github.com/OpenVibers/OpenVibe.Services)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#96) ([`4bee197`](https://github.com/OpenVibers/OpenVibe.Services/commit/4bee19720766483e00ac1ad638341667bb221f74))\n- openvibe-contracts v0.212.0 (was v0.209.2) (#97) ([`effbb85`](https://github.com/OpenVibers/OpenVibe.Services/commit/effbb85dca5082844ac2c11e62dfadb3935c56d2))\n\n## OpenVibe.Trade\n\n[openvibe.trade](https://openvibe.trade) · [repository](https://github.com/OpenVibers/OpenVibe.Trade)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#87) ([`c66e560`](https://github.com/OpenVibers/OpenVibe.Trade/commit/c66e560d63d1e85d0ca681eed10b7e724211e444))\n- openvibe-sdk v0.63.0 (was v0.62.0) (#88) ([`5044637`](https://github.com/OpenVibers/OpenVibe.Trade/commit/504463719981f36683b743b2be390dd85a200b17))\n\n## OpenVibe.Work\n\n[openvibe.work](https://openvibe.work) · [repository](https://github.com/OpenVibers/OpenVibe.Work)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#70) ([`ad1d966`](https://github.com/OpenVibers/OpenVibe.Work/commit/ad1d966c3e2ae90bb8ea286755707fb5a20d5ea6))\n- openvibe-sdk v0.63.0 (was v0.62.0) (#71) ([`f04c7a8`](https://github.com/OpenVibers/OpenVibe.Work/commit/f04c7a8d914c48e8b10a49386533503464f5e52c))\n\n## OpenVibe.Actor\n\n[openvibe.actor](https://openvibe.actor) · [repository](https://github.com/OpenVibers/OpenVibe.Actor)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#105) ([`b2509c8`](https://github.com/OpenVibers/OpenVibe.Actor/commit/b2509c84ae317ed04967aeeb6a8448716ee324a5))\n\n## OpenVibe.Billing\n\n[billing.openvibe.network](https://billing.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Billing)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#92) ([`1589af9`](https://github.com/OpenVibers/OpenVibe.Billing/commit/1589af963bdbf2412d67a4f52cc01b0aa441b417))\n\n## OpenVibe.Blog\n\n[openvibe.blog](https://openvibe.blog) · [repository](https://github.com/OpenVibers/OpenVibe.Blog)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#76) ([`dc9944d`](https://github.com/OpenVibers/OpenVibe.Blog/commit/dc9944d3ecb6abfa27c6a8c557824e700d8f43b9))\n\n## OpenVibe.Chat\n\n[openvibe.chat](https://openvibe.chat) · [repository](https://github.com/OpenVibers/OpenVibe.Chat)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#134) ([`cdf526d`](https://github.com/OpenVibers/OpenVibe.Chat/commit/cdf526d85d7d1e35bb5771e075651dc2e87f16e7))\n\n## OpenVibe.Community\n\n[openvibe.community](https://openvibe.community) · [repository](https://github.com/OpenVibers/OpenVibe.Community)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#126) ([`2795669`](https://github.com/OpenVibers/OpenVibe.Community/commit/2795669e4c1d8d2531656540f92ac3870ae313c2))\n\n## OpenVibe.Coupons\n\n[openvibe.coupons](https://openvibe.coupons) · [repository](https://github.com/OpenVibers/OpenVibe.Coupons)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#86) ([`35dc8d3`](https://github.com/OpenVibers/OpenVibe.Coupons/commit/35dc8d30aa6d2ea67147bf1625fdaf51ff51cdb4))\n\n## OpenVibe.Events\n\n[openvibe.events](https://openvibe.events) · [repository](https://github.com/OpenVibers/OpenVibe.Events)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#109) ([`95878cb`](https://github.com/OpenVibers/OpenVibe.Events/commit/95878cb931743341418d1cd396064e4faf19ec2e))\n\n## OpenVibe.Inventory\n\n[inventory.openvibe.network](https://inventory.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Inventory)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#72) ([`8f3d595`](https://github.com/OpenVibers/OpenVibe.Inventory/commit/8f3d595b86cacc2cd18e2f3ae3cd9fe6b41de8fb))\n\n## OpenVibe.MediaHub\n\n[openvibe.video](https://openvibe.video) · [repository](https://github.com/OpenVibers/OpenVibe.MediaHub)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#119) ([`864ac2b`](https://github.com/OpenVibers/OpenVibe.MediaHub/commit/864ac2bf75beed85a826fb6055a9084578c1c4e9))\n\n## OpenVibe.News\n\n[openvibe.news](https://openvibe.news) · [repository](https://github.com/OpenVibers/OpenVibe.News)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#87) ([`91e0167`](https://github.com/OpenVibers/OpenVibe.News/commit/91e016760202e72e5048a5515af24550dac8f951))\n\n## OpenVibe.Play\n\n[play.openvibe.network](https://play.openvibe.network) · [repository](https://github.com/OpenVibers/OpenVibe.Play)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#31) ([`ff4e27f`](https://github.com/OpenVibers/OpenVibe.Play/commit/ff4e27fc728f91fd98dbeca332b59a75918ac970))\n\n## OpenVibe.Quest\n\n[openvibe.quest](https://openvibe.quest) · [repository](https://github.com/OpenVibers/OpenVibe.Quest)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#78) ([`345e126`](https://github.com/OpenVibers/OpenVibe.Quest/commit/345e126cf0231a5d64df1f943d161a130ef83013))\n\n## OpenVibe.Rent\n\n[openvibe.rent](https://openvibe.rent) · [repository](https://github.com/OpenVibers/OpenVibe.Rent)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#89) ([`da23d62`](https://github.com/OpenVibers/OpenVibe.Rent/commit/da23d62f845a9e9a6cc90ef86449614acb6592fd))\n\n## OpenVibe.Space\n\n[openvibe.space](https://openvibe.space) · [repository](https://github.com/OpenVibers/OpenVibe.Space)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#80) ([`05ba837`](https://github.com/OpenVibers/OpenVibe.Space/commit/05ba837b5e1c8c2dd8a2091adb52802a55994c1d))\n\n## OpenVibe.Tips\n\n[openvibe.tips](https://openvibe.tips) · [repository](https://github.com/OpenVibers/OpenVibe.Tips)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#80) ([`dfe0ad9`](https://github.com/OpenVibers/OpenVibe.Tips/commit/dfe0ad98a6753575d8d82c25160911bcad7f8c2f))\n\n## OpenVibe.VIP\n\n[openvibe.vip](https://openvibe.vip) · [repository](https://github.com/OpenVibers/OpenVibe.VIP)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#79) ([`2148e3a`](https://github.com/OpenVibers/OpenVibe.VIP/commit/2148e3a7b4c04182480027ef9b0d5998f6954c4c))\n\n## OpenVibe.Watch\n\n[openvibe.watch](https://openvibe.watch) · [repository](https://github.com/OpenVibers/OpenVibe.Watch)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#90) ([`c1e5c99`](https://github.com/OpenVibers/OpenVibe.Watch/commit/c1e5c994b05a2c7ef3c40687069cd0f236f3579e))\n\n## OpenVibe.Wiki\n\n[openvibe.wiki](https://openvibe.wiki) · [repository](https://github.com/OpenVibers/OpenVibe.Wiki)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#98) ([`e7aa311`](https://github.com/OpenVibers/OpenVibe.Wiki/commit/e7aa3115cf5b6d8d30b36c494196807fadcf302b))\n\n## OpenVibe.Zone\n\n[openvibe.zone](https://openvibe.zone) · [repository](https://github.com/OpenVibers/OpenVibe.Zone)\n\n- openvibe-shared v4.10.0 (was v4.9.0) (#34) ([`b9dbdfb`](https://github.com/OpenVibers/OpenVibe.Zone/commit/b9dbdfbacf64be304df7f94a6659fa6b69cdcd90))\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-24T02:11:04.791Z","revised_at":"2026-10-24T02:11:04.765Z","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","host","sources","network","tools","bot","deals","food","help","ai"],"categories":[],"series":{"title":"Patch notes","url":"https://openvibe.blog/@openvibe/series/patch-notes","position":null},"media":[],"citations":[],"indexability":{"indexable":true,"robots":"index, follow","reasons":[]}}