Skip to content

v0.8.0

Choose a tag to compare

@chalie-ai chalie-ai released this 29 May 20:27
· 661 commits to main since this release

v0.8.0 Release

346 files changed · +13,465 / −8,431 LOC (net +5,034)


New Features

Self-Refining Skill Library

A full skill system that lets Chalie discover, create, and refine reusable playbooks at runtime.

  • SearchableAbility base class — common FTS5 + vec search logic extracted into a shared base for all abilities
  • find_skills — skill lookup available on every turn without needing find_tools first (ALWAYS_AVAILABLE)
  • Layer 2 skill association — after ACT loops, associates touched behavioral patterns with relevant skills for future recall
  • 73 curated playbooks — expanded from 5, sourced from open-source repos (incl. 7 bash-using skills); skills.sqlite rebuilt
  • Skill Builder — create, edit, delete, and list skills via natural language; Brain Skills tab with click-to-expand read-only view
  • Proactive skill suggestion — background analysis after complex multi-step tool loops suggests skills to create or invoke; later reworked to run fully subconsciously via a dedicated SkillManagerAbility
  • Policies auto-generated from the ability registry — every ability declares its own policy category and labels; the Brain dashboard and REST API derive from this metadata automatically

Safe Execution Pipeline

A layered approach to giving Chalie filesystem and shell access — safer, purpose-built tools land first, with bash as the general-purpose fallback. Every tool is policy-gated per context.

  • search_files — cross-platform glob + grep, a safe alternative to shell find/grep. Defaults to the home directory, max_files / context_lines params, internal time budget returns partial results before timeout
  • web_download — stream a URL to a local file path. URL scheme validation (http/https), shared SSRF guard. Policy: confirm in chat
  • file_write — write or append content to the filesystem, single-path policy. Read-before-write guard: the LLM must read an existing target before it can overwrite it
  • file_permissionschmod ability with before/after audit
  • bash — general shell execution. The LLM self-classifies each command into one of 7 risk categories; heuristic overrides can only escalate (never downgrade) the risk level. Secrets scrubbed from the environment, output capped, destructive commands (e.g. rm -rf) blocked. Denied in background and external contexts
  • pre_dispatch hook — abilities can inspect and re-classify params between handler lookup and the policy check

Cooperative ACT Loop Cancellation

The ACT loop no longer has a fixed MAX_ITERATIONS cap — it runs until the task is done or the user stops it.

  • Cooperative cancellation via threading.Event, checked after each LLM call
  • Stop button in the chat UI; stopping collapses the in-progress ACT trail into a bubble
  • Mid-turn redirect — send a new message while Chalie is working to steer it without a full stop (replaces the old SteerAbility, now deleted)
  • Subagent panel — list, stop, and directly address running subagents, with a per-action policy matrix

Geo-Tagging & Named Places

Location awareness across conversations and memory.

  • Transcript and episode location columns for geo-tagged conversations
  • Named places — save, list, and delete named locations (home, office, etc.)
  • Departure reminders — reminders triggered by leaving a named place (also supports location-only reminders)
  • Location-based pattern learning — learns behavioral patterns tied to specific places
  • Location-filtered memory search — episodic recall filtered by place
  • Brain UI: location column replaces the key column in the episode memory view

Vault DEK Backup & Recovery

  • The vault data-encryption key is backed up to the filesystem on init, with append-forever timestamped backups retained for password-verified recovery
  • Login recovery flow tries all backups newest-first and skips a corrupt latest, so a single bad backup can't lock the user out

ACT Trail Tooltips

  • Each tool call in the ACT trail now shows a human-readable summary on hover
  • Summaries are generated at call time and never persisted — zero storage overhead

find_tools Guard-Rails

  • When the LLM discovers certain tools, contextual guidance is injected steering it toward safer or more appropriate alternatives first
  • First guard-rail: browser → read ("use read for simple page content before reaching for the browser")
  • Extensible pattern — new tools add an entry to the guard-rail dict

