Skip to content

Add Quit Protection for Command-Q - #531

Open
xcv58 wants to merge 9 commits into
mactools-app:mainfrom
xcv58:codex/quit-protection
Open

xcv58 wants to merge 9 commits into
mactools-app:mainfrom
xcv58:codex/quit-protection

Conversation

@xcv58

@xcv58 xcv58 commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Problem and result

An accidental ⌘Q can close the active app. Quit Protection adds optional Hold or Double Press confirmation, a compact indicator, and app scopes for all apps, selected apps, or all apps except exclusions.

Related to #527.

Changes

  • VoiceOver announces confirmation without moving focus. With feedback on, its Double Press interval is separately adjustable and defaults to 3 seconds.
  • Confirmed quits use the app’s native Quit behavior, including in Chrome with Warn Before Quitting enabled. App switchers and known forwarding clients retain their shortcuts.
  • Requires MacTools 2.2.5 and Accessibility and Input Monitoring permissions. Protection pauses with update guidance when an older Input Remapping, Trackpad Gestures, or Window Switcher plugin is active.

Verification

  • make ci passed with 3,264 XCTest passes, 6 skips, 251 script tests, and PluginKit v7 compatibility.
  • The standalone and desktop Quit Protection fixtures passed. The MacTools Dev retest confirmed the 3-second VoiceOver interval.
  • Live remote forwarding and physical sleep/wake remain unverified.

UI evidence

Open Settings → Quit Protection. The settings preview shows Hold mode and predates the current status and scope guidance.

Quit Protection settings

Light indicator Dark indicator
Light confirmation states Dark confirmation states

Hold progress and release instruction

Checklist

  • Core behavior and relevant risks are verified using existing tests, focused additions, or manual checks; results or limitations are recorded.
  • UI evidence is attached where applicable; shared components, themes, localization, and accessibility are respected.
  • User-facing documentation and changelog fragments are updated when required.
  • Plugin metadata, runtime contracts, action policies, and minimum-host compatibility agree.
  • Licensing and third-party notices are complete; no credentials, local configuration, or unrelated generated files are included.

@xcv58
xcv58 marked this pull request as ready for review November 8, 2026 02:44

This branch has not been deployed

No deployments
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.

1 participant