Releases: diegopetrucci/the-last-harness
Release list
v0.39.0
Added
- pi-transcribe is now bundled by default.
~/.claude/skillsand project.claude/skillsskills are now read.- Bundled the
/show-meskill for visual explanations with diagrams, code-shape sketches, and focused HTML artifacts. - [Beta] OpenRouter is now supported as a primary provider.
- Installation should be faster.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.39.0/CHANGELOG.md
v0.38.1
Fixed
- Fixed async subagent widgets that could show stale activity or health warnings after continuing a run.
- Update-available warnings now reappear on every interactive launch until the release is installed.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.38.1/CHANGELOG.md
v0.38.0
Added
- At launch, TLH now shows what’s eating up your context.
- TLH now warns you if a provider you've logged in with needs you to re-authenticate.
- The
/annotate-last-messagewindow is now prettier because it renders Markdown and includes other niceties. - Changing
/model,/thinking, or/effortnow asks you whether it should apply to only that session, or to all sessions. - TLH now bundles skills for using Herdr, Cmux, and Tmux.
Changed
/fastnow supports both OpenAI and Anthropic models.- Bumped the pinned Pi runtime to
0.84.2. - Various improvements to how subagents look in the TUI, and how they report issues to the primary agents.
- The installer's default output is now more concise.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.38.0/CHANGELOG.md
v0.37.0
Model defaults
repo-scout,web-scout,librarian, anddiff-summarizernow usegpt-5.6-luna medium, instead ofgpt-5.4-mini high.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.37.0/CHANGELOG.md
v0.36.0
Added
- When TLH ships changes in the default models/thinking levels, it now offers the user to
/reconcilethem. - Bumped Pi to
0.84.1.
Removed
- Removed a lot of dead schemas, tools, code, etc. TLH is now using even fewer tokens per run.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.36.0/CHANGELOG.md
v0.35.0
Added
- While a subagent is reasoning (no active tool), the live-progress display now shows a whimsical phrase from a pool of ~200 entries.
Fixed
- I believe Pi has a bug causing some unnecessary
cache misss. We can't fix it, but we can work around it with a tiny fake message from subagents to the primary agent. You will start seeing a one-line message after subagent completion because of it.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.35.0/CHANGELOG.md
v0.34.0
Added
- You can now more easily edit subagent models/effort via the built-in
/subagent-settingscommand. I believe TLH offers the best defaults, but you should be able to tweak them as you wish. - TLH now sends provider/model/effort of the session's primary + secondary agents in a single, anonymous, event at launch. Opt-out.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.34.0/CHANGELOG.md
v0.33.0
Fixed
- Architect steering of async child runs now actually works at runtime.
- The
librariansubagent tool budget was raised from soft 20 / hard 30 to soft 30 / hard 60 so external GitHub research tasks are less likely to end early on budget exhaustion. - The architect cleanup guidance now spells out how to delete
tktickets.
Minor details
tlh updatenow automatically reclaims disk space left behind by retired bundled extensions.
Removed
- Removed the
waittool (extensions/subagents/src/runs/background/wait.ts, 390 LOC) and all wiring:WaitParamsSchema/WaitParamsfromschemas.ts,WaitToolConfigObject/WaitToolConfig/waitToolconfig field fromtypes.ts, and thewaitToolConfigconst pluspi.registerTool(waitTool)call fromindex.ts. Removed thewaitsection fromdocs/subagents.md. This is a user-visible removal for any non-TLH consumer; TLH could not reach the tool (TLH's primary-agent tool allowlist excludes it, no TLH agent declares it, TLH never setsconfig.waitToolorPI_SUBAGENT_WAIT_TOOL_ENABLED). Test deletions:wait.test.ts(whole file) and exactly oneit()inindex-child-registration.test.ts. - Removed the
mcpDirectToolsallowlist resolver (extensions/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts, 365 LOC) and themcpDirectTools?: string[]frontmatter field threading from all call-site files: no TLH agent declares the field. Kept:env.MCP_DIRECT_TOOLS = "__none__"is still set unconditionally inpi-args.ts; the sentinel tells@diegopetrucci/pi-mcp-adapter(bundled in TLH) not to bootstrap direct MCP tools in child subagents — an unset var means "bootstrap everything configured" and would silently widen every child's tool surface. This sentinel must not be removed by a future cleanup pass. - Removed the
agent-memorymodule (extensions/subagents/src/agents/agent-memory.ts) and its test (extensions/subagents/test/unit/agent-memory.test.ts): no TLH agent declares thememoryfrontmatter field, and TLH is the only consumer. TheAgentMemoryScopetype,AgentMemoryConfiginterface, andmemoryfield are removed fromAgentConfig; thebuildAgentMemoryInjectioncall sites are removed fromexecution.tsandasync-execution.ts. - Removed the subagent RPC bridge (
extensions/subagents/src/extension/rpc.ts, 384 LOC) and its tests (rpc.test.ts,rpc-gate.test.ts). The bridge let a co-installed Pi extension drive subagents over the in-process event bus via ping/status/spawn/interrupt/stop. Itsspawnpath calledexecutor.execute()directly, bypassing TLH's tool-call allow-list guard — which is exactly why it shipped default-off. Nothing in this monorepo enables or references it. Removing it eliminates the possibility of a strayPI_SUBAGENTS_RPC_ENABLED=1or config typo silently reopening that bypass.RpcBridgeConfigand therpc?member ofExtensionConfigare also removed fromtypes.ts. - The fff (
npm:@ff-labs/pi-fff) extension has been removed.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.33.0/CHANGELOG.md
v0.32.0
Added
- In the footer, TLH now shows how much context MCPs are consuming.
Model defaults
- The
developersubagent now defaults togpt-5.6-luna maxfor OpenAI,sonnet-4-6 mediumfor Anthropic. - The Architect, Product, Bug-hunter,
code-reviewer,oracle, andcontrariannow useopus-5.0 highfor Anthropic,gpt-5.6-sol highfor OpenAI. - All 12 bundled agents now declare thinking levels independently per provider instead of sharing a single level.
Removed
- Removed RTK from TLH (see this analysis as to why).
- Removed the pi-intercom dependency. The little we used of it is now folded into pi-subagents. This also reduces how many tokens TLH consumes.
Fixed
- Installing TLH from
mainno longer fails npm peer-dependency resolution; repository tooling now consistently uses the TypeScript version supported bytypescript-eslint. - Subagents now have two timeout caps: a soft one at ~4m30s where the architect checks on them, and a hard one with a bigger timeout that pauses them. They also support steering, and have tighter system prompts. This should make them much more responsive.
- TLH now works a bit better with Herdr.
Other minor things
/tokensnow reports median observed wall-clock latency per tool alongside the existing cost and token data. Latency is the interval between the recorded call and result events and includes any queueing or paused-run time./annotate-last-messagenow sends submitted feedback directly to the agent as a follow-up message instead of appending it to the TLH editor buffer./annotate-git-diffnow sends review feedback to the agent when you click Submit. Closing the review window with unsent comments still appends a recovery draft to the editor instead of sending, so an accidental close cannot trigger an agent turn.- Bumped the bundled Pi to
0.83.0.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.32.0/CHANGELOG.md
v0.31.0
Changed
- The currently worked on
tkticket now shows in the footer. - Bumped Pi to 0.82.1.
Full changelog: https://github.com/diegopetrucci/the-last-harness/blob/v0.31.0/CHANGELOG.md