The Colors panel joins the palette — the combo ratified, and each anchor composes the halves it needs
Four rulings close Redesign Contradiction 3452893f (2026-08-06): the in-app escape hatch is ratified in full, reversing 2026-07-29's palette-only rule — the combo's Other… opens the system Colors panel, a pick landing on a palette color stores the name, anything else the hex. Free-picked colors change no contrast story: they land on the same runtime ink computation hand-written hex always got (10 amended to say so; no warning surface is owed). Anchor ownership: the card sidebar's background story is the combo alone — the well grid's background half stays with the other anchors (StyleEditorView gains showsBackground beside showsSymbols; the popover's symbol half already went to its inline SymbolPicker). Quick-style recents stay palette-vocabulary — a panel pick never enters them. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -216,7 +216,8 @@ struct StyleEditorLayout: Equatable {
|
||||
|
||||
// MARK: - The editor
|
||||
|
||||
/// The style editor: a background section and a symbol section, each a leading "no value" well
|
||||
/// The style editor: a background section and a symbol section (each omissible — `showsBackground`/
|
||||
/// `showsSymbols`, since 03's anchors compose the halves they need), each a leading "no value" well
|
||||
/// followed by its grid, with the target set's current value stated beside the section title.
|
||||
///
|
||||
/// ### What it shows for a batch
|
||||
@@ -250,6 +251,18 @@ struct StyleEditorView: View {
|
||||
/// a colour chosen in a card window is one of that window's session gestures.
|
||||
var undo: CardWindowUndo?
|
||||
|
||||
/// Whether the symbol section appears at all. On everywhere but the board info popover, whose
|
||||
/// inline `SymbolPicker` beside the rename field owns the board's glyph now — two surfaces
|
||||
/// writing the same key in one popover would make the second read as a different setting.
|
||||
var showsSymbols: Bool = true
|
||||
|
||||
/// Whether the background section appears at all. On everywhere but the card window sidebar,
|
||||
/// where the labeled `ColorComboView` row is the background story (03 ▸ Styling ▸ Controls,
|
||||
/// the 2026-08-06 anchor-ownership rule): the sidebar is the narrow context the combo was
|
||||
/// built for, and grid-plus-combo over one value read as two settings — `showsSymbols`'
|
||||
/// reasoning, pointed the other way.
|
||||
var showsBackground: Bool = true
|
||||
|
||||
/// The live body metric, read here rather than passed in — `CardStyleSection`'s pattern, so
|
||||
/// every anchor derives its geometry the same way (10-accessibility.md's full-relative-scaling
|
||||
/// rule).
|
||||
@@ -263,9 +276,15 @@ struct StyleEditorView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: StyleEditorLayout.sectionSpacing(bodyPointSize: pointSize)) {
|
||||
targetCaption(count: subjects.count)
|
||||
backgroundSection(background, layout: layout)
|
||||
Divider()
|
||||
symbolSection(icon, layout: layout)
|
||||
if showsBackground {
|
||||
backgroundSection(background, layout: layout)
|
||||
}
|
||||
if showsBackground && showsSymbols {
|
||||
Divider()
|
||||
}
|
||||
if showsSymbols {
|
||||
symbolSection(icon, layout: layout)
|
||||
}
|
||||
}
|
||||
.padding(layout.padding)
|
||||
.frame(width: layout.width)
|
||||
|
||||
Reference in New Issue
Block a user