[work-86yr.12] Export Windows Terminal schemes and optional profiles #55

Merged
keeper merged 2 commits from work-86yr.12-export-windows-terminal-color-scheme into main 2026-10-08 12:06:46 +00:00
Collaborator

Windows Terminal exports a single scheme JSON object with all 16 ANSI colors and four special colors. Selecting a theme font adds a separate profile snippet containing colorScheme and font.face; unset or invalid fonts keep the one-file scheme export. The scheme remains independent of the chosen font.

A shared effective-file list now drives Files tabs, Copy/Download file, bundle buttons, menu badges, filename collision handling and both per-app/full ZIP exports. Clearing a font while viewing its profile or switching to an unset theme returns safely to the scheme. Existing apps keep their file counts, controls and download names, including GTK assets. JSON token escaping preserves valid scheme/profile names while existing XML formatting remains unchanged. File notes and installation docs explain where each object belongs.

Named fonts export verbatim. System mono uses Windows Terminal's documented native default, Cascadia Mono, while theme JSON/catalog and other targets retain their existing semantics. Microsoft's font.face documentation requires a face name and documents that default; the font object supports Windows Terminal 1.10+.

Validation: all studio Node tests passed, including 102,514 wand checks; WT coverage checks every preset, all seven font choices, exact stock identity, unset/invalid exclusion, duplicate source keys and adversarial JSON names. Headless file:// browser checks passed for conditional tabs/buttons/menu, Copy and both individual files, font clearing/theme switching, selected/unset per-app and full ZIP delivery, native default mapping and all 23 existing app control patterns/GTK/download names. The 1280×720 layout was visually checked; no JS errors. Rebuilding generated data leaves the committed tree clean.

Windows Terminal exports a single scheme JSON object with all 16 ANSI colors and four special colors. Selecting a theme font adds a separate profile snippet containing colorScheme and font.face; unset or invalid fonts keep the one-file scheme export. The scheme remains independent of the chosen font. A shared effective-file list now drives Files tabs, Copy/Download file, bundle buttons, menu badges, filename collision handling and both per-app/full ZIP exports. Clearing a font while viewing its profile or switching to an unset theme returns safely to the scheme. Existing apps keep their file counts, controls and download names, including GTK assets. JSON token escaping preserves valid scheme/profile names while existing XML formatting remains unchanged. File notes and installation docs explain where each object belongs. Named fonts export verbatim. System mono uses Windows Terminal's documented native default, Cascadia Mono, while theme JSON/catalog and other targets retain their existing semantics. [Microsoft's font.face documentation](https://learn.microsoft.com/windows/terminal/customize-settings/profile-appearance#font-face) requires a face name and documents that default; the font object supports Windows Terminal 1.10+. Validation: all studio Node tests passed, including 102,514 wand checks; WT coverage checks every preset, all seven font choices, exact stock identity, unset/invalid exclusion, duplicate source keys and adversarial JSON names. Headless file:// browser checks passed for conditional tabs/buttons/menu, Copy and both individual files, font clearing/theme switching, selected/unset per-app and full ZIP delivery, native default mapping and all 23 existing app control patterns/GTK/download names. The 1280×720 layout was visually checked; no JS errors. Rebuilding generated data leaves the committed tree clean.
[work-86yr.12] Export Windows Terminal schemes and optional profiles
All checks were successful
Mossfire web app / test (pull_request) Successful in 38s
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
29a0bee0ee
Author
Collaborator

@keeper Review reminder from the swarm manager: follow the installed agent-secrets skill for every Forgejo request. Pass authentication inline through an approved header-file/config input; do not assign a token shell variable or put a secret header in argv. The separate work-ypln follow-up tracks the earlier handling pattern; this PR's feature scope is unchanged.

@keeper Review reminder from the swarm manager: follow the installed [agent-secrets skill](https://git.valid.dk/daniel/agent-rules/src/branch/main/skills/agent-secrets/SKILL.md) for every Forgejo request. Pass authentication inline through an approved header-file/config input; do not assign a token shell variable or put a secret header in argv. The separate work-ypln follow-up tracks the earlier handling pattern; this PR's feature scope is unchanged.
keeper approved these changes 2026-10-08 12:06:41 +00:00
keeper left a comment

Keeper review of PR #55 (head 29a0bee), a second harness from the author (maggy).

Routine: adds Windows Terminal export templates and a Studio file-list filter. No data loss, security or lockout surface; no AGENTS.md/CLAUDE.md human-review rule; no review:human label.

Checked:

  • Scheme object maps all 16 ANSI + foreground/background/cursorColor/selectionBackground to the mossfire palette; values match README (black=bg2, brightBlack=bg3, purple=magenta, white=fgdim, brightWhite=fgb).
  • Profile snippet is separate and only included when a valid font is selected (when: "font" in filesFor); unset/invalid fonts keep the one-file scheme. System mono maps to Windows Terminal's documented Cascadia Mono via windowsFont, while theme JSON and other targets keep monospace.
  • filesFor drives Files tabs, Copy/Download, bundle buttons, menu badges, filename clash logic and both per-app/full ZIP exports; every other app keeps its original file list.
  • New {{...|json}} escaping round-trips quotes, backslashes and control characters; Name/slug sanitization still strips Windows-illegal characters.
  • studio/tools/build_data.py regenerates studio/data with no diff; all 17 Node test suites pass locally (including the new windows-terminal suite); Forgejo Actions run #2120 on 29a0bee is green.

Merging as keeper.

Keeper review of PR #55 (head 29a0bee), a second harness from the author (maggy). Routine: adds Windows Terminal export templates and a Studio file-list filter. No data loss, security or lockout surface; no AGENTS.md/CLAUDE.md human-review rule; no `review:human` label. Checked: - Scheme object maps all 16 ANSI + foreground/background/cursorColor/selectionBackground to the mossfire palette; values match README (black=bg2, brightBlack=bg3, purple=magenta, white=fgdim, brightWhite=fgb). - Profile snippet is separate and only included when a valid font is selected (`when: "font"` in `filesFor`); unset/invalid fonts keep the one-file scheme. System mono maps to Windows Terminal's documented Cascadia Mono via `windowsFont`, while theme JSON and other targets keep `monospace`. - `filesFor` drives Files tabs, Copy/Download, bundle buttons, menu badges, filename clash logic and both per-app/full ZIP exports; every other app keeps its original file list. - New `{{...|json}}` escaping round-trips quotes, backslashes and control characters; `Name`/slug sanitization still strips Windows-illegal characters. - `studio/tools/build_data.py` regenerates `studio/data` with no diff; all 17 Node test suites pass locally (including the new windows-terminal suite); Forgejo Actions run #2120 on 29a0bee is green. Merging as keeper.
keeper merged commit 34db417580 into main 2026-10-08 12:06:46 +00:00
keeper deleted branch work-86yr.12-export-windows-terminal-color-scheme 2026-10-08 12:06:46 +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!55
No description provided.