feat: model download & management UX (P13f-1)#153
Merged
Conversation
Make on-device model state legible in Settings → AI: each generation/ transcription picker tile now reads Active / Downloaded / ~MB, downloaded-but- inactive models offer "Delete download" to free space (the model stays selectable and re-downloads on demand), and downloading shows an inline determinate progress indicator via the engines' existing onProgress callback (replacing the opaque snackbar). ModelDownloadService gains installedModelIds() + delete() (reusing the existing isInstalled hash check); a new downloadedModelIdsProvider drives the tiles. The embedder floor is excluded from delete (would break semantic search). Also aligned the one outlier gating copy string. First of three P13f phase-close PRs. https://claude.ai/code/session_013JoYmLCosYt5tQ8qwdbL1T
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
P13f-1 — Model download & management UX
First of three P13f phase-close PRs (split confirmed: f-1 model UX · f-2 translation settings surface · f-3 docs phase-close). Exploration found gating is already consistent (shared
aiSummaryActioncopy; tier-ineligible features hide; the d-3 low-tier path is wired to the "most relevant items" screen) — so the real polish is model download/management legibility.Every-device-appropriate, settings-screen UX. No schema, no deps.
What changed
ModelDownloadService—installedModelIds()(cheap existence scan of the models dir) +delete(modelId)(frees a cached model; no-op if absent). Reuses the existing hash-checkedisInstalled.downloadedModelIdsProvider(new) — drives the tile state; invalidated after download/delete.ai_settings_screen.dartgeneration + transcription model tiles:Active·Downloaded·~XXX MB.downloadModel(onProgress:)(replaces the opaque "Downloading…" snackbar)."Translation isn't available here"→"…on this device") with the established tone.Tests
model_download_service_test—installedModelIds(lists dirs with files, ignores empties; empty when none),delete(removes the dir, no-op when absent, flipsisInstalled).ai_settings_screen_test— a downloaded-inactive model shows "Downloaded" + a delete affordance.dart format+flutter analyzeclean. (downloadedModelIdsProvideris a hand-writtenFutureProvider— no codegen.)Docs
P13-PLAN.md— P13f card expanded to the f-1/f-2/f-3 breakdown; f-1[~]+ as-built.VERIFICATION.md— P13f-1 row.BACKLOG.md— embedder-delete + item-detail transcribe-flow inline progress deferred.Verification
Next: f-2 (translation settings surface), then f-3 (P13 phase close — markers, summary, consolidated cross-feature checklist, and the CLAUDE.md §7 phase-close convention).
https://claude.ai/code/session_013JoYmLCosYt5tQ8qwdbL1T
Generated by Claude Code