Skip to content

Releases: jegly/Box

Box v1.0.8

11 May 01:04
524e79f

Choose a tag to compare

Box

Box v1.0.8

A huge thank you to everyone who has reported issues and taken the time to share feedback — your reports directly drive
improvements in Box and are genuinely appreciated. Keep them coming.

_**Two variants available:**_

Box_v1.0.8_Main_Signed_Release.apk — stock Android 15 +
Box_v1.0.8_custom-rom-support_Signed_Release.apk — GrapheneOS / custom ROMs without Google Play Services

New Features

  • Saved System Prompts — Save, name, and reuse system prompts directly in the model settings dialog. Tap a saved prompt to
    apply it instantly; swipe or long-press to delete.
  • Restore Defaults — New button in model settings resets all sliders (temperature, top-K, top-P, max tokens) back to their
    default values in one tap.

Fixes

  • System prompt now actually applied — Changing the system prompt mid-session correctly resets the conversation with the new
    instruction. Previously the prompt was saved in the UI but not passed to the model.
  • Markdown rendering in math responses — Plain-text segments inside chat bubbles now render through the Markdown pipeline,
    fixing broken formatting in responses that mix text and LaTeX math.
  • Randomised inference seed — Each conversation now uses a unique random seed, producing more varied outputs across sessions
    when using CPU backend.

UI Polish

  • AI chat bubbles now use the full available width.
  • Removed "API Documentation", "Example code", and "Learn more" links from the model list — they pointed to upstream Google
    resources not relevant to Box.
  • Removed the stray ? icon that appeared next to models that hadn't been downloaded yet.
  • LaTeX headers fixed.

Known Issue Upstream

  • GPU backend produces identical outputs — On devices where the GPU sampler is unavailable (affects Pixel 6a and others), the
    LiteRT LM engine internally restricts token candidates to 1 before sampling, forcing greedy decoding regardless of
    temperature/top-K settings. This is a limitation in LiteRT LM v0.11.0 with no app-level workaround. Switch to CPU in model
    settings for varied outputs. Reported upstream as issue #817.
Box3

Box 1.0.7

10 May 12:58
2e9e994

Choose a tag to compare

box-header01

Box v1.0.7

Two variants available:

Box_v1.0.7_Main_Signed_Release.apk — stock Android 15 +
Box_v1.0.7_custom-rom-support_Signed_Release.apk — GrapheneOS / custom ROMs without Google Play Services

New

Catppuccin Accent
Settings now has a Catppuccin Accent option. When enabled, the app's accent colors (buttons, links, chat bubbles, tabs) switch
to the Catppuccin palette — Mocha in dark mode, Latte in light mode. 14 accent colors to pick from: Mauve, Blue, Sapphire, Sky,
Teal, Green, Lavender, Pink, Peach, Rosewater, Flamingo, Maroon, Red, Yellow. Wallpaper-derived surfaces are preserved so it
still feels like Material You.

LaTeX

Functional.


Bug Fixes

New Chat (+) button opened the wrong model
If you had only downloaded E4B, tapping + would open the E2B download panel instead of starting a chat with E4B. Now picks the
first model you actually have downloaded.

New Chat (+) didn't create a new conversation
After tapping + the next message was silently appended to the previous conversation in History instead of starting a fresh
one. Fixed — + now always begins a new conversation.

Switching models crashed the app with two models downloaded
Switching between two downloaded LiteRT models caused both to load on GPU simultaneously → out of memory → process crash. Root
cause: a Compose state bug where remember { "" } on a plain String didn't persist across recompositions, causing the old model
to be re-selected ~58ms into the new model's init. Fixed with mutableStateOf.

Switching models lost conversation history for the new model
After a model switch, the new model's messages were saved under the previous model's conversation ID, corrupting history. Fixed
— stale conversation ID is now cleared on model switch.

Voice-to-voice: turning off mic or speaker didn't stop speech immediately
Tapping the mic toggle or speaker icon to OFF while the AI was talking had no effect on already-queued TTS sentences — the AI
kept talking. Both toggles now call stop immediately.

Same Whisper models showed as separate downloads in Voice Input and Audio Scribe
Whisper Large-v3-Turbo downloaded in Voice Input would show as "not downloaded" in Audio Scribe (and vice versa) due to a name
mismatch. Both tabs now share the same model objects — one download covers both.

Whisper model stuck in permanent ERROR state after a bad download
A corrupted or truncated Whisper download left the model stuck showing ERROR with no way to retry. Now automatically resets to
"not downloaded" if the file is missing or undersized, so you can tap Download again.

