Fix hotkey triggers and preserve canceled dictation in History - #1043
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
|
@codex review |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 19f91f2696
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9cce3e8670
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 946cd9fb6b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
FluidVoice PR build readyDownload FluidVoice-PR-1043-1769809bcdb2 The artifact contains the ad-hoc-signed app ZIP, Xcode archive, build manifest, and installation instructions. It expires 5 days after the build. Install the app
This build has its own app identity, so its permissions are separate from the release version of FluidVoice. |
This comment has been minimized.
This comment has been minimized.
|
The Escape follow-up is now in b5e445e. Voice Edit suppresses the late rewrite at the model/focus/delivery boundaries and clears canceled context. Voice Command suppresses undispatched tools, further turns, stale streaming UI, and pending voice confirmation. Undispatched canceled intent is removed from saved chat; an already-started command keeps its actual result. Typed follow-ups and explicit confirmations retain normal behavior. Validation: 346 signed XCTest checks, 103 production Command cancellation assertions, 8 production voice Edit scenarios, 151 Command session assertions, and all 9 History persistence groups passed. Strict lint: zero violations. The Edit outside-diff concern and earlier Command cancellation/revival concerns are now covered by this scoped follow-up. New CI/Greptile review is still running. @codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b5e445ed71
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Breezy! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Description
Fix shortcut capture and false-trigger regressions, including Ctrl+Cmd+D. Primary Toggle keyboard/mouse shortcuts activate on release; Hold and Automatic keep their existing press behavior. Removed or changed bindings cannot leave stale held keys or queued recording starts behind.
Escape during dictation now finishes transcription and saves it to History without inserting into the focused field, copying to the clipboard, or sending. History-disabled, training, and disposable practice captures remain discarded. Escape during voice Edit also suppresses the pending rewrite and clears canceled context. Voice Command cancellation suppresses model output, undispatched tools, further agent turns, and pending voice confirmation; canceled undispatched intent is removed from the saved conversation. An already-dispatched terminal command retains its real result. Ordinary typed follow-ups and explicitly confirmed commands retain normal behavior. Rejected notch follow-ups retain their draft and explain the pending approval; accepted submissions cannot erase a newer draft. Voice confirmation cleanup also covers cancellation at the caller’s await continuation. Pending delivery rechecks cancellation after focus/clipboard waits, before every direct-insertion fallback, and before each AX write or Unicode chunk. Dismissing a dictionary suggestion preserves the current recording and its held shortcut release.
Type of Change
Related Issue or Discussion
Regression coverage informed by #556, #498, #94, #211, #1031, and #909. Clean event replay does not establish that every reported hardware/remapper issue is fixed.
Testing
swiftlint --strict --config .swiftlint.yml Sources Tests Package.swift— zero violations in 500 files.swiftformat --config .swiftformat SourcesPrivate FI build installed/launched; deep strict signature verification passed. Three independent subagent reviews completed; follow-up review fixes cover direct insertion after Escape and suggestion dismissal during recording. A reproduced modifier-only Toggle dismissal regression now passes after the fix. Barath reported the installed behavior works after trying it.
Screenshots / Video
Updated Cancel Recording description in the installed app; layout and styling are unchanged.
Notes
Bare letters, digits, and editing keys require a modifier for recording shortcuts; punctuation and modifier-only shortcuts remain supported. Cancel and Paste Last retain their separate rules.
Escape cannot undo OS input already dispatched. Voice Edit and Command use the existing Escape request marker and delivery validity checks. Cancellation cannot undo an already-dispatched terminal action; it retains the real result and prevents another step. Ordinary typed/manual requests are covered as non-effects. Boundary doubles do not establish a physical Escape or real provider/terminal end-to-end test for the new mode fixes. Event replay/policy/source-wiring checks do not prove physical hotkey delivery across remappers, Secure Input, sleep/wake, other keyboards, or older macOS versions. No recording delay, discarded opening PCM, new polling, or dependencies added.