The app learns Appearance — Auto, Light, Dark from the View menu and a toolbar pull-down
View ▸ Appearance (11-command-nexus.md): three radio-exclusive rows, app-wide, persisted, needing no window in front — the View menu's new last group. AppearanceStore owns the override's rules (absent key = Auto, lenient reads degrade to Auto, remove-at-default) with an injectable apply seam so test hosts never touch NSApp; the one real apply hands NSApp.appearance its answer in applicationDidFinishLaunching, the global side effect KanbanApp.init must not carry. The board toolbar gains its first .picker item — an NSMenuToolbarItem whose rows re-fetch their spec fresh, checkmark read at menu-open like every other menu row — and Appearance joins the search field as the second default item, centered beside it (03-board-ui.md ▸ Toolbar, ratified 2026-08-07). Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -841,6 +841,7 @@ struct UndoCommandSurfaceTests {
|
||||
store: store,
|
||||
search: BoardSearchPresentation(),
|
||||
zoom: BoardZoomStore(defaults: UserDefaults(suiteName: "dev.rzen.indie.Kanban.history-tests.\(UUID().uuidString)")!),
|
||||
appearance: AppearanceStore(defaults: UserDefaults(suiteName: "dev.rzen.indie.Kanban.history-tests.\(UUID().uuidString)")!, apply: { _ in }),
|
||||
session: DragSession()
|
||||
)
|
||||
let provider = FakeHistoryProvider()
|
||||
@@ -899,6 +900,7 @@ struct UndoCommandSurfaceTests {
|
||||
store: store,
|
||||
search: BoardSearchPresentation(),
|
||||
zoom: BoardZoomStore(defaults: UserDefaults(suiteName: zoomDomain)!),
|
||||
appearance: AppearanceStore(defaults: UserDefaults(suiteName: zoomDomain + ".appearance")!, apply: { _ in }),
|
||||
session: DragSession()
|
||||
)
|
||||
let provider = FakeHistoryProvider()
|
||||
@@ -944,6 +946,7 @@ struct UndoCommandSurfaceTests {
|
||||
store: store,
|
||||
search: BoardSearchPresentation(),
|
||||
zoom: BoardZoomStore(defaults: UserDefaults(suiteName: "dev.rzen.indie.Kanban.history-tests.\(UUID().uuidString)")!),
|
||||
appearance: AppearanceStore(defaults: UserDefaults(suiteName: "dev.rzen.indie.Kanban.history-tests.\(UUID().uuidString)")!, apply: { _ in }),
|
||||
session: DragSession()
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user