Sync appearance through the real account canvas document (#323) #396

Open
opened 2026-11-06 12:27:28 +00:00 by kayg · 3 comments
Owner

Implements the appearance sync gap tracked by #323 on top of J206's approved Themes work.

Scope:

  • Inventory browser-only appearance and canvas state against D178/D180/D352, then post the classification table on #323 before product changes.
  • Rebase the J206 implementation by merging current origin/dev into it on themes-sync-j304; keep one revisioned per-account canvas document as the sync path.
  • Migrate the newest existing browser values once into the document, then stop treating local storage as a source of truth.
  • Add a real-server two-client browser spec for live theme/font propagation, reload, and independent cameras, plus server account-isolation coverage.
  • Measure first-paint round trips and remote theme frame behavior on the assigned compute/performance hosts.

Plan: inspect J206's storage and server wiring; classify every browser-only value; merge current dev into J206; add failing server and browser tests; implement the minimum sync/migration; run targeted real-server/browser/performance evidence; run verify quick then verify fast; push atomic commits and report without merging.

Estimate: about 10 hours of implementation and analysis, excluding shared VM queues. Base before merge: origin/themes-j206 at 00601975387497a0dfa4c90126f6d94b645c70e4; merge target: current origin/dev at 7b14fbb664cbfb9b2b9b8a56f724d924424accdb.

Implements the appearance sync gap tracked by #323 on top of J206's approved Themes work. Scope: - Inventory browser-only appearance and canvas state against D178/D180/D352, then post the classification table on #323 before product changes. - Rebase the J206 implementation by merging current origin/dev into it on `themes-sync-j304`; keep one revisioned per-account canvas document as the sync path. - Migrate the newest existing browser values once into the document, then stop treating local storage as a source of truth. - Add a real-server two-client browser spec for live theme/font propagation, reload, and independent cameras, plus server account-isolation coverage. - Measure first-paint round trips and remote theme frame behavior on the assigned compute/performance hosts. Plan: inspect J206's storage and server wiring; classify every browser-only value; merge current dev into J206; add failing server and browser tests; implement the minimum sync/migration; run targeted real-server/browser/performance evidence; run verify quick then verify fast; push atomic commits and report without merging. Estimate: about 10 hours of implementation and analysis, excluding shared VM queues. Base before merge: `origin/themes-j206` at `00601975387497a0dfa4c90126f6d94b645c70e4`; merge target: current `origin/dev` at `7b14fbb664cbfb9b2b9b8a56f724d924424accdb`.
Author
Owner

J304 start. Branch: themes-sync-j304. Base: origin/themes-j206 at 00601975387497a0dfa4c90126f6d94b645c70e4; I will merge current origin/dev at 7b14fbb664cbfb9b2b9b8a56f724d924424accdb into it. No product code changed yet. Plan and estimate are in this issue body. I am inspecting the cited J206 findings and tracing the real server path before writing the inventory table on #323.

J304 start. Branch: `themes-sync-j304`. Base: `origin/themes-j206` at `00601975387497a0dfa4c90126f6d94b645c70e4`; I will merge current `origin/dev` at `7b14fbb664cbfb9b2b9b8a56f724d924424accdb` into it. No product code changed yet. Plan and estimate are in this issue body. I am inspecting the cited J206 findings and tracing the real server path before writing the inventory table on #323.
Author
Owner

Finding with source evidence (no behavior claim yet): plugins/canvas/src/reducer.rs validates look.set, infraternal-server/src/canvas_store.rs applies it through the account-keyed SQLite canvas store, and apps/tracer/src/canvas/model/sync.ts captures the look in the same document as layout. Existing checks cover the TypeScript model and test double; I found no real-server appearance isolation or two-client proof. Browser-held appearance inputs still include the unscoped tracer.look first-paint cache, tracer.font, tracer.theme for sign-in appearance, and tracer.ui-font. I am adding real-server tests before changing behavior, then will migrate legacy values and ensure the saved document wins on reconnect. The inventory table is already posted on #323. Plan and estimate are in this issue body. Compute01 currently has one free build slot, three busy, and jobs queued; no build or test has started.

Finding with source evidence (no behavior claim yet): `plugins/canvas/src/reducer.rs` validates `look.set`, `infraternal-server/src/canvas_store.rs` applies it through the account-keyed SQLite canvas store, and `apps/tracer/src/canvas/model/sync.ts` captures the look in the same document as layout. Existing checks cover the TypeScript model and test double; I found no real-server appearance isolation or two-client proof. Browser-held appearance inputs still include the unscoped `tracer.look` first-paint cache, `tracer.font`, `tracer.theme` for sign-in appearance, and `tracer.ui-font`. I am adding real-server tests before changing behavior, then will migrate legacy values and ensure the saved document wins on reconnect. The inventory table is already posted on #323. Plan and estimate are in this issue body. Compute01 currently has one free build slot, three busy, and jobs queued; no build or test has started.
Author
Owner

Test-first progress: added the real SQLite look.set account-isolation test and apps/tracer/real/appearance-sync.spec.ts for two clients, reload, local cameras, first-snapshot evidence, and one-time legacy migration. No product code has changed. I have not run the RED phase yet: compute01 is at 4/4 occupied slots with 11 queued jobs, so the tests must wait for a build slot. Remote worktree/logs will be under ~/worktrees/themes-sync-j304 and ~/.cache/codex-scratch/j304/.

Test-first progress: added the real SQLite `look.set` account-isolation test and `apps/tracer/real/appearance-sync.spec.ts` for two clients, reload, local cameras, first-snapshot evidence, and one-time legacy migration. No product code has changed. I have not run the RED phase yet: compute01 is at 4/4 occupied slots with 11 queued jobs, so the tests must wait for a build slot. Remote worktree/logs will be under `~/worktrees/themes-sync-j304` and `~/.cache/codex-scratch/j304/`.
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#396
No description provided.