Remove lifecycle keepalive window - #3003
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
|
Codex review: needs maintainer review before merge. Reviewed August 17, 2026, 2:59 AM ET / 06:59 UTC. ClawSweeper reviewWhat this changesThe PR removes CodexBar’s invisible lifecycle keepalive window and opens Settings through a modern AppKit action with a legacy fallback. Merge readinessKeep open for normal owner review: the focused lifecycle cleanup has strong real-app evidence and no actionable correctness finding. Priority: P2 Review scores
Verification
How this fits togetherCodexBar’s status-menu actions select a settings pane, activate the app, and present its SwiftUI Settings scene. This change removes the hidden relay window and directly dispatches to the visible Settings window while preserving Dock policy preparation. flowchart LR
A[Status menu] --> B[Select settings pane]
B --> C[Activate CodexBar]
C --> D[Prepare Dock policy]
D --> E[Modern Settings action]
E --> F[Legacy action fallback]
F --> G[Visible Settings window]
Before merge
Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep one selector-based Settings-opening path with legacy fallback and retain focused coverage for menu opening, minimized Settings, and Dock activation. Do we have a high-confidence way to reproduce the issue? Not applicable: this PR addresses an implementation-level lifecycle artifact and provides direct after-fix bundle and menu interaction evidence. Is this the best way to solve the issue? Yes: the visible Settings window already owns Dock registration, and direct selector dispatch removes the separate hidden relay without adding configuration or state. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 09d2d0140d61. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
Summary
CodexBarLifecycleKeepaliveSwiftUI scene and its inert WindowServer footprintshowSettingsWindow:first, then legacyshowPreferencesWindow:Bundle proof
./Scripts/compile_and_run.shbuilt the production bundle, signed it with Peter's Developer ID, validated the nested signatures and packaged resources, relaunched it, and reportedOK: CodexBar is running.CGWindowListCopyWindowInfoshowed the 880×620 Settings window and status-bar windows, with no window namedCodexBarLifecycleKeepalive.codexbar-mergeditem at(1746, 0), size34×30, inside the2424×1476display. Clicking CodexBar's Settings row made the 880×620AboutSettings window key/frontmost, with the rebuilt sidebar and content intact.Validation
swift test --filter SettingsWindowOpeningTests— 3 passedswift test --filter DockIconPolicyDecisionTests— 6 passedmake check— passed, including format/lint and architecture/package gatesmake testwas also run. The repository wrapper reached group 13 and stopped on reproducible, unrelated fake-Claude subprocess failures:app runtime auto prefers CLI before web when OAuth unavailable,auto cli usage retries loading panel before stale web fallback, andauto cli usage retries timeout when cli is final source. Their fakeclaude auth status --jsonchildren time out after five seconds on this host; this branch changes no Claude or subprocess code. A supplemental full built-product run skipped the first exact known failure, exercised the remaining repository through completion, and isolated the latter two as the only residual failures.