Skip to content

Releases: Natfii/ZeroAI

v0.2.0 - SSH Terminal — Input Routing & Live Render

29 Mar 22:24

Choose a tag to compare

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

  1. Open Terminal tab in the bottom navigation and type '@'tty (no ' marks)
  2. Type /ssh user@host -p port (e.g. /ssh test@10.0.2.2 -p 2222)
  3. Accept the host key when prompted
  4. Enter your password
  5. 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: startHostKeyPolling and sshSubmitPassword no 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

23 Mar 21:01

Choose a tag to compare

What's New

New Providers

  • DeepSeek — Full provider with native tool calling, reasoning_content extraction for R1 thinking tokens, parameters vs arguments normalization, 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_content fallback, and vision support

Shared Infrastructure

  • openai_compat module — 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
  • ConfigTomlBuilder HTTPS 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 dead ProviderErrorKind enum that cascade never consumed
  • DeepSeek model discovery URL correcteddefault_base_url had /v1 causing double /v1/v1/models path
  • All DashScope aliases registered in Kotlin — added dashscope-cn and dashscope-us to 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

22 Mar 13:16

Choose a tag to compare

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 onlymodel.chat capability 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
  • Denylisteval_script cannot 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

20 Mar 17:56

Choose a tag to compare

Full Changelog: v0.1.3...v0.1.4

v0.1.3

20 Mar 12:52

Choose a tag to compare

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

19 Mar 19:00

Choose a tag to compare

Full Changelog: v0.1.1...v0.1.2

v0.1.1

19 Mar 17:24

Choose a tag to compare

Full Changelog: v0.1.0...v0.1.1

Better Google Messages usage

v0.1.0

19 Mar 14:54

Choose a tag to compare

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.