Skip to content

Releases: littlebearapps/untether

v0.24.0

27 Feb 10:05
3451e99

Choose a tag to compare

What's Changed

  • feat: agent preamble, post-outline approval, URL updates by @nathanschram in #24

Full Changelog: v0.23.5...v0.24.0

v0.23.5

27 Feb 05:04
81e32f2

Choose a tag to compare

What's Changed

Full Changelog: v0.23.3...v0.23.5

v0.23.3

26 Feb 08:35
fe6d065

Choose a tag to compare

Fixes

  • Add rate_limit_event to Claude stream-json schema (CLI v2.1.45+)
    • New StreamRateLimitMessage and RateLimitInfo msgspec structs
    • Event is decoded cleanly and silently skipped (informational only)
    • Eliminates noisy jsonl.msgspec.invalid warning in logs

Full changelog: v0.23.2...v0.23.3

What's Changed

  • fix: add rate_limit_event to Claude stream-json schema by @nathanschram in #6

Full Changelog: v0.23.2...v0.23.3

v0.23.2

26 Feb 08:05
5dc873e

Choose a tag to compare

Fixes

  • Fix crash when Claude OAuth credentials file missing (macOS Keychain, API key auth)
    • _maybe_append_usage_footer() now catches FileNotFoundError and httpx.HTTPStatusError
    • Post-run messages are delivered to Telegram even when usage data is unavailable
  • Add macOS Keychain support for /usage command and subscription usage footer
    • On macOS, Claude Code stores OAuth credentials in the Keychain, not on disk
    • _read_access_token() tries the file first, then falls back to macOS Keychain via security find-generic-password

Full changelog: v0.23.1...v0.23.2

What's Changed

  • fix: handle missing OAuth credentials on macOS (Keychain support) by @nathanschram in #5

Full Changelog: v0.23.1...v0.23.2

v0.23.1

26 Feb 05:51
6882751

Choose a tag to compare

Highlights

📋 Structured startup message — every status field now appears on its own line, always visible. Projects listed by name, plus voice and files status at a glance.

Changes

  • Restructure startup message: one field per line, always show all status fields
    • List project names instead of count
    • Always show mode, topics, triggers, resume lines, voice, and files status
    • Add voice and files enabled/disabled status
  • Update PyPI description and keywords to reflect current feature set

Links

v0.23.0

26 Feb 05:17

Choose a tag to compare

Highlights

🏷 Model & mode footer — every completed message now shows the model and permission mode in the footer (e.g. 🏷 sonnet · plan). All four engines populate model info.

🐶 Compact startup message — version number, project count, and conditional diagnostics. Only shows mode/topics/triggers/engines when they carry signal.

🔀 Callback query routing — Telegram callback queries now route to command backends via command_id:args... format, enabling plugins to build interactive UX with inline keyboards.

Changes

  • Refresh startup message: dog emoji, version number, conditional diagnostics, project count
    • Only shows mode/topics/triggers/engines lines when they carry signal
    • Removes resume lines: field (config detail, not actionable)
  • Add model + permission mode footer on final messages (🏷 sonnet · plan)
    • All 4 engines (Claude, Codex, OpenCode, Pi) populate StartedEvent.meta with model info
    • Claude also includes permissionMode from system.init
    • Codex/OpenCode use runner config since their JSONL streams don't include model metadata
  • Route Telegram callback queries to command backends
    • Callback data format: command_id:args... routes to registered command plugins
    • Extracts message_thread_id from callback for proper topic context
    • Enables plugins to build interactive UX with inline keyboards

Links

v0.22.2

25 Feb 15:18
aed60d7

Choose a tag to compare

What's Changed

  • feat: interactive enhancements — AskUserQuestion, export, browse, cost, triggers by @nathanschram in #1
  • feat: public release — docs, PyPI metadata, GitHub templates by @nathanschram in #2

New Contributors

Full Changelog: v0.1.0...v0.22.2