@@ -6,6 +6,199 @@ Versioning: [Semantic Versioning](https://semver.org/).
66
77For releases before v1.3.35, see [ GitHub Releases] ( https://github.com/VladoIvankovic/Codeep/releases ) .
88
9+ > ** Authoring convention:** put a one-line ` > TL;DR ` under each
10+ > ` ## [version] ` heading. It's auto-extracted by ` codeep.dev/releases/rss.xml `
11+ > as the social-share summary (IFTTT → X/Bluesky), capped at 220 chars.
12+ > If omitted, the feed falls back to the first paragraph.
13+
14+ ## [ 2.0.0] — 2026-05-18
15+
16+ > Codeep 2.0 is here. Full MCP support (stdio + HTTP), skill bundles with a public marketplace, OpenRouter with accurate per-call cost, checkpoints, custom commands, lifecycle hooks. 921 tests green.
17+
18+ Big release. Major version bump because the on-disk ` mcp_servers.json `
19+ shape now accepts ` url ` (HTTP transport) alongside ` command ` (stdio),
20+ because the agent now actively reads from MCP servers' ` resources ` ,
21+ ` prompts ` , and (optionally) hosts ` sampling ` for them — clients that
22+ relied on Codeep behaving as a tools-only client will see new traffic
23+ — and because ** skill bundles** are a new top-level concept the agent
24+ auto-discovers and invokes.
25+
26+ ### Added — OpenRouter provider (100+ models via one key)
27+
28+ - ** ` openrouter ` provider** wired through the existing OpenAI-compatible
29+ flow. Top 12 popular models hardcoded for the picker; the full
30+ catalogue (100+) is fetched on demand via ` /model ` , with live pricing
31+ per 1M tokens and context-window size shown per row.
32+ - ** Authoritative cost from ` usage.cost ` .** OpenRouter returns the
33+ per-call USD figure in its response — we use that instead of our
34+ local pricing table, so your dashboard / ` /cost ` numbers match the
35+ OpenRouter invoice exactly with zero local maintenance.
36+ - ** Branding headers** (` HTTP-Referer: https://codeep.dev ` ,
37+ ` X-Title: Codeep ` ) sent on every OpenRouter request — surfaces
38+ Codeep traffic in their dashboard for attribution.
39+ - ** ` /openrouter ` slash command** for routing preferences:
40+ ` prefer <p1>,<p2> ` (provider order), ` ignore <p1> ` (block list),
41+ ` fallbacks on|off ` , ` privacy strict|allow ` (sets ` data_collection ` ),
42+ ` clear ` . Stored per-machine in conf.
43+ - ** ` openrouter/auto ` support** — set the model id to ` openrouter/auto `
44+ and OpenRouter picks the best upstream for each task. Combine with
45+ ` /openrouter prefer ` to bias the auto-router without locking it down.
46+
47+ ### Added — Skill bundles (Claude Code-compatible)
48+
49+ - ** Structured skill bundles** under ` .codeep/skills/<name>/SKILL.md `
50+ (project) and ` ~/.codeep/skills/<name>/SKILL.md ` (global). The
51+ SKILL.md format is a ** superset of Claude Code skills** — paste an
52+ existing skill verbatim and it works. Codeep-specific extensions
53+ (` codeep-min-version ` , ` codeep-requires-mcp ` ) are valid YAML, so
54+ Claude Code parsers tolerate them.
55+ - ** Agent auto-discovery.** Every agent run injects the bundle catalog
56+ into the system prompt and registers a virtual ` invoke_skill ` tool.
57+ The model picks a skill when the user's intent matches; we return
58+ the SKILL.md body for it to follow step by step.
59+ - ** Slash commands** for managing bundles:
60+ - ` /skills bundles ` — list installed
61+ - ` /skills create-bundle <name> ` — scaffold a project skill
62+ - ` /skills show <name> ` — print the SKILL.md
63+ - ` /skills browse [query] ` — search the public marketplace
64+ - ` /skills install <owner>/<slug> ` — pull from marketplace
65+ - ` /skills publish <slug> [--public] ` — share to codeep.dev
66+ - ` /skills unpublish <owner>/<slug> ` — remove your published skill
67+ - ** Public marketplace** at [ codeep.dev/skills] ( https://codeep.dev/skills ) .
68+ Owners manage their published skills at ` /dashboard/skills ` —
69+ toggle visibility, unpublish, see install counts.
70+ - ** VS Code commands** for the bundle workflow: `Codeep: Browse Skill
71+ Bundles…` , ` Codeep: Create Skill Bundle…` , ` Codeep: Open Skills
72+ Folder`.
73+ - ** Welcome banner warning** when a workspace ships project-scoped
74+ skill bundles — informed consent before the agent starts invoking
75+ unfamiliar capabilities.
76+
77+ ### Added — MCP gets full spec coverage
78+
79+ - ** Streamable HTTP transport.** MCP servers configured with ` url ` (and
80+ optional ` headers ` ) are reached over the spec's HTTP+SSE flow instead
81+ of stdio. POST for requests, GET-side SSE for server-pushed
82+ notifications and server-initiated requests. Mutually exclusive with
83+ ` command ` — pick one per server.
84+ - ** Sampling capability.** When a server opts into ` sampling ` , it can
85+ ask Codeep to generate a completion on its behalf; we bridge to the
86+ active provider via ` chat() ` . Server gets just the assistant text;
87+ no tool use is forwarded.
88+ - ** Resources & prompts auto-injected into the agent's tool catalog.**
89+ Each server that exposes resources or prompts gets four virtual tools
90+ the model can call natively: ` <server>__resource_list ` ,
91+ ` <server>__resource_read ` , ` <server>__prompt_list ` ,
92+ ` <server>__prompt_get ` . No more "user types ` /mcp read <uri> `
93+ manually". Servers that don't expose either get nothing extra.
94+ - ** Mid-run tool catalog refresh.** A ` tools/list_changed ` notification
95+ (or a successful auto-restart) flips a dirty bit; the agent re-fetches
96+ the catalog at the start of the next iteration so the model sees new
97+ tools without a session restart.
98+ - ** MCP marketplace.** ` /mcp browse ` shows a curated catalog of popular
99+ servers (filesystem, github, postgres, slack, brave-search, …);
100+ ` /mcp install <id> [extra args] ` writes the config + spawns. Each
101+ entry surfaces env-var and arg hints so the user knows what to set.
102+ - ** ` roots ` + ` roots/list ` capability negotiation.** Codeep advertises
103+ ` roots: { listChanged: true } ` in ` initialize ` and handles
104+ ` roots/list ` requests by returning the current workspace folder —
105+ filesystem-shaped servers can scope reads accordingly.
106+
107+ ### Added — TUI polish
108+
109+ - ** Type-to-filter in every menu picker.** ` /model ` , ` /provider ` ,
110+ ` /login ` , ` /lang ` , sessions, export, logout — start typing and the
111+ list narrows by key / label / description. Backspace edits, first
112+ Esc clears the filter, second Esc closes. Critical for the
113+ OpenRouter 100+ model catalogue but useful everywhere.
114+ - ** First-run provider picker reordered.** Anthropic, OpenAI,
115+ OpenRouter, Z.AI sit at the top instead of being buried under
116+ regional / parameter-variant entries. Each row now shows the short
117+ provider description ("Unified access to 100+ models via one API
118+ key") so the value prop is visible at a glance.
119+
120+ ### Added — earlier in the 2.0 cycle (already in dev builds)
121+
122+ - ** ` /cost ` ** , ** ` /compact [keepN] ` ** , ** ` /commands ` ** , ** `/checkpoint
123+ [ name] ` **, ** ` /checkpoints` **, ** ` /rewind <id >` **, ** ` /hooks`** ,
124+ ** ` /mcp ` ** slash commands.
125+ - ** Custom slash commands.** ` .codeep/commands/<name>.md ` Markdown
126+ templates with ` {{args}} ` / ` $ARGUMENTS ` / ` {{argN}} ` placeholders.
127+ Project files shadow global. Warning banner on first session.
128+ - ** Lifecycle hooks.** ` .codeep/hooks/<event>.sh ` shell scripts run on
129+ ` pre_tool_call ` , ` post_edit ` , ` on_error ` , ` pre_commit ` . Apply
130+ uniformly to built-in and MCP tools.
131+ - ** ` /memory ` ** and ** ` /profile ` ** now work in ACP (Zed / VS Code), not
132+ just the TUI.
133+ - ** ACP ` fs/read_text_file ` and ` fs/write_text_file ` delegation** —
134+ agent tool calls route through the client when capability is
135+ advertised, with a 100 KB size cap on delegated reads.
136+ - ** ACP ` authMethods ` ** — single ` Codeep CLI ` agent-type entry for
137+ acp-registry compliance + ` authenticate ` no-op handler.
138+ - ** Auto-reconnect on MCP server crash** (3× in 60s with exponential
139+ backoff). Persistent failures surface in ` /mcp ` instead of being
140+ silently dropped.
141+ - ** VS Code 0.2.0:**
142+ - Native ` vscode.diff ` viewer for proposed edits + Accept/Reject
143+ CodeLens (closes diff tab → implicit reject).
144+ - ` Cmd+Shift+A ` Attach Active File.
145+ - ` @symbol ` mentions alongside ` @file ` .
146+ - MCP server management from the command palette (Add / Remove /
147+ Open Config).
148+ - Auto-loads ` ~/.codeep/mcp_servers.json ` and project equivalent.
149+ - Permission labels honest about scope ("Allow for this session").
150+
151+ ### Fixed
152+
153+ - ` /provider ` was not in ` AVAILABLE_COMMANDS ` — invisible to Zed / VS
154+ Code ` / ` autocomplete.
155+ - ` /apikey ` and ` /login ` warn that inline keys leak into shell history.
156+ - ` write_file ` double-recorded itself in the action log when client-side
157+ delegation failed and we fell through to disk.
158+ - Delegated ` fs/read_text_file ` had no size cap; a misbehaving client
159+ could return a multi-GB blob and OOM the agent.
160+ - ` compactHistory() ` had no timeout — a hung provider would wedge the
161+ session. Now caps at 60 s with an external ` abortSignal ` honoured.
162+ - Diff editor occasionally stayed orphaned in VS Code if the user
163+ responded faster than the open completed.
164+ - MCP tool name normalization stripped hyphens, so servers named with a
165+ ` - ` couldn't route their tool calls (` my-fs__read_file ` ≠
166+ ` my_fs__read_file ` ).
167+
168+ ### Removed
169+
170+ - 19 obsolete model entries in ` tokenTracker.ts ` (gpt-4.1* , o3,
171+ o4-mini, gpt-4o, claude-mythos-preview, claude-sonnet-4-5-20250929,
172+ gemini-2.5-* , gemini-3.1-flash-lite-preview, MiniMax-M2.5* ,
173+ MiniMax-M2.1* , MiniMax-M2) — continuation of the 1.3.42 cleanup.
174+
175+ ### Security
176+
177+ - ** MCP ` sampling/createMessage ` now rate-limited and budget-capped per
178+ server** (≥1 s spacing, 100 requests / process). Each accepted request
179+ is logged to stderr with the originating server name. Closes the path
180+ by which a misbehaving or malicious MCP server could drain a user's
181+ paid-provider credits.
182+ - ` npm audit fix ` resolved ` fast-uri ` (path traversal / host confusion)
183+ and ` picomatch ` (ReDoS / method injection) high-severity CVEs in
184+ transitive dependencies.
185+
186+ ### Packaging
187+
188+ - npm tarball reduced from ** 164.8 MB → 340 kB** (unpacked 436 MB → 1.4 MB)
189+ by excluding ` dist/zed/* ` and ` bin/codeep-* ` pkg-built standalone
190+ binaries from the ` files ` field. Those binaries continue to ship via
191+ GitHub releases and the Zed extension distribution.
192+
193+ ### Breaking changes
194+
195+ - ` McpServer ` in the protocol now has ` command? ` and ` args? ` (was
196+ required), plus new ` url? ` and ` headers? ` . ACP clients that produced
197+ the old shape still work — fields are optional, parser accepts both.
198+ - MCP client protocol version bumped from ` 1.4.0 ` to ` 2.0.0 ` in
199+ ` initialize ` 's ` clientInfo ` . Servers that key off the version string
200+ may need an allowlist update.
201+
9202## [ 1.3.42] — 2026-05-12
10203
11204### Fixed
0 commit comments