Read: preserve draft and playback when loading text from History or Saved resources
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- macos, swift
- Ambito
- audio-video-rtc, desktop
Direzione di ricerca
Start with the History and Saved resources actions in Sources/LocalVoice/CaptureHistoryView.swift and DemoLibraryView.swift, then read the import decision and replacement logic in AppModel.swift. Check ReadSelectionChecks and add shared-owner plus native entry-point coverage for idle, playing, paused, and generating states. Done means Keep preserves the current reading and playback, while Replace installs the chosen text, stops old playback, and prevents stale generation results from affecting it.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Outcome and priority
P1 functional defect. Choosing Read aloud elsewhere can silently replace the saved draft while the page still displays the previous reading and paused transport.
Native reproduction
Preview 2.3.0, build 20260928054038, clean source 00be555139f87d4557f48fcffc132b8621c251a2; macOS 26.5.1 (25F80), built-in display. Verified through Copy build details in the running app and bundle metadata.
- In Read, enter synthetic passage A (274 characters), Listen with Mac voices, then Pause at about 0:06 of 0:18.
- Open Saved resources, select a different prompt B (22 characters), and click Read aloud.
- No Replace/Keep choice appears. The page still shows highlighted A and Resume at 0:06/0:18, but the character count is 22.
- Stop reveals editable B. A was replaced behind the paused display.
Original draft, voice and rate were restored, and synthetic playback stopped. Screenshots/AX receipts stay private. Audible output and export were not independently checked.
History has the same direct assignment in source; that entry point was not separately exercised.
Source owner and bounds
Library action and History action directly set speechText. speechText persistence does not resolve playback. Read's displayed text can still be playingTrack.text while draft-based controls use B.
Reuse the existing reading-import decision and confirmed replacement. Source inspection shows Save audio checks the full signature before reusing audio, so this is not evidence that cached A is exported as B. It can generate B while the page still shows A; that mismatch belongs to this request.
Chosen behaviour
Every Read import uses one state owner. If current nonempty text differs, show the existing Replace reading / Keep current choice.
Keep current preserves exact draft, player/generation and playback position. Replace stops old playback/generation, invalidates stale audio/progress and any stale selection review, rejects any late completion from the old generation, displays the chosen text immediately, and waits for Listen. Identical text does not restart playback. An empty draft can accept new text directly. Import does not silently send text to an online provider.
Acceptance
- Exercise History and Saved resources with idle nonempty, playing, paused and generation-in-progress Read states.
- Keep preserves text and position; Replace makes text/count/progress/next action agree and leaves playback stopped.
- Replacing during generation cancels the old operation where supported and detaches its results before installing the new draft. Late A completion cannot restore A audio, progress or errors over B. Keep current preserves A generation. Reuse/coordinate #16 for local cancellation rather than relying on invalidateAudio alone.
- Identical imports do not restart; empty imports follow existing empty-text validation.
- A pending macOS Service review cannot remain attached to unrelated imported text.
- Save audio and playback use the content clearly presented after the decision, including the Mac and online provider state models.
- Add meaningful shared-owner checks and native entry-point coverage. Existing ReadSelectionChecks alone do not prove the History/Library wiring.
- Record signed installed retest with Copy build details.
Coordination
New request under #164, related to #134 and #17's safe Service behavior. #161 owns a different audio-source exception path. Coordinate AppModel edits with other recovery work.
- 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