Skip to content

Releases: shayaShav/flatten-mcp

v2.5.0 — outputSchema + annotations on all tools

Choose a tag to compare

@shayaShav shayaShav released this 12 Jul 19:30
v2.5.0
a80265b

Tool-definition quality: outputSchema + annotations on every MCP tool (#42)

  • Each of the five tools now declares an outputSchema and returns matching structuredContent, so structured-output-aware clients get typed results alongside the existing text output.
  • Every tool carries annotations (title plus readOnlyHint / destructiveHint / idempotentHint / openWorldHint) so clients can reason about a tool's side effects — e.g. retrieve_flattened is read-only, unflatten_session deletes 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

Choose a tag to compare

@shayaShav shayaShav released this 12 Jul 10:36
v2.4.0
4e0ad22

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 with FLATTEN_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

Choose a tag to compare

@shayaShav shayaShav released this 11 Jul 16:35
v2.3.0

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_tokens call 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

Choose a tag to compare

@shayaShav shayaShav released this 11 Jul 14:24
v2.2.3

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

Choose a tag to compare

@shayaShav shayaShav released this 10 Jul 23:51
v2.2.2

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

Choose a tag to compare

@shayaShav shayaShav released this 10 Jul 22:17
v2.2.1

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

Choose a tag to compare

@shayaShav shayaShav released this 03 Jul 23:13
v2.2.0

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, and user_config for 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_TOOLS now accepts the same affirmative set as FLATTEN_COUNT_EXACT (1/true/yes/on), so boolean installer toggles enable the in-memory tools. 1 stays 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

Choose a tag to compare

@shayaShav shayaShav released this 02 Jul 22:06
v2.1.0

Changed

  • Behavior change: the exact count_tokens call (MCP server and session CLI) now requires an explicit FLATTEN_COUNT_EXACT=1 in addition to ANTHROPIC_API_KEY — key presence alone no longer triggers a network request. The library's *Exact functions keep their explicit countExact parameter 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=1 registers 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 (in packages/, published separately): one-line delegates that claim the bin-name npm namespace so npx <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 use npx -y -p flatten-mcp <bin>. (#12)

Full Changelog: v2.0.5...v2.1.0

v2.0.5 — trust & funnel

Choose a tag to compare

@shayaShav shayaShav released this 02 Jul 21:01
v2.0.5
5100436

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/resume reload 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 5 silently flattened only one session (#9).
  • Hardened: retrieve_flattened validates session_id before building the backup path (#10).

Plugin

  • The Claude Code plugin now registers the MCP server (previously it installed only the /flatten command).

Full changelog: https://github.com/shayaShav/flatten-mcp/blob/main/CHANGELOG.md

v2.0.4 — npm provenance via CI trusted publishing

Choose a tag to compare

@shayaShav shayaShav released this 02 Jul 18:32
v2.0.4

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