Implement toolbar customization for both windows
NSToolbar through the existing HostedWindowController rather than SwiftUI's toolbar — for reasons that are contract, not taste: 03's transient-search clause is a decision over the toolbar's current contents, which NSToolbar publishes and SwiftUI's API cannot answer; Undo/Redo are the system's nil-target responder-chain actions so the toolbar items validate exactly as the menu rows do (disabled on base boards, alive in m8 unchanged); and the search item hosts the real NSSearchField with explicit first-responder control. Customization is all system furniture — Customize sheet, drag rearrange, display-mode popup, overflow, autosaved per window kind. Board default: the search field alone, trailing; catalog adds New Card, New Lane, Undo, Redo, Show Trash, every action extracted from its menu command so no second predicate exists. Card default: the Edit Body / Raw Source toggles and Add Attachment, mirroring their commands' own predicates live via observation tracking. Removing the search item keeps the promise — ⌘F surfaces the same field as a transient strip under the title bar, persisting until the query clears, and an overflowed item that cannot take the keyboard falls through to the strip too. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -183,6 +183,14 @@ struct KanbanApp: App {
|
||||
FindSteppingCommands()
|
||||
}
|
||||
|
||||
// The system's own toolbar rows — Show/Hide Toolbar and **Customize Toolbar…**, which
|
||||
// 11-command-nexus.md files under Standard macOS furniture ("Customize Toolbar… per system
|
||||
// convention (03)"). They are the platform's, spelled by the platform: both are nil-target
|
||||
// AppKit actions the key window's toolbar answers, so they validate per window (disabled on
|
||||
// welcome, live on the board and card windows) with nothing of ours in between. The
|
||||
// right-click ▸ Customize Toolbar… path 03 names is AppKit's too, and needs no row at all.
|
||||
ToolbarCommands()
|
||||
|
||||
// The View menu. `CommandGroupPlacement.toolbar` *is* View — the menu the toolbar's own
|
||||
// items live in — which is where 11-command-nexus.md files Show Trash. A divider separates it
|
||||
// from the card window's three view-state rows below: one board-scoped toggle, then a
|
||||
|
||||
Reference in New Issue
Block a user