[work-86yr.17] Include selected fonts in native exports #51

Merged
keeper merged 1 commit from work-86yr.17-studio-fonts-write-the-font-key-in into main 2026-10-08 11:15:38 +00:00
Collaborator

Selected theme fonts now appear in Alacritty, Ghostty, Kitty, i3 and Regolith exports. Unset or invalid fonts preserve existing output byte-for-byte, including the i3/Regolith font defaults and sizes. Theme source files stay unchanged; generated templates add optional font blocks and explicit fallback tokens.

System mono exports as the native generic family monospace while retaining System mono in Studio JSON. Alacritty, Ghostty and Kitty imports recognize the supported family names and round-trip monospace back to System mono. Files view explains font installation and Nerd Font glyph limitations; unsupported apps keep their existing output and notes.

Validation: the full studio Node suite passed, including export coverage for all five targets and all seven choices, exact unset identity, unrelated-byte preservation, native font imports and parsing the generated Alacritty TOML. Headless file:// browser checks verified actual selected/unset downloads, Files notes and the full ZIP's native settings plus JSON metadata, with no JS errors; the Files layout was visually checked at 1280×720. After rebasing onto #50, font/export/identity tests still pass and rebuilding data leaves the tree clean.

Native option references: Alacritty, Ghostty, Kitty.

Selected theme fonts now appear in Alacritty, Ghostty, Kitty, i3 and Regolith exports. Unset or invalid fonts preserve existing output byte-for-byte, including the i3/Regolith font defaults and sizes. Theme source files stay unchanged; generated templates add optional font blocks and explicit fallback tokens. System mono exports as the native generic family monospace while retaining System mono in Studio JSON. Alacritty, Ghostty and Kitty imports recognize the supported family names and round-trip monospace back to System mono. Files view explains font installation and Nerd Font glyph limitations; unsupported apps keep their existing output and notes. Validation: the full studio Node suite passed, including export coverage for all five targets and all seven choices, exact unset identity, unrelated-byte preservation, native font imports and parsing the generated Alacritty TOML. Headless file:// browser checks verified actual selected/unset downloads, Files notes and the full ZIP's native settings plus JSON metadata, with no JS errors; the Files layout was visually checked at 1280×720. After rebasing onto #50, font/export/identity tests still pass and rebuilding data leaves the tree clean. Native option references: [Alacritty](https://alacritty.org/config-alacritty.html#font), [Ghostty](https://ghostty.org/docs/config/reference#font-family), [Kitty](https://sw.kovidgoyal.net/kitty/conf/#opt-kitty.font_family).
[work-86yr.17] Include selected fonts in native exports
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
25572c365d
keeper approved these changes 2026-10-08 11:13:26 +00:00
keeper left a comment

Keeper review (second harness, opencode-go/deepseek-v4.1-flash).

Routine: web-app theme export/import only. No data loss, security or lockout surface.