LaTeX ∇ (nabla) rendered as abla or nabla in AI Chat math
The gradient operator consistently broke in math responses. Fixed — the LLM tokenizer's newline corruption of \nabla is now
repaired before any math parsing runs.

HTTP connection leaked in the update checker
The update checker opened an HTTP connection but never closed it on early exits. Fixed with a try-finally block.

Audio Scribe leaked audio codec resources on errors
MediaCodec and MediaExtractor were not released if an exception occurred during audio processing. Fixed.

Image generation OOM was silently swallowed
OutOfMemoryError during Stable Diffusion generation was caught by catch (Exception) and discarded, leaving the UI stuck with no
feedback. Now surfaces a user-readable "Out of memory — try a smaller image size" message.

Security

SQLCipher database key was stored in plain SharedPreferences
When biometric database encryption was turned off, the SQLCipher passphrase was Base64-encoded and written to unprotected
SharedPreferences. Migrated to EncryptedSharedPreferences backed by Android Keystore AES-256-GCM. Existing keys are
automatically migrated on first launch — no data loss.

PII was being written to logcat
A security audit found several places where user data was logged at debug level — readable by any USB-connected computer or
rooted device:

  • Email content (to, subject, body), SMS messages, phone numbers, calendar events, alarm/timer details, and locations
  • User prompts logged in MobileActions
  • AI prompts and responses logged in TinyGarden
  • All intent extras (including values) dumped on every app launch and deep link
  • Full FCM message body and deep link URL logged

All wrapped in BuildConfig.DEBUG or removed. Nothing is logged in release builds.

Hardened Manifest

Upstream remaining firebase logging stripped and removed.

Box v1.0.6

08 May 11:13
30d0d30

Choose a tag to compare

04-phosphor

### Box v1.0.6

New: On-Device Image Generation

First stable release of on-device image generation. Previous builds had crashes and instability in the Stable Diffusion
pipeline — v1.0.6 resolves these and is the first version we'd consider ready for daily use.

- Image generation time dropped from ~27 minutes to under 4 minutes — earlier builds required 20 steps with base SD 1.5;       

LCM-SSD-1B (recommended) produces quality results in just 4 steps thanks to consistency distillation, combined with the CPU
optimisations below

  • Added Image Gen — generate images from text prompts fully on-device using Stable Diffusion
  • 6 models available to download, powered by stable-diffusion.cpp:
    • LCM-SSD-1B Q4_K (~2.2 GB) — recommended, fast SDXL-class results in 4 steps
    • SDXL-Lightning 4-step Q4_0 (~2.8 GB) — ByteDance distillation, high quality in 4 steps
    • SDXL-Turbo Q4_0 (~4.2 GB) — vivid results in 1–4 steps
    • SDXL Base Q4_0 (~3.9 GB) — full SDXL at native 1024² resolution
    • SD 1.5 Q4_0 (~2.1 GB) — classic reliable all-rounder
    • SD 1.5 Q8_0 (~4.0 GB) — higher precision SD 1.5
  • Adjustable steps, CFG scale, negative prompt, and image size (256² up to 1024²)
  • Save generated images directly to your gallery
  • Import your own GGUF model files from device storage
  • Fixed crash (SIGSEGV) on second generation — was a use-after-free in the sd.cpp context; context is now reloaded before each
    generation

### Performance

  • Enabled ARM dotprod + FP16 CPU kernels for all ggml-based inference (Stable Diffusion, SmolLM,llama.cpp) — these were silently disabled
    at build time due to cross-compilation defaults
  • Upgraded ggml release builds from -O2 to -O3 optimisation
  • Enabled flash attention in Stable Diffusion — reduces memory pressure during sampling
  • Compiled in experimental Vulkan GPU backend for Stable Diffusion (auto-falls back to CPU if unsupported)

Voice Input / Audio Scribe

  • Removed Whisper Tiny — was hanging on transcription; Whisper Base is now the smallest option

General

  • Model cards now show descriptions when expanded — tap any model card to see details and recommended settings
  • All Image Gen model cards include plain-English descriptions and recommended CFG/step settings

Two variants available:

  • Box_v1.0.6_Main_Signed_Release.apk — stock Android 15 +
  • Box_v1.0.6_custom-rom-support_Signed_Release.apk — GrapheneOS / custom ROMs without Google Play Services

APK size reduced from ~890 MB to ~550 MB — native libraries are now compiled for arm64 only, dropping unused x86 and 32-bit
ARM builds. All devices that can run Box (Android 15+) are arm64.

Box 1.0.5

07 May 07:47
d482b4d

Choose a tag to compare

Cyber

Main — v1.0.5

