Keep Stop Stutter in the menu bar without a Dock icon - #2
Conversation
burakgon
left a comment
There was a problem hiding this comment.
Reviewed ba91c8ee00400227ac5a549a29f1f14b2cfb15ce against main and issue #1. No blocking findings.
The boolean LSUIElement setting is the documented macOS agent-app configuration for this behavior. The app-owned model, workspace observers and heartbeat remain independent of the main window. The existing menu actions still reopen/activate the window and terminate through prepareToQuit(). No helper, XPC, or recovery code changes are introduced.
Verification:
- CI for this commit passed all 28 tests, the arm64/x86_64 app and helper build, and bundle validation.
- Local
./scripts/build.shpassed on Apple Silicon / macOS 26.6.2 with SDK 26.5. Deep/strict signature verification passed; the app retains the macOS 14.0 deployment target. - Compared the source and built plists: the only metadata change is boolean
LSUIElement=true;LSBackgroundOnlyis absent.git diff --checkpassed.
Testing limits: local swift test could not run because this host has Command Line Tools without XCTest. Live UI checks were blocked by pending macOS Accessibility/Screen Recording permissions, so initial presentation, Dock/Command-Tab visibility, reopen/focus, and active-Boost quit/restoration were not verified interactively. The local build is an ad-hoc preview and cannot use the privileged helper. These remain manual checks for the next signed release.
The scoped configuration change and existing lifecycle support make this appropriate to merge. Thanks for the contribution and the clear testing notes.
Summary
Closes #1.
LSUIElementto a booleantruein the app'sInfo.plist, using the standard macOS agent-app configuration to keep Stop Stutter in the menu bar without a Dock icon or Command-Tab entry.The existing
MenuBarExtra, app-ownedAppModel,applicationShouldTerminateAfterLastWindowClosed(false), window-opening action, and asynchronous Quit cleanup already provide the required lifecycle. This change leaves them intact, including the initial window presentation, and does not modify Auto detection, the privileged helper, or AWDL recovery. The build script already copies this plist into the app bundle.Verification and platform limits
Developed on Linux. My Mac is currently in use and I can't interrupt it to verify the app, so I have not run the macOS app,
swift test, or./scripts/build.sh. Swift is also unavailable on this Linux machine.Only lightweight non-runtime checks were performed:
Resources/Info.plistwith Python'splistlib; confirmedLSUIElementis a booleantrue, every other bundle metadata value is unchanged, andLSBackgroundOnlyis not enabled.git diff --checkpassed.@burakgon, could you please check this work on macOS before merging?
swift testand./scripts/build.sh, then launch the built.appso its bundle metadata is applied.