Build the menu bar per the Command Nexus
Nexus parity, audited row by row (11-command-nexus.md § Menu commands) — every already-built item's title, chord, and placement matched exactly; this pass fills what remained: - The future-window rows, present with stable titles and validation-driven disablement until their milestones fill the actions: Save as Template (m9), Add Attachment… ⇧⌘A, Find Next/Previous ⌘G/⇧⌘G, the View-menu card triplet Edit Body ⌘E / Raw Source ⌥⌘E / History (m6), Board ▸ Pull/Push (git milestones) — one shared disabled-row shape in FutureCommands.swift so later milestones only flip validation. - No Print story in v1: the print group is removed. - Help carries the Nexus's one remap-teaching line — Customize Keyboard Shortcuts…, opening System Settings' Keyboard ▸ Shortcuts extension directly (the modern extension URL, verified to launch the appex). - The launch-restore decision now runs through a pure, tested AppModel.shouldRestoreAtLaunch gate; the Settings pane's caption rides a proper Form section footer. 904 unit tests. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -300,4 +300,24 @@ struct AppModelTests {
|
||||
|
||||
model.storeRegistry.release(try #require(model.session(for: ref)?.store))
|
||||
}
|
||||
|
||||
// MARK: Launch restoration
|
||||
|
||||
/// App ▸ Settings…'s "Restore open boards at launch" (11-command-nexus.md) gates the flagged set
|
||||
/// by AND, not by either half alone: the preference off never restores even with boards flagged
|
||||
/// (a user who turned it off gets welcome, full stop), and the preference on restores nothing when
|
||||
/// there is nothing flagged (an ordinary first launch, which shows welcome exactly as it always
|
||||
/// has, not an empty restoration pass).
|
||||
@Test(
|
||||
"The launch-restoration gate is the preference AND something to restore",
|
||||
arguments: [
|
||||
(preference: true, hasRestorables: true, expected: true),
|
||||
(preference: true, hasRestorables: false, expected: false),
|
||||
(preference: false, hasRestorables: true, expected: false),
|
||||
(preference: false, hasRestorables: false, expected: false),
|
||||
]
|
||||
)
|
||||
func launchRestorationGate(preference: Bool, hasRestorables: Bool, expected: Bool) {
|
||||
#expect(AppModel.shouldRestoreAtLaunch(preference: preference, hasRestorables: hasRestorables) == expected)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user