{"service":"blog","entries":[{"service":"blog","sha":"e4d201c915d3060a26c5a26a84bba0854a4b7d98","short":"e4d201c","subject":"The OpenVibe Frame: openvibe-shared/frame (formerly chrome-ssr) and 1.11.0; openvibe-publishing 0.3.2 (one copy of openvibe-shared)","author":"OpenVibers","committed_at":"2026-09-24T07:55:29Z","deployed_at":"2026-09-24T07:55:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/e4d201c915d3060a26c5a26a84bba0854a4b7d98","post_id":null},{"service":"blog","sha":"528f9170bded7ba55dfc1c1db73cf9eaae87e28e","short":"528f917","subject":"The shared update system and one account UI: the home shows what shipped, /updates is the shared log, the footer (now initialised in the browser too) links it; the shared navbar handles sign in/out with logoutUrl ending this site's…","author":"OpenVibers","committed_at":"2026-09-24T07:37:24Z","deployed_at":"2026-09-24T07:55:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/528f9170bded7ba55dfc1c1db73cf9eaae87e28e","post_id":null},{"service":"blog","sha":"dc3f3a11af335ee1e102a76cde353bd68651e8b7","short":"dc3f3a1","subject":"changelog: every site's updates log — commit authors, a page cursor (before), a one-time import of each site's last CHANGELOG_HISTORY commits (never pending, never in a post), the recent patch notes posts and a per-site summary in the…","author":"OpenVibers","committed_at":"2026-09-24T06:59:33Z","deployed_at":"2026-09-24T06:59:33.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/dc3f3a11af335ee1e102a76cde353bd68651e8b7","post_id":null},{"service":"blog","sha":"58d2e456ae3e93d539e4711ec722e3f462a2ed32","short":"58d2e45","subject":"changelog: Network's /api/v1/registry/releases lists services under 'services' (the test stub now answers in that shape)","author":"OpenVibers","committed_at":"2026-09-24T06:51:29Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/58d2e456ae3e93d539e4711ec722e3f462a2ed32","post_id":null},{"service":"blog","sha":"32cb1aa0eb6f9fef7a4728829d7b466c64e5aa34","short":"32cb1aa","subject":"The network changelog and its patch notes: every OpenVibe site's shipped commits in one feed, published on the blog in batches. The worker reads each service's repository and current release from OpenVibe.Network's registry, takes the…","author":"OpenVibers","committed_at":"2026-09-24T06:44:17Z","deployed_at":"2026-09-24T06:51:29.000Z","major":true,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/32cb1aa0eb6f9fef7a4728829d7b466c64e5aa34","post_id":null},{"service":"blog","sha":"4d522cac3c4b54bde24d4702ef27148d00222c0d","short":"4d522ca","subject":"Draft with AI (W13, proof flow 5): a member who may write on a blog asks OpenVibe.AI's blog.draft_post (openvibe-publishing v0.3.0 ai client, Blog's service token) for a draft from a topic, brief, tone and audience; the answer becomes an…","author":"OpenVibers","committed_at":"2026-09-24T06:33:01Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/4d522cac3c4b54bde24d4702ef27148d00222c0d","post_id":null},{"service":"blog","sha":"36b6f598909bd1e425e20c0bd484886868acd988","short":"36b6f59","subject":"CI calls the shared test workflow (Track Q): OpenVibe.Shared .github/workflows/test.yml@f5e7e73 (install, node --check over server/ and scripts/, npm test, openvibe-contracts-check) instead of a copy of those steps","author":"OpenVibers","committed_at":"2026-09-24T05:43:47Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/36b6f598909bd1e425e20c0bd484886868acd988","post_id":null},{"service":"blog","sha":"eae013fe122a3dc1041342c4fe2de9a2832d4595","short":"eae013f","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:48Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/eae013fe122a3dc1041342c4fe2de9a2832d4595","post_id":null},{"service":"blog","sha":"0784b429a1bdcc3c770abed5800ca5171ecb0cf2","short":"0784b42","subject":"An edit that does not send citations keeps them: the /write editor does not resend a post's citations, so every edit made there dropped them from the new revision. Sending a list (even an empty one) still replaces them. lifecycle test","author":"OpenVibers","committed_at":"2026-09-24T02:36:08Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/0784b429a1bdcc3c770abed5800ca5171ecb0cf2","post_id":null},{"service":"blog","sha":"a994d8a1a467b93ddf1fc11255f42ab0c31cc24e","short":"a994d8a","subject":"openvibe-publishing v0.2.2 (shares the openvibe-shared v1.5.1 copy instead of installing v1.0.0 alongside)","author":"OpenVibers","committed_at":"2026-09-24T02:32:29Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/a994d8a1a467b93ddf1fc11255f42ab0c31cc24e","post_id":null},{"service":"blog","sha":"2c716a25c80258ebe2fbf4daae6ea49b73bd88f3","short":"2c716a2","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:24Z","deployed_at":"2026-09-24T06:51:29.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/2c716a25c80258ebe2fbf4daae6ea49b73bd88f3","post_id":null},{"service":"blog","sha":"d9c700562e72f154efdff27ad25f2e4368de7784","short":"d9c7005","subject":"openvibe-shared v1.5.1, openvibe-contracts v0.33.0","author":"OpenVibers","committed_at":"2026-09-23T23:15:52Z","deployed_at":"2026-09-23T23:15:52.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/d9c700562e72f154efdff27ad25f2e4368de7784","post_id":null},{"service":"blog","sha":"c64bc8338be9e75a0ee7c41a586c1498c3bcfe4d","short":"c64bc83","subject":"openvibe-shared v1.5.0 (Track R release manifest), openvibe-contracts v0.32.0, openvibe-sdk v0.5.0","author":"OpenVibers","committed_at":"2026-09-23T22:23:20Z","deployed_at":"2026-09-23T22:23:20.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/c64bc8338be9e75a0ee7c41a586c1498c3bcfe4d","post_id":null},{"service":"blog","sha":"95e99acdcf4610f244b64d8e34afcb8f394685d9","short":"95e99ac","subject":"Members-only posts through OpenVibe.VIP: the blog owner's members read, everyone else gets a teaser and a join link, never the body","author":"OpenVibers","committed_at":"2026-09-23T19:37:08Z","deployed_at":"2026-09-23T19:37:08.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/95e99acdcf4610f244b64d8e34afcb8f394685d9","post_id":null},{"service":"blog","sha":"9078214de7e2d08e03bac7e5360cc1c216a8da65","short":"9078214","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.Blog/commit/9078214de7e2d08e03bac7e5360cc1c216a8da65","post_id":null},{"service":"blog","sha":"8fa441e3a48ab60bd8ab9ee8e8c74c85aa418d39","short":"8fa441e","subject":"Docs: STATUS.json and README match production (2026-09-23)","author":"OpenVibers","committed_at":"2026-09-23T18:34:04Z","deployed_at":"2026-09-23T18:34:04.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/8fa441e3a48ab60bd8ab9ee8e8c74c85aa418d39","post_id":null},{"service":"blog","sha":"e7b4986ac083f552899c9385a03d28477c53f4d4","short":"e7b4986","subject":"App and module tokens act only for their on_behalf_of person; sandbox tokens refused","author":"OpenVibers","committed_at":"2026-09-23T16:35:53Z","deployed_at":"2026-09-23T16:35:53.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/e7b4986ac083f552899c9385a03d28477c53f4d4","post_id":null},{"service":"blog","sha":"b4ccd8d8b1e7b8c85396758c288e46c443357031","short":"b4ccd8d","subject":"nginx: client address headers only from $remote_addr (realip). X-Forwarded-For was appended to and CF-Connecting-IP passed through from the client, so a request reaching the origin without Cloudflare (DNS-only host or the bare IP) chose…","author":"OpenVibers","committed_at":"2026-09-23T16:14:09Z","deployed_at":"2026-09-23T16:14:09.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/b4ccd8d8b1e7b8c85396758c288e46c443357031","post_id":null},{"service":"blog","sha":"8618b6d26cac89bdee8f2090e2de8e3906260994","short":"8618b6d","subject":"openvibe-publishing v0.2.1 (ReDoS fixes in ssr markdown)","author":"OpenVibers","committed_at":"2026-09-23T16:07:00Z","deployed_at":"2026-09-23T16:07:00.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/8618b6d26cac89bdee8f2090e2de8e3906260994","post_id":null},{"service":"blog","sha":"f8498f3e5348edd107e7473f95e3deb2e732214a","short":"f8498f3","subject":"Security: draft and private series/category names stay off public pages; unpublishing hides the comment thread; /auth/me is no-store","author":"OpenVibers","committed_at":"2026-09-23T15:53:26Z","deployed_at":"2026-09-23T15:53:26.000Z","major":false,"url":"https://github.com/OpenVibers/OpenVibe.Blog/commit/f8498f3e5348edd107e7473f95e3deb2e732214a","post_id":null}],"next":"MjAyNi0wOS0yM1QxNTo1MzoyNi4wMDBafDIyNw","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}]}