Repository navigation
feat(web): add account appearance preferences - #1594
JacobWeyer wants to merge 7 commits into
Conversation
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 reviewed b798638: no findings. |
|
All contributors have signed the CLA ✍️ ✅ |
|
I have read the CLA Document and I hereby sign the CLA |
Co-authored-by: engrams-agent[bot] <289318790+engrams-agent[bot]@users.noreply.github.com>
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.
|
thanks for the contribution! taking a look soon, will get back to you ASAP with the review |
feel free to let me know if its unwanted; I just prefer all black UI's and love when tools like slack allow for simpler customizations to the UI and seemed like an easy place to jump in. |
So the code is great and the feature works well, but a bit reticent to merge it in as we're still figuring out our branding -- really appreciate the contribution, but I'll close this out for now until we figure out how we want to do! The way I'm thinking about it is it makes a lot of sense for the main transcript as it should feel like your native dev environment, but for the other products other than chat ("Tasks") it begins to clash. One thing we're planning in our immediate roadmap is a TUI for just the chat product -- that might solve your issue, as it'll use whatever your terminal emulator settings are? I'm keeping the original issue open as I do think it's a good idea -- maybe the version that lands is just the color palette picker, not the font changes? I'll give you a ping once we do close out that issue. |
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:
git diff --checkpassed.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 Gateand the contributor CLA check must pass before merge.