HTML Table Support

  • Full HTML table rendering in LLM output (table, thead, tbody, tfoot, tr, td, th)
  • System-prompt guidance for when to use tables, CSS theming, and TTS word-break handling

Ubiquiti Network Control (Early Alpha)

Shipping as an early alpha — functional but expect rough edges while it's refined.

  • 9-action UniFi capability: manage clients, devices, firewall rules, DNS, VLANs, and more
  • Dual authentication: local UniFi controller and UniFi Cloud
  • Dedicated Brain UI tab for Ubiquiti setup

Brain Dashboard

  • Token usage table below the usage chart, with full time-slot coverage
  • Day table shows only today's UTC hours (no longer bleeds yesterday's)
  • Provider API-key links are now clickable
  • OpenAI-compatible providers now list available models correctly
  • Native confirm() dialogs replaced with themed Radiant modals

Chat UX

  • Enter adds a newline — use the send button or Shift+Enter to send
  • Timestamps formatted server-side via the locale service — no client-side date parsing
  • chalie_docs self-reference tool for querying Chalie's own documentation

Infrastructure & Tooling

  • Migrated from requirements.txt to pyproject.toml + uv for dependency management
  • Runtime dependency management — voice and Playwright dependencies installed on demand rather than upfront
  • CI simplified — removed 4 workflows, CodeQL restricted to a weekly run
  • Default port changed from 8081 to 31025; Python auto-install removed from the installer
  • App identification headers added to all LLM provider clients
  • Model context window capped at 200k tokens

Refactoring & Cleanup

FileMapperService

All repository-layout paths now resolve through a single OOP singleton, replacing the procedural paths.py. 15 private constants, 26 classmethod helpers, 53 files migrated.

Interface System Removed (−2,365 LOC)

The interface SDK, protocol layer, and gateway were removed entirely; the extensibility model proved unnecessary. Deno install steps and Docker ENV cleaned up.

PWA Removed (−879 LOC)

Service worker, manifest, install prompts, push-notification subscriptions, and VAPID key handling removed. A self-unregistering service worker ships to clean up stale installs.

Dead Introspection System Removed (−756 LOC)

SelfModelService was inert — returning empty strings on every healthy turn. Removed the service, background worker, thread-health publisher, and associated REST endpoints.

OOP Singletons (−694 LOC)

Personality and heartbeat services converted to proper singletons; the background-process subsystem was ripped out of WorldState.

Tool Tier Centralisation

  • SEARCH_TOOLTIP field added to all abilities for a richer find_tools index
  • Visibility tiers (ALWAYS_AVAILABLE / DISCOVERABLE / BLOCKED) centralised on the MessageProcessor base class
  • Operational prompts slimmed from 9 to 3

Other

  • Pre-trained classifier heads relocated from resources/ into backend/
  • Shared data utilities extracted (handle helpers, JSON-column parsing, Email class)

Fixes

  • Document pipeline — upload timeout raised 10s → 120s with a named timeout error; uploads now report success only at a terminal ready state; image OCR extraction wired up (TKT-706/707/708)
  • code_eval — guarantees an actionable result instead of a silent empty success; allowed by default in all channels (TKT-584)
  • Ability errors surfaced to the LLM — the dispatcher no longer silently drops error messages
  • Behavioral patterns — rediscovered patterns now update strength, evidence count, and retrieval weight; patterns surface in memory-recall search; concise behavioral rules enforced over episodic narratives (TKT-581/582/601)
  • Theme contrast — dialog and scrollbar contrast fixed in light theme; the theme toggle no longer navigates away from /brain/ (TKT-685/686/687)
  • sub_id propagation — correctly persisted to the tool_calls row via the params pipeline
  • Skills modal fixes and rm -rf bash classification (TKT-691/692)
  • Voice stamp migration, installer upgrade check, and uv PATH export
  • Test-tier hygiene — moved network-dependent tests to the integration tier, derived concept-LUT counts from source YAML, cleaned dead mocks and stale phase4 invariant allowlists

🤖 Generated with Claude Code