Changes¶
The canonical, current change log lives at the repo root: CHANGES.md. The summary below covers the most recent release; click through for earlier versions.
v0.7.0: unreleased¶
Editor ergonomics. Ten items reducing daily-driver friction, no new architecture. Informed by notes/22-vs-tau.md. Mostly closes pi/tau parity gaps in input handling, session lifecycle, provider knobs.
Added¶
@path/!cmd/!!cmdinput preprocessor: inline a file's contents (@src/foo.py), splice a shell command's output (!git status), or run silently for side effects (!!git fetch). See Input surfaces.- Prompt templates at
~/.letscode/prompts/<name>.md: drop a Markdown file and typing/<name> argssplices its body into the next user message.{{args}}is substituted. - Session lifecycle:
/newstarts a fresh session in the same project;/resume [N]lists sessions or switches to #N;/name [TEXT]labels the current session. - Auto-session-naming: first user message derives a short label (local heuristic; never overwrites an explicit
/name). - Session export:
/copy,/export [PATH](self-contained HTML),/share(secret GitHub gist viagh). - Resume recap:
letscode -cprints a compact summary of the resumed session (count + last user + last assistant) before the prompt reappears. --thinking LEVEL(andLETSCODE_THINKING+thinking =config):off | minimal | low | medium | high | xhigh. Sendsreasoning_effortto OpenAI-compatible providers; rounded down per-model against a catalog capability list.- Config-driven model catalog:
src/letscode/data/catalog.tomlships built-in pricing / context / thinking capabilities; users overlay via~/.letscode/catalog.tomlwith no code changes./modelnow lists catalog-known entries. - Provider retries with a new
RetryEvent: 408/409/429/5xx bounce with exponential backoff (1s → 10s cap, 2 retries by default) and a subtle status line in the TUI. Cancellation interrupts the sleep. - Startup update check: one PyPI request per day, cached under
~/.letscode/cache/. Suppress withLETSCODE_NO_UPDATE_CHECK=1orCI=1. - SOCKS proxy support:
httpx[socks]shipped by default; the genericsocks://…scheme rewrites tosocks5://…on startup so commonALL_PROXYvalues just work.
Changed¶
- The SDK's built-in retry loop is off (
max_retries=0); letscode owns the retry policy so it can emitRetryEvent. /model(no args) now lists catalog-known models alongside the active one.
v0.6.0 (2026-06-22)¶
MCP integration via the new letscode-mcp plugin, plus the mop-up from five weeks of v0.5 open-source use. No core changes; the extension model absorbs a full external protocol without touching the agent loop.
Added¶
letscode-mcpplugin (plugins/letscode-mcp/). Discover MCP servers from[mcp.servers.<name>]tables in~/.letscode/config.toml; their tools surface as native letscode tools under themcp_<server>_namespace (or a user-configuredprefix). stdio transport, one persistentClientSessionper server, failures degrade toToolResult(is_error=True); never a traceback into the agent loop. Built on the officialmcpPython SDK.- In-tree MCP test server (
tests/fixtures/mcp_test_server.py): a minimal MCP JSON-RPC 2.0 stdio server used by the CI integration test (nonpx/uvxdependency). - MCP end-to-end integration test (
tests/b_integration/test_mcp_e2e.py) drives the full tool-call → MCP roundtrip → tool-result path against the real in-tree server viaFakeLLMClient.
Changed¶
notes/05-gap-vs-pi.mdgained a v0.4+v0.5 retrofit block documenting every closed and deferred gap.
v0.5.0 (2026-05-27)¶
First PyPI release. The focus of v0.5 was making letscode pleasant on first contact.
Added¶
letscode --versionandletscode --init(scaffold a commented~/.letscode/config.toml); both work with no API key.- Actionable no-API-key message (names the env var,
--api-key,--init, the config path). - Per-turn footer shows provider prompt-cache hits when present.
- Release-readiness gates:
make verify-dist(drive the built wheel from a clean venv) andmake verify-plugin(entry-point discovery from a non-editable install).
Changed¶
- CLI migrated from typer/click to cyclopts: behaviour-preserving (same flags, env vars, exit codes).
- Input typed at the
>prompt no longer echoes twice. - Docs corrected: not on PyPI yet → install from source / built wheel.
Fixed¶
- A malformed config file degrades to defaults with a one-line warning instead of a traceback.
- Options after the prompt are no longer swallowed into it (
letscode "p" --model xhonours--model).
Earlier releases¶
- v0.4.0 – 2026-05-19: Plugin & integration, RPC mode (
--mode rpc), tree sessions (/tree//fork//clone), memory recall +/forget,/reload, interrupt-and-redirect streaming input, config sections, external Textual frontend. - v0.3.0 – 2026-05-13: Extension model + ergonomics,
render_custom_messagehook,FrontendProtocol, skill-to-tool synthesis,letscode-memory, docs site, Markdown rendering. - v0.2.0 – 2026-05-12: Two-tier message model,
ExecutionEnv,parent_idsessions, compaction, steering / follow-up queues, TOML config. - v0.1.0 – 2026-05-09: Initial release, agent loop, four built-in tools, skill discovery, slash commands, sessions, basic TUI, plugin system.
For the full per-version breakdown, see CHANGES.md.