Repository navigation
feat(desktop): complete quit shortcut confirmation modes - #222
Merged
Merged
Conversation
Replace the boolean hold-to-quit setting with direct, hold, and double-press modes. A second press quits immediately. Completing a hold hides the window until remaining repeats are consumed. Adapted from pingdotgg#9076, pingdotgg#9141, pingdotgg#9485, and pingdotgg#9657.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis update completes configurable desktop quit confirmation with direct, hold, and double-press modes. It migrates legacy boolean settings while preserving existing users’ intended quit behavior. Confidence Score: 5/5Safe to merge. The quiet-quit fallback is fully addressed in the current code. The migration-coverage thread was manually resolved without explanation by leoisadev1. Reviews (3): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile |
A completed hold that released Command first then saw a modifier-free Q repeat cancelled the watchdog. If macOS omitted the final Q key-up, the concealed window stayed running. Reschedule the quiet period instead. Also cover boolean confirmQuit migration on decode, encode, and wrapped settings documents.
This was referenced Sep 13, 2026
Merged
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
confirmQuitwas a boolean. Disabled quit immediately. Enabled, the default, mixed hold-to-quit with a second-press escape hatch. Canceling a hold and pressing again could count as the second press. A completed hold could also wait forever when macOS omitted the key-up event.Changes
confirmQuitis nowdirect,hold, ordouble-click. Existing booleans migrate as true to hold and false to direct. Hold remains the default.Hold still quits after a 1.2-second completed hold. A second Cmd/Ctrl+Q within 500 ms quits immediately without waiting for settings. Other input cancels the first tap. At the hold threshold the focused window is concealed, including exiting native fullscreen first, then the process quits after release or a quiet period that follows the observed repeat cadence.
The Settings selector, overlay copy, preload validation, and IPC hint event now carry the selected mode. The Akeru overlay stays centered. The application menu Quit action remains immediate.
Adapted from pingdotgg#9076, pingdotgg#9141, pingdotgg#9485, and pingdotgg#9657.
Scope
This PR is desktop quit confirmation only.
Covered here:
Still assigned to this handoff, in later PRs:
Verification
vp test runon QuitHold, DesktopWindow, DesktopClientSettings, and contracts settings: 128 passed, including canceled holds, second-press quit, concealment, and existing lifecycle cases.vp linton the changed files: no new errors. One existing SettingsPanels warning is unrelated.Native Cmd/Ctrl+Q was not exercised in an Electron session on this Linux host. Overlay and Settings live on AppRoot and Settings → General. Browser integrated verification of the selector and overlay was not run in this pass.
Implemented and verified by Grok 4.6 High in Grok Build via Orca.