Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ This changelog tracks **Minis for Android** as an independently maintained Andro

## Unreleased

## 0.0.3 — 2026-10-11

- A model's `400` now says what it is about when the text allows (a tool call without its result, a conversation that is too long, an image, the model name, the thinking level); the provider's own text is labelled as such, and the error banner expands when tapped to show it in full.
- Fixed a chat that kept failing with `400 No tool output found for function call …` (or `No tool call found for function call output …`) on OpenAI Responses models and never recovered, while a new chat worked. A tool call stored as `call_x|fc_y` and its result stored as `call_x` were treated as two different ids, so the history repair deleted a real result and the request went out unpaired on every retry. Calls and results are now matched on the `call_x` part, and the Responses request is checked once more just before sending: a result with no call and a repeated result are dropped, a call with no result gets a placeholder. Ported from OpenMinis 1.14.
- Device protection (Settings > Permissions, on by default): privileged commands from the agent, `android-root-cli` and the Android tools can no longer write partitions or the system partitions, remove `/data/system`, `/data/misc`, `/metadata` or `/data/adb`, uninstall or disable core system apps, factory-reset or remove user 0. Nothing is asked: the agent gets `DEVICE_PROTECTED: <category>: <target>` and tries another way. Everything else stays open. Refusals are listed under the switch. When `/data` is nearly full the app freezes its own terminals and refuses new bulk writes until space is freed. `android-root-cli partition read` exports a partition read-only.
- Reasoning items replayed on a Responses conversation are re-serialized to the fields official Codex sends (id, summary, content, encrypted_content) instead of the raw backend object, so extra backend-only fields can no longer cause `400 Unknown parameter`.
Expand Down
2 changes: 1 addition & 1 deletion src/android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ plugins {
// X.Y-dev < X.Y-beta.N < X.Y < X.Y.Z-beta.N < X.Y.Z
// code = major * 1_000_000 + minor * 10_000 + patch * 100 + stage; stage is 0 for -dev, N (1..98) for -beta.N
// and 99 for a stable release.
val appVersionName = "0.0.2"
val appVersionName = "0.0.3"
val appVersionCode: Int = run {
val match = Regex(
"""^(0|[1-9]\d{0,2})\.(0|[1-9]\d?)(?:\.(0|[1-9]\d?))?(?:-(dev|beta\.([1-9]\d?)))?$""",
Expand Down
Loading