This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+7 more
Summary
AI summaryIn‑app model downloads now use internal storage with O_DIRECT, enabling direct I/O and resumable transfers.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
In-app downloads now use O_DIRECT-capable internal storage, enabling direct I/O for large models. In-app downloads now use O_DIRECT-capable internal storage, enabling direct I/O for large models. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Feature | Medium |
Download resume supports HTTP Range requests, continuing from last offset without restarting transfer. Download resume supports HTTP Range requests, continuing from last offset without restarting transfer. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Feature | Medium |
Downloads no longer create a temporary second copy, requiring only model‑size free space. Downloads no longer create a temporary second copy, requiring only model‑size free space. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Feature | Medium |
Rename-on-complete ensures half‑finished downloads are not listed as runnable. Rename-on-complete ensures half‑finished downloads are not listed as runnable. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Bugfix | Medium |
UI download progress shows MiB counter on its own line, preventing ellipsis of long model names. UI download progress shows MiB counter on its own line, preventing ellipsis of long model names. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Bugfix | Medium |
Cancel button no longer races with ongoing download, avoiding inconsistent states. Cancel button no longer races with ongoing download, avoiding inconsistent states. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Bugfix | Medium |
Download progress bar clears when no download is in flight. Download progress bar clears when no download is in flight. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Bugfix | Medium |
Fixes issue #67 where in‑app downloads lost streaming advantage due to buffered I/O fallback. Fixes issue #67 where in‑app downloads lost streaming advantage due to buffered I/O fallback. Source: llm_adapter@2026-07-19 Confidence: high |
— |
| Bugfix | Low |
Known limitation: Android 14 may block background WorkManager restarts after app kill; download resumes only on app reopen. Known limitation: Android 14 may block background WorkManager restarts after app kill; download resumes only on app reopen. Source: llm_adapter@2026-07-19 Confidence: low |
— |
Full changelog
In-app downloads now use O_DIRECT-capable internal storage
Downloading a model in the app — from the catalog or a pasted URL — used to write to the app's external files dir, an emulated/FUSE volume where O_DIRECT silently returns wrong data. The engine caught it and fell back to buffered I/O, so every in-app-downloaded model lost the streaming advantage the engine exists for (measured on device: o_direct=0). The system DownloadManager cannot write to internal storage by design, so it is replaced.
DownloadWorker is a foreground WorkManager transfer that streams the gguf over HTTP straight into filesDir/models (real f2fs, where O_DIRECT works — the same dir the file picker imports to). Validated end-to-end on device (OnePlus 15R): a ~20 GB model downloaded in-app now loads in direct (O_DIRECT) mode.
What changed
- Downloads land on internal storage → real
O_DIRECT, not buffered. Fixes #67. - Resume: an interrupted
.partresumes from its offset with aRangerequest, following Hugging Face's resolve → CDN redirect manually so the header survives (instead of restarting a multi-GB transfer from zero). - No temporary second copy: a download needs free space equal to the model size, not double.
- Rename-on-complete, so a half-finished download is never listed as runnable.
- UI: the MiB counter sits on its own line so a long model name can't ellipsize it away; the bar clears when nothing is in flight; Cancel no longer races back to "downloading".
This mirrors the mechanism in Google's own AI Edge Gallery (HttpURLConnection + Range + WorkManager foreground worker).
Known limitation (#69): if the OS kills the app while it is in the background mid-download, Android 14 blocks WorkManager from restarting the foreground transfer until you reopen the app. The .part is preserved and resumes when you re-trigger the download — no bytes are lost, but it does not continue on its own.
Install: sideload app-dev-debug.apk (dev flavor; keeps all-files access so it can also read adb-pushed models). Models already downloaded by older builds keep working.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About BigMoeOnEdge
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]