New Models

  • Gemma 4 E2B & E4B model files refreshed — updated commit hashes from HuggingFace.

New Features

Audio Scribe
Record audio directly in the app or import a WAV file. Whisper transcribes it on-device, optional speaker diarization labels each speaker, then
the LLM can summarise, analyse, or answer questions about the content. Entirely offline.

Ask Audio (multimodal chat)
Send a recorded audio clip or WAV file directly into AI Chat with Gemma 4 E2B / E4B. The model hears and responds to the content.

Text-to-Speech screen
Dedicated TTS tab for on-device voice synthesis using system TTS or an imported Piper/ONNX model.

Real-time voice reply updated
Enable in Settings to have the AI speak its reply sentence by sentence as it generates, rather than waiting for the full response. Works with
Android system TTS or an imported Piper model.

TTS voice picker
Settings → TTS Voice — choose which installed offline system voice is used for AI replies.

AI Chat shortcut
Long-press the Box icon → AI Chat. Navigates directly into chat even from a cold start.

In-app update checker
Settings → Check for updates. Fetches the latest release from GitHub and shows a direct download button if a newer version is available.

Model import from list
Whisper and TTS models can now be imported directly from the model list screen without needing a model already downloaded.

Performance

  • Speculative decoding / MTP working — capability is now checked against the model file itself, not the allowlist. Gemma 4 E2B reaches 66–91
    tok/s with GPU + speculative decoding on real conversation text vs ~52 tok/s plain GPU (Galaxy S26 Ultra).
  • Sustained Performance Mode — CPU/GPU clocks locked during inference. No more thermal throttle mid-conversation.
  • Benchmark speculative decoding toggle — benchmark screen now exposes the toggle for models that support it.

Bug Fixes

  • Fixed app shortcut navigating to home screen instead of chat on cold start.

### custom-rom-support — v1.0.5

All changes from Main above, plus:

New Models

Same model set as Main. Accelerator order includes NPU (gpu,npu,cpu) for Tensor devices on supported ROMs.

Performance

  • Speculative decoding and Performance Mode as above.
  • GPU is the recommended accelerator on Snapdragon. NPU path on Snapdragon is untested on custom ROMs — falls back to GPU automatically.

custom-rom-support specific

  • Piper TTS (Amy) available as a built-in download in the TTS tab — no third-party TTS app needed on de-Googled ROMs.
  • No Google Play Services dependency — AICore/Firebase paths are bypassed.
  • TTS voice reply works out of the box with the bundled Piper engine.

Notes

This build is for GrapheneOS, LineageOS, CalyxOS, and other custom ROMs without Google Play Services. If you are on stock Android (Pixel,
Samsung, etc.) use the Main APK. If you previously installed Main, uninstall it before switching — the package ID is the same and you will
get a signature conflict.

Box v1.0.4

01 May 13:59
933fbc0

Choose a tag to compare

05-arctic

● main branch — v1.0.4

What's new in v1.0.4

Bug fixes

  • Fixed missing GPU option on Pixel 10 Pro Fold — GPU is now available as an accelerator alongside CPU (NPU/TPU works on custom OS roms)
Box2

Box 1.0.3

28 Apr 07:26
a43e30a

Choose a tag to compare

06-sunset

v1.0.3 — Stock Android

Bug Fixes

  • Images now persist across sessions — Photos sent in a conversation are saved to local storage and correctly restored when returning to
    or reopening a conversation. Previously, images would disappear after navigating away or restarting the app.
box_banner_square

custom-rom-support v1.0.4

01 May 14:04
b742aae

Choose a tag to compare

02-solar-flare

custom-rom-support — v1.0.4

What's new in v1.0.4

Bug fixes

  • Fixed missing GPU option on some devices. — GPU is now available as an accelerator alongside TPU and CPU
  • Fixed accelerator setting resetting to GPU after app is fully closed — your chosen accelerator (TPU, GPU, or CPU) now persists across app restarts
Box2

custom-rom-support-v1.0.3

28 Apr 08:26
b742aae

Choose a tag to compare

07-mint

v1.0.3 — Non-Stock Android (GrapheneOS / LineageOS / CalyxOS)

Bug Fixes

