Skip to content

Add user-editable UI theme with session-persistent color map#336

Merged
baconpaul merged 1 commit into
mainfrom
finish-coloreditor
Apr 18, 2026
Merged

Add user-editable UI theme with session-persistent color map#336
baconpaul merged 1 commit into
mainfrom
finish-coloreditor

Conversation

@baconpaul

Copy link
Copy Markdown
Owner

Introduces a logical-colour skin layer (SixSinesSkin) that projects a small set of semantic colours onto the full set of sst-jucegui stylesheet properties. The floating colour editor lets users tweak any logical colour live; themes can be saved/loaded as .sixtheme files, and two factory themes (Dark, Light) ship in resources/factory_themes.

The active colour map is persisted two ways:

  • themePath user default selects the startup theme (factory name or user-theme path) across sessions.
  • A session-only DawExtraState is streamed into CLAP host state (not into the patch): saving a patch does not capture colours, but saving a DAW project does. The synth owns DawExtraState and exchanges it with the editor via pointer-carrying audio<->UI messages; stateLoad routes the unstreamed DES back through the audio thread and on to the editor, which rebuilds and applies the skin.

Also replaces remaining hardcoded juce::Colour references with stylesheet lookups so the skin reaches every panel, and bumps the sst-plugininfra / sst-jucegui / sst-clap-helpers / clap-wrapper submodules for the new dawExtraState and ColorEditor hooks.

Introduces a logical-colour skin layer (SixSinesSkin) that projects a small
set of semantic colours onto the full set of sst-jucegui stylesheet
properties. The floating colour editor lets users tweak any logical colour
live; themes can be saved/loaded as .sixtheme files, and two factory
themes (Dark, Light) ship in resources/factory_themes.

The active colour map is persisted two ways:
- themePath user default selects the startup theme (factory name or
  user-theme path) across sessions.
- A session-only DawExtraState is streamed into CLAP host state (not
  into the patch): saving a patch does not capture colours, but saving
  a DAW project does. The synth owns DawExtraState and exchanges it
  with the editor via pointer-carrying audio<->UI messages; stateLoad
  routes the unstreamed DES back through the audio thread and on to
  the editor, which rebuilds and applies the skin.

Also replaces remaining hardcoded juce::Colour references with
stylesheet lookups so the skin reaches every panel, and bumps the
sst-plugininfra / sst-jucegui / sst-clap-helpers / clap-wrapper
submodules for the new dawExtraState and ColorEditor hooks.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@baconpaul baconpaul merged commit acca217 into main Apr 18, 2026
6 checks passed
@baconpaul baconpaul deleted the finish-coloreditor branch April 21, 2026 10:57
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