The board's symbol takes a tint — a 4×2 colour row under the picker's glyphs, and the glyph itself moves into the titlebar

iconColor stops being hand-written-only (user-ruled, superseding 03's
"schema yes, control no"): it rides StyleCommand.apply → applyStyle as
the third styled dimension — per-dimension no-op skip, one bracket, one
history step, ExpectedField.iconColor for staleness. The SymbolPicker
grows an opt-in colour row (leading None plus seven Palette.foregrounds
hues, None removes the key); the board popover is its one caller. The
window-title widget now draws the board's resolved glyph in that tint
beside the name. Doc realignment filed on the Redesign board (Minor).

Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
2026-08-07 18:36:49 -04:00
parent 3d231d6454
commit 7ac34651a2
12 changed files with 342 additions and 23 deletions
+8
View File
@@ -42,6 +42,11 @@ public enum ExpectedField: Sendable, Equatable {
/// `icon` the styling gesture's symbol dimension.
case icon(String?)
/// `iconColor` the symbol's tint, the styling gesture's third dimension since the board
/// popover's symbol picker grew its colour row (2026-08-07; previously "schema yes, control
/// no"). `nil` is the removed key the None well exactly as everywhere else here.
case iconColor(String?)
/// The body span, **byte for byte** the Edit session's step, and the one inverse in the app
/// whose fidelity is not field-level (13: "body steps compare bytes").
case body(String)
@@ -57,6 +62,7 @@ public enum ExpectedField: Sendable, Equatable {
case .background: .background
case .backgroundImage: .backgroundImage
case .icon: .icon
case .iconColor: .iconColor
case .body: .body
}
}
@@ -70,6 +76,7 @@ public enum ExpectedField: Sendable, Equatable {
case background
case backgroundImage
case icon
case iconColor
case body
}
}
@@ -332,6 +339,7 @@ public enum HistoryStaleness {
case let .background(expected): equal(document.background, expected)
case let .backgroundImage(expected): equal(document.backgroundImage, expected)
case let .icon(expected): equal(document.icon, expected)
case let .iconColor(expected): equal(document.iconColor, expected)
case let .body(expected): document.body == expected
}
}