Repository navigation
macOS 26.6.2: normal quit leaves blank menu-bar slots in CodexBar 0.67.0; autosaveName reset reproduces it #4021
Copy link
Copy link
Closed
Labels
P2Normal priority bug or improvement with limited blast radius.Normal priority bug or improvement with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Activity
Metadata
Metadata
Assignees
Labels
P2Normal priority bug or improvement with limited blast radius.Normal priority bug or improvement with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Summary
Normally quitting CodexBar can leave its old ControlCenter-hosted status-item window behind as a blank
Item-0. Relaunch creates a new working icon beside it. Repeated cycles accumulate gaps and displace other menu-bar icons toward the notch.Confirmed on official CodexBar 0.67.0 (158): the first newly measured normal quit/relaunch cycle left the exact previous window behind. The app exited normally, but window 1360 changed from
codexbar-mergedto blankItem-0; relaunch created working window 1515 beside it. Visible hosted slots increased from 15 to 16. Previously, three of four tested 0.66.0 (156) cycles and both tested 0.65.0 (154) cycles failed.A separate minimal AppKit app isolates the trigger: clear the status item's
autosaveName, remove it, and immediately terminate. Keeping the name intact in otherwise equivalent controls leaves no blank slot. This also reproduces insideapplicationWillTerminate.Environment
Reproduction
codexbar-mergedwindow ID usingCGWindowListCopyWindowInfo(ControlCenter, layer 25).NSRunningApplication.terminate()and confirm the app exits. No force kill is needed.Item-0. Relaunch adds a new workingcodexbar-mergedwindow; repeat to see accumulation.Expected: the old host disappears after normal quit, and the new launch preserves placement without adding a blank slot.
Item-0Item-0Item-0Item-0The outcome follows the exact old window ID; generic names and total window counts alone are insufficient because other system items change independently.
0.67.0 lifecycle evidence
At 17:39:32 local time on 26 September, AppKit approved normal termination, ControlCenter changed host identity from
com.steipete.codexbar-codexbar-merged-44914tocom.steipete.codexbar-Item-0-44914, CodexBar completed termination, and ControlCenter then stopped tracking the renamed host. No matching ephemeral-displayable removal followed. The exact old window 1360 remained through relaunch as blankItem-0.Source correlation
PR #3723 introduced clearing
autosaveNamebefore removal to preserve saved placement. That is the native sequence isolated here. The 0.67.0 removal helper is reached by shutdown from applicationWillTerminate.Between 0.66.0 and 0.67.0, these relevant files changed only by two unrelated credential-notification cleanup calls in
cancelShutdownTasks; the item-removal helper and identity-reset sequence are unchanged. Currentmainadds opt-in startup hosting diagnostics in PR #4012 for the different never-hosted-at-startup report #3377. That PR explicitly makes no runtime hosting fix and does not change this shutdown removal path. A fresh bounded issue search found no exact retained-after-exit duplicate.Please investigate preserving host identity during actual termination without regressing saved icon positions. A regression check needs both successful old-window removal and preserved placement on relaunch. Preference-only tests miss this failure. A locally tested candidate source patch is included in the evidence archive, but the installed app remains the official build.
Attachments prepared
No account identifiers, credentials, home-directory paths, or full-desktop screenshot are needed to reproduce or explain this report.