Commits
-
Deals: the Woot API key is an owner setting (deals.data_sources) (#236)OpenVibers · 6 days ago
92cf49a -
Deals /hot: one shared page build per minute, kept warm with the front page (#185)OpenVibers · 12 days ago
ca026ab -
Deals home: one shared page build per minute, so the front page answers in milliseconds (#182)OpenVibers · 12 days ago
4afc0fa -
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)OpenVibers · 21 days ago
c27ead8 -
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 -
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 -
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 -
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 -
.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 -
Staff powers from the contracts staff map (WS-D, ADR-022; Contracts 0.38.0): moderators are staff.content.moderate (global_mod and up, as before) or DEALS_MODERATORS (the product's own role), not a role list. test/staff-map.test.js fails on raw role checksOpenVibers · 24 Sept 2026
c17c010 -
README (purpose, owns, does not own, depends on, grants, acceptance, launch rule, threat review, deploy), STATUS alpha W18, .env.example, deploy (systemd unit, nginx vhost on 4840), CI on Node 22.22.1 (contracts check continue-on-error until release), capability and service manifest proposals, Events subscription scriptOpenVibers · 23 Sept 2026
94f99e9