File ▸ Share… stages a board as a zip and hands it to the system share sheet
Duplicate's own posture — a faithful copy, `.git` the sole exclusion, attachments/comments/trash carried verbatim — staged to a temp directory (BoardShareStager, ditto-zipped via DittoZipArchiver) and presented through NSSharingServicePicker (BoardSharePresentation), anchored to the board window's toolbar or its center. Follows Duplicate/Save as Template's flush-then- cancellable-copy sequence under the banner's in-progress row (ShareBoardCommand, AppCommands.swift), menu-validated on focus alone rather than the read-only lock (a share is a read, Print's own posture) with the one carve-out an open inline title editor still needs. WriteOperation gains .shareBoard for the banner vocabulary; 11-command-nexus.md's File menu table gains the row. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
+10
-5
@@ -186,11 +186,15 @@ struct KanbanApp: App {
|
||||
IndieAboutCommand(configuration: AboutBox.configuration)
|
||||
|
||||
// The File group, in 11-command-nexus.md's own row order: New Card, New Lane, New Board…,
|
||||
// Open…, Open Recent ▸, Board Info, Duplicate, Save as Template, Reveal in Finder, Add
|
||||
// Attachment…, then the trash trio and Empty Trash…. The board-scoped ones validate against
|
||||
// the frontmost board through the focus system, so each is simply absent-of-effect when no
|
||||
// board is in front; New Board… and Open Recent are available everywhere, including with no
|
||||
// window at all. Close is the system's own item — no row of ours to add.
|
||||
// Open…, Open Recent ▸, Board Info, Duplicate, Save as Template, Share…, Reveal in Finder,
|
||||
// Add Attachment…, then the trash trio and Empty Trash…. The board-scoped ones validate
|
||||
// against the frontmost board through the focus system, so each is simply absent-of-effect
|
||||
// when no board is in front; New Board… and Open Recent are available everywhere, including
|
||||
// with no window at all. Close is the system's own item — no row of ours to add.
|
||||
//
|
||||
// **Share… joined 2026-08-09** (design ruling, card 72691b11) right after Save as
|
||||
// Template: the third command in a row that copies the whole board wholesale, each to a
|
||||
// different destination — a sibling folder, the templates store, or a share sheet.
|
||||
CommandGroup(after: .newItem) {
|
||||
BoardCreationCommands()
|
||||
NewBoardCommand(appModel: appModel)
|
||||
@@ -212,6 +216,7 @@ struct KanbanApp: App {
|
||||
|
||||
DuplicateBoardCommand(appModel: appModel)
|
||||
SaveAsTemplateCommand(appModel: appModel)
|
||||
ShareBoardCommand(appModel: appModel)
|
||||
RevealInFinderCommand()
|
||||
AddAttachmentCommand()
|
||||
AddCommentCommand()
|
||||
|
||||
Reference in New Issue
Block a user