Skip to main content

max / audiofiles

Take makeover 2.9.0: a secondary this app's ink can be seen against The audiofiles skin's ink is pure #000000, which is the case 2.6.0's derivation collapsed: twelve percent of no lightness range is no step, and content-secondary shipped 1.02 from the ink it was meant to be a step away from. Under the floor it is #1b1b1b, and muted is unchanged. ThemeColors::default() carries the derived pair now rather than the #333333/#808080 the skin used to author, which is what keeps the pre-load fallback equal to what loading the skin produces. parse_theme_full asserts the derived values for the same reason: its fixture authors two emphasis steps and gets neither back.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-18 01:19 UTC
Signed with PGP, not checked
Commit: c4c6f6c023406fee84804b2d91ce0050d5f26d2e
Parent: 8711e65
3 files changed, +19 insertions, -12 deletions
M Cargo.lock +5 -7
@@ -3056,9 +3056,7 @@
3056 3056
3057 3057 [[package]]
3058 3058 name = "makeover"
3059 - version = "2.5.1"
3060 - source = "registry+https://github.com/rust-lang/crates.io-index"
3061 - checksum = "556c88d4ad0f25579e984dc5c9d86429a9c4d70a8b811253d4e807556b514311"
3059 + version = "2.9.0"
3062 3060 dependencies = [
3063 3061 "include_dir",
3064 3062 "serde",
@@ -7544,6 +7542,10 @@
7544 7542 "winnow 1.0.4",
7545 7543 ]
7546 7544
7545 + [[patch.unused]]
7546 + name = "quasi-type"
7547 + version = "0.1.0"
7548 +
7547 7549 [[patch.unused]]
7548 7550 name = "quasi-axum"
7549 7551 version = "0.24.0"
@@ -7568,10 +7570,6 @@
7568 7570 name = "quasi-webview"
7569 7571 version = "0.24.0"
7570 7572
7571 - [[patch.unused]]
7572 - name = "quasi-type"
7573 - version = "0.1.0"
7574 -
7575 7573 [[patch.unused]]
7576 7574 name = "kberg"
7577 7575 version = "0.1.0"
M Cargo.toml +1 -1
@@ -67,7 +67,7 @@
67 67 libc = "0.2"
68 68 midir = "0.11"
69 69 tagtree = { git = "https://makenot.work/git/max/makenotwork.git", version = "0.4" }
70 - makeover = "2.5.1"
70 + makeover = "2.9.0"
71 71 # The invariant half of the design system: relational spacing. makeover
72 72 # resolves colour, which a theme may override; this carries what no theme may.
73 73 makeover-geometry = "0.7"
@@ -206,8 +206,12 @@
206 206 surface_raised: Color32::from_rgb(0xDD, 0xDD, 0xDD),
207 207 surface_well: Color32::from_rgb(0xF4, 0xF4, 0xF4),
208 208 content: Color32::from_rgb(0x00, 0x00, 0x00),
209 - content_secondary: Color32::from_rgb(0x33, 0x33, 0x33),
210 - content_muted: Color32::from_rgb(0x80, 0x80, 0x80),
209 + // Derived from the ink and the page rather than picked, so these
210 + // two are makeover's answer copied here, not a choice this file
211 + // gets to make. `theme_colors_default_is_audiofiles` is what keeps
212 + // them equal to what loading the skin produces.
213 + content_secondary: Color32::from_rgb(0x1B, 0x1B, 0x1B),
214 + content_muted: Color32::from_rgb(0x3A, 0x3A, 0x3A),
211 215 danger: Color32::from_rgb(0xC2, 0x2F, 0x2F),
212 216 success: Color32::from_rgb(0x2E, 0x7D, 0x32),
213 217 action: Color32::from_rgb(0x3B, 0x5A, 0x9F),
@@ -1182,8 +1186,13 @@
1182 1186 assert_eq!(theme.surface_sunken, Color32::from_rgb(0x28, 0x34, 0x57));
1183 1187 assert_eq!(theme.surface_raised, Color32::from_rgb(0x1a, 0x1b, 0x26));
1184 1188 assert_eq!(theme.content, Color32::from_rgb(0xc0, 0xca, 0xf5));
1185 - assert_eq!(theme.content_secondary, Color32::from_rgb(0xa9, 0xb1, 0xd6));
1186 - assert_eq!(theme.content_muted, Color32::from_rgb(0x56, 0x5f, 0x89));
1189 + // The two emphasis steps are derived from the ink and the page, not
1190 + // read. The fixture authors #a9b1d6 and #565f89 and gets neither back,
1191 + // which is the point: what a theme writes under these keys does not
1192 + // survive loading, so a renderer cannot be handed a ramp that runs
1193 + // backwards.
1194 + assert_eq!(theme.content_secondary, Color32::from_rgb(0xaa, 0xb2, 0xd9));
1195 + assert_eq!(theme.content_muted, Color32::from_rgb(0x74, 0x7a, 0x97));
1187 1196 assert_eq!(theme.danger, Color32::from_rgb(0xf7, 0x76, 0x8e));
1188 1197 assert_eq!(theme.success, Color32::from_rgb(0x9e, 0xce, 0x6a));
1189 1198 assert_eq!(theme.action, Color32::from_rgb(0x7a, 0xa2, 0xf7));