Releases: Natfii/ZeroAI
v0.2.0 - SSH Terminal — Input Routing & Live Render
SSH Terminal — Input Routing & Live Render
The TTY terminal's SSH session is now fully interactive. Commands typed over SSH reach the remote shell and output renders immediately on screen.
Using the Terminal
- Open Terminal tab in the bottom navigation and type '@'tty (no ' marks)
- Type
/ssh user@host -p port(e.g./ssh test@10.0.2.2 -p 2222) - Accept the host key when prompted
- Enter your password
- You're in — type commands normally, output renders live
Special keys: Use the key row below the terminal for Tab, Ctrl, Esc, and Alt modifiers. Ctrl+C, Ctrl+D, and arrow keys work as expected.
Local shell: The terminal also supports a local Android shell (no SSH needed) — just start typing without the /ssh prefix.
Fixes
- SSH input routing: commands now reach the remote shell reliably — the full write chain (Kotlin → FFI → russh channel) is verified end-to-end
- Live render updates: terminal output refreshes immediately after each command, no longer frozen on the MOTD
- Zombie polling coroutine: cancelled render-polling coroutines no longer survive through blocking FFI calls to overwrite valid frames with stale data
- Duplicate polling race:
startHostKeyPollingandsshSubmitPasswordno longer race to create competing render loops - PARTIAL frame stale cache: render snapshots now always extract all row data, eliminating blank/stale output from StateFlow conflation
- Fallback frame blank screen: empty-row race-loser snapshots no longer trigger unrenderable fallback frames
CI
- Clippy pedantic lints configured at workspace level
- Rust host tests gracefully skip when ghostty native symbols are unavailable
v0.1.7 — DeepSeek & Qwen Providers
What's New
New Providers
- DeepSeek — Full provider with native tool calling,
reasoning_contentextraction for R1 thinking tokens,parametersvsargumentsnormalization, orphaned tool message validation, and context overflow bailout - Qwen (Alibaba DashScope) — Three regional endpoints (International, China, US),
<think>tag stripping in the batch path,reasoning_contentfallback, and vision support
Shared Infrastructure
openai_compatmodule — Stateless wire format helpers for OpenAI-compatible providers: message conversion, tool call normalization, think-tag stripping. Reused by DeepSeek, Qwen, and future compatible providers
Android Integration
- Provider registry entries with model discovery URLs and key validation
- Qwen region picker UI with China data residency disclosure
- Brand colors and icons for both providers
- Onboarding and settings integration
ConfigTomlBuilderHTTPS enforcement for China-sensitive providers (DeepSeek, Qwen, DashScope aliases)- Minimum key length validation (DeepSeek: 35 chars, Qwen: 20 chars)
Bug Fixes
chat()now passes full message history and tool specs — was silently discarding all but the last user message and dropping tools entirely, breaking multi-turn conversations and agent tool use- Error handling uses standard
api_error()for cascade compatibility — removed deadProviderErrorKindenum that cascade never consumed - DeepSeek model discovery URL corrected —
default_base_urlhad/v1causing double/v1/v1/modelspath - All DashScope aliases registered in Kotlin — added
dashscope-cnanddashscope-usto match Rust-side alias handling
Supported Providers
OpenAI · Anthropic · Google Gemini · xAI (Grok) · DeepSeek · Qwen · Ollama · OpenRouter
Full Changelog: v0.1.6...v0.1.7
Full Changelog: v0.1.6...v0.1.7
v0.1.6
Rhai Scripting Engine & Agent Script Execution
Plugin System with Capability Grants
A full Rhai scripting engine is now embedded in the daemon, enabling user-authored scripts as first-class plugins.
- Capability-gated host calls — scripts declare required capabilities (storage, memory, tools, cost, events, config) and are granted access only after user approval
- Security hardening — SHA-256 hash-bound grants, cap-std path sandboxing, DNS-resolved SSRF guard, 30s wall-clock timeout, per-script storage quotas, tool denylist
- Script-scoped SQLite storage — each script gets its own isolated key-value store
- Cron & event triggers — scripts can be triggered on a schedule or in response to daemon events (e.g. incoming messages via regex pattern matching)
- Plugin ABI v0.2.0 — groundwork for future Wasm guest support
- Android integration — approve/deny notification actions for capability requests, new Skill Permissions settings screen
eval_script Agent Tool
The AI agent can now write and execute inline Rhai scripts during conversations for batch computation and multi-tool composition.
- Sandboxed execution — fixed capability set, 10M operation budget, 30s timeout, 16KiB output truncation
- On-device only —
model.chatcapability routes exclusively to Nano (never cloud) to prevent cost spirals - Security policy enforcement — scripts go through the same autonomy and rate-limit checks as all other tools
- Denylist —
eval_scriptcannot call itself (no recursive script execution)
Other Changes
- xAI and OpenRouter provider icons in the Agents tab
- CI test fixes for DaemonServiceBridge and FFI version assertions
v0.1.4
Full Changelog: v0.1.3...v0.1.4
v0.1.3
Adds xAI (Grok) as a provider - Tools currently not working, fix coming later today
Full Changelog: v0.1.2...v0.1.3
v0.1.2
Full Changelog: v0.1.1...v0.1.2
v0.1.1
Full Changelog: v0.1.0...v0.1.1
Better Google Messages usage
v0.1.0
Full Changelog: https://github.com/Natfii/ZeroAI/commits/v0.1.0
Google Messages Something went wrong while pairing - the current impl of google messages is a lil hacky, i recommend waiting like 15 mins or so to try again because you will get limited.