uttrflow / uttrflow/uttrflow-swift
Row actions on Home, Dictation, Dictionary and Snippets stay invisible to keyboard users because they appear only on hover
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 3h 32m
- Merged PRs (30d)
- 277
Description
## What happens
The per-row controls are drawn with `.opacity(isHovered ? 1 : 0)` and `isHovered` is set only by `.onHover`:
- `Sources/Uttrflow/Main/DictationPageView.swift:81, 137` (Copy, Insert Again, Flag, More)
- `Sources/Uttrflow/Main/HomePageView.swift:136-144` (Open)
- `Sources/Uttrflow/Main/DictionaryPageView.swift:91, 101`
- `Sources/Uttrflow/Main/SnippetsPageView.swift:78, 91`
The comments say the controls are hidden rather than removed so VoiceOver and the keyboard can still reach them, and `rowActions` does expose them to VoiceOver's actions rotor (`MainPieces.swift:517-530`). But a sighted keyboard user with Full Keyboard Access who tabs onto one of these buttons gets focus on a control drawn at opacity 0, so the focus ring is invisible too. Nothing in these views reads focus (`@FocusState` appears nowhere under `Sources/Uttrflow/Main`).
## Why it matters
Keyboard-only users cannot see what they are about to press on the Dictation page (Insert Again, Flag, Delete via More) or in the dictionary and snippet lists. The page footnote tells them to "Point at a row", which they cannot do.
## How to reproduce
Turn on System Settings > Keyboard > Keyboard navigation, open the main window's Dictation page with at least one dictation today, and press Tab until focus moves into a row.
## Acceptance criteria
- A row's controls become visible when any of them, or the row, has keyboard focus, not only on hover.
- The Dictation page footnote does not tell keyboard users to point.
- Checked with Full Keyboard Access on all four pages; the pull request says so.
Contributor guide
Research direction
Start by reproducing the invisible focus state with Full Keyboard Access, then inspect the row controls in DictationPageView.swift, HomePageView.swift, DictionaryPageView.swift, and SnippetsPageView.swift, along with rowActions in MainPieces.swift. Verify that row controls become visible for keyboard or row focus on all four pages, and that the Dictation footnote no longer tells keyboard users to point.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, swift
- Domain
- accessibility, desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 76/100