Live dictation: a stopped writer leaves the words copied, and a Cancel that leaves words explains itself
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
Direzione di ricerca
Start in LiveDictationDelivery.swift at finish() (around lines 101-115) and the invalidation paths at lines 84 and 185-197, then read DeliveryOutcome.swift for the .pasteUnconfirmed and .focusChanged cases. Done means scripts/test-live-dictation.py shows that a moved or invalidated owner copies the text, and scripts/test-capture-persistence.py shows that all three cancel paths set captureFailure and attention. A native ⌥V check is still owed before the issue closes.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Outcome:
- If the live in-field writer stops early, the words are copied and the receipt says so honestly.
- If Cancel cannot undo words already written into another app, the toolbar, the panel and the Dictate page say so, with Retry and Dismiss.
Evidence (main edc15df)
- The live owner is invalidated by a key press or click in another app (LiveDictationDelivery.swift:185-188), by app activation (:190-193) or by a failed 60 ms read (:84, :197).
finish()(:101-115) copies only when!restoreClipboard.restoreClipboarddefaults to true and has no UI (VoicePreferences.swift:89).- The result is
.pasteUnconfirmedeven when nothing was written (DeliveryOutcome.swift:40-47, 82-88). The words end up neither inserted nor copied. - This contradicts docs/mac-foundation.md:56. The ⌘V path copies on every failure (TextDelivery.swift:284-330).
- A non-nil
cancelLiveDictation()problem only setsstatus(AppModel.swift:384, 412-413, 442-444, 521, 534-536, 546-548, 710-711), and no view readsstatus. - This contradicts docs/live-voice.md:62.
Change
finish()failure:- Always copy the dictated text.
- If nothing was written, return a copied
.focusChangedoutcome (“Copied · … Paste with ⌘V”). - If something was written, keep
.pasteUnconfirmedand say the text is copied. - Release the recovery audio when nothing was attempted.
- No automatic ⌘V fallback. That was decided against at live-voice.md:62 and LiveDictationDeliveryChecks.swift:124/:127.
- Add a private
reportLiveTextKept(_:)that setscaptureFailure,statusand.dictateattention before the phase goes idle. Shorten the message.
Acceptance
scripts/test-live-dictation.py:- a moved owner copies with restore on;
- an invalidated owner copies with
.focusChangedand no AX writes; - a nil copy keeps the History wording.
scripts/test-capture-persistence.py:- a never-attempted owner leaves no unresolved entry and no recovery;
- all three cancel paths set
captureFailureand attention; - a nil problem stays quiet;
- the helper is added to the extract list.
- A native ⌥V check is still owed.
Value before scope
- Outcome: the daily path never strands words. Evidence: the traced paths above.
- Simpler route: copy, which the ⌘V path already does.
- Owner: LiveDictationDelivery and AppModel's existing result owners.
- Complexity: no new controls.
- Verified by: the two harnesses.
Grammar: Quality.
Refs #134, Refs #165
Build-ready record from the overnight lead session of 15 Oct 2026, verified against main edc15df by an independent skeptic per item. Implementation follows on a claude/* branch; this issue closes only after native acceptance.
- Lingua principale
- Swift
- Stelle
- 0
- Fork
- 1
- Merge medio
- 8h 16m
- PR unite (30g)
- 210
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Ship-Work/workbench
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue help wanted
Difficoltà 2/5 Mezza giornata Idoneità per principianti 74/100
Ship-Work/workbench#29 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Ship-Work/workbench
Issue simili
-
bug core p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
RunanywhereAI/runanywhere-sdks#1083 ·
I maintainer di solito rispondono entro 5 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
nightscout/nightguard#368 ·
-
Duplicate CFBundleIdentifier in copied _Testing_* overlay frameworks breaks simulator installAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
johnno1962/InjectionNext#175 · 2 commenti ·
-
builtin-port enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
cmlarsen/writemorebetter#235 ·
I maintainer di solito rispondono entro 1 giorno
-
bug-pending-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
NativeScript/NativeScript#11525 ·
I maintainer di solito rispondono entro 1 giorno