Repository navigation
v0.0.9
Pi for Android gets a clearer, chronological view of the agent's work, plus fixes for image capability detection and steering admission on reconnect.
Android: follow tool calls as they happen
- Tool calls appear between the agent's words, in execution order, instead of only being grouped by stage.
- Consecutive successful reads and searches fold into compact rows that you can expand. Running and failed calls stay separate, with failures clearly marked.
- Active calls show live output or an edit preview. Completed edits show their added/removed line counts.
- Tap a call to inspect its command, output and status, copy its output, navigate to the next call, or attach it to an editable session's composer with Ask about this. Read-only subagent calls retain inspection, copying and navigation, without offering an unusable composer action.
- The working strip keeps the run line one tap away. Finished tool streams fold out of the way and can be reopened with Show.
- Tool calls remain ordered with returned images, generated HTML pages and compaction summaries.
Reconnect and input fixes
- Image capability detection: a selected model with incomplete metadata is hydrated from an exact provider/model catalog match. Unknown capabilities are treated as loading, rather than falsely reporting that the model is text-only. Explicit text-only capabilities remain respected.
- Image admission waits for the current connection and model-selection confirmation. Delayed catalog responses from older connections cannot replace the current model/command choices.
- Steering admission: an acknowledged prompt counts as busy while Android awaits its busy snapshot, so another new message is sent as steering during that gap. Retries retain their original admission mode and request identity.
- Helper upgrade warnings now link to the matching release in ejpir/pig.
Packaging and validation
- Android APKs now include the full copyright notices and SIL Open Font Licenses for IBM Plex, Commit Mono and Noto Emoji. Publication rejects an APK with missing or incomplete font notices.
- Fixed desktop screen validation to locate the model's displayed name rather than its RPC identifier.
- Branch and release CI passed: full Rust tests and strict Clippy checks, offline durable-engine tests, desktop screen validation, four native package builds and Android packaging.
Upgrade and downloads
| Platform | Desktop package | SSH helper |
|---|---|---|
| Linux x86-64 | pi-desktop-linux-amd64.tar.gz |
pi-desktop-remote-linux-amd64 |
| Linux ARM64 | pi-desktop-linux-arm64.tar.gz |
pi-desktop-remote-linux-arm64 |
| macOS Apple Silicon | pi-desktop-macos-arm64.zip |
pi-desktop-remote-macos-arm64 |
| Windows x86-64 | pi-desktop-windows-amd64.zip |
pi-desktop-remote-windows-amd64.exe |
Android: pi-android-arm64.apk is the production-signed ARM64 build. Install it over an existing installation signed with the production key to keep app data. Custom/debug-signed installations require an update signed with their existing key; do not uninstall just to switch signing keys.
For Android durable sessions, use the matching Linux or macOS helper; the Windows helper does not include the durable engine. If you manually download a Unix helper, make it executable and run its activate command, then reconnect the phone. Copying a newer binary alone does not select it. Activation leaves existing durable work running. See remote setup and activation.
SHA256SUMS covers all nine downloadable binaries/packages. Previously published v0.0.7 and v0.0.8 tags and assets are unchanged.
Known steering behavior and limitation
Steering is admitted while the agent is busy but applied at the next completed tool-round boundary, or after the current response finishes if there are no tools. It does not interrupt provider calls or running tools, and a parallel round waits for its slowest tool. Parent steering does not redirect background subagents.
A separate acknowledgement/older-idle-snapshot ordering race remains: an older snapshot can erase Android's busy hint and cause a subsequent prompt to be rejected as busy. The rejected payload remains recoverable; this release does not claim to fully solve that protocol-ordering issue. Queued inputs can also remain parked after a run fails until another submission. Details are in the remote-session documentation.
Full changelog: v0.0.8...v0.0.9