Releases: shayaShav/flatten-mcp
Release list
v2.5.0 — outputSchema + annotations on all tools
Tool-definition quality: outputSchema + annotations on every MCP tool (#42)
- Each of the five tools now declares an
outputSchemaand returns matchingstructuredContent, so structured-output-aware clients get typed results alongside the existing text output. - Every tool carries
annotations(titleplusreadOnlyHint/destructiveHint/idempotentHint/openWorldHint) so clients can reason about a tool's side effects — e.g.retrieve_flattenedis read-only,unflatten_sessiondeletes its backup after a full restore.
Text output is byte-identical; structuredContent is additive. Flatten/unflatten round-trips remain byte-for-byte (disk and in-memory).
Install
claude mcp add flatten -s user -- npx -y flatten-mcp@2.5.0
Full changelog: v2.4.0...v2.5.0
v2.4.0 — Windows support, CLI star nudge, Smithery badge
Highlights
- Native Windows support. Session directories are now encoded exactly as Claude Code encodes them — every non-alphanumeric character becomes
-, not just/. This also fixes session lookup on macOS/Linux for any path containing a.,_, or space (hidden directories, git worktrees under.claude/); ordinary paths are unchanged. (#39) - Opt-out GitHub-star nudge in
flatten-mcp-session— a single line, interactive terminals only, stateless (no counter, no state, no network). Silence withFLATTEN_MCP_NO_NUDGE. (#39) - Smithery listing badge in the README. (#39)
Full changelog: v2.3.0...v2.4.0
v2.3.0 — flattener write-path hardening
The disk write path is now safe against power loss and concurrent writers, not just process crashes (#13):
- fsync around both atomic renames — a power cut can no longer tear the session file or its backup, or lose the rename itself (F_FULLFSYNC on macOS).
- Pre-rename staleness check — if a live session appends lines while a flatten or unflatten is running, the operation aborts with a retry message instead of silently discarding them; the opt-in
count_tokenscall now runs after the writes, outside that window. - Stale temp sweep —
.tmp-<pid>files stranded by crashed writers are cleaned up after 15 minutes. - Backup integrity gate — a flatten is refused outright when any marker in the rewritten session would not resolve in the rebuilt backup, so a torn or missing backup is surfaced loudly instead of compounded.
No API or tool-surface changes. Full details: CHANGELOG | PR #37
v2.2.3 — hosted remote endpoint in the registry listing
What's Changed
- chore(release): v2.2.2 — unified listing description by @shayaShav in #30
- chore(registry): fit server.json description to the registry's 100-char cap by @shayaShav in #31
- feat(registry): advertise the hosted remote endpoint via server.json remotes by @shayaShav in #34
- docs(readme): zero-install connect instructions for the hosted endpoint by @shayaShav in #35
Full Changelog: v2.2.2...v2.2.3
v2.2.2 — unified listing description
One canonical description across every listing surface (#28): server.json, manifest.json, plugin.json, and marketplace.json's plugin entry now carry the same sentence as package.json — previously each held a different one-liner — so npm, the MCP Registry, Smithery, the Claude Code plugin marketplace, and the Docker MCP Catalog all describe the server identically. The MCP Registry variant is contracted to its 100-character schema cap (#31).
No code changes.
Full Changelog: v2.2.1...v2.2.2
v2.2.1 — README hero illustration, sharpened listing copy
Docs-only patch: the README leads with an illustrated before/after hero and reads faster.
Changed
- README first screenful restructured — the badge row moves directly under the title (centered), a new illustrated before/after hero (340,071 → 132,800 tokens) replaces the demo GIF at the top, and the live GIF moves beside the Quick start steps it demonstrates; tagline, comparison table (new speed/cost row), and Security copy sharpened. (#25)
Full changelog: https://github.com/shayaShav/flatten-mcp/blob/main/CHANGELOG.md
v2.2.0 — listing-manifest parity, boolean in-memory toggle
Listing-manifest parity and a boolean-friendly in-memory toggle.
Added
- Listing manifests (
server.json,manifest.json) now declare the full v2.1 configuration and tool surface — env vars, the three disk tools, anduser_configfor the exact-count model, the in-memory tools toggle, and the Claude config directory — so registries and installers render what the server actually offers. (#20)
Changed
FLATTEN_INMEMORY_TOOLSnow accepts the same affirmative set asFLATTEN_COUNT_EXACT(1/true/yes/on), so boolean installer toggles enable the in-memory tools.1stays canonical. (#20)- README invokes the companion bins in their short
npx -y flatten-mcp-session ...form now that the companion packages are published on npm. (#22)
Full changelog: https://github.com/shayaShav/flatten-mcp/blob/main/CHANGELOG.md
v2.1.0 — explicit count opt-in, HTTP surface, namespace claim
Changed
- Behavior change: the exact
count_tokenscall (MCP server and session CLI) now requires an explicitFLATTEN_COUNT_EXACT=1in addition toANTHROPIC_API_KEY— key presence alone no longer triggers a network request. The library's*Exactfunctions keep their explicitcountExactparameter and are unaffected. The request body is documented in the README's Security section. (#12)
Added
flatten-mcp-http: the in-memory engine (flatten_messages/unflatten_messages) over MCP Streamable HTTP — stateless, localhost by default, no outbound network — so hosted registry inspectors and remote MCP clients can call the engine interactively. (#12)FLATTEN_INMEMORY_TOOLS=1registers the same two in-memory tools on the stdio server (off by default to keep the local tool surface lean). (#12)- Companion packages
flatten-mcp-session,flatten-mcp-cli,flatten-mcp-http(inpackages/, published separately): one-line delegates that claim the bin-name npm namespace sonpx <bin>works directly, and the names cannot be squatted. (#12)
Fixed
- README invoked the secondary bins as
npx flatten-mcp-session/npx flatten-mcp-cli, which fails on a machine without the package installed (no npm packages by those names existed). All examples now usenpx -y -p flatten-mcp <bin>. (#12)
Full Changelog: v2.0.5...v2.1.0
v2.0.5 — trust & funnel
Public-surface and reliability release. No breaking changes.
Docs & trust
- README restructured shorter and funnel-first; security section now claims the npm OIDC provenance and signed tags that ship since v2.0.4 (verify with
npm audit signatures). - Quick start documents the restart-after-install step and the
/flatten→/resumereload loop; pinned-version install is primary. - Added SECURITY.md, CHANGELOG.md, CONTRIBUTING.md.
Reliability
- CI now runs the test suite on every push/PR and gates publishing on it (Node 18/20/22).
- Fixed: unquoted
flatten-mcp-session flatten last 5silently flattened only one session (#9). - Hardened:
retrieve_flattenedvalidatessession_idbefore building the backup path (#10).
Plugin
- The Claude Code plugin now registers the MCP server (previously it installed only the
/flattencommand).
Full changelog: https://github.com/shayaShav/flatten-mcp/blob/main/CHANGELOG.md
v2.0.4 — npm provenance via CI trusted publishing
Starting with this release, npm packages are published by GitHub Actions via OIDC trusted publishing: no npm tokens exist anywhere, every release carries SLSA provenance attestations (verify with npm audit signatures or on the npm package page), and release tags are SSH-signed. No engine changes.
What's Changed
- ci: npm OIDC trusted publishing with provenance and signed release tags by @shayaShav in #5
Full Changelog: v2.0.3...v2.0.4