Skip to content

feat(juce): theme the activation UI from ActivationConfig - #25

Merged
TobbenTM merged 1 commit into
mainfrom
visual-tests-multiple-themes
Aug 21, 2026
Merged

feat(juce): theme the activation UI from ActivationConfig#25
TobbenTM merged 1 commit into
mainfrom
visual-tests-multiple-themes

Conversation

@TobbenTM

Copy link
Copy Markdown
Member

The JUCE docs promised a re-skinnable activation UI, but the palette lived on a private ActivationLookAndFeel inside ActivationComponent::Impl and the font helpers were non-virtual with no typeface of their own, so the only reachable token was the accent colour (reported in #23). Theming now travels on the config: ActivationConfig gains palette and fonts, read when the component builds its LookAndFeel, which is the only moment that works because the views cache palette-coloured icon Drawables in their constructors. ActivationPalette moves to a new ActivationTheme.h next to ActivationFonts (a Typeface::Ptr per role plus a makeFont hook), 15 new tokens replace the 36 colours still hardcoded in ActivationComponent.cpp, and ActivationDialog frames its window in palette.backgroundBottom.

Every token default is the exact byte value in use before, so this is a pure refactor for anyone not theming: four new unit tests cover the palette and font precedence, eight new snapshots render three deliberately unlike themes (warm near-black with a monospaced face, light, deep green) across the screens that between them touch every token, and the 21 existing snapshots are byte-identical. The public-key half of #23 is not touched here: it is being fixed in the merchant app's Implementation guide, so the SDK accepts no new key format.

The docs promised a re-skinnable activation UI, but the palette lived on a
private ActivationLookAndFeel inside ActivationComponent::Impl and the three
font helpers were non-virtual with no typeface of their own, so the only
reachable token was the accent colour (#23).
Theming now travels on the config. ActivationConfig gains `palette` and
`fonts`, read when the component builds its LookAndFeel, which is the only
moment that works: the views cache palette-coloured icon Drawables in their
constructors, so a theme handed over later would reach half the screen.
ActivationPalette moves to a new ActivationTheme.h alongside ActivationFonts
(a Typeface::Ptr per role, plus a makeFont hook for full control).
Fifteen new tokens replace the 36 colours still hardcoded in
ActivationComponent.cpp: the glow and spinner track, card and progress
surfaces, scrollbars, seat pips, skeleton bars, the trial and danger ramps,
the white on accent fills, and the panel shadow and overlay scrim. Every
default is the exact byte value in use before, so the render is unchanged.
ActivationDialog also frames its window in palette.backgroundBottom.
Covered by four unit tests and eight new snapshots across three unlike
themes; the 21 existing snapshots stay byte-identical.
@argos-ci

argos-ciBot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Argos notifications ↗︎

BuildStatusDetailsUpdated (UTC)
default (Inspect)👍 Approved by Tobias Lønnerød Madsen8 addedAug 21, 2026, 12:01 PM

@TobbenTM
TobbenTM merged commit a477131 into mainAug 21, 2026
12 checks passed
github-actionsBot pushed a commit that referenced this pull request Aug 21, 2026
# [4.2.0](v4.1.0...v4.2.0) (2026-08-21)
### Features
* **juce:** theme the activation UI from ActivationConfig ([#25](#25)) ([a477131](a477131)), closes [#23](#23)
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 4.2.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TobbenTM