1 - Images now persist across sessions — Photos sent in a conversation are saved to local storage and correctly restored when returning to
or reopening a conversation. Previously, images would disappear after navigating away or restarting the app.
2 - Benchmark no longer crashes when NPU is unavailable — Running the benchmark on devices without NPU/AICore support (e.g. older Tensor
chips on GrapheneOS/LineageOS no longer causes a crash. The backend now correctly falls back to CPU in this case.
3 - Accelerator setting no longer resets after navigation — Changing the accelerator (CPU / GPU / NPU) in model config is now saved
correctly. Previously the setting would silently revert to its default value after navigating away and returning.

Huge thanks to aryoda for pointing out these bugs !

box_banner_square

Custom Rom Support v1.0.2

26 Apr 04:48
b742aae

Choose a tag to compare

I have now created a separate branch called custom-rom-support, along with a corresponding release section specifically for users on third-party operating systems.
If you are using a custom ROM, please use the custom-rom-support
branch/release instead of the main branch. This branch supports TPU/NPU
acceleration on Tensor devices; however, Snapdragon acceleration
remains untested.
Please expect broken features if you are using a custom ROM and running the current release or branch from main. A separate APK and branch (custom-rom-support)
are now available for users on third-party Android operating systems,
including but not limited to LineageOS, GrapheneOS, and CalyxOS.
Note:
The primary reason for these limitations is that third-party operating
systems typically lack AICore and system-level Text-to-Speech (TTS)
components. As a result, features such as voice-to-voice mode and
NPU/GPU acceleration are either unavailable or significantly impaired on
these ROMs.

  • Stock Android users should continue using the standard main branch build — this build is
    not needed and adds no benefit on stock Android
    • Amy (Piper TTS) must be downloaded from the Voice tab before voice reply works offline

custom-rom-support — Release Notes

Custom ROM Support (GrapheneOS · LineageOS · CalyxOS)

This release brings full voice-to-voice AI chat support for custom Android ROMs that ship
without Google services (AICore, Google TTS, Google STT).


What's New

Voice-to-Voice on Custom ROMs

  • Microphone button now works on GrapheneOS and other de-Googled ROMs using the built-in
    Whisper speech recognition engine
  • Voice Activity Detection (VAD) automatically sends your message after 1.5 seconds of
    silence — no need to press a button to stop recording
  • Speaker button now works on custom ROMs using the Amy (Piper) TTS engine — auto-downloads
    and initialises on first use
  • Real-time voice reply now streams speech sentence-by-sentence as the AI generates,
    matching stock Android behaviour
  • Amy TTS pre-loads when AI Chat opens so real-time playback is ready from your first
    message
  • Microphone automatically restarts after the AI finishes speaking, enabling continuous
    hands-free conversation

Performance

  • AI Chat inference is now fast on Tensor G5 devices running GrapheneOS — routes through
    Android NNAPI to reach the TPU without requiring AICore

Bug Fixes

  • Fixed Amy TTS model download failing on GrapheneOS due to a HuggingFace redirect URL bug
  • Fixed mic not auto-restarting after AI response on custom ROMs

Settings

  • Added "Non-Stock Android" notice in Settings clarifying this build is intended for custom
    ROM users

Box

25 Apr 10:38
8fca8ea

Choose a tag to compare

Box

v1.0.2 — Voice Mode & Vision Talk / NPU/TPU Acceleration

New Features

Free Talk — Hands-Free Voice Conversation

  • Continuous speech-to-speech AI conversation with no button press between turns
  • Tap the mic button to start, speak naturally, AI replies and listens again automatically
  • Real-time TTS: each sentence is spoken as it generates rather than waiting for the full response
  • Enable Real-time voice reply in Settings to turn it on

Vision Talk — Live Camera + Voice AI

  • Stream your back camera live to the AI during a voice conversation
  • Point at anything and ask about it out loud — AI sees the current frame and speaks the answer back
  • Fully hands-free: mic → AI sees scene → AI speaks → mic restarts automatically
  • Requires a vision-capable model (Gemma 4 E2B or E4B)

TTS Voice Picker

  • Choose your preferred offline system voice in Settings
  • Only locally installed voices shown (network-dependent voices filtered out)
  • GrapheneOS / de-Googled ROM users: install RHVoice or eSpeak NG from F-Droid

LaTeX Math Rendering

  • Greek letters, operators, fractions, integrals, summations rendered inline as Unicode
  • Works automatically in assistant messages

Improvements

  • GGUF model context size now scales with file size to prevent hangs on Android 17 Beta 4 (MemoryLimiter) — large models use a reduced KV cache automatically
  • Removed QNN Hexagon skeleton .so libraries ( will be added back next release to support snapdragon acceleration )
  • Removed interactive map skill

Bug Fixes

  • Fixed model initialization hanging indefinitely — now times out after 30 seconds with a clear error
  • Fixed app crash on invalid task ID (force unwrap replaced with safe exit)
  • Fixed real-time TTS stalling on responses with no sentence punctuation (code blocks, URLs now flush correctly)
  • Fixed TTS audio playback wiring in AI Chat