uttrflow / uttrflow/uttrflow-swift
The Dictate shortcut's explanation says "Hold to talk. Double-tap…" even with Press to toggle selected
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 3h 32m
- Merged PRs (30d)
- 277
Description
## What happens
Settings → General shows the Dictate shortcut with this explanation whatever the Activation setting is:
> Hold to talk. Double-tap the same keys to keep talking hands-free.
(`ShortcutRegistry.all`, `Sources/UttrflowUX/ShortcutRegistry.swift:29-33`, used by `SettingsPresenter.shortcutRow`, `Sources/UttrflowUX/SettingsPresenter.swift:103-116`.)
Directly under it is the Activation row, "Hold to talk" / "Press to toggle" (`:133-141`). With **Press to toggle** selected:
- "Hold to talk" is wrong: a press starts and the next press stops.
- The double tap does nothing. `Docs/pipeline-gestures.md` ("in press-to-toggle a release does nothing at all, so no tap is ever counted") and `Docs/shortcuts.md` both say the double tap is reached from hold-to-talk only.
Other screens already follow the setting: the Dictation page's empty state picks "Hold" or "Press" (`Sources/UttrflowUX/MainDictationPresentation.swift:392-393`) and so does Home's hint (`Sources/UttrflowUX/HomePresentation.swift:358-364`).
## Why it matters
Someone who switched to Press to toggle, often because holding a key is hard for them, reads instructions for the other mode and a gesture that will not work for them.
## How to reproduce
`SettingsPresenter.pane(for: .general, settings: settings)` with `hotkeyActivation = .pressToToggle`: the `shortcut.dictate` row's explanation still starts "Hold to talk".
## Acceptance criteria
- With Hold to talk, the explanation is unchanged.
- With Press to toggle, it says what that mode does, for example "Press once to start and again to stop." and does not mention the double tap.
- The Fn explanation (`SettingsPresenter.swift:107-113`) and the unarmed / returned-to-default explanations still take precedence as they do now.
- A test in `Tests/UttrflowUXTests/SettingsPresenterTests.swift` covers both modes.
## Where to start
- `SettingsPresenter.shortcutRow` already receives `settings`; branch on `settings.hotkeyActivation` for `.dictate` only, or give `ShortcutDescriptor` a second explanation.
- Run `make verify` (export `DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer` first) and read CONTRIBUTING.md.
**Size:** XS, under an hour.
Contributor guide
Research direction
Start in Sources/UttrflowUX/SettingsPresenter.swift at shortcutRow and compare the existing Dictate, Fn, and default-state explanations with the activation setting. Read Tests/UttrflowUXTests/SettingsPresenterTests.swift, then run the focused tests or make verify; done means both activation modes are covered and the existing precedence rules remain intact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- accessibility, desktop
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- Under an hour
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 92/100