uttrflow / uttrflow/uttrflow-swift

Row actions on Home, Dictation, Dictionary and Snippets stay invisible to keyboard users because they appear only on hover

Open
#554 0 comments 0 reactions 0 assignees View on GitHub
accessibility area:dictation bug P2
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.