Skip to content

feat(desktop): complete quit shortcut confirmation modes - #222

Merged
leoisadev1 merged 3 commits into
mainfrom
fix/desktop-quit-confirmation
Sep 13, 2026
Merged

leoisadev1 merged 3 commits into
mainfrom
fix/desktop-quit-confirmation

Conversation

@leoisadev1

Copy link
Copy Markdown
Member

Problem

confirmQuit was 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

confirmQuit is now direct, hold, or double-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 run on QuitHold, DesktopWindow, DesktopClientSettings, and contracts settings: 128 passed, including canceled holds, second-press quit, concealment, and existing lifecycle cases.
  • vp lint on the changed files: no new errors. One existing SettingsPanels warning is unrelated.
  • Typecheck for contracts, desktop, and web: no new errors.

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.

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.
@vercel

vercel Bot commented Sep 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
akeru-bot-landing Building Building Preview Sep 10, 2026 5:46pm UTC

Request Review

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Sep 10, 2026
@greptile-apps

greptile-apps Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

Greptile Summary

This 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/5

Safe 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

Comment thread apps/desktop/src/window/QuitHold.ts Outdated
Comment thread packages/contracts/src/settings.ts
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.
@leoisadev1
leoisadev1 merged commit 2014662 into main Sep 13, 2026
11 checks passed
@leoisadev1
leoisadev1 deleted the fix/desktop-quit-confirmation branch September 13, 2026 23:56
This was referenced Sep 13, 2026

This branch was successfully deployed

1 active deployment
Preview — 4a6173db Deployed Sep 13, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant