From 82e544af47a746af50ba4ca62de53a5158982730 Mon Sep 17 00:00:00 2001 From: Keysat Date: Wed, 17 Jun 2026 08:22:48 -0500 Subject: [PATCH] Var-ify inline styles and snap off-scale type/radii (design Phase 2) Phase 2 of the design-contract cleanup: - 346 inline-style hexes (+7 #475569, mapped by property) -> var(--token), scoped to CSS-value position so JS-logic/quoted hex, the meta theme-color, SVG attrs, and the no-:root share-export region stay literal; #fff and no-token hexes left as-is. - Snap off-scale font sizes (9/10.5->10, 11.5/12.5->12, 15->16, 24->22) and radii (3->4, 5->6, 7->6, 11->12, 9->8|10) to the scale. - Bump to 0.2.161, which also ships the previously-uninstalled 0.2.160 share-page HTML export. --- AGENTS.md | 6 +- ROADMAP.md | 34 +- public/index.html | 606 +++++++++++++++++------------------ startos/versions/index.ts | 5 +- startos/versions/v0.2.161.ts | 12 + 5 files changed, 341 insertions(+), 322 deletions(-) create mode 100644 startos/versions/v0.2.161.ts diff --git a/AGENTS.md b/AGENTS.md index dfbd199..2887a43 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -136,11 +136,11 @@ unsure whether a change is contract-affecting, assume it is and check. ## Current state -**Live on the operator's StartOS box** — app **0.2.159** + relay **0.2.126**. Tests: `cd server && npm test` → **144 pass**. +**Live on the operator's StartOS box** — app **0.2.161** + relay **0.2.126**. Tests: `cd server && npm test` → **144 pass**. -**Done & live:** self-serve Pro/Max purchase (Bitcoin inline-Lightning + Zaprite card, prepaid, relay owns tier/expiry), core-decoupling, per-tenant subscriptions, expiry-reminder emails (`POST /api/admin/reminders/run {test_email}`), **opt-in Daily Digest** (0.2.158, `b4fa5d7`): off-by-default daily email of a user's last ~24h of library recaps, each synthesized via `/relay/analyze` (operator-absorbed); `daily-digest.js` scan at `SEND_HOUR=8`, per-user watermark dedup, public tokenized unsubscribe, admin trigger `POST /api/admin/digest/run`; and **YouTube `/live/` + `/shorts/` URL support** (0.2.159, `cb961cd`): `extractVideoId` now accepts those forms (was rejecting them as "Invalid YouTube URL"). Plans in `docs/*-plan.md`. +**Done & live:** self-serve Pro/Max purchase (Bitcoin inline-Lightning + Zaprite card, prepaid, relay owns tier/expiry), core-decoupling, per-tenant subscriptions, expiry-reminder emails (`POST /api/admin/reminders/run {test_email}`), **opt-in Daily Digest** (0.2.158, `b4fa5d7`): off-by-default daily email of a user's last ~24h of library recaps, each synthesized via `/relay/analyze` (operator-absorbed); `daily-digest.js` scan at `SEND_HOUR=8`, per-user watermark dedup, public tokenized unsubscribe, admin trigger `POST /api/admin/digest/run`; **YouTube `/live/` + `/shorts/` URL support** (0.2.159, `cb961cd`): `extractVideoId` now accepts those forms (was rejecting them as "Invalid YouTube URL"); and **self-contained shareable HTML export** (0.2.160, `621af7c`; first installed in 0.2.161): the Export menu offers a standalone `.html` with the embedded video + expandable timestamped summaries baked in, no account needed (native share sheet on mobile, download on desktop). Plans in `docs/*-plan.md`. -**Design system (NEW this session, NOT yet deployed):** the `design/` contract is live (`design/DESIGN.md` + `design/tokens.tokens.json`; see the **Design** line up top). Phase 1 of the conformance cleanup is done — a canonical `:root` token block is the single source of truth in `public/index.html`'s `