uttrflow / uttrflow/uttrflow-swift
Return doesn't press the prominent button on onboarding pages
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 4h 27m
- Merged PRs (30d)
- 286
Description
## What happens
Each onboarding page marks one of its buttons as the one it steers towards (`isProminent`), and draws it as the filled accent button, but Return doesn't press it.
The footer (`Sources/Uttrflow/Onboarding/OnboardingView.swift:151-161`) creates every button as `Button(button.title) { … }` with `OnboardingButtonStyle`. No button gets `.keyboardShortcut(.defaultAction)`, and nothing else in `Sources/Uttrflow/Onboarding` handles a key press. A grep for `keyboardShortcut` across `Sources/Uttrflow` finds only the Settings confirmation alert.
## Why it matters
First run is a sequence of Continue, Allow and Next pages. A keyboard or VoiceOver user has to Tab to every button on every page. The custom button style also looks like the macOS default button, with the filled accent, but doesn't behave like one.
## How to reproduce
1. Reset first run (delete the onboarding record) and launch.
2. On the welcome page, press Return. Nothing happens.
## Acceptance criteria
- On every page, Return presses the prominent button when it is enabled.
- Pages with no prominent button, or whose prominent button is disabled (for example while a download runs), don't react to Return.
- Escape isn't bound to anything that would skip a permission or sign-in step without the user meaning it.
## Where to start
- `Sources/Uttrflow/Onboarding/OnboardingView.swift:155`: add `.keyboardShortcut(button.isProminent ? .defaultAction : nil)` (the optional-shortcut overload; the package targets macOS 26).
- `Tests/UttrflowUXTests/OnboardingPresenterTests.swift` already checks button shapes per page. You could add a check that each page has at most one prominent button.
- Run `make verify`, and see `CONTRIBUTING.md`.
Size: one line plus a test.
Contributor guide
Research direction
Start at Sources/Uttrflow/Onboarding/OnboardingView.swift:151-161 and inspect how each footer button is created and styled. Review Tests/UttrflowUXTests/OnboardingPresenterTests.swift, then run make verify. Done means Return activates only an enabled prominent button on each onboarding page, with no unintended Escape action.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, swift
- Domain
- accessibility, desktop
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 92/100