Resolve the 2026-07-29 design-review findings into the DESIGN docs
Settles the m11-accessibility findings and two undo-doc findings from the Redesign board (rationale per card in its Resolved lane): - 13: permanent delete stays non-undoable — the trash-section clause contradicting Rules is amended; staleness validation reads disk, not the snapshot (blessing the implemented false-skip fix). - 10: VO-Space toggles on any selectable element; the digest covers the trash while shown; a vanished head with surviving co-selection is still named (naming and recovery are independent axes); banner-row buttons are literal FKA Tab stops; lane-title landmark+heading doubling accepted; trash visibility wording pinned; the custom-action cut confirmed; banner transitions are origin-independent; the AA obligation binds the primary label tier. - 03: the palette AA claim rewritten to the real mechanism — one ink-selection code path for palette names and hex, pinned by PaletteContrastTests in both appearances. Code-conformance residue filed as "Realign code with the 2026-07-29 accessibility rulings" atop the Implementation Backlog. Claude-Session: https://claude.ai/code/session_01CqjXB7ASoWtbyoGod68k97
This commit is contained in:
@@ -41,7 +41,7 @@ Toolbars are **pure enhancement**: every function they host already has a menu i
|
||||
|
||||
One **style editor** component — a background palette grid and a curated symbol grid — presented from three anchors: **embedded** in the card window sidebar's Style section (05-card-window.md) and in the board popover's styling area, and as a **popover** opened by Style… from a card/lane context menu or the menu bar (Board ▸ Style…, ⌥⌘S — 11-command-nexus.md; selection-aware: it styles the selected cards or lane, and with nothing selected, the board). One component, one behavior, three anchors — replacing the pathfinder's swatch-row-plus-Style-popover split, whose functions were right and whose form wasn't.
|
||||
|
||||
- **Palette-only in-app**: the background grid offers the 12 palette colors — every pair AA-verified at design time (10-accessibility.md), the claim pinned by a computed-contrast unit test over all 12 pairs so palette drift can never silently break it — plus a leading **None** well that removes the `background` key. Custom hex is not pickable in-app but stays fully honored from disk (runtime contrast, 10-accessibility.md): curated in-app, unlimited on disk.
|
||||
- **Palette-only in-app**: the background grid offers the 12 palette colors — every one AA-verified through one code path (ratified 2026-07-29: palette names route through the same runtime ink-selection seam as hand-written hex — the appearance flip picks the readable label vocabulary — and PaletteContrastTests pins that the chosen ink meets AA in both appearances for all 12 backgrounds, so palette drift can never silently break it) — plus a leading **None** well that removes the `background` key. Custom hex is not pickable in-app but stays fully honored from disk (runtime contrast, 10-accessibility.md): curated in-app, unlimited on disk.
|
||||
- **Curated symbol grid**: a hand-picked set (roughly five dozen kanban-relevant SF Symbols); its leading well is the level's default symbol and removes the `icon` key. Any other SF Symbol name works written by hand — named symbols the running OS knows, that is: inventories grow per macOS release, so a newer-OS name renders the level default on an older Mac, value preserved on disk — the palette stance again. No full-browser escape hatch in-app; the raw file is the escape hatch.
|
||||
- **Off-palette values display leniently**: a hand-written hex background or uncurated symbol shows as the current value in the editor (labeled verbatim, outside the grids); choosing any well replaces it.
|
||||
- **Batch edits**: a multi-selection shows per-dimension mixed state (no well selected, "—" where a value would read); choosing a well applies to the whole selection — one gesture, one commit on git boards.
|
||||
|
||||
Reference in New Issue
Block a user