Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

  • sdk: context-budget guardrails with per-turn planner envelopes, ingestion-time tool-result truncation, and deterministic unknown-usage fallback
  • web-fetch-tool: adaptive maxBytes resolution from planner envelopes, policy bounds, and user-specified hard upper bounds
  • integration: context-budget guard integration coverage for batched web_fetch calls and envelope lifecycle reset between turns
  • sdk: inject per-turn context budget status line into the system prompt
  • sdk: preserve historical toolResultRetention behavior while adding same-turn ingestion safeguards
  • context-usage: document contextBudget settings and budget signal semantics
  • web-fetch-tool: document adaptive cap rules, fallback behavior, and diagnostic detail fields
  • ci: add workflow to configure Sonar quality gate (02e2f2a)
  • ci: stabilize Sonar baseline after releases (828934f)
  • pr-template: require explicit gh pr checks before merge (65379ae)
  • ci: resolve audit critical and lint formatting failure (c661bc6)
  • sdk: guard optional pi-tui image path helper (05d5b96)
  • core: add unit tests for auth-hardening, config, process-cleanup, startup-timing (ef6e91e)
  • deps: bump pi-* dependencies (0b6099e)
  • bash: use process.cwd() at execution time instead of stale closure (c57e731)
  • routing: upgrade synapse to 0.1.6 and wire exclude patterns (89f7669)
  • slash-command-bridge: show resuming indicator after compaction (58afb02)
  • compact: narrow hasCompactionQueuedMessages to compaction-only queue (9fadfdf)
  • copy pi built-in themes during build to prevent /settings crash (5014d18)
  • docs: comprehensive light mode for docs site (1fb71b9)
  • init: rewrite /init prompts around discovery-distance principle (a65807f)
  • interactive-mode-patch: fix stale UI patch interference with compaction (08aee4c)
  • slash-command-bridge: always fire continuation timer after compact (ec01d35)
  • slash-command-bridge: eliminate race between queue flush and auto-continue (70efcfc)
  • tasks: distinguish “agents” from “teammates” in footer bar (202856b)
  • worktree: restrict marker file permissions to owner-only (5262dd8)
  • lsp: extract shared helpers to reduce code duplication (a12eada)
  • subagent: remove dead initial assignment (d9b906f)
  • replace Aliases page with comprehensive Slash Commands reference (56a328a)
  • session-memory: update roadmap — hippo for memories, QMD evaluation (fb7218c)
  • dep-check: scope permissions to job level (0fe08b7)
  • slash-command-bridge: add compaction race condition tests (393fb2d)
  • slash-command-bridge: cover post-compaction resuming behavior (ba6d423)
  • slash-command-bridge: auto-continue after model-triggered compaction (9776a16)
  • readme: remove images for now (f52a474)
  • add v1.md to gitignore (d5cfaee)
  • deps: bump pi-* dependencies (29516b5)
  • context-usage,debug: add tool-result memory telemetry (2d50a19)
  • hooks: add worktree lifecycle event support (15de3a9)
  • plugins: load plugin commands and agents from sdk env (846116e)
  • read-tool-enhanced: add structured .ipynb reading support (2fe8998)
  • sdk: summarize oversized historical tool results (79b66d7)
  • subagent-tool: add worktree isolation mode (630330e)
  • worktree: add session worktree lifecycle and CLI isolation (0cc751a)
  • cli: avoid logging raw session-id error text (ea4b433)
  • core: harden session ids and rewind repository handling (0c78e79)
  • plan-mode: add blocked-step guidance during execution (14f119f)
  • subagent-tool: auto-rerun stalled workers (15e0827)
  • tasks: keep foreground subagents inline-only (ac2508d)
  • paths: centralize tallow home and settings resolution (188b47c)
  • context-usage: document tool-result retention memory reporting (1d10f18)
  • plan-mode: document execution guidance for blocked tools (81b86db)
  • read-tool-enhanced: document notebook support (796ea55)
  • subagent-tool: describe automatic stall reruns (38a8b03)
  • tasks: clarify widget shows background subagents only (56bba02)
  • worktree: add extension docs and update counts (67896bb)
  • read-tool-enhanced: cover notebook parsing and read integration (2c6e95d)
  • commands: add —worktree workflow to implement template (b4bbf92)
  • core: add extension catalog and exclusive loading (b61e8b7)
  • debug: rename /diag to /diagnostics (3648538)
  • extensions: add catalog metadata to bundled manifests (680ca55)
  • lsp: add configurable startup timeout (355c4f3)
  • startup: add headless startup profile fast path (8d676a1)
  • subagent-tool: add routing mode and signals config support (365c73a)
  • subagent-tool: add stalled-worker watchdog and recovery flow (adb97a9)
  • tasks: surface stalled subagent status in widget (5b8955b)
  • trust: box project trust warning with clearer risk copy (91af699)
  • core: flush deferred bash output on interactive updates (d4bee77)
  • core: update fatal banner diagnostics hint (32ef553)
  • permissions: clarify deny and ask reasons (a671024)
  • subagent-tool: align routing signal types with synapse (3a49aaa)
  • subagent-tool: relax truncation for parallel previews (6dd6073)
  • subagent: honor provider-scoped explicit model overrides (2659853)
  • tasks: split subagent widget by blocking mode (7510cc2)
  • teams-tool: dedupe noisy dashboard feed and refine dashboard rendering (8dc97eb)
  • tui: realign diff viewport basis after shrink (441f688)
  • ui: avoid duplicate Error prefix for icon-led extension notifications (97811bc)
  • wezterm-notify: stabilize lifecycle signaling and spinner updates (315a5f6)
  • commands: lazy-load command expansion and fork indexes (a5e4a54)
  • context-files: defer context scan to first use (e2a7f39)
  • mcp-adapter: lazy-initialize server connections (79d490b)
  • shared: add reusable lazy initializer helper (4fdfea0)
  • subagent,teams: bound history retention and cleanup (c0cb6e3)
  • tasks-subagent: share identity styling and model metadata (21c5179)
  • tool-display: add semantic presentation roles for tool output (95bc7a5)
  • add autocomplete guide covering structural and LLM completions (1b8d6fb)
  • changelog: note tui border regression fix (1d5e600)
  • changelog: record lazy startup initialization refactor (01c1ac9)
  • debug: clarify diagnostics vs /debug usage (0a2261f)
  • enrich prompt-suggestions with model fallback chain and context details (45f0d0e)
  • extensions: document catalog commands and metadata fields (38f1c13)
  • extensions: document shared presentation roles (a9f3925)
  • permissions: add reason clarity examples (31b516f)
  • readme: add annotated screenshot asset (faae932)
  • wezterm-notify: update working-session lifecycle guide (7b17c12)
  • dep-check: add failure notification on build break (2ab2063)
  • deps: bump @dungle-scrubs/synapse to 0.1.4 (8740bdc)
  • deps: bump pi-* dependencies to 0.54.0 (c5ad469)
  • permissions: cover reason metadata and messaging (eaff3a0)
  • startup: add startup benchmark scripts (21f3a76)
  • startup: add startup profile regression coverage (c59f40e)
  • subagent-tool: cover routing config and selection options (4950d58)
  • subagent: fix auto-cheap routing determinism in CI (f3d9a8d)
  • subagent: isolate auto-cheap routing tests from home config (29288cd)
  • subagent: relax auto-cheap assertions across provider prefs (49946d8)
  • trust: cover boxed project trust banner and payload (8dc3878)
  • tui: add border and shrink-regression coverage (f946979)
  • plan-mode: prompt for optional user guidance when blocked tool results occur during plan execution and inject [PLAN GUIDANCE — Step n: ...] steer context
  • read-tool-enhanced: parse .ipynb notebooks into structured markdown/code/output text with safe image and html placeholders
  • sdk,context-usage,debug: summarize oversized historical tool results after each turn and surface retained/reclaimed payload bytes for long-session profiling
  • worktree: add detached session and subagent worktree isolation with lifecycle hooks, stale cleanup, and CLI -w/--worktree support
  • extensions: lazy-initialize command expansion, context scanning, context fork indexing, and MCP startup connections behind first-use triggers
  • lsp: allow configuring language-server startup timeout via lsp.startupTimeoutMs with project-over-user precedence
  • permissions: add structured deny/ask reason metadata with redaction-safe messaging and shell-policy alignment
  • subagent-tool: compact completed background-agent histories with retained final output, bounded debug tails, and stale-record cleanup
  • teams-tool: enforce ring-buffer retention for team message logs with debug and limit env overrides
  • tasks: render foreground subagents inline-only while keeping bottom widget lanes background-only
  • tui: realign differential-render viewport coordinates after shrink churn to prevent input editor border lines from being cleared
  • agents: add extension startup policy guidance for minimal session_start handlers and shared lazy initialization
  • permissions: add allow/ask/deny reason examples with redaction behavior
  • wezterm-notify: add WezTerm turn-status integration (5d0e671)
  • stabilize claude bridge skill path ordering (608afd0)
  • refine README structure and clarity (0a2920b)
  • wezterm: add setup guide and extension docs (8326aec)
  • core: add project trust store and fingerprinting primitives (27429aa)
  • trust: enforce project trust gate across extension surfaces (07e0618)
  • trust: resolve project trust state and startup controls (4e501b0)
  • core: clear stale interactive UI state between turns (31dbd29)
  • debug: redact sensitive fields in debug logger (43d6c59)
  • deps: remediate advisory paths with targeted overrides (1ff39e9)
  • guard bg_bash unref for nonstandard child processes (3e91c98)
  • harden plugin ref parsing and cache path safety (d49c01a)
  • hooks: harden subprocess timeout and output buffering (116ff7e)
  • isolate lsp test mocks across suites (4c703dd)
  • lint: resolve biome warnings in docs, tests, and subagent (1c9674d)
  • lsp: add timeout and abort guards (04dc838)
  • make pid registry lock contention fail-safe (690ffb5)
  • mcp-adapter: abort timed-out SSE requests (83d68e7)
  • mcp-adapter: gate project MCP servers by trust (a0f7130)
  • pid-cleanup: verify process identity before signaling (5989864)
  • plan-mode: enforce strict readonly tool allowlist (c58a50e)
  • plugins: contain github plugin subpaths to clone root (e58b206)
  • prevent cross-session pid cleanup termination (3f56f37)
  • resolve hook agent runner without hardcoded pi binary (8805e9f)
  • resolve pid manager paths from runtime TALLOW_HOME (9e24032)
  • subagent-tool: show routed model during parallel execution (7045ef4)
  • tests: make trust-gated package/plugin specs deterministic (b96ce22)
  • add runtime path provider with pid injection hooks (9de6745)
  • add shared mock-scope harness for isolated tests (357aa6d)
  • centralize agent runner resolution policy (86cf33a)
  • extract background task process lifecycle manager (8be74d7)
  • extract shared file lock utility for pid registry (e4e3d3b)
  • move pid tracking to session-scoped files (93e150b)
  • normalize plugin specs and harden cache keys (3b57b5c)
  • changelog: note dependency advisory remediation (6dbe154)
  • changelog: note PID reuse safety cleanup guard (b664614)
  • debug: document redaction behavior and changelog (317b2a3)
  • hooks: document subprocess safety defaults (aae3825)
  • lsp: note fail-fast timeout behavior (6023157)
  • mcp-adapter: clarify trust-gated config loading (06b9401)
  • mcp-adapter: document SSE cancellation semantics (7835871)
  • plan-mode: document strict readonly behavior (6767926)
  • trust: document trust-gated project execution surfaces (75b22c4)
  • dev: add pre-pr script that mirrors CI (4a07276)
  • hooks: cover timeout escalation and output truncation (0bb3490)
  • lsp: add timeout and abort coverage (18728a5)
  • pid-cleanup: cover PID reuse safety and metadata fallback (57fe0fc)
  • plan-mode: add strict gating coverage (e1bb73e)
  • subagent: surface routing defaults in settings (ddbfc68)
  • wezterm-pane: auto-run prefilled commands by default (4d6b9bd)
  • hooks: add Claude Code hook compatibility layer (d14dba8)
  • slash-command-bridge: show compacting progress feedback (f368a64)
  • tui: relax default image height clamp (8f2b191)
  • compat: clarify hook event key expectations (55dc312)
  • guides: add Claude Code compatibility guide (1802f17)
  • guides: correct Claude compatibility details for hooks and frontmatter (59d2003)
  • readme: emphasize core differentiators and spare-time support (ca06d98)
  • deps: bump synapse to 0.1.2 (df65b9f)
  • deps: bump synapse to 0.1.3 (269cb2f)
  • address remaining CodeQL alerts (c7e8259)
  • reject shell metacharacters in command references (b178d23)
  • resolve CodeQL security alerts (5d52f1d)
  • resolve remaining CodeQL warnings (1421691)
  • codeql: exclude test directories from analysis (9c102eb)
  • ci: only fail audit on critical vulnerabilities (94505a3)
  • ci: remove SonarCloud workflow (use Automatic Analysis), relax audit to critical-only (a2222f6)
  • config: remove op:// secret cache to prevent plaintext secrets on disk (d48ec89)
  • security: add Semgrep, CodeQL, SonarCloud, and dependency audit (e0c3548)
  • namespace package as @dungle-scrubs/tallow
  • namespace package as @dungle-scrubs/tallow (310af1d)
  • core: revert package name to unscoped ‘tallow’ (e6caff6)
  • context-files: discover nested subdirectory rule files (34058bd)
  • core: add demo mode for recordings and streaming (232ba79)
  • init: support nested .claude/ rename and CLAUDE.md migration (18b1ad4)
  • plugins: add plugin resolver, cache, and format detection (e7937cb)
  • plugins: integrate plugin resolution into session startup (e87e191)
  • remove image-gen extension (85e01de)
  • ci: add NODE_AUTH_TOKEN for npm OIDC publish (814ec12)
  • test: increase timeout for shell-spawning tests (b28263c)
  • tools: add missing isError flag to error responses in lsp, read, and ask-user-question (49bb21d)
  • subagent: extract model resolver, router, and matrix to @dungle-scrubs/synapse (61932f2)
  • web-fetch: remove Firecrawl fallback and JS detection (8fa22c7)
  • add demo mode changelog entry (9a36522)
  • update unreleased changelog for 0.7.7 (6f7628f)
  • ci: remove redundant publish.yml — release.yml handles OIDC publish (07f7110)
  • core: IS_DEMO / TALLOW_DEMO env var and --demo CLI flag to hide sensitive info (paths, session IDs) for screen recordings and live demos
  • custom-footer: [DEMO] badge and path sanitization when demo mode is active
  • sdk: export isDemoMode() and sanitizePath() helpers for extensions
  • plugins: plugin resolver with cache, format detection, and session startup integration
  • context-files: discover nested subdirectory rule files in .tallow/rules/ and .claude/rules/
  • init: nested .claude/.tallow/ directory rename and nested CLAUDE.mdAGENTS.md migration in /init
  • trust: per-project trust store with config fingerprinting and /trust-project, /untrust-project, /trust-status commands
  • startup: add startupProfile (interactive/headless) session option, headless UI-extension skip policy, and TALLOW_STARTUP_TIMING metrics for create-session, bind-extensions, and first-token
  • subagent: extract model resolver, router, and matrix to @dungle-scrubs/synapse
  • subagent: surface routing settings (enabled, primaryType, costPreference) in schema/docs and support project-over-user precedence for routing defaults
  • web-fetch: remove Firecrawl fallback and JS-detection — plain HTTP fetch with 50KB truncation only
  • debug: rename /diag* commands to /diagnostics* and make /diagnostics capability-aware with WezTerm live-pane follow fallback
  • tasks/teams-tool: align task and team dashboard rendering to shared presentation roles, emphasizing identity/action context over process chatter
  • tools: add missing isError flag to error responses in lsp, read, and ask-user-question
  • debug: redact secret-like fields in debug log payloads before truncation
  • lsp: bound startup and request operations with timeout + abort cleanup so hung language servers do not block tool calls
  • hooks: translate Claude Code hook events and tool matchers from .claude/settings.json so PreToolUse/PostToolUse/Stop hooks run in tallow
  • hooks: bound hook subprocess output buffers and enforce SIGTERM→SIGKILL timeout/abort escalation for command and agent hooks
  • tui: clear stale working and queued steering/follow-up UI state on turn end via interactive-mode runtime patch
  • trust: block untrusted project execution surfaces (plugins, hooks, mcpServers, packages, permissions, shell interpolation, project extensions)
  • mcp-adapter: always load global mcpServers, gate project servers on trust, and warn when project MCP config is skipped
  • mcp-adapter: abort timed-out and stopped SSE requests at the network layer and clear pending request bookkeeping
  • deps: pin ajv, fast-xml-parser, and minimatch via overrides to remediate current advisory paths from @mariozechner/pi-ai, @aws-sdk/xml-builder, and @mariozechner/pi-coding-agent; remove overrides once upstream ranges include fixed versions
  • plugins: ignore <cwd>/.pi/settings.json plugin entries
  • plan-mode: enforce strict read-only tool allowlist and block non-allowlisted extension tools while plan mode is active
  • pid-cleanup: verify process start identity before signaling tracked PIDs to prevent PID-reuse kills of unrelated processes
  • wezterm-notify: stabilize tab loader visibility by using agent-level lifecycle signaling and redraw-driven spinner advancement to avoid short-run flicker
  • subagent-tool: add foreground liveness watchdog detection for stalled workers, enforce SIGTERM→SIGKILL termination, and provide stalled-aware parallel partial-result handling with interactive and headless escape hatches
  • subagent-tool: automatically retry stalled parallel workers once in single-worker mode with narrowed-scope guidance and explicit model pinning before returning partial error results
  • tasks/subagent: propagate stalled subagent status through interop snapshots and widget rendering with explicit running/stalled labels
  • docs: add WezTerm integration guide covering pane control, turn status signaling, tab bar indicators, and WezTerm Lua configuration
  • wezterm-notify: new extension — signals agent turn status to WezTerm via OSC 1337 user variables, enabling tab spinner and done-color indicators
  • docs: add presentation-role guidance for tool-display, tasks, subagent-tool, and teams-tool, plus extension-first/TUI-fork-last-resort policy updates in AGENTS.md
  • image-gen: remove image-gen extension (moved to external plugin)
  • ci: remove redundant publish.ymlrelease.yml handles OIDC publish
  • slash-command-bridge: show command name in tool call header (f447aad)
  • ci: restore registry-url for npm OIDC publish (bda9b03)
  • slash-command-bridge: defer compact to agent_end to prevent spinner hang (27b3edd)
  • tool-display: use raw snake_case for all tool display names (de31c08)
  • update roadmap — mark teams dashboard shipped, rules mostly shipped (7f15de4)
  • deps: bump biome 2.3.15→2.4.2, vscode-jsonrpc 8.2.0→8.2.1 (37f7652)
  • ci: move publish job into release workflow to fix GITHUB_TOKEN event propagation (80e0f78)
  • rewind: use temp GIT_INDEX_FILE to avoid nuking staging area (59e8a23)
  • image-gen: unified image generation tool with auto-routing across OpenAI, Google (Gemini/Imagen), xAI, Black Forest Labs (Flux), and Fal via Vercel AI SDK (7a7a35d)
  • image-gen: quality-based model selection from Arena leaderboard ELO ratings with eco/balanced/premium cost preferences
  • image-gen: dual invocation paths — dedicated image APIs (generateImage) and hybrid LLMs (generateText with image output) handled transparently
  • permissions: Claude Code-compatible Tool(specifier) permission rules with allow/deny/ask tiers, {cwd}/{home}/{project} variable expansion, gitignore-style path conventions, shell operator awareness, and symlink/traversal defense (51ac5dd)
  • permissions: /permissions command for viewing, testing, and reloading rules (f1c79ea)
  • permissions: --allowedTools and --disallowedTools CLI flags at CLI precedence tier (3f63765)
  • permissions: reads .claude/settings.json permission rules for drop-in Claude Code compatibility
  • sdk: load AGENTS.md from installed npm packages (81ceb16)
  • hooks: hook shell commands now respect permission rules (424714b)
  • tui: use full terminal width for inline images (a19ca62)
  • tui: remove hardcoded text truncation in renderCall (594a0d8)
  • tool-display: prefix tool verbs with display label (6acc227)
  • ci: add registry-url for npm OIDC publish (207d9c6)
  • ci: add workflow_dispatch to publish for manual retrigger (2b6f8bd)
  • context-fork: auto-route model when no explicit model specified (6835e22)
  • subagent-tool: add Arena leaderboard refresh script (e7d1cdc)
  • subagent-tool: add modelScope for scoped auto-routing (8d884af)
  • teams-tool: use full model routing for teammate spawning (cb81ecd)
  • address bugs found by bones agent hunt (b33a1c6)
  • bash: auto-backgrounded tasks invisible to task_output (e086369)
  • subagent-tool: show error details in failed parallel results (1170038)
  • sync TALLOW_VERSION with package.json (0.7.1) (5bb1afc)
  • subagent-tool: improve resolver tiebreaking with capability scoring (5951541)
  • add dep-check and matrix-refresh workflows (cdf4726)
  • main: release tallow 0.7.1 (a1104bd)
  • stop tracking AGENTS.md (user-local file) (7591e7f)
  • subagent-tool: add gpt-5.3-codex, spark, and 5.1-codex-max to matrix (11d30a9)
  • treat feat as patch bump while pre-1.0 (646cd71)
  • context-fork: auto-route model when no explicit model specified (6835e22)
  • subagent-tool: add Arena leaderboard refresh script (e7d1cdc)
  • subagent-tool: add modelScope for scoped auto-routing (8d884af)
  • teams-tool: use full model routing for teammate spawning (cb81ecd)
  • test: add E2E profile runner and extension profile definitions (3db96f3)
  • address bugs found by bones agent hunt (b33a1c6)
  • bash: auto-backgrounded tasks invisible to task_output (e086369)
  • resolve 10 bugs found by bones game d3a57b9e0f07 (4de12fb)
  • subagent-tool: show error details in failed parallel results (1170038)
  • sync TALLOW_VERSION with package.json (0.7.1) (5bb1afc)
  • test: clean up tmpHome on error, track session for disposal (bd5ee96)
  • config: parallelize op:// secret resolution with local cache (aeff46d)
  • subagent-tool: improve resolver tiebreaking with capability scoring (5951541)
  • subagent-tool: split 2967-line index.ts into 6 focused modules (80316f2)
  • add dep-check and matrix-refresh workflows (cdf4726)
  • e2e: add extension profile boot, conflict, interop, install, and override tests (c55f369)
  • release 0.7.1 (f819e0b)
  • stop tracking AGENTS.md (user-local file) (7591e7f)
  • subagent-tool: add gpt-5.3-codex, spark, and 5.1-codex-max to matrix (11d30a9)
  • treat feat as patch bump while pre-1.0 (646cd71)
  • test: E2E profile runner and extension profile definitions — creates headless sessions with real bundled extensions loaded by path, matching the production loading path
  • test: 39 E2E tests across 7 files covering profile boot, tool/command conflict detection, EventBus interop wiring, headless install, and user extension override mechanism
  • subagent-tool: split 2967-line index.ts into 6 focused modules (agents, formatting, widget, process, schema) — largest file reduced to 1297 lines with no behavioral changes
  • core: startup with op:// secrets in ~/.tallow/.env reduced from ~9s to ~2s by resolving references in parallel with a local cache (~/.tallow/.env.cache, 1h TTL) instead of sequential synchronous calls
  • extension-harness: EventBus emit now catches per-listener exceptions instead of aborting the entire emit chain
  • extension-harness: sendMessage merges options instead of overwriting
  • extension-harness: getTheme() throws consistently with theme getter
  • extension-harness: replace as never cast with typed as ExtensionAPI['events']
  • tui: fix isKeyRelease/isKeyRepeat docs to match behavior
  • tui: resolve Ctrl+C binding conflict (copy → Ctrl+Shift+C)
  • pid-registry: add file locking around read-modify-write to prevent races
  • mcp-adapter-tool: parseSseResponse now matches response ID to request ID
  • init: wrap renameSync in try-catch for TOCTOU resilience
  • test: clean up tmpHome on error, track session for disposal to prevent resource leaks
  • core: document .env.cache and two-phase secret loading architecture in AGENTS.md and installation guide
  • bash-tool: detect ripgrep and inject rg preference into system prompt (e42fa01)
  • bash: surface output tail in working message during execution (5108631)
  • cli: add —debug flag for debug mode activation (2d1fc32)
  • core: add algorithm-over-LLM guideline to system prompt (984f2aa)
  • core: add atomic file write utility (fca06fd)
  • core: detect output truncation and instruct proactive strategy communication (1da56ab)
  • debug: interactive troubleshooting with debug_inspect tool (4f207bb)
  • hooks: add once: true option for run-once hooks (f961701)
  • hooks: wire all declared-but-unwired lifecycle events (e32e821)
  • mcp-adapter-tool: add SSE and Streamable HTTP transport support (d3e0055)
  • prompt-suggestions: feed conversation history into autocomplete (677fcd7)
  • stats: add per-session and aggregate usage statistics extension (d2e2742)
  • subagent-tool: detect and surface tool permission denials (5c42c43)
  • tallow-expert: auto-regenerate skill reference on pre-commit (5d8a37c)
  • ci: remove dead MODEL_ALIASES import, fix model-dependent tests (235270e)
  • ci: remove leaking mock.module for model-resolver and task-classifier (f0882de)
  • ci: remove leaking node:fs mock, fix test assertions (1531d79)
  • core: use atomic writes for config and state files (86c68ee)
  • extensions: use atomic writes for config and state files (5cf61a9)
  • tui: reduce columns proportionally when height-clamping images (0fbb547)
  • random-spinner: remove scramble-decrypt reveal animation (ce74277)
  • add changelog entries for atomic writes (41ddf56)
  • bump extension count to 48 (08ab0d0)
  • hooks: document once-hook behavior (33124fe)
  • hooks: update event tables, examples, and changelog (2c50e4a)
  • mcp-adapter-tool: update changelog, version, and roadmap (4613a43)
  • bash: add unit tests for progress message helpers (c2ca29f)
  • bump version to 0.7.0 (9ce4afc)
  • debug: add tests for queryLog and analysis utilities (0792afd)
  • hooks: add once-hook state manager tests (c4f5e1d)
  • lint autofix formatting (809e7c6)
  • mcp-adapter-tool: add transport, config, and reconnect tests (af60bc4)
  • prompt-suggestions: add conversation context tests (27edefd)
  • subagent-tool: add denial detection unit tests (2c8d686)
  • hooks: once: true option for hook handlers — runs exactly once then auto-disables, with state persisted to ~/.tallow/hooks-state.json
  • stats: /stats command for per-session and aggregate usage statistics with token counts, costs, tool usage bar charts, model breakdowns, and usage streaks — persisted to ~/.tallow/stats.jsonl
  • core: atomicWriteFileSync utility with write-tmp-then-rename pattern, optional fsync, file mode, and .bak backup support
  • core: restoreFromBackup utility for startup recovery from .bak files with optional content validation
  • core: automatic backup recovery for settings.json and auth.json when primary file is corrupt
  • core: config/state file writes (settings.json, auth.json, keybindings.json, session headers) are now atomic — interrupted writes can no longer corrupt files
  • extensions: theme-selector, skill-commands, pid-registry, and output-styles-tool writes are now atomic
  • tasks: refactored inline write-tmp-then-rename to use shared atomicWriteFileSync utility
  • hooks: wire all declared-but-unwired pi events — before_agent_start, agent_start, turn_end, session_shutdown, session_before_compact, session_compact, session_before_switch, session_switch, session_before_fork, session_fork, session_before_tree, session_tree, context, model_select, and user_bash
  • hooks: subagent_start and subagent_stop events via EventBus, with agent_type matcher field for filtering by agent name
  • hooks: notification event via EventBus for observing notifications
  • hooks: blocking support for session_before_compact, session_before_switch, session_before_fork, and session_before_tree events — hooks can cancel these operations
  • hooks: matcher fields for model_select (source), user_bash (command), and notification (type)
  • mcp-adapter-tool: SSE and Streamable HTTP transport support — connect to remote MCP servers via { "type": "sse", "url": "..." } or { "type": "streamable-http", "url": "..." } in settings.json
  • mcp-adapter-tool: auto-reconnect with exponential backoff (1s/2s/4s, max 3 attempts) for network transports on connection loss
  • mcp-adapter-tool: /mcp command now shows transport type in server status
  • mcp-adapter-tool: config validation for SSE/HTTP (url required) and STDIO (command required) with clear error messages
  • debug: /debug <query> interactive troubleshooting command with debug_inspect tool for model-assisted log analysis
  • debug: log query infrastructure (queryLog()) with category, event type, time range, and free-text search filters
  • debug: analysis utilities — tool timing histograms, error grouping, and turn efficiency metrics
  • docs: wrap extension badges, widen theme swatches on hover (f59e833)
  • add rewind extension and PDF support for read tool (7479265)
  • add wrap option to shared renderLines helper (b32efc2)
  • ask-user: hide Working… loader during question prompt (eb23d41)
  • auth: add secure auth storage with credential references (df233be)
  • auth: remove —api-key CLI flag, use env vars instead (a5edecf)
  • background-task-tool,subagent-tool: inline completion notifications (e73efe3)
  • bash-tool-enhanced,cd-tool: BASH_MAINTAIN_PROJECT_WORKING_DIR setting (58ea016)
  • bash-tool-enhanced: auto-background long-running commands (e51fa92)
  • cli: add —provider, —api-key flags and headless install setup (941d281)
  • cli: add piped stdin support (807c08a)
  • cli: guard against nested interactive sessions (5e49980)
  • context-files: add /add-dir and /clear-dirs commands (aa4ab7d)
  • context-fork: add extension for context: fork frontmatter (14d0824)
  • core: —tools flag to restrict available tools per session (6b7c598)
  • custom-footer: display session name as right-aligned 3rd row (31b346d)
  • debug: add structured diagnostic logging extension (f9de8dd)
  • docs: add favicon from logo (1112730)
  • docs: add interactive theme preview on landing page (bbd54d2)
  • edit-tool-enhanced: add clickable diff link to edit footer (3c10c1b)
  • extensions: agent sandboxing, .claude/ bridging, MCP scoping (d4543dd)
  • file-reference: expand @path patterns in input (890470b)
  • footer: move agent bar from stats line to footer line 3 (1351384)
  • health: wrap diagnostic output in rounded border box (75a1096)
  • icons: add icon registry and settings schema (d1ef9b8)
  • icons: integrate cli-spinners with random and named presets (5a4f5a9)
  • initial commit (7f6ccac)
  • init: offer .claude/ → .tallow/ rename during init (3cc72f4)
  • interop: add typed cross-extension event contracts (0bea701)
  • mcp-adapter-tool: capture and inject server instructions (89819a6)
  • mcp-adapter-tool: resource_link content type support (ddde3b4)
  • mcp-adapter-tool: structured content support in MCP responses (358c94b)
  • progress-indicator: add terminal progress bar extension (173429c)
  • prompt-suggestions: idle ghost text and Groq inline autocomplete (910afeb)
  • random-spinner: add extension manifest and centipede spinner (26edf73)
  • read-tool-enhanced: byte-based image format detection (f212b22)
  • read-tool-enhanced: image dimension metadata in read results (b9d8ec7)
  • session-namer: auto-generate session names via Haiku after first response (750543e)
  • sessions: add per-cwd session migration module (8358055)
  • shared: add extractPreview utility for inline result notifications (8eecab3)
  • shell-interpolation: expand !cmd patterns in input (f9d236e)
  • shell-interpolation: require explicit opt-in by default (95b6df4)
  • shell-policy: add centralized policy and audit trail (2407014)
  • shell: enforce high-risk confirmation for bash tools (a06222d)
  • slash-command-bridge: add slash command bridge extension (4fc11f9)
  • subagent-tool: auto-cheap routing keywords and explore agent (d815a44)
  • subagent-tool: fuzzy model name resolution (880c6b2)
  • subagent-tool: live token usage during execution (5844125)
  • subagent-tool: model capability matrix and task classifier (fff5635)
  • subagent-tool: model inheritance, ephemeral recovery, defaults (b3d435b)
  • subagent-tool: model router with auto-routing and fallback (530ff3a)
  • subagent-tool: wire routing into spawn flow (3c7b59d)
  • subagent: add animated progress indicators to chain mode (bb9680e)
  • subagent: expand shell commands and file refs in task prompts (b0fa788)
  • support icon field in skill frontmatter (5d46375)
  • tallow-tui: add alternate screen terminal support (23e1006)
  • tallow-tui: add OSC 9;4 progress bar support (a8fbd73)
  • tallow-tui: addChangeListener API and darker ghost text (2fade18)
  • tallow-tui: ghost text rendering in Editor component (68fcd63)
  • tasks: clear task list when agent is cancelled mid-work (d9d5356)
  • teams-tool: add live team dashboard workspace (f89f337)
  • teams: archive task lists on shutdown instead of deleting (6a0cbaf)
  • test: add extension harness, mock model, and session runner (2eff5a7)
  • theme-selector: add randomThemeOnStart config (d6147a9)
  • tool-display: add formatToolVerb utility for tense-aware rendering (60a1e60)
  • tools: add clickable file paths via OSC 8 hyperlinks (e269a34)
  • tools: use tense-aware verbs in tool headers and footers (0a4364f)
  • tui fork, cli-spinners, loader hide, health border, upstream check (b251617)
  • tui: add detectImageFormat and imageFormatToMime utilities (79b50ef)
  • tui: add hide/show and HIDE sentinel to Loader (8898850)
  • tui: add ImageMetadata type and dimension formatting (d209b54)
  • tui: add OSC 8 hyperlink utilities (855a015)
  • tui: cap image height, fix warping, add optional borders (a5fa048)
  • tui: clickable images via OSC 8 file:// links (73a151a)
  • tui: fork pi-tui as local package (404531a)
  • tui: make image area itself clickable via OSC 8 (1a5cd2c)
  • web-search-tool: add web search via Brave Search API (242c38d)
  • wezterm-pane-control: add WezTerm pane management tool (e4fa920)
  • wrap long lines in expanded tool output (459c920)
  • ask-user-question: restore loader after user answers (744299e)
  • bg: force full re-render when dismissing /bg viewer (7838f05)
  • ci: build tallow-tui before typecheck and repair context-fork tests (3adfe95)
  • ci: build tallow-tui before unit tests (15cc68b)
  • ci: bump feat commits to minor version, not patch (c756410)
  • ci: remove inline release-type override, fix biome lint errors (6c8b752)
  • ci: resolve biome lint errors in test files (edf70b0)
  • ci: stabilize workflows and make tests CI-safe (d7e9ca1)
  • ci: use workspace protocol for tallow-tui fork (0434ca8)
  • claude-bridge: package-aware collision detection and SKILL.md paths (2b7181c)
  • claude-bridge: skip .claude/skills/ entries that collide with tallow skills (473cdb2)
  • cli: declare -y flag on install command (2c1c167)
  • cli: prefer session name over truncated first message in —list (5e7f028)
  • docs: prevent theme swatch labels from wrapping (ab0fb85)
  • docs: skip _icons from sidebar auto-generation (1db0426)
  • double-guard build step with tsconfig check (4480d88)
  • extensions: show full relative path in file tool headers (351f483)
  • install: remove all build/link calls from installer (31a2954)
  • plan-mode: preserve extension tools across mode transitions (7fbd0b5)
  • preserve ANSI styling through truncation ellipsis (dc22181)
  • prompt-suggestions: use CustomEditor, register Groq, fix autocomplete (340c412)
  • random-spinner: stabilize centipede animation (bc20443)
  • sdk: normalize skill names to directory name (2dd300b)
  • security: move shell interpolation to load-time boundary (8ebf275)
  • session-namer: reject LLM refusals as session names (b096b12)
  • sessions: scope /resume and —list to current project (6cce7f3)
  • shell-policy: harden confirmation handling and risk matching (76882f3)
  • skill-commands: validate and normalize skill names before registration (9abec23)
  • skip build and npm link for npm installs (473ebda)
  • slash-command-bridge: pass CompactOptions callbacks in compact tool (d7d24af)
  • strip all OSC sequences in visibleWidth (058d17f)
  • tasks: animate spinner for team teammate-owned tasks (6c7a4ea)
  • tasks: clear footer and refresh widget on team state changes (0ca5f28)
  • tasks: fallback spinner frames when getSpinner returns null (3d116be)
  • tasks: sharpen task completion instruction (982296c)
  • tasks: validate index param before using it (f563aab)
  • teams: race team_send wait=true against abort signal (301e263)
  • tui: clamp content and fix title width in BorderedBox (2e182dc)
  • tui: handle unterminated OSC sequences and clamp over-wide lines (6c538c2)
  • tui: override pi-tui to use tallow fork for all packages (a54874c)
  • upstream: check devDependencies and combine notifications (e11dd7d)
  • wrap long question text in ask-user-question tool (d129f98)
  • export internal pure functions for testing (5d0f0cd)
  • export testable pure functions from extensions (b21562f)
  • extensions: migrate icons to registry (fcdc2c5)
  • icons: extract random-spinner into standalone extension (3422275)
  • rename web-fetch tool to web_fetch for snake_case consistency (bfef264)
  • session-memory: replace better-sqlite3 with sqlite adapter (8d7c009)
  • session-namer: remove /name command (now built-in) (c750f8f)
  • shell: route git helpers through policy wrapper (22460ca)
  • subagent: rename chain mode to centipede (3f91f91)
  • tasks: consume typed interop snapshots (96e66d6)
  • tasks: split extension into domain modules (b648dd7)
  • teams-tool: replace hardcoded ANSI colors with theme tokens (8e62cdc)
  • teams: split runtime into domain modules (f210fd7)
  • add —tools flag to README, AGENTS.md, and changelog (b6612af)
  • add BASH_MAINTAIN_PROJECT_WORKING_DIR to changelog (5676c90)
  • add changelog page to docs site (933e448)
  • add image metadata and format detection to changelog (6f0f283)
  • add inline agent results to changelog (eb532d8)
  • add MCP server instructions to changelog (3ee6b61)
  • add MCP structured content to changelog (315490c)
  • add npx as alternative install method (170d83b)
  • add piped stdin usage and examples (3a5c80e)
  • add pnpm/bun install alternatives (11e4523)
  • add project roadmap (dadbaac)
  • add prompt-suggestions extension page, update extension counts (4eca65d)
  • add random-spinner and upstream-check pages, update extension docs (c76dd8a)
  • add resource_link support to changelog (620e076)
  • add screenshot to README (b880700)
  • add session-namer documentation and changelog entry (4a272e8)
  • add web-search-tool docs page and update extension count to 46 (7de46bc)
  • add wezterm pane control docs and refresh extension counts (6f3d843)
  • changelog: add debug, shell interpolation, file reference entries (09d7a9a)
  • changelog: cut 0.2.0 and 0.3.0 release sections (9742686)
  • changelog: document shell-policy confirmation fix (1a5f608)
  • changelog: normalize release heading format (aec44cf)
  • changelog: note interop events migration (fa724c3)
  • changelog: note tasks and teams module decomposition (29c8434)
  • clean changelog and refresh homepage feature listings (42d1081)
  • edit-tool-enhanced: document diff link and WezTerm handler (bec58c7)
  • fix /question description — introspection, not codebase Q&A (5e52ec9)
  • fix drift across README, extension docs, and changelog (87d830b)
  • fix drift across README, ROADMAP, and docs site (1d67f81)
  • fix npm→bun drift and add docs impact checklist (9848bed)
  • fix stale counts in README and theme-selector metadata (a323c0f)
  • icons: add icon configuration docs (9587fe2)
  • intro: lead with tallow, update stale counts (bc7a9b0)
  • make extension chips fully clickable and non-wrapping (e9f7971)
  • normalize changelog format and remove duplicate 0.5.0 entry (f86a6d0)
  • prefer rebase merge for PRs (78e725b)
  • rewrite tallow-expert skill with accurate API surface (3b213d5)
  • subagent-tool: document inheritance, recovery, and defaults (332051c)
  • sync changelog and docs with latest shipped features (f0c3ccb)
  • teams-tool: document dashboard controls and shortcuts (496d0c4)
  • update changelog and extension counts for v0.2.0 (045d661)
  • update contributor commands to bun (5ab760e)
  • update documentation for plans 08-13 (2160961)
  • update extension counts to 45 (946a155)
  • use npx tallow install in README (2c8223a)
  • add 160 tests across high-risk extensions (ae83713)
  • add docs-drift checker to CI pipeline (2e3b68a)
  • add integration and TUI snapshot tests (ebe25ab)
  • add justfile with common dev recipes (20b1d54)
  • add missing justfile recipes (f2f4576)
  • architecture: add module boundary and size guards (6a66dff)
  • bump version to 0.2.0 (8354cd2)
  • bump version to 0.3.0 (452df6c)
  • ci: make nested guard test deterministic in headless envs (c1e27f7)
  • cli: add nested session guard integration tests (1d810e6)
  • cli: add piped stdin integration tests (99a38a1)
  • docs: add favicon, description, and og:image meta (bb64725)
  • edit-tool-enhanced: add diff link unit tests (357b3e2)
  • extensions: add unit tests for pure functions (d94c67f)
  • gitignore .sidecar/ (ce9fa00)
  • git: ignore ROADMAP.md (aac90bd)
  • gitignore: ignore local keymap report (d760bc5)
  • interop: add cross-extension state-flow coverage (aa040e8)
  • main: release 0.4.0 (#1) (259c9e2)
  • main: release 0.5.0 (#2) (e969261)
  • make bun the canonical package manager (d9f775a)
  • migrate tallow-tui fork to workspace protocol (03beed8)
  • plan-mode: add e2e for tool availability across mode transitions (bfb812a)
  • prompt-suggestions: extract AutocompleteEngine, add 26 unit tests (4bfa93e)
  • release v0.5.0 (a65184f)
  • release: trigger release workflow (1e3a1a8)
  • run install and checks with bun only (f7c5b16)
  • security: verify shell commands not expanded on agent strings (810120e)
  • shell-policy: add confirmation flow integration coverage (1ca275a)
  • tallow-tui: add 7 tests for Editor.addChangeListener (a785d97)
  • tallow-tui: add unit tests for core utilities (159dd38)
  • tasks: add runtime and state/ui coverage (0aa733c)
  • tasks: add shouldClearOnAgentEnd unit tests (528f8c6)
  • teams: add runtime wiring integration coverage (ec5d06e)
  • teams: add team_send wait=true cancellation tests (91eede8)
  • prompt-suggestions: ghost text suggestions in the editor — curated idle templates when input is empty (Enter to accept), plus LLM-powered inline autocomplete as you type (Tab to accept). Uses Groq Llama 3.1 8B by default ($0.05/M tokens). Configurable model, debounce, and per-session cost cap
  • tallow-tui: setGhostText() / getGhostText() on Editor component for inline suggestion rendering; added to EditorComponent interface
  • core: --tools CLI flag to restrict available tools per session — supports individual names (read,bash,edit), presets (readonly, coding, none), and validates with clear error messages
  • bash-tool-enhanced: BASH_MAINTAIN_PROJECT_WORKING_DIR setting — resets bash execution to the project root before each command, preventing directory drift from cd tool calls
  • cd-tool: warning when BASH_MAINTAIN_PROJECT_WORKING_DIR is enabled, noting that bash commands still run from the project root
  • mcp-adapter-tool: server instructions support — captures instructions from MCP initialize responses and injects them into the system prompt before tool listings, giving servers a way to declare usage guidance
  • mcp-adapter-tool: structured content support — handles resource and annotated content types from MCP servers, with safe fallback serialization for unknown types
  • mcp-adapter-tool: resource_link content type — renders fetchable resource pointers with URI, MIME type, and description as readable text references
  • tui: ImageMetadata type, createImageMetadata(), and formatImageDimensions() for tracking original vs display dimensions when images are resized before API upload
  • tui: detectImageFormat(buffer) and imageFormatToMime() utilities for identifying PNG/JPEG/GIF/WebP from file header magic numbers without external dependencies
  • read-tool-enhanced: image dimension metadata — captures original and display dimensions, format, and file size when reading images; shows compact summary like image.png (PNG, 3840×2160 → 1920×1080, 245KB)
  • read-tool-enhanced: byte-based image format detection — reads first 12 bytes to identify images regardless of file extension, complementing the base tool’s file-type detection
  • background-task-tool: inline completion notifications for fire-and-forget background tasks — shows status icon, exit code, duration, and 3-line output preview as a chat message when background: true tasks complete
  • subagent-tool: inline completion notifications for background subagents — shows agent name, duration, and 3-line response preview when background subagents finish
  • background-task-tool: /toggle-inline-results command to enable/disable inline result notifications (persists to settings.json, enabled by default)
  • core: piped stdin support — cat file.md | tallow reads stdin and enters print mode automatically, combinable with -p for context + prompt workflows, with 10 MB size limit and JSON mode support
  • subagent-tool: auto-cheap/auto-premium routing keywords for agent frontmatter — set model: auto-cheap to force eco routing without picking a specific model, integrates with existing cost preference and per-call hints
  • agents: bundled explore agent for cheap codebase discovery — uses auto-cheap routing, read-only tools (read/grep/find/ls), and a 5-turn budget for economical exploration tasks
  • bash-tool-enhanced: auto-background long-running commands after configurable timeout (default 30s) — promotes to background-task-tool with seamless output handoff and task_kill support
  • subagent-tool: live token usage display during subagent execution — per-agent counters update in real-time for single, parallel, and centipede modes with 500ms throttled updates
  • context-files: /add-dir command to register additional directories for context file discovery, with /clear-dirs to reset
  • progress-indicator: terminal progress bar via OSC 9;4 during agent turns, with indeterminate mode for pulsing tab/title bar indicators
  • tallow-tui: setProgress(percent) and clearProgress() methods on Terminal interface for OSC 9;4 progress bar support with 100ms throttling
  • context-files: @import directives — parse @path/to/file.md in context files with recursive resolution, circular import detection, and depth limiting
  • context-files: scan .tallow/rules/, .claude/rules/, and ~/.tallow/rules/ for .md/.txt rule files
  • health: /doctor validation — 7 diagnostic checks (model, auth, context, tools, Node version, settings, project context) with actionable suggestions
  • sdk: inject model identity into system prompt so non-Claude models don’t confabulate their identity
  • core: PID file manager for orphan process cleanup on startup and shutdown
  • background-task-tool: track spawned PIDs via shared registry for orphan cleanup
  • core: unconditional fatal error handlers (uncaughtException, unhandledRejection)
  • deps: upgrade pi framework 0.52.9 → 0.52.12
  • deps: bump @biomejs/biome 2.3.14 → 2.3.15, @types/node 25.2.2 → 25.2.3
  • tallow-tui: replace inputMiddleware with upstream inputListeners API
  • tallow-tui: adopt upstream crash logging for width overflow
  • tui: stop horizontal compression when height-clamping images — keep full width and clip at the bottom instead
  • tui: remove artificial max width cap on images
  • background-task-tool: clean up stream listeners on task completion to prevent memory leaks
  • lsp: send proper shutdown/exit sequence before killing language servers
  • mcp-adapter-tool: shorten init timeout 30s → 10s with improved error messages
  • hooks: surface hook blocks with visible error notifications
  • plan-mode-tool: add user feedback when commands are blocked, plan is kept, or refinement editor is dismissed
  • core: handle SIGTERM/SIGINT and EIO/EPIPE for clean shutdown
  • health: handle nullable ContextUsage.tokens and .percent after pi 0.52.12
  • context-usage: guard against null usage.tokens in arithmetic calculations
  • lint: resolve all pre-existing biome warnings across the codebase
  • hooks: document shell:true injection risk and mitigation plan
  • AGENTS.md: prefer rebase merge for PRs
  • subagent-tool: model inheritance — subagents inherit the parent session model by default (per-call > agent frontmatter > parent model)
  • subagent-tool: missing-agent recovery — unknown agent names resolve via fuzzy best-match or ephemeral fallback instead of hard errors
  • subagent-tool: _defaults.md frontmatter files in agent directories for configurable fallback tools, maxTurns, mcpServers, and missingAgentBehavior
  • subagent-tool: resolveProjectRoot() anchors project agent discovery to git root (falls back to cwd), replacing the previous ancestor-walk behavior
  • tool-display: wrap option on renderLines — expanded tool output now soft-wraps long lines instead of truncating
  • wezterm-pane-control: WezTerm pane management tool (split, close, focus, zoom, resize, send/read text, spawn tabs)
  • tallow-tui: alternate screen terminal support
  • teams: dashboard workspace with live task/teammate/message view, /team-dashboard command, Ctrl+X toggle, and keyboard navigation
  • shell-policy: centralized shell execution policy with audit trail, trust levels, and allowlist enforcement
  • shell: enforce high-risk confirmation for interactive bash tool calls
  • interop: typed cross-extension event contracts (interop.v1.*) with schema-versioned payload validation
  • auth: secure credential storage with environment variable references, replacing --api-key CLI flag
  • ci: docs-drift checker in CI pipeline
  • tests: 160+ new tests across high-risk extensions (shell-policy, interop, tasks, teams, architecture guards)
  • subagent-tool: project-local agents now run without confirmation prompts; confirmProjectAgents parameter deprecated (kept for compatibility, ignored)
  • extensions: replace cross-extension globalThis state coupling with typed pi.events contracts and schema-versioned payload validation
  • tasks/teams-tool: split oversized index.ts modules into thin composition roots with extracted domain modules
  • shell-interpolation: require explicit opt-in by default
  • teams: refine dashboard visuals with per-team personality markers, model labels, and live per-agent token meters
  • Bun is now the canonical package manager
  • tallow-tui: truncation ellipsis () now inherits ANSI styling instead of resetting to default background
  • shell-policy: harden confirmation handling for high-risk commands; interrupted/canceled dialogs correctly treated as denied
  • ci: stabilize workflows — build tallow-tui before typecheck/tests, make nested guard tests deterministic in headless environments
  • rewind: /rewind extension for undoing file changes to a previous turn
  • read tool: PDF support via page range parameter
  • context-fork: context: fork frontmatter for context branching
  • tui: fork pi-tui as local package for direct modification
  • tui: cap image height, fix Kitty warping, add optional rounded borders
  • tui: clickable images and file paths via OSC 8 hyperlinks
  • tui: Loader hide/show with HIDE sentinel
  • health: wrap /health output in rounded border box
  • icons: cli-spinners integration with random and named presets
  • init: offer .claude/.tallow/ rename during tallow init
  • session-namer: auto-generate session names via Haiku after first response
  • sessions: per-cwd session migration module
  • custom-footer: display session name as right-aligned 3rd row
  • footer: move agent bar from stats line to footer line 3
  • ask-user: hide Working… loader during question prompt
  • edit-tool-enhanced: clickable diff link in edit footer
  • extensions: agent sandboxing, .claude/ bridging, MCP scoping
  • cli: guard against nested interactive sessions
  • theme-selector: randomThemeOnStart config option
  • test: extension harness, mock model, and session runner
  • tasks: clear task list when agent is cancelled mid-work
  • Support icon field in skill frontmatter
  • tui: clamp content and fix title width in BorderedBox
  • tui: handle unterminated OSC sequences and clamp over-wide lines
  • tui: override pi-tui to use tallow fork for all packages
  • claude-bridge: package-aware collision detection and SKILL.md paths
  • cli: prefer session name over truncated first message in --list
  • sessions: scope /resume and --list to current project
  • sdk: normalize skill names to directory name
  • skill-commands: validate and normalize skill names before registration
  • security: move shell interpolation to load-time boundary
  • tasks: animate spinner for team teammate-owned tasks
  • tasks: clear footer and refresh widget on team state changes
  • tasks: fallback spinner frames when getSpinner returns null
  • tasks: validate index param before using it
  • teams: race team_send wait=true against abort signal
  • upstream: check devDependencies and combine notifications
  • ask-user-question: restore loader after user answers
  • Strip all OSC sequences in visibleWidth
  • Wrap long question text in ask-user-question tool
  • Debug mode — structured JSONL diagnostic logging to ~/.tallow/debug.log
    • Activate via --debug flag, TALLOW_DEBUG=1 env, or NODE_ENV=development
    • Logs tool timings, turn boundaries, model changes, subagent events, errors
    • /diagnostics command for viewing, toggling, tailing, and clearing the log
    • Zero-cost when disabled — no file I/O or object allocation
  • Shell interpolation — expand !`command` patterns in input by executing shell commands and inlining stdout. CC-compatible syntax. 5s timeout, 1MB max output, non-recursive
  • File references — expand @path/to/file patterns in input by reading files and inlining contents in fenced code blocks. CC-compatible syntax. Skips emails, fenced code blocks, directories, and binary files. 100KB truncation
  • Subagent input expansion — subagent task prompts now expand both !`cmd` and @file patterns before spawning
  • Team archive and resumeteam_shutdown, Escape, and session end now archive teams instead of deleting them. team_resume restores archived teams with their full task board, results, and messages
  • User-configurable icons — override TUI glyphs via icons in settings.json
    • 13 icon keys with getIcon() and getSpinner() helpers
    • Migrated all 17 extensions from hardcoded literals to registry lookups
    • JSON Schema for settings.json with $schema for IDE autocompletion
  • Subagent UI — animated progress indicators for chain mode (spinner while running, checkmark/X on completion). Agent prose uses subdued color to recede behind structural elements.
  • CLI flags--provider and --api-key for headless startup without interactive prompts. Install command gains --default-provider, --default-model, --api-key, --theme, and --thinking flags.
  • Plan mode — extension tools now preserved across mode transitions instead of being dropped when toggling plan mode on/off.
  • Initial release
  • 30+ bundled extensions (enhanced tools, hooks, tasks, teams, LSP, themes, and more)
  • 34 terminal color themes
  • 8 slash commands (/implement, /review, /fix, /test, /scout-and-plan, /scaffold, /question)
  • 8 specialized agents (architect, debug, planner, refactor, reviewer, scout, worker, tallow-expert)
  • Multi-agent teams with task boards and messaging
  • SDK for programmatic usage (createTallowSession)
  • Interactive installer (tallow install)
  • CLI with print mode, RPC mode, and session management