Foundation H: retire Read while preserving text and shared audio foundations

Aperta
#284 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
25/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
swift
Ambito
desktop

Direzione di ricerca

Read the canonical brief at docs/mac-foundation.md and the decision in PR #278 first. Then trace the named entry points, especially AppModel, Core.swift, VoicePreferences/main.swift, and scripts/release/preview.py; follow actual callers rather than filename matches. Run the affected tests and packaged-bundle checks. Done means Read is removed, dormant state and exact legacy text are preserved, and the listed shared audio, Dictate, and prompt-insertion behaviors still work.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Retire Read, Workbench's owned text-to-speech capability, from the focused Mac product. This is the decided result of the adversarial review in PR #278, not another Read refinement or an assertion that all its existing code is broken. The ordinary listening job has a capable native Mac route; a distinct recurring Workbench listening/export job has not been established. Package H remains under #7.

Removal boundary

  • Read is route speak, toolbar .read, shortcut id 6. Remove its page/sidebar, panel/toolbar/current-work entries, Window menu, shortcut catalogue and registration of previously enabled keys. Safely translate old toolbar modes/routes. Do not renumber other shortcuts.
  • Remove contextual Read aloud from History, Library and assistant results. Keep visual answer inspection, labeled Review result, Copy, export and original records.
  • Remove selected-text Services registration/admission in both edition bundles. Update scripts/release/preview.py and its tests, which currently require that service. Keep general Services, signing and identity checks.
  • Remove TTS provider/voice/model-download setup and public promises. Stop startup/activation voice enumeration, TTS Keychain status probing, catalogue requests, neural discovery/load/download, preview, render/export and production developer-command admission. Stale callbacks/Services/preferences cannot restart it.
  • No Advanced Read switch, contextual-only TTS, replacement Listen tool, permanent legacy page or automatic invocation of macOS speech. Brief help may point to Apple's native Read & Speak and explain its differing selection behavior.

Preserve narrowly

  • Core.SavedState stores reading text/voice/rate alongside Dictate draft/original text, History, corrections and unresolved delivery. Keep compatible decoding and round-trip dormant fields.
  • For a nonempty old speechText, preserve the exact Unicode text in one ordinary Library-linked UTF-8 file, with idempotent identity, atomic writes and file/reference readback. Keep the original field. Do not truncate, normalize, overwrite Dictate, fabricate a transcript or duplicate the item on relaunch. A failed migration preserves source with a contextual Library retry; empty/fresh profiles get no legacy UI.
  • Read permits one million characters; Library prompts only 50,000. Use a file resource, not a prompt or new reading archive.
  • Keep explicitly exported audio files untouched. Generated audio is transient in inspected source; do not scan arbitrary folders or preserve every temp file. Use existing update/shutdown admission for owned generation/export and reject late completions.
  • Inert TTS preferences/keys/caches may stay without a management panel. Do not read/send/delete credentials as incidental cleanup. Cache deletion is optional and only the verified inactive Pocket TTS subtree, never the shared FluidAudio parent or system voices.

Shared foundations that stay

ReadbackModel/ReadbackView, route readback and shortcut id 5 are Snap & Talk, not Read. Keep them, Dictate/Meetings recognition, Parakeet/FluidAudio, original meeting/narration playback, VoiceOver, clipboard/text delivery and prompt insertion. The existing update-busy projection groups prompt insertion with reading; preserve the surviving guard. No broad audio/plugin-framework rewrite.

Starting points: AppModel, Core.swift, ReadSelectionService, WorkbenchHome/Views, WorkbenchControlTool/toolbar projections, HistorySelectionControls, DemoLibraryView, VoicePreferences/main.swift, ReadingProviderView/NeuralVoiceViews, scripts/Info.plist, scripts/release/preview.py. Trace actual callers, not filename matches.

Acceptance X3

Fresh and upgraded signed bundles have no Read action, provider work, model download or Service admission. Upgrade a fixture with enabled id 6, old toolbar mode, selected online/neural provider and a large Unicode draft; the exact text is in one normal Library file through two relaunches. Inject file/Library save failure and verify no false completion or source loss. Unrelated original text/history/recovery and exported audio remain intact. Dictate, Meetings original playback, Snap & Talk id 5, VoiceOver and prompt-insertion update deferral still work. Check actual packaged Service metadata, negative dispatch and late callbacks as well as registry/gallery. Replace obsolete feature-success tests with removal/preservation tests in the same bounded change.

Hold Read-only #267 from the refinement batch; preserve its history and independently useful shared fixes. Reconcile #17/#161/#173 as superseded Read acceptance or preservation work, never as fixed by documentation. Coordinate AppModel, Library, main and toolbar edits with #279/#280/#281; one writer per shared file. This can release independently once its affected acceptance passes and does not wait for Present hardware.

Decision and evidence: spec PR #278, canonical brief, adversarial research.

Lingua principale
Swift
Stelle
0
Fork
1
Merge medio
14h 21m
PR unite (30g)
208

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.