Skip to content

Add custom Console Themes and local fonts - #895

Merged
JacobStephens2 merged 2 commits into
issue-776from
issue-825
Oct 20, 2026
Merged

JacobStephens2 merged 2 commits into
issue-776from
issue-825

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Summary

Make a Theme from any existing Theme in the picker, edit or paste its JSON, and save it to the machine's themes folder. Page and CLI imports share token validation, defaults and Console logging.

picker → JSON editor ─┐
CLI import/export ────┴→ validated Theme ↔ ~/.thirdshift/console/themes/<name>.json
                                      └→ Console log
themes/fonts/ → confined, same-origin font serving

Closes #825

Evidence

  • Before: cargo test --test console custom_theme_cli_round_trip_defaults_validation_and_log failed because the binary had no import command; the browser test failed because the editor was absent.
    After: CLI/HTTP tests cover saved files, selection/listing, exact JSON round trips, missing-token defaults, reasoned invalid-token refusal, Console log events and confined serving of all four font types.
  • Before: reviewer reproductions showed selected and unselected same-name Theme imports leaving old colors after explicit Apply Theme; the browser test also raced its asynchronous editor fetch.
    After: both exact reviewer reproductions pass, and the retained browser test waits for editor results and covers both refresh cases, actual custom-font use, reload persistence, no uploads and 390 px layout.
  • cargo test, cargo fmt --check, cargo clippy --all-targets -- -D warnings, and all 33 Console browser tests pass.

Test seams

  • The thirdshift binary's Theme and Console-log commands.
  • Console HTTP actions and assets, with CSRF enforcement and real filesystem state.
  • The rendered Console picker/editor and font loading in Chromium.

Unaddressed findings

Standards

None. Both P3 advisory findings were addressed: Theme construction now preserves validation invariants, and bundled font recognition derives from the embedded CSS declarations.

Spec

None. The P2 stale-style finding was reproduced before fixing it, including the unselected Theme case on Logs. Both cases are retained in console/tests/custom-themes.test.cjs; the asynchronous test-read race was fixed too.

Review coverage

Independent Standards and Spec reviews used b4b22e47872a55fccec76a49f171472549b8ed9c, the fetched origin/issue-776 tip at implementation start, as the fixed point. The local issue-776 ref was stale and checked out in another worktree. Both reviewers read all 14 changed files, plus supporting files; follow-up review checked the fixes. No generated-output exclusions. No changed file was left unread by either axis. Full reports and each final files-read list are saved in the requested .thirdshift-review-7SyaTL/standards.md and spec.md workspace artifacts.

Merge Danger

Door: two-way

The change can be reverted; no migration rewrites existing settings or Themes.

Blast Radius: Console

Theme selection/config validation, custom Theme storage and the Console's look and font assets. Existing built-in Theme contrast and browser behavior remain covered by the Console suite.

Built with codex · gpt-6.1-sol · high

@JacobStephens2
JacobStephens2 merged commit 77556ea into issue-776 Oct 20, 2026
19 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-825 branch October 20, 2026 15:15
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.

1 participant