Skip to content

v0.9.0-rc

Latest

Choose a tag to compare

@nugget nugget released this 07 Apr 19:57
Immutable release. Only release title and notes can be modified.
89017ec

v0.9.0 — The Convergence Release

Note: This release is tagged v0.9.0-rc due to a GitHub immutable releases mishap during the release process. This is the v0.9.0 release — the tag name is just a scar from learning that GitHub won't let you delete and recreate a release once assets have been uploaded.

v0.9.0 is the first Thane release that represents a deliberate pause for architecture, documentation, and process rather than feature velocity. 540 commits since v0.8.4, focused on making the system explain itself as clearly as it operates.

Architectural Convergence

Loops-ng runtime. Every execution path — conversations, delegations, background watchers, email polling, Signal bridge, metacognitive reflection — now runs through a single universal loop primitive. One registry tracks all active loops. One shutdown path drains them all. One dashboard shows them all. The separate bespoke subsystems that accumulated through v0.6-v0.8 have been replaced by three loop modes: request/reply, background task, and autonomous loop.

Autonomous loops. Persistent loops where the agent controls its own pacing via set_next_sleep — deciding after each iteration how long until it looks again. Jitter breaks periodicity. Self-paced and event-driven flavors. This is where Thane's agency lives: the ability to direct its own attention.

Dynamic model registry. The static config-driven model list gave way to a live registry that merges configured models with runtime inventory from providers. LM Studio joins Ollama and Anthropic as a first-class local runner. Virtual models (thane:latest, thane:premium, thane:ops, etc.) surface in the HA model selector, each backed by intent-based routing rather than hardcoded model names.

Prompt and tool pruning. The always-on system prompt shrank as domain-specific doctrine moved behind capability tags. Entry-point talents route knowledge loading by semantic domain. The agent's context window stays lean until it needs depth.

Database consolidation. Six separate SQLite databases consolidated into a single thane.db. Contacts retain their own contacts.db.

Anticipations removed. The v0.6-era anticipation engine was fully replaced by the autonomous loop system — a better-conceived design for the same problem.

New Capabilities

  • LM Studio provider with idle TTL support and context expansion
  • Anthropic prompt caching for system prompt efficiency
  • Native HA automation tools for creating and managing automations
  • Platform provider WebSocket for real-time multi-account HA connections
  • Behavioral lenses — persistent global context modes across all conversations
  • MQTT wake subscriptions — event-driven agent wakes from any MQTT topic
  • Notification history awareness in system prompt context
  • Tag context providers — live-computed context per capability tag
  • Owner-scoped capability tags for per-operator tool isolation
  • Release automation with cross-platform binary publishing

Documentation Overhaul

The entire documentation suite was restructured for v0.9.0:

  • README scoped to front page with badges (CI, Go Reference, Go Report Card, Go Version, License, Release)
  • docs/ reorganized into understanding/, operating/, reference/ hierarchy
  • New philosophy.md with "Why Home Assistant" and "Privacy by Architecture"
  • New architecture.md rewritten around design decisions, not component lists
  • New glossary with 27 canonical terms
  • New hardware requirements based on production observations
  • New project history from first commit through v0.9.0
  • AGENTS.md rewritten as the front door for AI visitors
  • CLAUDE.md slimmed to Claude-specific concerns only
  • Issue templates, PR template, CODEOWNERS, dependabot configuration
  • Home Assistant and MQTT documented as required infrastructure throughout

CI Improvements

  • godoclint enabled — catches duplicate package comments, wrong package names, missing docs
  • lychee link checking — offline verification of all internal markdown links
  • 12 GoDoc violations fixed, duplicate package comments eliminated across 12 packages
  • Go 1.25 minimum (required by updated dependencies)
  • GitHub Actions bumped: checkout v6, setup-go v6, setup-just v4, codecov v6

Infrastructure

  • Architecture guardrail recipes track package count, interface count, and other metrics with baselines
  • Config example generated from Go struct tags via go generate — cannot drift from code
  • Unified iteration engine (internal/iterate) shared by agent loop and delegates
  • Content retention infrastructure for request tracing and dashboard inspection

Breaking Changes

  • Go minimum version is now 1.25 (was 1.24)
  • Six SQLite databases consolidated into thane.db — existing installations will migrate automatically
  • Anticipation engine removed — use autonomous loops or MQTT wake subscriptions
  • Several capability tool names changed (request_capabilityactivate_capability)

Upgrade Notes

If upgrading from v0.8.x:

  1. Back up your existing config and databases
  2. Build from source: just build
  3. Database migration happens automatically on first start
  4. Review examples/config.example.yaml for new configuration options
  5. The anticipation config section is no longer used and can be removed

Full Changelog: v0.8.4...v0.9.0-rc