Off Grid 0.0.103-beta.3 (beta)
Pre-release
Pre-release
Features
- New Model Loading modes: pick Lean, Balanced, or Aggressive to control how many models stay in memory at once.
- The model selector now shows what is currently loaded and how much RAM it is using, with a per-model eject and an Eject All that frees everything, including voice and transcription sidecars.
- Transcription (STT) and Text to Speech (TTS) now appear in Model Settings.
- Remote models are marked with a cloud badge in the Models sheet so you can tell local from remote at a glance.
- When a vision model is missing its projector file, you now get a Repair action (wrench icon) instead of a bare "not supported" message.
- New "Stay in the loop" card in Settings and links on the About screen to follow @alichherawalla on X and join Slack.
Fixes
- Voice notes and chat-mode dictation now transcribe reliably and drop the text into the input box instead of failing silently.
- The voice-mode mic turns into a Stop button during generation, stops when you leave the screen, and no longer opens a second session on a double tap.
- A background transcription-model download now shows a real download ring, not a mic that looks stuck loading.
- Failed downloads now show up on the badge and in the Download Manager instead of disappearing.
- Download retry on iOS works again, marks the item as queued right away, and queued downloads survive an app kill or restart.
- Retrying an image-model download recovers from a failed extraction instead of erroring out.
- Vision models pair with the correct projector file and refuse a mismatched one, and images can only be sent to a model that actually supports vision.
- Stopping generation keeps the partial reply you already saw, including reasoning, and a stopped turn is no longer mislabeled as an error, an incompatible backend, or "cut off at the token limit."
- A genuine token-limit cutoff now shows a clear cut-off indicator.
- The Thinking toggle now applies to the turn you are on, with no off-by-one delay.
- Changing the model-loading mode now takes effect immediately and ejects the previous residents.
- Image settings (size, guidance, steps) now use the values you set rather than a stale snapshot, and Reset to Defaults also resets image parameters.
- Prompt enhancement now streams its progress and produces a clean prompt instead of leaking the model's thinking into the image request.
- The load spinner now appears on the model row you tapped, and a GPU load that falls back to CPU is now visible instead of a silent downgrade.
- The context-length slider now allows up to the model's real trained maximum.
- On iOS, opening the image viewer no longer wedges the chat input, and switching to the photo picker in voice mode no longer hangs audio.
- Knowledge-base search is only sent when you turn it on, never auto-injected, and a failed index now rolls back cleanly.
- Deleting a project no longer orphans its chats, and a new chat started when the context is full stays listed under its project.
Improvements
- First launch paints faster; download-state recovery no longer blocks the first screen.
- Memory estimates now account for GPU buffers so Aggressive mode does not overcommit and cause a load to fail.
- Android GPU model loads get more time on first run, so a slow kernel compile no longer silently drops you to CPU.
- Thinking support is now detected from the model's own chat template, so reasoning models correctly show the Thinking toggle and their reasoning while streaming.
- A misbehaving tool can no longer flood the model with a huge result and push your conversation out of context.
- Message attachments (a voice note above an image) now stack vertically instead of overlapping.
Build: 1784092396