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.
[Unreleased]
Section titled “[Unreleased]”- sdk: context-budget guardrails with per-turn planner envelopes, ingestion-time tool-result truncation, and deterministic unknown-usage fallback
- web-fetch-tool: adaptive
maxBytesresolution from planner envelopes, policy bounds, and user-specified hard upper bounds - integration: context-budget guard integration coverage for batched
web_fetchcalls and envelope lifecycle reset between turns
Changed
Section titled “Changed”- sdk: inject per-turn context budget status line into the system prompt
- sdk: preserve historical
toolResultRetentionbehavior while adding same-turn ingestion safeguards
Documentation
Section titled “Documentation”- context-usage: document
contextBudgetsettings and budget signal semantics - web-fetch-tool: document adaptive cap rules, fallback behavior, and diagnostic detail fields
0.8.14 (2026-02-26)
Section titled “0.8.14 (2026-02-26)”- ci: add workflow to configure Sonar quality gate (02e2f2a)
- ci: stabilize Sonar baseline after releases (828934f)
Documentation
Section titled “Documentation”- pr-template: require explicit gh pr checks before merge (65379ae)
0.8.13 (2026-02-26)
Section titled “0.8.13 (2026-02-26)”- ci: resolve audit critical and lint formatting failure (c661bc6)
0.8.12 (2026-02-26)
Section titled “0.8.12 (2026-02-26)”- sdk: guard optional pi-tui image path helper (05d5b96)
Maintenance
Section titled “Maintenance”- core: add unit tests for auth-hardening, config, process-cleanup, startup-timing (ef6e91e)
- deps: bump pi-* dependencies (0b6099e)
0.8.11 (2026-02-25)
Section titled “0.8.11 (2026-02-25)”- bash: use process.cwd() at execution time instead of stale closure (c57e731)
0.8.10 (2026-02-25)
Section titled “0.8.10 (2026-02-25)”- 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)
Changed
Section titled “Changed”- lsp: extract shared helpers to reduce code duplication (a12eada)
- subagent: remove dead initial assignment (d9b906f)
Documentation
Section titled “Documentation”- replace Aliases page with comprehensive Slash Commands reference (56a328a)
- session-memory: update roadmap — hippo for memories, QMD evaluation (fb7218c)
Maintenance
Section titled “Maintenance”- 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)
0.8.9 (2026-02-23)
Section titled “0.8.9 (2026-02-23)”- slash-command-bridge: auto-continue after model-triggered compaction (9776a16)
Documentation
Section titled “Documentation”- readme: remove images for now (f52a474)
Maintenance
Section titled “Maintenance”0.8.8 (2026-02-22)
Section titled “0.8.8 (2026-02-22)”- 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)
Changed
Section titled “Changed”- paths: centralize tallow home and settings resolution (188b47c)
Documentation
Section titled “Documentation”- 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)
Maintenance
Section titled “Maintenance”- read-tool-enhanced: cover notebook parsing and read integration (2c6e95d)
0.8.7 (2026-02-22)
Section titled “0.8.7 (2026-02-22)”- 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)
Changed
Section titled “Changed”- 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)
Documentation
Section titled “Documentation”- 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)
Maintenance
Section titled “Maintenance”- 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)
[Unreleased]
Section titled “[Unreleased]”- 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
.ipynbnotebooks 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/--worktreesupport
Changed
Section titled “Changed”- 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.startupTimeoutMswith 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
Documentation
Section titled “Documentation”- agents: add extension startup policy guidance for minimal
session_starthandlers and shared lazy initialization - permissions: add allow/ask/deny reason examples with redaction behavior
0.8.6 (2026-02-20)
Section titled “0.8.6 (2026-02-20)”- wezterm-notify: add WezTerm turn-status integration (5d0e671)
- stabilize claude bridge skill path ordering (608afd0)
Documentation
Section titled “Documentation”0.8.5 (2026-02-20)
Section titled “0.8.5 (2026-02-20)”- 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)
Changed
Section titled “Changed”- 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)
Documentation
Section titled “Documentation”- 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)
Maintenance
Section titled “Maintenance”- 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)
0.8.4 (2026-02-19)
Section titled “0.8.4 (2026-02-19)”- 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)
Documentation
Section titled “Documentation”- 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)
Maintenance
Section titled “Maintenance”0.8.3 (2026-02-18)
Section titled “0.8.3 (2026-02-18)”- address remaining CodeQL alerts (c7e8259)
- reject shell metacharacters in command references (b178d23)
0.8.2 (2026-02-18)
Section titled “0.8.2 (2026-02-18)”Maintenance
Section titled “Maintenance”- codeql: exclude test directories from analysis (9c102eb)
0.8.1 (2026-02-18)
Section titled “0.8.1 (2026-02-18)”- 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)
Maintenance
Section titled “Maintenance”- security: add Semgrep, CodeQL, SonarCloud, and dependency audit (e0c3548)
0.8.0 (2026-02-18)
Section titled “0.8.0 (2026-02-18)”⚠ BREAKING CHANGES
Section titled “⚠ BREAKING CHANGES”- namespace package as @dungle-scrubs/tallow
- namespace package as @dungle-scrubs/tallow (310af1d)
- core: revert package name to unscoped ‘tallow’ (e6caff6)
0.7.7 (2026-02-18)
Section titled “0.7.7 (2026-02-18)”- 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)
Changed
Section titled “Changed”- subagent: extract model resolver, router, and matrix to @dungle-scrubs/synapse (61932f2)
- web-fetch: remove Firecrawl fallback and JS detection (8fa22c7)
Documentation
Section titled “Documentation”Maintenance
Section titled “Maintenance”- ci: remove redundant publish.yml — release.yml handles OIDC publish (07f7110)
[Unreleased]
Section titled “[Unreleased]”- core:
IS_DEMO/TALLOW_DEMOenv var and--demoCLI 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()andsanitizePath()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 nestedCLAUDE.md→AGENTS.mdmigration in/init - trust: per-project trust store with config fingerprinting and
/trust-project,/untrust-project,/trust-statuscommands - startup: add
startupProfile(interactive/headless) session option, headless UI-extension skip policy, andTALLOW_STARTUP_TIMINGmetrics for create-session, bind-extensions, and first-token
Changed
Section titled “Changed”- subagent: extract model resolver, router, and matrix to
@dungle-scrubs/synapse - subagent: surface
routingsettings (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/diagnosticscapability-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
isErrorflag 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.jsonso 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, andminimatchvia 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.jsonplugin 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
stalledsubagent status through interop snapshots and widget rendering with explicit running/stalled labels
Documentation
Section titled “Documentation”- 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
Removed
Section titled “Removed”- image-gen: remove image-gen extension (moved to external plugin)
Maintenance
Section titled “Maintenance”- ci: remove redundant
publish.yml—release.ymlhandles OIDC publish
0.7.6 (2026-02-17)
Section titled “0.7.6 (2026-02-17)”- 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)
Changed
Section titled “Changed”- tool-display: use raw snake_case for all tool display names (de31c08)
Documentation
Section titled “Documentation”- update roadmap — mark teams dashboard shipped, rules mostly shipped (7f15de4)
Maintenance
Section titled “Maintenance”- deps: bump biome 2.3.15→2.4.2, vscode-jsonrpc 8.2.0→8.2.1 (37f7652)
0.7.5 (2026-02-17)
Section titled “0.7.5 (2026-02-17)”- 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)
0.7.4 (2026-02-17)
Section titled “0.7.4 (2026-02-17)”- 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 (generateTextwith image output) handled transparently - permissions: Claude Code-compatible
Tool(specifier)permission rules withallow/deny/asktiers,{cwd}/{home}/{project}variable expansion, gitignore-style path conventions, shell operator awareness, and symlink/traversal defense (51ac5dd) - permissions:
/permissionscommand for viewing, testing, and reloading rules (f1c79ea) - permissions:
--allowedToolsand--disallowedToolsCLI flags at CLI precedence tier (3f63765) - permissions: reads
.claude/settings.jsonpermission 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)
Changed
Section titled “Changed”- tool-display: prefix tool verbs with display label (6acc227)
0.7.3 (2026-02-17)
Section titled “0.7.3 (2026-02-17)”- ci: add registry-url for npm OIDC publish (207d9c6)
- ci: add workflow_dispatch to publish for manual retrigger (2b6f8bd)
0.7.2 (2026-02-17)
Section titled “0.7.2 (2026-02-17)”- 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)
Changed
Section titled “Changed”- subagent-tool: improve resolver tiebreaking with capability scoring (5951541)
Maintenance
Section titled “Maintenance”- 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)
0.7.1 (2026-02-17)
Section titled “0.7.1 (2026-02-17)”- 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)
Changed
Section titled “Changed”- 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)
Maintenance
Section titled “Maintenance”- 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)
[Unreleased]
Section titled “[Unreleased]”[0.7.1] - 2026-02-16
Section titled “[0.7.1] - 2026-02-16”- 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
Changed
Section titled “Changed”- 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/.envreduced 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 nevercast with typedas 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
Documentation
Section titled “Documentation”- core: document
.env.cacheand two-phase secret loading architecture in AGENTS.md and installation guide
0.7.0 (2026-02-16)
Section titled “0.7.0 (2026-02-16)”- 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: trueoption 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)
Changed
Section titled “Changed”- random-spinner: remove scramble-decrypt reveal animation (ce74277)
Documentation
Section titled “Documentation”- 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)
Maintenance
Section titled “Maintenance”- 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)
[0.7.0] - 2026-02-16
Section titled “[0.7.0] - 2026-02-16”- hooks:
once: trueoption for hook handlers — runs exactly once then auto-disables, with state persisted to~/.tallow/hooks-state.json - stats:
/statscommand 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:
atomicWriteFileSyncutility with write-tmp-then-rename pattern, optional fsync, file mode, and.bakbackup support - core:
restoreFromBackuputility for startup recovery from.bakfiles with optional content validation - core: automatic backup recovery for
settings.jsonandauth.jsonwhen 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
atomicWriteFileSyncutility
- 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, anduser_bash - hooks:
subagent_startandsubagent_stopevents via EventBus, withagent_typematcher field for filtering by agent name - hooks:
notificationevent via EventBus for observing notifications - hooks: blocking support for
session_before_compact,session_before_switch,session_before_fork, andsession_before_treeevents — hooks can cancel these operations - hooks: matcher fields for
model_select(source),user_bash(command), andnotification(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:
/mcpcommand 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 withdebug_inspecttool 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
0.6.1 (2026-02-15)
Section titled “0.6.1 (2026-02-15)”- docs: wrap extension badges, widen theme swatches on hover (f59e833)
0.6.0 (2026-02-15)
Section titled “0.6.0 (2026-02-15)”- 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 !
cmdpatterns 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)
Changed
Section titled “Changed”- 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)
Documentation
Section titled “Documentation”- 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)
Maintenance
Section titled “Maintenance”- 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)
[0.6.0-pre] - 2026-02-15
Section titled “[0.6.0-pre] - 2026-02-15”- 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 toEditorComponentinterface - core:
--toolsCLI 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_DIRsetting — resets bash execution to the project root before each command, preventing directory drift fromcdtool calls - cd-tool: warning when
BASH_MAINTAIN_PROJECT_WORKING_DIRis enabled, noting that bash commands still run from the project root - mcp-adapter-tool: server instructions support — captures
instructionsfrom 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
resourceand annotated content types from MCP servers, with safe fallback serialization for unknown types - mcp-adapter-tool:
resource_linkcontent type — renders fetchable resource pointers with URI, MIME type, and description as readable text references - tui:
ImageMetadatatype,createImageMetadata(), andformatImageDimensions()for tracking original vs display dimensions when images are resized before API upload - tui:
detectImageFormat(buffer)andimageFormatToMime()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-typedetection - 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: truetasks 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-resultscommand to enable/disable inline result notifications (persists to settings.json, enabled by default) - core: piped stdin support —
cat file.md | tallowreads stdin and enters print mode automatically, combinable with-pfor context + prompt workflows, with 10 MB size limit and JSON mode support - subagent-tool:
auto-cheap/auto-premiumrouting keywords for agent frontmatter — setmodel: auto-cheapto force eco routing without picking a specific model, integrates with existing cost preference and per-call hints - agents: bundled
exploreagent for cheap codebase discovery — usesauto-cheaprouting, 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-dircommand to register additional directories for context file discovery, with/clear-dirsto 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)andclearProgress()methods on Terminal interface for OSC 9;4 progress bar support with 100ms throttling - context-files:
@importdirectives — parse@path/to/file.mdin 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:
/doctorvalidation — 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)
Changed
Section titled “Changed”- deps: upgrade pi framework 0.52.9 → 0.52.12
- deps: bump
@biomejs/biome2.3.14 → 2.3.15,@types/node25.2.2 → 25.2.3 - tallow-tui: replace
inputMiddlewarewith upstreaminputListenersAPI - 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.tokensand.percentafter pi 0.52.12 - context-usage: guard against null
usage.tokensin arithmetic calculations - lint: resolve all pre-existing biome warnings across the codebase
Documentation
Section titled “Documentation”- hooks: document
shell:trueinjection risk and mitigation plan - AGENTS.md: prefer rebase merge for PRs
0.5.0 (2026-02-14)
Section titled “0.5.0 (2026-02-14)”- 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.mdfrontmatter files in agent directories for configurable fallbacktools,maxTurns,mcpServers, andmissingAgentBehavior - subagent-tool:
resolveProjectRoot()anchors project agent discovery to git root (falls back to cwd), replacing the previous ancestor-walk behavior - tool-display:
wrapoption onrenderLines— 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-dashboardcommand,Ctrl+Xtoggle, 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-keyCLI flag - ci: docs-drift checker in CI pipeline
- tests: 160+ new tests across high-risk extensions (shell-policy, interop, tasks, teams, architecture guards)
Changed
Section titled “Changed”- subagent-tool: project-local agents now run without confirmation prompts;
confirmProjectAgentsparameter deprecated (kept for compatibility, ignored) - extensions: replace cross-extension
globalThisstate coupling with typedpi.eventscontracts and schema-versioned payload validation - tasks/teams-tool: split oversized
index.tsmodules 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
0.4.0 (2026-02-13)
Section titled “0.4.0 (2026-02-13)”- rewind:
/rewindextension for undoing file changes to a previous turn - read tool: PDF support via page range parameter
- context-fork:
context: forkfrontmatter for context branching - tui: fork
pi-tuias 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
/healthoutput in rounded border box - icons: cli-spinners integration with random and named presets
- init: offer
.claude/→.tallow/rename duringtallow 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:
randomThemeOnStartconfig 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
/resumeand--listto 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_sendwait=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
0.3.0 (2026-02-11)
Section titled “0.3.0 (2026-02-11)”- Debug mode — structured JSONL diagnostic logging to
~/.tallow/debug.log- Activate via
--debugflag,TALLOW_DEBUG=1env, orNODE_ENV=development - Logs tool timings, turn boundaries, model changes, subagent events, errors
/diagnosticscommand for viewing, toggling, tailing, and clearing the log- Zero-cost when disabled — no file I/O or object allocation
- Activate via
- 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/filepatterns 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@filepatterns before spawning - Team archive and resume —
team_shutdown, Escape, and session end now archive teams instead of deleting them.team_resumerestores archived teams with their full task board, results, and messages - User-configurable icons — override TUI glyphs via
iconsin settings.json- 13 icon keys with
getIcon()andgetSpinner()helpers - Migrated all 17 extensions from hardcoded literals to registry lookups
- JSON Schema for settings.json with
$schemafor IDE autocompletion
- 13 icon keys with
Changed
Section titled “Changed”- 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.
0.2.0 (2026-02-11)
Section titled “0.2.0 (2026-02-11)”- CLI flags —
--providerand--api-keyfor headless startup without interactive prompts. Install command gains--default-provider,--default-model,--api-key,--theme, and--thinkingflags.
- Plan mode — extension tools now preserved across mode transitions instead of being dropped when toggling plan mode on/off.
0.1.0 (2026-02-11)
Section titled “0.1.0 (2026-02-11)”- 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