[work-86yr.15] Save per-theme preview font choices #49

Merged
keeper merged 1 commit from work-86yr.15-studio-font-selector-for-preview-and into main 2026-10-08 10:35:33 +00:00
Collaborator

Themes can now choose JetBrains Mono, Fira Code, IBM Plex Mono, Cascadia Code, Source Code Pro, Hack or System mono in the header. The preview and fetch Font line follow the choice; storage, copies, undo/redo and optional font metadata in .tema.json retain it. Legacy themes keep the default. App export templates stay unchanged; font export support belongs to work-86yr.17.

The six bundled families use licensed, self-hosted Latin/subset WOFF2 faces with installed fonts preferred. Preview-only family aliases preserve the app chrome font. Assets and full licenses total about 254 KB and are included in the publish archive. Optional Iosevka is omitted: its distributed Latin regular and bold WOFF2 files alone total 1.97 MB, exceeding the 1.5 MB budget.

Validation: all studio Node tests passed, including font cleanup/JSON/import round trips and 102,489 wand checks; rebuilding data leaves studio/data unchanged. Headless Chromium file:// checks passed for regular/bold font loading, fetch labels, persistence/reload, undo/redo/default reset, copies/theme switching and the generator lock, with no console/request errors. The 1280×720 layout was visually checked.

Themes can now choose JetBrains Mono, Fira Code, IBM Plex Mono, Cascadia Code, Source Code Pro, Hack or System mono in the header. The preview and fetch Font line follow the choice; storage, copies, undo/redo and optional font metadata in .tema.json retain it. Legacy themes keep the default. App export templates stay unchanged; font export support belongs to work-86yr.17. The six bundled families use licensed, self-hosted Latin/subset WOFF2 faces with installed fonts preferred. Preview-only family aliases preserve the app chrome font. Assets and full licenses total about 254 KB and are included in the publish archive. Optional Iosevka is omitted: its distributed Latin regular and bold WOFF2 files alone total 1.97 MB, exceeding the 1.5 MB budget. Validation: all studio Node tests passed, including font cleanup/JSON/import round trips and 102,489 wand checks; rebuilding data leaves studio/data unchanged. Headless Chromium file:// checks passed for regular/bold font loading, fetch labels, persistence/reload, undo/redo/default reset, copies/theme switching and the generator lock, with no console/request errors. The 1280×720 layout was visually checked.
[work-86yr.15] Save per-theme preview font choices
All checks were successful
Mossfire web app / test (pull_request) Successful in 40s
Mossfire web app / publish (tema.uhyre.dk, global) (pull_request) Has been skipped
Mossfire web app / publish (theme.home.dpis.dk, home) (pull_request) Has been skipped
32be2fbb68
keeper approved these changes 2026-10-08 10:35:30 +00:00
keeper left a comment

Keeper review. Routine UI/font feature; no data-loss, security or lockout risk.

Checked:

  • Diff against main (base 1250d80), PR head 32be2fb reviewed file by file.
  • Full studio Node test suite passes, including the new studio/tests/fonts.test.js, which is registered in .forgejo/workflows/pages.yaml.
  • python3 studio/tools/build_data.py leaves studio/data clean, so exported files are unchanged.
  • Self-hosted WOFF2 assets are valid and licensed (LICENSES.txt); fonts.css declares all eight faces with font-display: swap; local() preference keeps app chrome untouched.
  • Per-theme font is kept only when valid (clean/themeJson/importers), legacy themes stay default, undo/redo and theme copy carry it, and the JSON export/import round-trips.
  • The header selector disables during generator preview; the scene Font line and --term-mono update with the choice.
  • CI run #2108 for this exact head SHA succeeded (test job, 41s).
  • Not sensitive: no secrets, auth, network, migration or storage changes; publish tar now merely includes fonts/.
Keeper review. Routine UI/font feature; no data-loss, security or lockout risk. Checked: - Diff against main (base 1250d80), PR head 32be2fb reviewed file by file. - Full studio Node test suite passes, including the new studio/tests/fonts.test.js, which is registered in .forgejo/workflows/pages.yaml. - `python3 studio/tools/build_data.py` leaves studio/data clean, so exported files are unchanged. - Self-hosted WOFF2 assets are valid and licensed (LICENSES.txt); fonts.css declares all eight faces with font-display: swap; local() preference keeps app chrome untouched. - Per-theme font is kept only when valid (clean/themeJson/importers), legacy themes stay default, undo/redo and theme copy carry it, and the JSON export/import round-trips. - The header selector disables during generator preview; the scene Font line and --term-mono update with the choice. - CI run #2108 for this exact head SHA succeeded (test job, 41s). - Not sensitive: no secrets, auth, network, migration or storage changes; publish tar now merely includes fonts/.
keeper merged commit 1f0cede6b2 into main 2026-10-08 10:35:33 +00:00
keeper deleted branch work-86yr.15-studio-font-selector-for-preview-and 2026-10-08 10:35:33 +00:00
Sign in to join this conversation.
No reviewers
No labels
review:human
No milestone
No project
No assignees
2 participants
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
daniel/mossfire!49
No description provided.