Add an Auto-correction switch to the menu bar - #3
Open
mikexkllr wants to merge 1 commit into
Open
Conversation
Dictation's AI cleanup pass could only be reached through Settings ▸ Dictation, which is the wrong home for it: whether a given transcript should be polished or left verbatim is a per-dictation decision, not a preference set once. Dictating a command, a file path, an identifier, or a name the model "fixes" into something else meant a trip through Settings and back, or repairing the result by hand. Auto-correction now sits in the menu bar beside Microphone and Translate, one click from wherever the dictation is happening. It binds to the same `dictationEnabled` setting as the Settings switch, so moving either moves the other, and that property's didSet still drives `MLXModels.setCleanupModel` - turning it back on warms the cleanup model in time for the next recording rather than paying for the load at finalize. The row is title-only. The menu is 216pt wide and GlassToggleStyle gives the label whatever the 38pt switch leaves, so a subtitle would truncate; the switch position carries the state as it does elsewhere. The Settings subtitle now points at the menu bar entry, so the two surfaces are discoverable from each other. Co-Authored-By: Claude Opus 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.
Dictation's AI cleanup pass could only be reached through Settings ▸ Dictation ▸ "Enable Dictation". That's the wrong home for it: whether a given transcript should be polished or left verbatim is a per-dictation decision, not a preference you set once. Dictating a command, a file path, an identifier, or a name the model "fixes" into something else meant a trip through Settings and back — or repairing the result by hand.
Auto-correction now sits in the menu bar beside Microphone and Translate, one click from wherever the dictation is actually happening.
How it behaves
dictationEnabled, so moving either surface moves the other.didSetstill drivesMLXModels.setCleanupModel, so turning it back on from the menu bar warms the cleanup model in time for the next recording rather than paying for the load at finalize.Note on the design
The row is title-only, no subtitle. The menu is 216pt wide and
GlassToggleStylegives the label whatever the 38pt switch leaves, so a second line would truncate. The switch position carries the state, as it does everywhere else in the app.Verification
Both changed Swift files parse under
-swift-version 6, and the symbols it leans on were checked against the tree (GlassToggleStyle,Palette.fg/Palette.accent,dictationEnabledand itssetCleanupModelside effect).I could not build the app target on this machine — no Metal toolchain and no code-signing identity — so this has not been compile-verified or run in the UI. A local build of the
Mispherscheme is worth doing before merge, mainly to eyeball the row's spacing in the real menu.This branch is based on current
main(48eb751), so it shares history and should merge normally.