Releases: swoofer/mcp-coordinator
Releases · swoofer/mcp-coordinator
Release list
v1.5.0
1.5.0 (2026-07-22)
Features
- mqtt: external broker + org-scoped bridge (multi-instance) with tenant-isolation hardening (#224) (3286a1f)
What's Changed
- feat(redis): opt-in multi-instance shared state (locks, rate-limit, membership, epoch pub/sub) by @swoofer in #223
- feat(mqtt): external broker + org-scoped bridge (multi-instance) with tenant-isolation hardening by @swoofer in #224
- chore(main): release 1.5.0 by @github-actions[bot] in #225
Full Changelog: v1.4.0...v1.5.0
What's Changed
- feat(redis): opt-in multi-instance shared state (locks, rate-limit, membership, epoch pub/sub) by @swoofer in #223
- feat(mqtt): external broker + org-scoped bridge (multi-instance) with tenant-isolation hardening by @swoofer in #224
- chore(main): release 1.5.0 by @github-actions[bot] in #225
Full Changelog: v1.4.0...v1.5.0
What's Changed
- feat(redis): opt-in multi-instance shared state (locks, rate-limit, membership, epoch pub/sub) by @swoofer in #223
- feat(mqtt): external broker + org-scoped bridge (multi-instance) with tenant-isolation hardening by @swoofer in #224
- chore(main): release 1.5.0 by @github-actions[bot] in #225
Full Changelog: v1.4.0...v1.5.0
v1.4.0
1.4.0 (2026-07-21)
Features
- cli: --json output for service-token issue and list (#97) (1e410dd)
- cli: --print-only dry-run flag for init (#70) (a0fc025)
- cli: --since, --grep, --level filters for server logs (#98) (e2ad9fd)
- cli: --timeout and --force flags on server stop (#96) (62d47fa)
- cli: server restart subcommand (#95) (aaa2a7d)
Documentation
What's Changed
- feat(cli): --timeout and --force flags on server stop (#96) by @swoofer in #215
- feat(cli): --json output for service-token issue and list (#97) by @swoofer in #216
- feat(cli): --since, --grep, --level filters for server logs (#98) by @swoofer in #218
- feat(cli): --print-only dry-run flag for init (#70) by @swoofer in #219
- docs: FAQ, troubleshooting guide, and MQTT topic reference (#81 #82 #83) by @swoofer in #220
- examples: MQTT subscribers, chat bridges, and deployment recipes (#87-#94) by @swoofer in #221
- feat(cli): server restart subcommand (#95) by @swoofer in #222
- chore(main): release 1.4.0 by @github-actions[bot] in #217
Full Changelog: v1.3.0...v1.4.0
What's Changed
- feat(cli): --timeout and --force flags on server stop (#96) by @swoofer in #215
- feat(cli): --json output for service-token issue and list (#97) by @swoofer in #216
- feat(cli): --since, --grep, --level filters for server logs (#98) by @swoofer in #218
- feat(cli): --print-only dry-run flag for init (#70) by @swoofer in #219
- docs: FAQ, troubleshooting guide, and MQTT topic reference (#81 #82 #83) by @swoofer in #220
- examples: MQTT subscribers, chat bridges, and deployment recipes (#87-#94) by @swoofer in #221
- feat(cli): server restart subcommand (#95) by @swoofer in #222
- chore(main): release 1.4.0 by @github-actions[bot] in #217
Full Changelog: v1.3.0...v1.4.0
What's Changed
- feat(cli): --timeout and --force flags on server stop (#96) by @swoofer in #215
- feat(cli): --json output for service-token issue and list (#97) by @swoofer in #216
- feat(cli): --since, --grep, --level filters for server logs (#98) by @swoofer in #218
- feat(cli): --print-only dry-run flag for init (#70) by @swoofer in #219
- docs: FAQ, troubleshooting guide, and MQTT topic reference (#81 #82 #83) by @swoofer in #220
- examples: MQTT subscribers, chat bridges, and deployment recipes (#87-#94) by @swoofer in #221
- feat(cli): server restart subcommand (#95) by @swoofer in #222
- chore(main): release 1.4.0 by @github-actions[bot] in #217
Full Changelog: v1.3.0...v1.4.0
v1.3.0
1.3.0 (2026-07-21)
Features
What's Changed
- feat(init): add Google provider support to the phase2 wizard by @swoofer in #213
- chore(main): release 1.3.0 by @github-actions[bot] in #214
Full Changelog: v1.2.1...v1.3.0
What's Changed
- feat(init): add Google provider support to the phase2 wizard by @swoofer in #213
- chore(main): release 1.3.0 by @github-actions[bot] in #214
Full Changelog: v1.2.1...v1.3.0
What's Changed
- feat(init): add Google provider support to the phase2 wizard by @swoofer in #213
- chore(main): release 1.3.0 by @github-actions[bot] in #214
Full Changelog: v1.2.1...v1.3.0
v1.2.1
1.2.1 (2026-07-21)
Bug Fixes
- binaries: mark tree-sitter grammars external in bun --compile (closes #210) (#212) (c7d1252)
- docker: install Corepack explicitly — Node 26 dropped the bundled one (5c8b365)
What's Changed
- fix(docker): install Corepack explicitly — Node 26 dropped the bundled one by @swoofer in #209
- chore(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in #208
- fix(binaries): mark tree-sitter grammars external in bun --compile (closes #210) by @swoofer in #212
- chore(main): release 1.2.1 by @github-actions[bot] in #211
Full Changelog: v1.2.0...v1.2.1
What's Changed
- fix(docker): install Corepack explicitly — Node 26 dropped the bundled one by @swoofer in #209
- chore(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in #208
- fix(binaries): mark tree-sitter grammars external in bun --compile (closes #210) by @swoofer in #212
- chore(main): release 1.2.1 by @github-actions[bot] in #211
Full Changelog: v1.2.0...v1.2.1
What's Changed
- fix(docker): install Corepack explicitly — Node 26 dropped the bundled one by @swoofer in #209
- chore(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in #208
- fix(binaries): mark tree-sitter grammars external in bun --compile (closes #210) by @swoofer in #212
- chore(main): release 1.2.1 by @github-actions[bot] in #211
Full Changelog: v1.2.0...v1.2.1
v1.2.0
v1.1.0
1.1.0 (2026-07-13)
Features
- cli: --log-json NDJSON logging flag (adopts contributor PR #151) (0c4b79d)
- cli: add --log-json flag for NDJSON logging (adopts #151) (a2c04b6)
- threads: per-run scoping — stop leaking an aborted run into the next (#32) (#198) (d83c49f)
Documentation
- audit: #151 closed with thanks (feature via #196) (31163d0)
- audit: close maintenabilite-01 (--log-json adopted from #151, #196) — all 13 Highs done; 116→117 (10bc081)
What's Changed
- feat(cli): --log-json NDJSON logging flag (adopts contributor PR #151) by @swoofer in #196
- feat(threads): per-run scoping — stop leaking an aborted run into the next by @swoofer in #198
- chore(main): release 1.1.0 by @github-actions[bot] in #197
Full Changelog: v1.0.1...v1.1.0
What's Changed
- feat(cli): --log-json NDJSON logging flag (adopts contributor PR #151) by @swoofer in #196
- feat(threads): per-run scoping — stop leaking an aborted run into the next by @swoofer in #198
- chore(main): release 1.1.0 by @github-actions[bot] in #197
Full Changelog: v1.0.1...v1.1.0
What's Changed
- feat(cli): --log-json NDJSON logging flag (adopts contributor PR #151) by @swoofer in #196
- feat(threads): per-run scoping — stop leaking an aborted run into the next by @swoofer in #198
- chore(main): release 1.1.0 by @github-actions[bot] in #197
Full Changelog: v1.0.1...v1.1.0
v1.0.1
1.0.1 (2026-07-13)
Bug Fixes
- dashboard: convert inline onclick to addEventListener + apply script-src 'self' CSP (architecture-14 follow-up) (9fdccd9)
- dashboard: strict script-src 'self' CSP + inline onclick → addEventListener (arch-14 follow-up) (4a7102f)
- sse: flush headers immediately (EventSource opens without waiting for heartbeat) (bfce26a)
- sse: flush headers immediately so EventSource opens without waiting for heartbeat (416b640)
Documentation
- audit: close ci-cd-03 (branch protection enabled); 111→112 (195215f)
- audit: close qualite-code-01 (3 giant fns) + architecture-14 (dashboard script); 112→114 (61dcd12)
- audit: close qualite-code-03 + maintenabilite-05 (Prettier #194); 114→116 (e8fcd86)
- audit: dashboard CSP hardening done (#195) (defa91c)
- audit: v1.0.0 shipped — close maintenabilite-03, confirm binary/provenance R5 (110→111) (1eb1787)
- landing: mark v1.0 shipped on roadmap, add post-1.0 future card, bump version refs (3420c79)
- landing: mark v1.0 shipped on roadmap; post-1.0 future card; version refs → 1.0.0 (e96fcec)
Code Refactoring
- auth: extract numbered steps from refreshTokenGrant into helpers (qualite-code-01 2/3) (0b92e54)
- auth: extract numbered steps from refreshTokenGrant into named helpers (qualite-code-01, 2/3) (fd15e83)
- dashboard: extract inline script to external dashboard.js (architecture-14) (546af34)
- dashboard: extract inline script to external dashboard.js (architecture-14) (7674256)
- rest: dispatch table for handleRest — extract 24 endpoint handlers (qualite-code-01, 1/3) (3d36f63)
- rest: dispatch table for handleRest — extract 28 endpoint handlers (qualite-code-01 1/3) (262906f)
- server: extract createHttpHandler/wireMqtt/wireShutdown from startServer (qualite-code-01 3/3) (3d731a2)
What's Changed
- docs(landing): mark v1.0 shipped on roadmap; post-1.0 future card; version refs → 1.0.0 by @swoofer in #187
- fix(sse): flush headers immediately (EventSource opens without waiting for heartbeat) by @swoofer in #189
- refactor(rest): dispatch table for handleRest — extract 28 endpoint handlers (qualite-code-01 1/3) by @swoofer in #190
- refactor(server): extract createHttpHandler/wireMqtt/wireShutdown from startServer (qualite-code-01 3/3) by @swoofer in #191
- refactor(dashboard): extract inline script to external dashboard.js (architecture-14) by @swoofer in #192
- refactor(auth): extract numbered steps from refreshTokenGrant into helpers (qualite-code-01 2/3) by @swoofer in #193
- chore: adopt Prettier + format codebase (qualite-code-03, maintenabilite-05) by @swoofer in #194
- fix(dashboard): strict script-src 'self' CSP + inline onclick → addEventListener (arch-14 follow-up) by @swoofer in #195
- chore(main): release 1.0.1 by @github-actions[bot] in #188
Full Changelog: v1.0.0...v1.0.1
What's Changed
- docs(landing): mark v1.0 shipped on roadmap; post-1.0 future card; version refs → 1.0.0 by @swoofer in #187
- fix(sse): flush headers immediately (EventSource opens without waiting for heartbeat) by @swoofer in #189
- refactor(rest): dispatch table for handleRest — extract 28 endpoint handlers (qualite-code-01 1/3) by @swoofer in #190
- refactor(server): extract createHttpHandler/wireMqtt/wireShutdown from startServer (qualite-code-01 3/3) by @swoofer in #191
- refactor(dashboard): extract inline script to external dashboard.js (architecture-14) by @swoofer in #192
- refactor(auth): extract numbered steps from refreshTokenGrant into helpers (qualite-code-01 2/3) by @swoofer in #193
- chore: adopt Prettier + format codebase (qualite-code-03, maintenabilite-05) by @swoofer in #194
- fix(dashboard): strict script-src 'self' CSP + inline onclick → addEventListener (arch-14 follow-up) by @swoofer in #195
- chore(main): release 1.0.1 by @github-actions[bot] in #188
Full Changelog: v1.0.0...v1.0.1
What's Changed
- docs(landing): mark v1.0 shipped on roadmap; post-1.0 future card; version refs → 1.0.0 by @swoofer in #187
- fix(sse): flush headers immediately (EventSource opens without waiting for heartbeat) by @swoofer in #189
- refactor(rest): dispatch table for handleRest — extract 28 endpoint handlers (qualite-code-01 1/3) by @swoofer in #190
- refactor(server): extract createHttpHandler/wireMqtt/wireShutdown from startServer (qualite-code-01 3/3) by @swoofer in #191
- refactor(dashboard): extract inline script to external dashboard.js (architecture-14) by @swoofer in #192
- refactor(auth): extract numbered steps from refreshTokenGrant into helpers (qualite-code-01 2/3) by @swoofer in #193
- chore: adopt Prettier + format codebase (qualite-code-03, maintenabilite-05) by @swoofer in #194
- fix(dashboard): strict script-src 'self' CSP + inline onclick → addEventListener (arch-14 follow-up) by @swoofer in #195
- chore(main): release 1.0.1 by @github-actions[bot] in #188
Full Changelog: v1.0.0...v1.0.1
v1.0.0
1.0.0 (2026-07-12)
⚠ BREAKING CHANGES
- ops: JWTs now require a
typclaim ("access"/"refresh"); sessions and refresh tokens issued before this release are rejected, forcing all active users to re-authenticate after upgrade.
Features
- boot: fail-fast when OAuth is enabled on the Bun runtime (architecture-10) (aabb272)
- boot: warn on cwd-relative data dir fallback; fix README data-dir docs (architecture-06) (f36d887)
- rest: validate request bodies with zod, return structured 400 (qualite-code-02, architecture-15) (b39326b)
Bug Fixes
- audit: guard AuditQueue flush against a closed DB to stop CI teardown crashes (2d5af73)
- audit: guard AuditQueue flush against closed DB (stabilise la CI) (34eab57)
- ci: make SDK tests self-contained so sdk-test job passes in clean CI (tests-02) (1d8cd17)
- ci: trigger release-binaries via workflow_call from release, fix tag derivation (ci-cd-01, maintenabilite-02) (72e19c5)
- ci: use npm ecosystem for Dependabot (pnpm is not a valid value) (5d3bc8a)
- cli: forward Phase 2/OAuth/bind env vars to daemon (architecture-05) (11d101a)
- consultation: parse SQLite created_at as UTC, not host-local (809cc2f)
- dashboard: split Clear (UI-only) from Reset Server (destructive, gated) (94cd92d)
- deps: move overrides to pnpm format, refresh lockfile, add Dependabot (dependances-01/02/03) (e0bace5)
- http: generic 500 with request_id instead of raw err.message (qualite-code-08) (6b73e92)
- http: mount /metrics/auth with optional bearer, wire COORDINATOR_METRICS_BEARER (documentation-02, securite-surface-02) (c87ee56)
- http: mount discovery + healthz/health-ready endpoints (architecture-01, protocole-mcp-03) (6236a10)
- landing: drop stale Channels-integration card + correct requestIdleCallback call (#150) (f5dc89b)
- mcp: expose mcp-session-id via CORS; align serverInfo.name to registry name (protocole-mcp-11/13) (dec5123)
- mcp: improve tool ergonomics — annotations, descriptions, actionable errors, timeout caps (protocole-mcp-05/08/10/14) (0f97fc3)
- mcp: return isError from MQTT tools when bridge is not connected (stdio) (protocole-mcp-06) (23c5098)
- mcp: route stdio-mode logs to stderr, keep stdout for JSON-RPC (protocole-mcp-01) (a470112)
- mcp: tool ergonomics — annotations, descriptions, actionable errors, timeout caps (5 constats) (d3f3877)
- mqtt: reset connected on close/offline so isConnected() reflects outages (3475b61)
- mqtt: set explicit Duplex highWaterMark so WS read-backpressure is deterministic (fixes CI flake) (14a5223)
- perf: add retention for 5 Phase 1 tables and run sweeper in Phase-1-only mode (performance-01) (1ce158e)
- perf: bound Prometheus route-label cardinality (performance-03) (609126d)
- perf: bound RateLimiter buckets and MqttBridge listener queues (performance-05, performance-06) (1e4daf2)
- perf: expire idle MCP StreamableHTTP sessions (performance-07, protocole-mcp-07) (846d6f1)
- robustness: guard JSON.parse on SQLite columns with safeJsonParse (qualite-code-07) (22ae9ef)
- security: add baseline security headers to legacy dashboard and API responses (securite-surface-07) (dc4bb3a)
- security: add typ claim to distinguish access vs refresh tokens (34a5ffa)
- security: bind HTTP server to 127.0.0.1 by default via COORDINATOR_BIND (3671d7b)
- security: rate-limit register, make insecure-cookies flag consistent, prevent ?token= log leak (securite-surface-05, securite-auth-05, securite-auth-03) (177205b)
- security: re-derive role from DB on refresh rotation (securite-auth-04) (8e6ec78)
- security: redact secrets in Phase 1 logger to match Phase 2 (securite-surface-04) (6482528)
- security: validate Origin and restrict CORS on /mcp (MCP spec MUST) (f8f6227)
- security: verify OIDC nonce in Google provider (securite-auth-02) (eca4d2f)
- server: fail-closed on concurrent startServer(); correct multi-instance docstring (architecture-02) (2ba5fb7)
Performance Improvements
- db: index sweep predicates and set WAL synchronous=NORMAL (performance-09, performance-10) (ba6bd4c)
- mqtt: add WS bridge backpressure and maxPayload (performance-04) (5cb7296)
- scorer: batch Layer 4 co-change queries; fix rusted audit-queue bench (performance-11, performance-08) (e874cf3)
- sse: bound event history load at the SQL layer instead of loading all then slicing (performance-02) (fc1d08b)
Documentation
- add ARCHITECTURE.md; document multi-org/logger-metrics status, perf-chaos & binary deferrals (architecture-13/08/09, qualite-code-06, tests-11, ci-cd-09) (62fdf82)
- audit: add full audit, remediation spec, plan and 119-finding tracking matrix (1c4f736)
- audit: close architecture-02/03 + tests-05 (107→110) (55cf389)
- audit: close architecture-04/11/12 (66→69) (4cda748)
- audit: close architecture-08/09/10/13 + qualite-code-06 + tests-11 + ci-cd-09 (96→103) (71b6fa9)
- audit: close ci-cd-05/07/10/11 (CI supply-chain hardening) (cbbb54d)
- audit: close dependances-04..10 (pnpm 10 + deps docs); counter 73→80 (981448f)
- audit: close maintenabilite-04/06/07/10/11/12; flag 01/03/08/09 as maintainer-action (80→86) ([51e1520](51e1520a748c15217ce5...
v0.13.0
v0.12.0
0.12.0 (2026-05-23)
Highlights
- 🚦 Claude Code Channels integration — Phase 1 (research preview). New
mcp-coordinator channelstdio subcommand that subscribes to the daemon's MQTT broker and pushes coordination events (consultations, agent status, thread messages) directly into a Claude Code session as<channel>tags. One-way push only — Phase 2 (reply tool) and Phase 3 (permission relay) tracked separately on #130. Requiresclaude --dangerously-load-development-channelsuntil the plugin lands on Anthropic's allowlist. Seeexamples/channels-quickstart/anddocs/superpowers/specs/2026-05-23-channels-event-catalog.md. - 🔧
pnpm dev:stdioactually works now. The stdio MCP entry atsrc/index.tswas advertised as a public command but every tool call returned"MCP tool requires a session". Fix in #135 — every handler now resolves claims viaextra.sessionId ?? ""and stdio mode wires synthetic legacy claims. - 🧪 MCP integration harness landed (#134/#140). Tests can now spawn a real
mcp-coordinatorserver (HTTP or stdio) and exercise it through the MCP SDK client. Foundation for the Channels work above and any future transport integration. - 👥 Third external contributor. @kgrg landed a focused schema fix in #132 (z.enum for
list_threads.status). Welcome.
Features
Bug Fixes
- stdio: MCP tool calls work in stdio mode (closes #133) (#135) (ce54a85)
- validate list_threads status (#132) (e7cedad)
Documentation
- bump example pins to mcp-coordinator:0.11.0 (#123) (a6e3b19)
- channels: event catalog for #130 Phase 1 scoping (#138) (418235d)
- channels: quickstart example + README section for #130 (#137) (a5f03df)
- channels: reference plugin patterns study for #130 (#139) (c369ac3)
- html: bump landing page to v0.11.0, update outdated roadmap cards (#127) (208ecc2)
- html: correct harbor roadmap card — tengu_harbor shipped as Channels (#131) (4df99fa)
- html: translate encrest roadmap card into FR, ES, DE, ZH, JA (#129) (8028a2c)
- html: translate v0.11 roadmap card into FR, ES, DE, ZH, JA (#128) (86495ad)
- readme: rework as pitch — extract usage walkthroughs, drop CHANGELOG dupes (#136) (4b29afd)
- surface Docker install option in README and landing page (#126) (1d94c92)
Upgrade notes
- Channels users: this is research preview. The
claude/channelcapability schema can shift in future Claude Code versions. Add the channel via the snippet atexamples/channels-quickstart/.mcp.json.sampleand start Claude Code with--dangerously-load-development-channels server:mcp-coordinator-channel. - Anyone running
pnpm dev:stdio: now actually usable for tool calls. Synthetic claims withorg='default'injected for every call. - Contributors: 4 new test files (channel harness self-test, channel-smoke, cli-channel, consultation-tools-schema). Suite grew from 2307 → 2322 tests.