Skip to content

Keep Stop Stutter in the menu bar without a Dock icon - #2

Merged
burakgon merged 1 commit into
burakgon:mainfrom
jeffscottward:fix/menu-bar-residency
Sep 9, 2026
Merged

burakgon merged 1 commit into
burakgon:mainfrom
jeffscottward:fix/menu-bar-residency

Conversation

@jeffscottward

Copy link
Copy Markdown
Contributor

Summary

Closes #1.

  • Set LSUIElement to a boolean true in the app's Info.plist, using the standard macOS agent-app configuration to keep Stop Stutter in the menu bar without a Dock icon or Command-Tab entry.
  • Clarify in the README that closing the main window keeps boost running, and that the menu bar provides Open Stop Stutter and Quit.

The existing MenuBarExtra, app-owned AppModel, 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:

  • Parsed Resources/Info.plist with Python's plistlib; confirmed LSUIElement is a boolean true, every other bundle metadata value is unchanged, and LSBackgroundOnly is not enabled.
  • git diff --check passed.

@burakgon, could you please check this work on macOS before merging?

  • Run swift test and ./scripts/build.sh, then launch the built .app so its bundle metadata is applied.
  • Confirm the menu bar icon and initial window appear, without a Dock or Command-Tab entry.
  • In Auto mode, close the main window and launch/quit a watched app; confirm boost still starts and stops as expected.
  • Use Open Stop Stutter from the menu bar to reopen and focus the main window.
  • Use the menu bar's Quit while boost is active; confirm the app exits and restores AWDL through the existing cleanup path.

@burakgon burakgon left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

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.sh passed 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; LSBackgroundOnly is absent. git diff --check passed.

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.

@burakgon
burakgon merged commit 8cf8dc3 into burakgon:main Sep 9, 2026
1 check 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.

[FEATURE REQUEST] - ability to close the dock icon and keep the program open in the system tray indefinitely

2 participants