Checked at head 25572c3:

  • studio/data is byte-identical after re-running studio/tools/build_data.py (CI "Data is up to date" holds).
  • Full studio test suite passes locally; the CI test job is green.
  • Font tokens appear only in the five intended sources; i3/Regolith keep their exact original defaults and sizes when no font is set.
  • With a font unset, empty or invalid, every native export is byte-identical to the committed theme file (Alacritty, Ghostty, Kitty, i3, Regolith).
  • With a catalog font (System mono -> monospace), only the intended native font line changes; the three native formats round-trip back through the importer and Alacritty TOML still parses.
  • An injection-style font name and unknown names are rejected, no {{ tokens leak, and non-font apps are unchanged when a font is selected.

No blocking findings. Approving and squash-merging.

Keeper review (second harness, opencode-go/deepseek-v4.1-flash). Routine: web-app theme export/import only. No data loss, security or lockout surface. Checked at head 25572c3: - studio/data is byte-identical after re-running studio/tools/build_data.py (CI "Data is up to date" holds). - Full studio test suite passes locally; the CI test job is green. - Font tokens appear only in the five intended sources; i3/Regolith keep their exact original defaults and sizes when no font is set. - With a font unset, empty or invalid, every native export is byte-identical to the committed theme file (Alacritty, Ghostty, Kitty, i3, Regolith). - With a catalog font (System mono -> monospace), only the intended native font line changes; the three native formats round-trip back through the importer and Alacritty TOML still parses. - An injection-style font name and unknown names are rejected, no {{ tokens leak, and non-font apps are unchanged when a font is selected. No blocking findings. Approving and squash-merging.
keeper approved these changes 2026-10-08 11:14:12 +00:00
keeper approved these changes 2026-10-08 11:14:30 +00:00
keeper left a comment

Keeper review (second harness, opencode-go/deepseek-v4.1-flash).

Routine: web-app theme export/import only. No data loss, security or lockout surface.

Checked at head 25572c3:

  • studio/data is byte-identical after re-running studio/tools/build_data.py (CI "Data is up to date" holds).
  • Full studio test suite passes locally; the CI test job is green.
  • Font tokens appear only in the five intended sources; i3/Regolith keep their exact original defaults and sizes when no font is set.
  • With a font unset, empty or invalid, every native export is byte-identical to the committed theme file (Alacritty, Ghostty, Kitty, i3, Regolith).
  • With a catalog font (System mono -> monospace), only the intended native font line changes; the three native formats round-trip back through the importer and Alacritty TOML still parses.
  • An injection-style font name and unknown names are rejected, no {{ tokens leak, and non-font apps are unchanged when a font is selected.

No blocking findings. Approving and squash-merging.

Keeper review (second harness, opencode-go/deepseek-v4.1-flash). Routine: web-app theme export/import only. No data loss, security or lockout surface. Checked at head 25572c3: - studio/data is byte-identical after re-running studio/tools/build_data.py (CI "Data is up to date" holds). - Full studio test suite passes locally; the CI test job is green. - Font tokens appear only in the five intended sources; i3/Regolith keep their exact original defaults and sizes when no font is set. - With a font unset, empty or invalid, every native export is byte-identical to the committed theme file (Alacritty, Ghostty, Kitty, i3, Regolith). - With a catalog font (System mono -> monospace), only the intended native font line changes; the three native formats round-trip back through the importer and Alacritty TOML still parses. - An injection-style font name and unknown names are rejected, no {{ tokens leak, and non-font apps are unchanged when a font is selected. No blocking findings. Approving and squash-merging.
keeper approved these changes 2026-10-08 11:14:34 +00:00
keeper left a comment

Keeper review (second harness, opencode-go/deepseek-v4.1-flash).

Routine: web-app theme export/import only. No data loss, security or lockout surface.

Checked at head 25572c3:

  • studio/data is byte-identical after re-running studio/tools/build_data.py (CI "Data is up to date" holds).
  • Full studio test suite passes locally; the CI test job is green.
  • Font tokens appear only in the five intended sources; i3/Regolith keep their exact original defaults and sizes when no font is set.
  • With a font unset, empty or invalid, every native export is byte-identical to the committed theme file (Alacritty, Ghostty, Kitty, i3, Regolith).
  • With a catalog font (System mono -> monospace), only the intended native font line changes; the three native formats round-trip back through the importer and Alacritty TOML still parses.
  • An injection-style font name and unknown names are rejected, no {{ tokens leak, and non-font apps are unchanged when a font is selected.

No blocking findings. Approving and squash-merging.

Keeper review (second harness, opencode-go/deepseek-v4.1-flash). Routine: web-app theme export/import only. No data loss, security or lockout surface. Checked at head 25572c3: - studio/data is byte-identical after re-running studio/tools/build_data.py (CI "Data is up to date" holds). - Full studio test suite passes locally; the CI test job is green. - Font tokens appear only in the five intended sources; i3/Regolith keep their exact original defaults and sizes when no font is set. - With a font unset, empty or invalid, every native export is byte-identical to the committed theme file (Alacritty, Ghostty, Kitty, i3, Regolith). - With a catalog font (System mono -> monospace), only the intended native font line changes; the three native formats round-trip back through the importer and Alacritty TOML still parses. - An injection-style font name and unknown names are rejected, no {{ tokens leak, and non-font apps are unchanged when a font is selected. No blocking findings. Approving and squash-merging.
keeper merged commit 29851884d1 into main 2026-10-08 11:15:38 +00:00
keeper deleted branch work-86yr.17-studio-fonts-write-the-font-key-in 2026-10-08 11:15:38 +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!51
No description provided.