Repository navigation
Let the Dictate key be set to None - #308
Merged
Merged
Conversation
Every Keys-tab row now offers None, Dictate included, so a user can run Blurt with no dictation key (e.g. only rewrite, compose or read aloud). - TriggerKeyBindings no longer forces the bound key to dictate; the one rule kept (in TriggerKeyStyleStore.setChoice) is that while any key dictates, the bound key is one of them. With none left nothing dictates, and the next key set to dictate takes the binding. New `dictationKey` (nil when none); `isOnlyDictatingKey` removed; `extraKeys` excludes the dictation key, not the bound key, so a bound key moved to another action still shows. - setChoice/assign no longer refuse, so they return Void. - No-dictation-key states: the main window's Dictate row offers a "Choose Key…" link to Settings, the menu bar a "Choose Dictation Key…" command, the empty Library and permissions step stop naming a key. - Tests that pinned "can't be cleared" now pin the new rule; the Keys UI test asserts None is offered. AGENTS.md and the engine README updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
Every row on Settings › Keys now offers None, Dictate included. Before, the only dictating key's pop-up hid None, so Blurt always had a dictation key. Now you can run it with only Rewrite, Compose, Read Aloud and so on.
How
TriggerKeyBindings,TriggerKeyStyleStore): the bound key is no longer forced to dictate. The one rule kept is that while any key dictates, the bound key is one of them. Taking the bound key off Dictate still moves the binding to the next dictating key. With none left, nothing dictates, and the next key set to dictate (styled or not) takes the binding.TriggerKeyBindings.dictationKey: TriggerKey?(nil when nothing dictates) for the views.isOnlyDictatingKeyis gone.extraKeysnow excludes the dictation key rather than the bound key, so a bound key moved to Read Aloud with nothing else dictating still shows on the main window.setChoice/assigncan no longer refuse, so they returnVoid.When nothing dictates
The macOS HIG reviewer was run over these states, and its suggestions are in: actions rather than tooltip-only hints, title case and an ellipsis on the menu command, and spelled-out VoiceOver strings instead of "›". Not done: deep-linking Settings straight to the Keys tab.
SettingsWindowRoot'sTabViewhas no selection binding, so that's a separate change.Tests
The engine tests that pinned "the only dictating key can't be cleared" now pin the new rule: the last key turned off, the next dictating key taking the binding,
extraKeyswith a non-dictating bound key, and None viaassign. The Keys UI test now asserts that None is offered on Dictate.Local
scripts/check.shis green (engine coverage 93.73%). The UI suite and leak scan are left to CI.🤖 Generated with Claude Code