uttrflow / uttrflow/uttrflow-swift

Return doesn't press the prominent button on onboarding pages

Open Beginner friendly
#525 0 comments 0 reactions 0 assignees View on GitHub
accessibility area:general enhancement good first issue P2
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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.