Skip to content

Releases: Natfii/ZeroAI

ZeroAI 0.3.0

Choose a tag to compare

@Natfii Natfii released this 11 Jun 21:21

Highlights

🔍 Meta Search — new default web search

On-device multi-engine search fusion (DuckDuckGo, Mojeek, Wikipedia, Marginalia) — keyless, no API accounts needed. Engines are declarative specs with a self-repair ladder: golden probe → bundled revert → selector induction → on-device Gemini Nano → provider model, all gated by model-free validation. Per-engine health is surfaced live in the plugin UI, and repair cooldowns escalate for persistently broken engines.

🔐 SSH key security overhaul

  • SSH keys encrypted at rest behind an in-process ssh-agent
  • Device-credential app-lock gating: the agent holds keys only while the app is unlocked
  • Hardware tier: StrongBox / Titan M2-backed keys that never leave the secure element

🤖 On-device AI (Beta)

  • Local Gemma agent via LiteRT (E2B QAT, plus E4B @ 24K context GPU variant) with an OpenAI-compatible local server
  • Has issues replying outside terminal
  • Gemini Nano integration for on-device fallbacks and search-engine self-repair

💻 Terminal & SSH

  • Bundled native SSH client (zssh) replaces the in-app SSH path
  • Theme-aware terminal, two-row key layout, application cursor keys (DECCKM), live cursor and theme-repaint fixes

⚙️ Settings & UX

  • Settings tab restructure: Appearance hub, Provider Logins, Scheduled Tasks; autonomy gating now actually gates
  • Network scanner understands VPNs and skips CGNAT space
  • Model suggestions are fetched live from providers
  • Vision plugin UI no longer shows a misleading enable toggle

Verification

Full release gate green: Android-target clippy (workspace, all targets), spotless + detekt, cargo-deny, on-device Rust suites (zeroclaw-ffi 632, zeroai 206), app unit tests, signed APK + AAR, version sync 0.3.0.

Requires Android 9+ (arm64-v8a / x86_64).

Re-release fixes (2026-06-11)

The original 0.3.0 binary was pulled over three launch-day bugs, all fixed here:

  • On-device model downloads were blocked for everyone — the RAM gate checked momentary free RAM instead of device capability (total RAM)
  • Starting a model download crash-looped the app — WorkManager foreground-service type mismatch (dataSync vs connectedDevice)
  • ChatGPT/Codex login froze at the organization screen — the authorize request now matches the official Codex CLI (simplified-flow params + originator), the fallback port moved to the allow-listed 1457, and the login window was extended to 5 minutes. Note: completing this login requires a paid ChatGPT plan on OpenAI's side.

Kotlin gates (ktlint, detekt, unit tests) re-run green for the fix batch; the Rust engine is unchanged from the original 0.3.0 gate.

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

Choose a tag to compare

@Natfii Natfii released this 29 Mar 22:24

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

Choose a tag to compare

@Natfii Natfii released this 23 Mar 21:01

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

Choose a tag to compare

@github-actions github-actions released this 22 Mar 13:16

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

Choose a tag to compare

@github-actions github-actions released this 20 Mar 17:56

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

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 20 Mar 12:52

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

Choose a tag to compare

@github-actions github-actions released this 19 Mar 19:00

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

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 19 Mar 17:24

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

Better Google Messages usage

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 19 Mar 14:54

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.