{"service":"chat","entries":[{"service":"chat","sha":"325f8781877b58c8a36970de0f99fac0fc3b874a","short":"325f878","subject":"One W3C trace across services (Track O): openvibe-shared v1.7.0 trace.install(app) keeps each request's traceparent and puts it on the calls made while serving it, to loopback and OpenVibe hosts only; Chat also takes the request context…","author":"OpenVibers","committed_at":"2026-09-24T06:16:19Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/325f8781877b58c8a36970de0f99fac0fc3b874a","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"6d86dd4c499a00a64c1469c30997fb8fd0fd3544","short":"6d86dd4","subject":"CI calls the shared test workflow (Track Q): OpenVibe.Shared test.yml@e8b0caf (install, node --check, npm test, openvibe-contracts-check; ffmpeg where the tests need it) instead of a copy of those steps","author":"OpenVibers","committed_at":"2026-09-24T05:46:48Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/6d86dd4c499a00a64c1469c30997fb8fd0fd3544","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"4e95c11fc07e8c01bbc96bbe70809bb8665a34c7","short":"4e95c11","subject":"VIP client from openvibe-sdk/vip (v0.7.0): the copy of openvibe-vip/client is replaced by the SDK's published seam, same API and fail-closed behaviour; server/vip/vip-client.js re-exports it so callers are unchanged","author":"OpenVibers","committed_at":"2026-09-24T05:35:45Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/4e95c11fc07e8c01bbc96bbe70809bb8665a34c7","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"fba087a8cd211ee6543b2463ad0029fac7225b95","short":"fba087a","subject":"VIP convergence (W10): Chat subscribes to vip.membership.changed; a delivery from VIP drops that member's cached subscriber-badge answers for the creator at once (vip/badges handleEvent) instead of converging by the cache TTL; any other…","author":"OpenVibers","committed_at":"2026-09-24T05:22:47Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/fba087a8cd211ee6543b2463ad0029fac7225b95","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"9ebde51bc57bfc6535e18be0aadfc8a127224d40","short":"9ebde51","subject":"Release manifest and metrics (Track R D43, Track O): openvibe-shared v1.6.0; GET /release.json (release, contracts and package versions) with POST /release-metrics, and GET /metrics (loopback only: request rates and latencies, process…","author":"OpenVibers","committed_at":"2026-09-24T05:01:02Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/9ebde51bc57bfc6535e18be0aadfc8a127224d40","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"990fbd1ee56bfc396f7198eb0112e104bb7043e7","short":"990fbd1","subject":"Staff gates ask the contracts staff map (D05, ADR-022): permissions.can(user, 'staff.<area>.<action>') over openvibe-contracts v0.35.0 (issued staff_caps claims win); per-IP and ban exemptions are staff.limits.exempt, chat-restriction…","author":"OpenVibers","committed_at":"2026-09-24T04:43:15Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/990fbd1ee56bfc396f7198eb0112e104bb7043e7","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"1d0e12afb9e88123dcda14d5b50276b03c839036","short":"1d0e12a","subject":"Sound uploads convert through OpenVibe.Tools (platform S9): the mp3 tool's run API via openvibe-sdk/tools (v0.6.0) with Chat's service token (tools.tool.run, tools.job.read), 128 kbps 44.1 kHz stereo, the result downloaded from the jobs…","author":"OpenVibers","committed_at":"2026-09-24T04:01:25Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/1d0e12afb9e88123dcda14d5b50276b03c839036","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"1ef6f992570328e6f7c8c7a8e5168226fb2987db","short":"1ef6f99","subject":"SECURITY.md: how to report a vulnerability (contact@openvibe.network, 7-day reply, scope, supported versions)","author":"OpenVibers","committed_at":"2026-09-24T02:27:25Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/1ef6f992570328e6f7c8c7a8e5168226fb2987db","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"d268cf88d76a10f79622c6b6f0c7ee8c0603f136","short":"d268cf8","subject":"A chat line that could not be saved is not broadcast: the sender gets an error and nobody sees a message that history, moderation and replays never have (the insert failure used to be swallowed as non-critical). ws-protocol test","author":"OpenVibers","committed_at":"2026-09-24T02:21:31Z","deployed_at":"2026-09-24T06:16:19.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/d268cf88d76a10f79622c6b6f0c7ee8c0603f136","post_id":"pst_01M39313D833G8QVPQ9FGEEF5E"},{"service":"chat","sha":"fcc824a67b5bcfe51567e35f5c1a8ec4bdce29ac","short":"fcc824a","subject":"openvibe-contracts v0.33.0","author":"OpenVibers","committed_at":"2026-09-23T23:20:01Z","deployed_at":"2026-09-23T23:20:01.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/fcc824a67b5bcfe51567e35f5c1a8ec4bdce29ac","post_id":null},{"service":"chat","sha":"4abf0fa09b3bd1f751e6f375e74d6259ebb26020","short":"4abf0fa","subject":"openvibe-contracts v0.32.0: chat.message.send is chat's own capability, checked with a literal id","author":"OpenVibers","committed_at":"2026-09-23T22:16:12Z","deployed_at":"2026-09-23T22:16:12.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/4abf0fa09b3bd1f751e6f375e74d6259ebb26020","post_id":null},{"service":"chat","sha":"ed90461e2fd4537332275f6efec8bb878ce4ac2a","short":"ed90461","subject":"Events consumer (compatibility register C-84): Chat subscribes to live.release.deployed and network.module.updated and receives them at POST /internal/events (server/events/consumer.js). live.release.deployed makes the deploy card exactly…","author":"OpenVibers","committed_at":"2026-09-23T21:40:27Z","deployed_at":"2026-09-23T21:40:27.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/ed90461e2fd4537332275f6efec8bb878ce4ac2a","post_id":null},{"service":"chat","sha":"c645a53addda67a8b1f4e4a3faf9f5bd1587b503","short":"c645a53","subject":"Chat preferences move to the OpenVibe.Network user module chat.preferences (roadmap Wave 1 item 24; Chat owns the namespace since the Wave 6 cutover). GET /api/chat/preferences and PUT /api/chat/preferences { preferences } (a patch, null…","author":"OpenVibers","committed_at":"2026-09-23T21:00:08Z","deployed_at":"2026-09-23T21:00:08.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/c645a53addda67a8b1f4e4a3faf9f5bd1587b503","post_id":null},{"service":"chat","sha":"789768806b0d217b0bc735c319d20d1b6ebb4df8","short":"7897688","subject":"Deploy notices: a new deploy folds into the last card only if nobody has spoken in ANY room since (the global feed shows stream messages too, so cards kept folding past them and their time ranges ran past the messages below), and only…","author":"OpenVibers","committed_at":"2026-09-23T20:06:03Z","deployed_at":"2026-09-23T20:06:03.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/789768806b0d217b0bc735c319d20d1b6ebb4df8","post_id":null},{"service":"chat","sha":"d02a73c52ef54e73557f510d8fbfd7aab5d7c9aa","short":"d02a73c","subject":"VIP member badges: a member's messages in a creator's room carry the creator's VIP badge (a perk of their plan version bound to `chat badge`), resolved through OpenVibe.VIP's entitlement check (product chat) behind the shared product cache","author":"OpenVibers","committed_at":"2026-09-23T19:38:48Z","deployed_at":"2026-09-23T19:38:48.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/d02a73c52ef54e73557f510d8fbfd7aab5d7c9aa","post_id":null},{"service":"chat","sha":"9e0563a54951fc8bfd7c99ffa8ae5507095f5cd7","short":"9e0563a","subject":"CI: run the shared security workflow (gitleaks secret scan + dependency audit, Track Q)","author":"OpenVibers","committed_at":"2026-09-23T19:33:55Z","deployed_at":"2026-09-23T19:33:55.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/9e0563a54951fc8bfd7c99ffa8ae5507095f5cd7","post_id":null},{"service":"chat","sha":"bf88760b24f6b7c0969ea4e96680352f5b951abd","short":"bf88760","subject":"Persisted TTS and sound queue: every TTS utterance, channel !sound and 101soundboards clip is a row of audio_requests (server/chat/audio-queue.js) played one at a time per room, queued -> playing -> played, or skipped / failed. The audio…","author":"OpenVibers","committed_at":"2026-09-23T19:10:42Z","deployed_at":"2026-09-23T19:10:42.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/bf88760b24f6b7c0969ea4e96680352f5b951abd","post_id":null},{"service":"chat","sha":"49a501189c625f229df649fc666a6a6a190b7e4c","short":"49a5011","subject":"Chat restart and cursor resume: test/restart-resume.test.js runs Chat as its own process, restarts it with SIGTERM on the same database, and proves that stream, global and channel readers that reconnect and read after_id=<last cursor> end…","author":"OpenVibers","committed_at":"2026-09-23T18:59:44Z","deployed_at":"2026-09-23T18:59:44.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/49a501189c625f229df649fc666a6a6a190b7e4c","post_id":null},{"service":"chat","sha":"791cd3d6605f7362c5d9ba966400e781c4dd8b41","short":"791cd3d","subject":"Enforce chat.message.send on the service API: an /internal/live/calls op that sends a chat message (a saveChatMessage write, the deploy notice, or a pushed chat/dm frame through any broadcast op or sendDm) needs chat.message.send in the…","author":"OpenVibers","committed_at":"2026-09-23T18:55:36Z","deployed_at":"2026-09-23T18:55:36.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/791cd3d6605f7362c5d9ba966400e781c4dd8b41","post_id":null},{"service":"chat","sha":"4cc1cbe7c10c8b8c7e317e19527818853542a8d2","short":"4cc1cbe","subject":"chat.message.deleted: every delete of public-room messages (one message by a moderator or through Live's bridge, a user's / anon's / relay user's history from self-delete or /api/mod, a time-range purge, the auto-delete sweep) adds a…","author":"OpenVibers","committed_at":"2026-09-23T18:40:56Z","deployed_at":"2026-09-23T18:40:56.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Chat/commit/4cc1cbe7c10c8b8c7e317e19527818853542a8d2","post_id":null}],"next":"MjAyNi0wOS0yM1QxODo0MDo1Ni4wMDBafDI1Mg","latest_post":{"id":"pst_01M39313D833G8QVPQ9FGEEF5E","title":"Patch notes: 120 changes across 18 sites","url":"https://openvibe.blog/@openvibe/patch-notes-120-changes-across-18-sites","published_at":1790232792495,"entries":120},"posts":[{"id":"pst_01M39313D833G8QVPQ9FGEEF5E","title":"Patch notes: 120 changes across 18 sites","url":"https://openvibe.blog/@openvibe/patch-notes-120-changes-across-18-sites","published_at":1790232792495,"entries":120}]}