Skip to content

Add stages to AppDeferredTasks - #1872

Merged
cyanzhong merged 1 commit into
mainfrom
develop
Nov 11, 2026
Merged

cyanzhong merged 1 commit into
mainfrom
develop

Conversation

@cyanzhong

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The key-window observer can miss the initial window becoming key, leaving main-menu customization blocked until another key-window transition.

1 open issue
What changed in this PR

Adds lifecycle stages to AppDeferredTasks, allowing deferred AppKit setup to run after launch or when the first window becomes key.

Changes:

  • Tracks readiness and queued actions independently for each stage.
  • Defers recent-menu setup until launch finishes and main-menu customization until a window becomes key.
  • Expands tests for stage isolation, reentrant actions, and repeated readiness signals.
File Description
MarkEditMac/​Tests/​AppDeferredTasksTests.swift Tests both stages and their execution behavior.
MarkEditMac/​Sources/​Main/​Application/​AppDelegate.swift Signals readiness at lifecycle events.
MarkEditMac/​Sources/​Main/​AppDeferredTasks.swift Adds stage-specific readiness and action queues.
MarkEditMac/​Sources/​Extras/​NSDocumentController+Extras.swift Assigns recent-menu setup to the launch stage.
MarkEditMac/​Sources/​Extras/​NSApplication+Extras.swift Assigns main-menu customization to the first-key-window stage.

Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Deferring the private AppKit menu hook until the first key window requires macOS launch and window-lifecycle validation that existing tests bypassing swizzling and observers do not provide.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@cyanzhong
cyanzhong merged commit 22547f4 into main Nov 11, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants