Skip to content

feat(web): add account appearance preferences - #1594

Open
JacobWeyer wants to merge 7 commits into
cortexapps:mainfrom
JacobWeyer:codex/user-appearance-preferences
Open

JacobWeyer wants to merge 7 commits into
cortexapps:mainfrom
JacobWeyer:codex/user-appearance-preferences

Conversation

@JacobWeyer

@JacobWeyer JacobWeyer commented Oct 6, 2026 •

Copy link
Copy Markdown

Problem

The app has fixed colors and fonts. Its browser-wide theme mode does not follow an account to another device. Accounts in one browser can also share that mode.

Closes #1593.

Fix

  • Store a validated appearance document per account through authenticated GET/PATCH routes. Use atomic revision checks, a per-account cache, retained drafts, retry, and explicit conflict choices. Offer an explicit import for old browser settings.

  • Add Appearance controls for custom schemes, JSON color import/export, and independent body, heading, and code fonts. Add Dracula, Catppuccin, Nord, Solarized, and Gruvbox for light, dark, and system modes. Keep current defaults.

  • Apply palette and font roles across previews, code, diffs, editors, and terminals. Serve optional Inter and Fira Code fonts from local Fontsource assets with full license notices. Preserve reference ANSI colors and readable terminal selections.

  • Add migration 0095, shared package inputs for both images, CI path coverage, design documentation, and function docstrings. ADR 0124 records account persistence and revision rules.

  • Derive font options from shared IDs with compile-time metadata checks. Resolve unknown IDs to role defaults in application styles, previews, heading width, and terminal font measurement.

Ghostty 0.4.0 retains colors in existing terminal text cells. Its public API updates the background, cursor, selection, and font without a reconnect.

Test

Current font-registry correction:

  • Web format check, lint, production build, and 66 focused appearance/provider/terminal/UI tests passed.
  • Both browser suites passed under production CSP, including local font loading, fallbacks, account saving, and reload.
  • Orchestrator typecheck and 16 shared-contract/API tests passed.
  • Temporary compiler checks confirmed that missing font metadata fails with TS2741 and extra metadata fails with TS2353.
  • Registry tests cover all accepted IDs, unchanged defaults and UI order, supported font stacks, unknown-ID fallbacks, heading width, and terminal load-before-measurement. git diff --check passed.

The initial feature validation passed all 1,046 web tests and 20 contract/API/live-Postgres/migration-journal tests. A fresh Postgres 18 database accepted all migrations; a repeat run made no changes. The font correction does not change migrations or accepted API IDs.

Workflow YAML and shared-package path selection passed during feature validation. Actionlint had no new findings compared with the base branch. No local Rust checks were needed for the web and shared TypeScript changes. Current-head CI Gate and the contributor CLA check must pass before merge.

Store validated colors and font IDs with atomic revision checks. Keep account drafts through retries and conflicts. Add custom schemes, preset renderer palettes, local Fontsource fonts, and function documentation.
@engrams-agent

engrams-agent Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

✅ engrams reviewed b798638: no findings.

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@JacobWeyer

Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

@engrams-agent engrams-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Engrams review

Verdict: 1 finding posted inline.
Severity: Critical 0 · High 0 · Medium 1 · Low 0
Categories: 📐 Maintainability & Code Quality: 1

View the full engrams review

Comment thread web/src/lib/appearance.ts Outdated
JacobWeyer and others added 2 commits October 6, 2026 13:29
Co-authored-by: engrams-agent[bot] <289318790+engrams-agent[bot]@users.noreply.github.com>

@engrams-agent engrams-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Engrams review

Verdict: 1 finding posted inline.
Severity: Critical 1 · High 0 · Medium 0 · Low 0
Categories: 🎯 Functional Correctness: 1

View the full engrams review

Comment thread web/src/lib/appearance.ts Outdated
JacobWeyer and others added 2 commits October 6, 2026 14:07
Replace the applied prose suggestion with valid font resolution. Require metadata for each shared font ID, preserve the current option order, and use checked defaults for application, preview, and terminal fonts. Cover registry validation, unknown IDs, heading width, and terminal measurement.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Account appearance preferences, color schemes, and fonts

1 participant