Skip to content

Off Grid 0.0.103

Latest

Choose a tag to compare

@alichherawalla alichherawalla released this 15 Jul 20:24

This is the big one. It bundles everything from the last stretch of work into one production release, and the theme is control and stability: real control over how the app uses memory, and a hard pass over the things that were breaking — downloads, voice, and stopping a reply.

New

  • Model-loading modes: Lean, Balanced, and Aggressive. You decide how much memory models are allowed to use.
  • The model manager shows what's loaded and how much RAM each model is eating, with an eject button per model and an Eject All that frees everything, voice and transcription included.
  • Transcription (STT) and Text-to-Speech (TTS) now live in Model Settings next to your text models.
  • Turn Thinking on or off for reasoning models right from chat.
  • Remote (cloud) models get a cloud marker so you can tell them apart from on-device ones at a glance.
  • A vision model missing its file now gives you a Repair action, with a real progress bar, instead of a vague "not supported."
  • A "Stay in the loop" card in Settings, plus Follow on X and Join Slack links.

Downloads

  • A download interrupted by a hard app-kill comes back as a failed card you can retry, instead of disappearing.
  • Queued downloads survive an app restart and resume.
  • Failed downloads show up in the badge count and the Download Manager.
  • Retry on a failed image download re-downloads and recovers, even when the file was unrecoverable, and on iOS it keeps the part already on disk instead of starting over.

Voice

  • Voice notes and dictation transcribe reliably, and voice notes are sent as text the model can actually read, never as raw audio.
  • Voice mode no longer reads tool-call text out loud, so spoken replies stay clean, and reasoning shown before a tool runs sticks around instead of disappearing.
  • Live reasoning streams smoothly while you're in voice mode.
  • The speech picker and mic show a real download progress ring instead of a spinning mic.
  • Push-to-talk has a clear inline hint, a visible slide-to-cancel pill, and a scaled mic. The mic stays usable while a model loads, with no ghost recording if you release early.
  • Stopping speech now stops it cleanly, with no mid-sentence wedge.

Generation and reasoning

  • Stopping a reply mid-stream keeps what was already written, reasoning included, and no longer wedges the chat.
  • A stopped reply is no longer mislabeled as a token-limit cutoff or an incompatible backend, and a genuine cutoff now shows a clear indicator.
  • The Thinking toggle applies to the turn you're on. Reasoning support is read from the model's own chat template, and remote model reasoning (LM Studio, Ollama) shows in the Thinking block instead of being dropped.
  • Broken or partly-downloaded models are caught before generation with a plain error telling you what's wrong, instead of failing silently.
  • Prompt enhancement streams as it writes and no longer turns reasoning text into your image prompt.

Models, images, and memory

  • 9B models load and run fast on both iOS and Android.
  • Switching models goes through the memory-aware loader, so a new model loads without running out of RAM, and it waits for the previous model's memory to free first.
  • Load Anyway is offered for any model that's over budget, and it measures real free RAM after clearing space. A hard memory limit that can't be worked around is shown as a hard stop rather than something you can override.
  • The load spinner appears on the row you tapped, and a GPU load that falls back to CPU now tells you it did.
  • Image generation guides you on the GPU speed and quality trade-off before a run, and no longer produces garbage-resolution output.
  • Image settings (steps, guidance, size) use the values you set, and Reset to Defaults resets them too.
  • The context-length slider goes up to each model's real trained maximum.
  • Switching to Lean actually frees resident models now.
  • Aggressive mode accounts for GPU buffers so it doesn't overcommit and fail a load.
  • On Android, GPU loads wait longer on first run so they don't silently drop to CPU and run slow.

Knowledge base and projects

  • Knowledge-base search is only sent when you turn it on, never auto-injected, and a failed index rolls back cleanly.
  • Deleting a project cleans up its chats and knowledge-base tool instead of leaving them dangling, and a new chat started when the context is full stays listed under its project.

iOS

  • The image viewer closes before the Save prompt, and the audio session releases before the photo picker, fixing the input and voice-mode hangs.
  • Message attachments (a voice note above an image) now stack vertically instead of overlapping.

Plus faster first launch, model-load messages that read honestly and don't claim to free memory they didn't, larger tool results capped so a misbehaving tool can't overflow the model's context, and better parsing of tool calls with curly quotes or unquoted keys.