uttrflow / uttrflow/uttrflow-swift
Recovery buttons use three different wordings for the same action ("Open Settings" vs "Open System Settings", "Download" vs "Finish Setup")
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 3h 32m
- Merged PRs (30d)
- 277
Description
## What happens
The title of a recovery button is written three times:
| Action | Floating button `DockView.title(for:)` (`Sources/Uttrflow/Dock/DockView.swift:305-314`) | Main window `MainPresenter.title(for:)` (`Sources/UttrflowUX/MainPresentation.swift:169-178`) | Menu bar `FailurePresenter.title(for:)` (`Sources/UttrflowUX/ErrorPresentation.swift:103-112`) |
|---|---|---|---|
| `.openSystemSettings` | Open Settings | Open Settings | Open System Settings |
| `.downloadSpeechModel` | Download | Download | Finish Setup |
| others | same | same | same |
"Open Settings" is ambiguous in an app that has its own Settings window; the action opens System Settings.
## Why it matters
The same failure offers a differently named button depending on where the user looks, and "Open Settings" suggests the wrong window.
## Where to start
- Pick one table (the `FailurePresenter` wording is the most specific) and have the other two call it, or move it next to `RecoveryAction` in `UttrflowCore`.
- `DockView` is in the app target; `FailurePresenter` is public in `UttrflowUX`, which the app already imports.
- Update the expectations in `Tests/UttrflowUXTests/MainPresentationTests.swift:28-30` and `Tests/UttrflowUXTests/SpeechModelLoadingSurfacesTests.swift:61`.
- Run `make verify` (export `DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer` first) and read CONTRIBUTING.md before opening a pull request.
## Acceptance criteria
- One function decides a recovery button's title; the floating button, the main window and the menu bar all use it.
- `.openSystemSettings` reads "Open System Settings" everywhere (or the owner picks another single wording on this issue).
- Tests updated; `make verify` passes.
**Size:** S, about 1–2 hours.
Contributor guide
Research direction
Read CONTRIBUTING.md first, then inspect DockView.title(for:) in Sources/Uttrflow/Dock/DockView.swift, MainPresenter.title(for:) in Sources/UttrflowUX/MainPresentation.swift, and FailurePresenter.title(for:) in Sources/UttrflowUX/ErrorPresentation.swift. Update the expectations in the two named test files and run make verify with DEVELOPER_DIR set. Done means all three surfaces use one title function and the tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, swift
- Domain
- desktop
- Issue type
- Refactor
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 90/100