Skip to content

feat(packaging): unbundle whisper.cpp + Kokoro to on-demand verified downloads (PRD 10.2.4) - #764

Merged
accesswatch merged 2 commits into
mainfrom
feature/unbundle-engines
Jun 29, 2026
Merged

feat(packaging): unbundle whisper.cpp + Kokoro to on-demand verified downloads (PRD 10.2.4)#764
accesswatch merged 2 commits into
mainfrom
feature/unbundle-engines

Conversation

@accesswatch

Copy link
Copy Markdown
Contributor

Supersedes #761 (rebased onto main after #760's squash-merge; same content, conflict-free).

Unbundles both the offline speech engine (whisper.cpp, ~8 MB) and the Kokoro neural voices (~120 MB) from the installer — they download on demand from QUILL's pinned, SHA-256-verified release assets (assets-v1). The dictation pre-flight offers the engine download in-flow; Kokoro downloads on first voice use; both offer-to-replace and are version-aware. Upgraders keep their existing copies automatically (Inno never removes them; [InstallDelete] untouched; runtime resolution still checks {app}). Build/iss updated, iss regenerated, tests + docs everywhere, GATE-9/GATE-11 green. Builds on #760 (release_assets).

🤖 Generated with Claude Code

accesswatch and others added 2 commits June 29, 2026 10:45
…d (PRD 10.2.4)

Proof-of-concept unbundle that actually shrinks the installer ~120 MB, taken
safely. The Kokoro neural voices are no longer staged into the installer; they
download on demand from QUILL's pinned, SHA-256-verified release asset
(kokoro-models.zip on assets-v1) to %APPDATA%/kokoro-models, which the runtime
prefers.

Upgraders are protected automatically (verified): Inno only overlays new [Files]
and never removes old ones, [InstallDelete] does not touch kokoro-models, and
runtime resolution still checks {app}/kokoro-models -- so a user upgrading from a
release that bundled Kokoro keeps their copy with nothing to re-download. Kokoro is
"safe to unbundle": other read-aloud voices (DECtalk/eSpeak/Piper/SAPI) work offline
meanwhile.

- release_assets.py: add the pinned "kokoro" entry; add should_cancel/DownloadCancelled
  (cancel handled in-module, not via a swallowed progress-raise) and a `version` field
  (groundwork for newer-version notifications); the whisper handler uses should_cancel too.
- _download_kokoro_models: route through release_assets; SMART re-download -- if the
  voices are already present it offers to replace rather than silently re-fetching
  ~120 MB, and declining keeps the existing copy.
- build: stop staging Kokoro by default (still possible via --kokoro-dir for portable);
  remove the speechkokoro component + kokoro-models [Files] from the installer; iss
  regenerated; iss test updated to assert absence.
- Docs everywhere (CHANGELOG, release notes, user guide, PRD 5.25c, roadmap).
- Builds on #760 (release_assets). GATE-9/GATE-11 green; e2e verified against the
  published asset (downloads, verifies, unpacks the 88 MB model + 26 MB voices).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
…oad (PRD 10.2.4)

Per decision, fully unbundle the offline speech engine like Kokoro. whisper.cpp is
no longer staged into the installer; fresh installs download the ~8 MB engine on
demand from QUILL's pinned, SHA-256-verified release asset (assets-v1) to
%APPDATA%/speech-engine, which the runtime searches.

Protected at point of use (it is the default offline engine): the dictation
pre-flight now OFFERS to download it ("Download it now? ~8 MB, verified") instead of
just pointing at a menu, so a fresh install is never stranded. The provider's
not-installed guidance points at Tools > Speech > Download Offline Speech Engine.

Upgraders keep their existing {app}/tools/speech/whispercpp copy automatically
(Inno never removes it; [InstallDelete] does not touch it; resolver still checks it).

- build: stop auto-staging whisper (still stageable via --whisper-dir); remove the
  speechwhisper component + whispercpp [Files]; iss regenerated.
- tests updated (bundledTools/speechAssets/iss assertions assert absence).
- docs updated everywhere (CHANGELOG, release notes, user guide, PRD 5.25c).
- GATE-9/GATE-11 green; main_frame_dictation_hotkeys rebaselined (+12 for the offer).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
@accesswatch
accesswatch requested a review from kellylford as a code owner June 29, 2026 17:47
@accesswatch
accesswatch merged commit 5eea401 into main Jun 29, 2026
13 of 14 checks passed
@accesswatch
accesswatch deleted the feature/unbundle-engines branch June 29, 2026 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant