Commits
-
Restore openvibe-publishing v1.2.0 lock integrity and guard codeload…OpenVibers · 4 Oct 2026
f7cb264 -
Merge pull request #6 from OpenVibers/agent/deals-t11-step-2-second-batch-125056-muttkcn3OpenVibers · 4 Oct 2026
df1accd -
Render every page through openvibe-publishing/layout on shared shellOpenVibers · 4 Oct 2026
79ee3d8 -
Bump openvibe-shared v2.4.0 → v2.5.0 (#5)OpenVibers · 3 Oct 2026
a7fcdc4 -
Pin openvibe-shared to v2.4.0 (#4)OpenVibers · 3 Oct 2026
3db0c08 -
Move Deals errors and shutdown onto openvibe-sdk/service (#3)OpenVibers · 2 Oct 2026
f1dfe61 -
Route every server cache header through openvibe-shared cache-policy (#2)OpenVibers · 2 Oct 2026
8442b0e -
Deals on the Publishing 1.1.0 chassis (plan T9 J4): the Sources client, change cursor and pull loop, signed event consumer, normalisers and publication glue come from openvibe-publishing/ingest and /publication; Deals keeps its domain half (server/domain/source-items.js, values.js, http/events.js). Migration 0002 seeds deals_ingest_cursor once from import_state (continuity, never a reset to zero). The replaced importer.js, util.js, http/internal.js and clients/sources.js are deleted. test/chassis.test.js proves nothing requires them and replays the Sources fixture against a golden captured from the pre-change code. npm test and test:pg green (verified).OpenVibers · 29 Sept 2026
c56acd8 -
Deals tells search engines when a page changes (plan T11, IndexNow): with INDEXNOW_KEY set the key file is served at /<key>.txt and an indexable deal or product page appearing, changing or going away pings the engines (its path and the sitemap); drafts, private and noindex pages never; unset, nothing is mounted or sent. A home-page performance budget runs in CI (test/perf-budget.test.js, its own PGlite directory). Tests green (verified).OpenVibers · 29 Sept 2026
3ed88be -
Deals moves between its pages without a reload (plan T11): openvibe-shared v2.2.0 boost swaps <main> styles-first with the shared transition, prefetching on intent, and does a normal load across a deploy (the ov-boost marker carries the release). The navbar's sign-in returns to the current page.OpenVibers · 29 Sept 2026
2bcad35 -
README names openvibe-sdk v0.25.1, the pinned release.OpenVibers · 29 Sept 2026
3c57d05 -
Deals on the service kit (plan T1): sign-in is openvibe-sdk/sso createSsoClient (state + PKCE S256, server-side exchange, next limited to this site and the Network), service tokens are checked by openvibe-sdk/auth verifyServiceToken (the key their kid names), the outbox is createServiceOutbox; server/auth/sso.js and server/events/outbox.js are deleted. Pins: openvibe-sdk v0.25.1, openvibe-contracts v0.79.0, openvibe-shared v2.0.0. npm test and test:pg 15/15.OpenVibers · 29 Sept 2026
8d78e7e -
A moderator's flag decision commits together with its audit row: logAction() inside flags.resolve's transaction was not awaited, so the moderation_log write floated outside the awaited flow and a failing audit write was swallowed (under Node 22 an unhandled rejection is fatal). It is awaited now; test/flag-audit.test.js fails without the fix (resolve returns before the audit row exists; a failing audit write must reject the decision). Found by the estate-wide floating-promise sweep, fixed and reviewed independently (VERDICT: SHIP). npm test 15/15 test files passed.OpenVibers · 29 Sept 2026
57b4194 -
The SQLite era is gone (on PostgreSQL since 2026-09-28; no compatibility kept): the one-time migrate-to-postgres script, *_DB_PATH settings (config, .env.example, systemd unit, test helpers), the unused better-sqlite3 dependency and its lockfile entries, and docs, docstrings and STATUS lines about SQLite or its rollback window. Reviewed independently; its blockers (an edited applied migration, the lockfile) are resolved here, Host's inventory follow-up is separate. npm test 14/14 test files passed.OpenVibers · 29 Sept 2026
0fe6545 -
openvibe-shared v1.27.0 (from v1.25.0): an async route handler's rejection now reaches the error handler instead of ending the process. Express 4 leaves such a promise unhandled and Node 22 exits on it; instrument() now applies openvibe-shared/express-async. 1.26.0 adds async gauge collects. npm test: 14/14 test files passed.OpenVibers · 28 Sept 2026
450af16 -
Deals moves to PostgreSQL and Valkey (ADR-035, roadmap WS-X2, repository-pass group G1), async from end to end.OpenVibers · 28 Sept 2026
69d3e47 -
npm test no longer counts a skipped test as passed (roadmap WS-Q task 7; openvibe-shared/test-runner, Shared v1.25.0). test/run.js counted every file that exited 0 as passed, so a file that printed that it skipped its work and checked nothing still read as green. It is now the shared runner through run() (same files, one at a time as before, 60 s timeout per file, VERBOSE=1 still prints every file's output): a test prints "<label>: skipped (<why>)" for what it could not run, and that file is listed with ○ and its reasons and not counted as passed; --strict makes a skip fail the run. No test here skips anything. openvibe-shared is pinned at v1.25.0 (from v1.22.0; 1.23 and 1.24 add the web runtime, release-watch fixes and the readiness skip, and /api/ready answers as before because its db check really runs; README and STATUS.json follow). npm test (Node 22) 14/14.OpenVibers · 28 Sept 2026
0bf25e2 -
README and STATUS.json are current (roadmap WS-U task 3): a Capabilities section lists the twelve capabilities Deals implements and the grants it uses at Network, Events, Sources and Community; Deploy says production deploys with sudo ovhost deploy deals (unit, port, env file, rollback) and keeps the first-install steps; Security points to SECURITY.md; Depends on names the current pins (publishing v0.4.0, contracts v0.53.0, shared v1.22.0, sdk v0.12.0). STATUS.json gains contracts, features, the current package list and updated 2026-09-28.OpenVibers · 28 Sept 2026
533450f -
Per-actor rate limits on Deals' /api/v1 and its page forms (roadmap WS-R task 4, openvibe-sdk v0.12.0 limits). server/http/actor-limits.js makes one limiter per app and counts requests once req.viewer is resolved. A person counts as user:usr_…, whether they use their own token or cookie or a service names them in X-OV-Subject. A first-party service relaying a signed-out visitor counts by the address it forwards. A service or app acting as itself, such as svc:ai for deals.enrich_deal, counts by its principal. A signed-out caller counts by address. A first-party service reading for itself is not counted on reads. Past a limit a route answers 429 problem+json rate_limited with Retry-After before any work, including before the body is read, logs one [Limits] line and counts deals_rate_limited_total{limit,window}.OpenVibers · 28 Sept 2026
fa0582d -
The notification bell hears new notifications as they happen (notificationsRealtime; Shared 1.22.0, roadmap WS-E task 3): Network's network.notification.created over OpenVibe.Events' realtime stream, with polling as the fallback. Only a signed-in bell with a Network token opens a stream.OpenVibers · 26 Sept 2026
45e1125 -
Pins: openvibe-shared 1.20.0 -> 1.22.0 (realtime notification badge, off until a site turns it on; the unreachable-host browser check)OpenVibers · 26 Sept 2026
99bd438 -
Open redirect fixed (roadmap WS-R task 5): the sign-in next let "/<TAB>/evil.com" through, which browsers read as "//evil.com" (they drop tab and newline characters and read a backslash as "/"); any control character or backslash in next now goes home. test/open-redirect.test.js feeds it the known bypassesOpenVibers · 26 Sept 2026
b5867df -
Pins: openvibe-shared 1.18.0 -> 1.20.0 (the update matrix and release manifest 1.2.0: client generations, the shell)OpenVibers · 26 Sept 2026
b266be3 -
Pins: openvibe-shared 1.17.1 -> 1.18.0 (update telemetry: prompted count, sessions by generation)OpenVibers · 26 Sept 2026
6b30998 -
Pins: openvibe-shared 1.16.1 -> 1.17.1 (release notifications)OpenVibers · 26 Sept 2026
73221d8 -
Pins: openvibe-shared 1.16.0 -> 1.16.1 (the OV mark stops animating when idle, hidden or off-screen)OpenVibers · 26 Sept 2026
16823d5 -
Pins: openvibe-shared 1.13.0 -> 1.16.0OpenVibers · 26 Sept 2026
ff39f56 -
.env.example: names with a working default are commented (optional), so ovhost validate's from-example check requires only what the service cannot run withoutOpenVibers · 26 Sept 2026
68537be -
Moderation audit (ADR-022, WS-D task 1): deals.moderation.action from the outbox in the same transaction when a moderator edits, expires, disables, enables, reviews, merges or unmerges someone else's offer (offer.*, the submitter as owner_subject, the reason when given, changed field names only) or resolves or dismisses a report (flag.resolved|dismissed, the reporter as owner_subject); the submitter acting on their own offer and AI text deliveries report nothing. Pins: openvibe-contracts 0.49.0 → 0.53.0OpenVibers · 26 Sept 2026
98999bf -
Pins: openvibe-contracts 0.44.0 → 0.49.0, openvibe-shared 1.12.0 → 1.13.0, openvibe-sdk 0.9.1 → 0.11.0OpenVibers · 25 Sept 2026
e422232