Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Live dictation: a stopped writer leaves the words copied, and a Cancel that leaves words explains itself

Aperta
#328 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@EthDawg ci sta già lavorando.

Dal 14/10/2026.

  • #347 di @EthDawg — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
38/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python, swift
Ambito
desktop

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

bug

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. restoreClipboard defaults to true and has no UI (VoicePreferences.swift:89).
  • The result is .pasteUnconfirmed even 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 sets status (AppModel.swift:384, 412-413, 442-444, 521, 534-536, 546-548, 710-711), and no view reads status.
  • This contradicts docs/live-voice.md:62.
Change
  1. finish() failure:
    • Always copy the dictated text.
    • If nothing was written, return a copied .focusChanged outcome (“Copied · … Paste with ⌘V”).
    • If something was written, keep .pasteUnconfirmed and 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.
  2. Add a private reportLiveTextKept(_:) that sets captureFailure, status and .dictate attention 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 .focusChanged and 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 captureFailure and attention;
    • a nil problem stays quiet;
    • the helper is added to the extract list.
  • A native ⌥V check is still owed.
Value before scope
  1. Outcome: the daily path never strands words. Evidence: the traced paths above.
  2. Simpler route: copy, which the ⌘V path already does.
  3. Owner: LiveDictationDelivery and AppModel's existing result owners.
  4. Complexity: no new controls.
  5. 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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Ship-Work/workbench

Tutte le issue di Ship-Work/workbench

Issue simili

Altre issue su Swift

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.