Skip to content

Add a Look setting with Frutiger Aero and Metal Heart themes - #11

Merged
cookingwithsimon merged 3 commits into
mainfrom
claude/themes-setting-nmm4w7
Oct 27, 2026
Merged

cookingwithsimon merged 3 commits into
mainfrom
claude/themes-setting-nmm4w7

Conversation

@cookingwithsimon

@cookingwithsimon cookingwithsimon commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Requested by Simon · project thread

What changes for the user

Before: the only appearance setting is Dark, Light or System, and the window always has the rack-faceplate look.

After: Settings has a Look picker above the dark/light one, with three looks to compare: Rack faceplate (the current look, still the default), Frutiger Aero (frosted glass panels over a sky-and-grass backdrop, glossy pill buttons, Segoe UI) and Metal Heart (brushed steel, bevelled edges, a chrome-red primary button, Bahnschrift display face). Each look has a dark and a light version. Picking one repaints the window straight away and is remembered between runs.

Screenshots of every look are in the CI run's screenshots artifact and on the ci-screenshots branch: main-dark/main-light/settings-dark (faceplate, unchanged names), aero-light, aero-dark, aero-settings-light, metal-dark, metal-light, metal-settings-dark.

How

Every colour, font and shape the window reads now comes from a pair of resource dictionaries under src/ProDHCPServer.App/Themes/ (Name.Dark.xaml and Name.Light.xaml), merged into the app resources by Theme.Apply. Adding a look is two XAML files (copy Faceplate's and change the values) plus one line in Theme.Looks. The shared templates in App.xaml gained a few look-driven tokens: panel edge and corners, button edge, a gloss layer, and a corner scale (0.5 = pill, 0 = square) so the same button template can be a pill or a steel plate. settings.json gains a Look field; unknown values fall back to the default. The smoke test shoots each look.

Testing

  • Core tests pass (211)
  • Windows CI run is green (integration tests, publish, smoke-test screenshots): run 38917741315
  • Hardware checklist updated if behaviour on real devices changed (not needed: no adapter or network behaviour changed)

🤖 Generated with Claude Code

https://claude.ai/code/session_01XaLCFyaNVfAWPcHVakuuu8

Every colour, font and shape the window reads now comes from a pair of
resource dictionaries under Themes/ (one dark, one light) that
Theme.Apply merges in, so a new look is two XAML files and one line in
the list. Settings gets a Look picker next to the dark/light one; both
apply live and are remembered in settings.json.

Looks: Rack faceplate (unchanged default), Frutiger Aero (glass panels
over sky and grass, glossy pills, Segoe UI) and Metal Heart (brushed
steel, bevelled edges, chrome-red accent, Bahnschrift display face).
The smoke test now screenshots each look so they can be compared from
the CI run.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XaLCFyaNVfAWPcHVakuuu8
@cookingwithsimon cookingwithsimon self-assigned this Oct 16, 2026
Panels, the status field, the top bar and banners are now templated
controls a look can replace, and the default shapes moved from App.xaml
into Themes/Shared.xaml so a look's own dictionary wins over them.

Frutiger Aero: glass panels with a hard gloss band, a glass bar behind
the top controls, orb status lights with a specular spot, and a drawn
backdrop of sky, grass, bubbles and rings (black glass over glowing
teal in the dark version, after the KDE 4 desktop).

Metal Heart: riveted steel plates with a chrome bevel and brushed grain,
a chrome strip for the top bar, lens status lights, near-square chrome
buttons, an acid-green primary button, a brushed backdrop with blue and
green glows and chrome rails, and Orbitron Bold for the big type
(embedded, OFL, a static instance of the Google Fonts variable file).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XaLCFyaNVfAWPcHVakuuu8
Replace the blue and green glows with a backdrop of angular chrome
shards on black (silver on chrome in the light version), a red crack
running through them and a red glow behind; the primary button goes
back to red chrome. The plates are slightly see-through so the shards
ghost through them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XaLCFyaNVfAWPcHVakuuu8
@cookingwithsimon
cookingwithsimon marked this pull request as ready for review October 27, 2026 02:29
@cookingwithsimon
cookingwithsimon merged commit f8fa3bc into main Oct 27, 2026
1 check passed
@cookingwithsimon
cookingwithsimon deleted the claude/themes-setting-nmm4w7 branch October 27, 2026 02:29
@cookingwithsimon cookingwithsimon mentioned this pull request Oct 27, 2026
3 tasks done
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.

2 participants