uttrflow / uttrflow/uttrflow-swift

Per-app formatting can only be set for the last app dictated into

Open
#691 0 comments 0 reactions 0 assignees View on GitHub
area:dictation enhancement needs-info P2
Dominant language
Swift
Stars
4
Forks
17
Avg merge
3h 32m
Merged PRs (30d)
277

Description

## What happens

Settings → Dictation → "Where your words go" lets the user say what kind of place an app is (a document, a chat, code, a SQL editor…), which changes how Uttrflow formats text for it. The group is built by `SettingsDestinations.places(_:lastApp:)` (`Sources/UttrflowUX/SettingsDestinations.swift:58-68`) from two things only:

- **the last app dictated into** (`lastAppRow`, `:71-102`), read from the newest history record that names an app (`FilePersonalisationStore.lastApp`, `Sources/UttrflowUX/SettingsReset.swift:193-199`); before any dictation the row reads "Nothing yet" with "Dictate somewhere once and it appears here";
- **overrides already made**, each with only "Use the Default" (`overrideRow`, `:115-122`).

So to change how, say, a notes app is treated, the user must dictate into that app, then open Settings before dictating anywhere else, because the next dictation replaces the row. There is no list of apps dictated into, no way to pick an app, and no way to change an existing override except to reset it and repeat the dance. The group does not say what "Work it out" decided for the last app either: the pop-up shows "Work it out" rather than the kind Uttrflow chose.

## Why it matters

Per-app formatting is how someone stops a code editor getting sentence-case prose, or a chat getting full stops. The feature is only reachable through a sequence nobody would guess, and someone who dictates into three apps a day will rarely find the one they want in the single row.

## How to reproduce

Dictate into app A, then app B, then open Settings → Dictation: only B can be changed. Make an override for B, dictate into A, reopen: B's override row has only "Use the Default".

## Acceptance criteria

Product call (hence `needs-info`): a list of recent apps from history, an app picker, or both.

Then:

- The group lists more than the last app (for example every app in kept history, newest first) with the same pop-up on each, including existing overrides.
- "Work it out" shows what it resolves to for that app (for example "Work it out (a chat)").
- Tests in `Tests/UttrflowUXTests/SettingsPresenterTests.swift` (or a `SettingsDestinations` test) cover several apps and an override that is changed rather than reset.

Contributor guide

Open the contributing guide

Research direction

First resolve the product choice between a recent-app list, an app picker, or both. Read SettingsDestinations.places in Sources/UttrflowUX/SettingsDestinations.swift, the app-history access in Sources/UttrflowUX/SettingsReset.swift, and the existing tests in Tests/UttrflowUXTests/SettingsPresenterTests.swift. Done means multiple apps and editable overrides appear, resolved "Work it out" text is shown, and tests cover the listed cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.