Skip to content

Off Grid v0.0.102

Choose a tag to compare

@alichherawalla alichherawalla released this 07 Jul 06:27

What's Changed in v0.0.102

Features

  • feat: UTM-tag outbound links to our own web properties, by surface (7352547)
  • feat(models): prompt "try again" on a 0-token response + override survival floor (8034754)
  • feat(chat): "tap to continue" when the text model was evicted to free RAM (0f55b5c)
  • feat(residency): remember a Load-Anyway override per model for the session (8332aad)
  • feat(chat): remove the GPU/NPU acceleration tip card (a37e4cc)
  • feat(settings): flag NPU (HTP) as experimental with a model-compatibility heads-up (22da88a)
  • feat(chat): surface the silent CPU fallback in the acceleration card (dc50a0d)
  • feat(chat): "go faster on GPU/NPU" tip with enable + get-Q4_0 actions (4c35924)
  • feat(models): NPU/GPU badge + tiered sort in the quant file list & onboarding (2752812)
  • feat(models): NPU/GPU badge + priority for accelerable recommended models (a639ea1)
  • feat(backend): re-enable NPU (Hexagon HTP) + auto-default to it on flagship Qualcomm (060c204)
  • feat(backend): label GPU + auto-default to GPU when the device supports it (a66acbe)
  • feat(residency): aggressive/override = single model, no co-residency (1d176d9)
  • feat(settings-ui): Aggressive Loading toggle in llama + LiteRT advanced panels (6f0cd2f)
  • feat(settings): aggressiveModelLoading setting + single projection to residency (59fd47a)
  • feat(load): OverridableMemoryError + thread override through activeModelService (6924587)
  • feat(residency): load policy + "Load Anyway" override in makeRoomFor (e591ee0)
  • feat(memory): policy-aware memory budget (balanced | aggressive) (4d9decc)

Bug Fixes

  • fix: don't evict the generation model when whisper load fails (only when blocked) (d881f6f)
  • fix: never dispatch an empty voice transcript; surface a clear retry instead (b2bb1f0)
  • fix: resume the turn after Load-Anyway on the llama (GGUF) path, not just litert (2a8b10f)
  • fix: STT honors the residency fit verdict — no more STT+text co-residency (OOM) (372e99e)
  • fix: only show 'tap to continue' bar when a text reply is genuinely pending (965d15f)
  • fix: thread override through native load gate so Load-Anyway/continue bypasses the hard OOM check (7ee26e1)
  • fix(chat): auto-continue the turn after a Load-Anyway model load (278f79f)
  • fix(voice): transcribe before dispatch so voice image requests route correctly (eb30af2)
  • fix(models): align the model-selector section headers (iOS) + drop the remote 🌐 emoji (1d79519)
  • fix(chat): treat an unclosed thinking channel as reasoning, not the message (bca5992)
  • fix(models): replace the folder emoji in the image "Local Models" header with a vector icon (3aa8f5f)
  • fix(chat): stop the false "settings changed" reload banner after accelerated loads (19c69c7)
  • fix(chat): acceleration tip is GPU-first, never mis-recommends NPU (c54fcfe)
  • fix(generation): one source of truth for the effective KV cache type (a0fb183)
  • fix(models): resolve a downloaded quant by its file, not the composite id (ebb7523)
  • fix(chat): acceleration tip branches on the active model's quant (enable/switch/download) (e4b695e)
  • fix(models): cumulative bytes + "N downloads" on the model list card (6c0d135)
  • fix(model-card): show NPU/GPU badge on quant-file cards (standard, non-compact) (fc4e186)
  • fix(review): address PR #468 reviewer findings (582b891)
  • fix(npu): single source of truth for the HTP flag — NPU now shows in Chat Settings too (abf49f1)
  • fix(load): inline "Load Anyway" on ALL model-load entry points (shared seam) (b7d7407)
  • fix(model-card): render model description commonly, drop special-case highlight (8663d0a)
  • fix(model-card): full-width progress bar + left/right caption row (de-cramp) (a29e52b)
  • fix(onboarding): feed bytes to the shared ModelCard (was % only) (d468c6f)
  • fix(test): repair App.test.tsx (TDZ mock hoisting + stale restore assertion) (da0a6b5)
  • fix(stt): queued STT downloads read from the canonical store, show "Queued" (b61b926)
  • fix(model-card): shared progress shows "Queued" + bytes for every card (591d59e)
  • fix(review): address Qodo findings on the aggressive-load PR (a4ce701)
  • fix(chat): show a loading indicator on the no-model screen while a model loads (d613ac6)
  • fix(chat): "Load Anyway" now overrides the residency gate, not just the pre-check (8a906ea)

Refactors

  • refactor: unify text-generation advanced settings into one shared component (c2df3e0)
  • refactor(models): one shared ModelRow so chat + home pickers stop diverging (13a44e0)
  • refactor: single canonical formatBytes (collapse 3 drifted copies) (9421b46)
  • refactor: single source of truth for image-backend labels (0bb6662)

Chores

  • chore: bump version to 0.0.102 [skip ci] (b226246)
  • chore: bump pro submodule to include #17 (TTS warm-no-evict) + update contract test (149f860)
  • chore(pro): bump submodule to main (kokoro download-state fixes merged via #14) (3695183)
  • chore: silence max-params on planEviction (4 clear positional inputs) (144d8a4)
  • chore: remove orphaned backendResolver/backendSync tests (2fc5bd2)
  • chore(dead-code): remove verified-dead code (duplicate type + unwired whisper URL download) (428e87e)

Tests

  • test: cover the recommended-list NPU/GPU prioritization resort (b2326fd)
  • test: assert UTM-tagged outbound URLs via withUtm (contract update) (a0554cb)
  • test: update batch6 lifecycle asserts for the loadModel override arg (daea37f)
  • test(audio): clarify the TTS sequencing test is a contract check (34755fa)
  • test(audio): voice-turn sequencing evicts the text model for TTS + bump pro pointer (31963c5)
  • test(integration): extreme-mode single-model switching (text/image round-trip) (1df62cd)
  • test: mock loadPolicySync in App.test (combined-branch startup) (d4c6b67)

Documentation

  • docs: note the concurrent-load 'error' case in WhisperLoadResult (review nit) (e8ef71c)
  • docs: mandate merge-commit merges, never squash (48bd5ca)
  • docs: hardware acceleration strategy reference (all accelerators, all modalities) (2f0684f)
  • docs: best-backend-per-device plan (capability-as-data + resolver) (4463023)
  • docs: dead-code recon register (GAPS_BACKLOG) (77f2745)
  • docs: add multi-agent operating model + design-philosophy pointer to CLAUDE.md (bfc7afa)

Other

  • revert(backend): remove the auto-default backend sync (not requested yet) (0af6e63)
  • Revert "Merge pull request #458 from off-grid-ai/fix/remote-tool-gate-capability" (47bcdb5)
  • Revert "Merge pull request #459 from off-grid-ai/fix/litert-text-unload" (1a87668)
  • Revert "Merge pull request #460 from off-grid-ai/fix/image-cancel-during-enhancing" (c44f733)
  • Revert "Merge pull request #461 from off-grid-ai/fix/document-filename-decode" (920b478)
  • Revert "Merge pull request #462 from off-grid-ai/fix/extract-stale-download-predicate" (6b3ecc3)

Full Changelog: backup-main-pre-revert-2026-07-04...v0.0.102