diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index a6aea30..385ec54 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,8 +11,8 @@ "plugins": [ { "name": "compound-engineering", - "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 29 specialized agents, 22 commands, and 20 skills.", - "version": "2.38.1", + "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 28 specialized agents, 22 commands, and 20 skills.", + "version": "2.39.0", "author": { "name": "Kieran Klaassen", "url": "https://github.com/kieranklaassen", diff --git a/plugins/compound-engineering/.claude-plugin/plugin.json b/plugins/compound-engineering/.claude-plugin/plugin.json index c3b49b9..1eed22a 100644 --- a/plugins/compound-engineering/.claude-plugin/plugin.json +++ b/plugins/compound-engineering/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "compound-engineering", - "version": "2.38.1", + "version": "2.39.0", "description": "AI-powered development tools. 28 agents, 22 commands, 20 skills, 1 MCP server for code review, research, design, and workflow automation.", "author": { "name": "Kieran Klaassen", diff --git a/plugins/compound-engineering/CHANGELOG.md b/plugins/compound-engineering/CHANGELOG.md index e766498..869ad97 100644 --- a/plugins/compound-engineering/CHANGELOG.md +++ b/plugins/compound-engineering/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to the compound-engineering plugin will be documented in thi The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.39.0] - 2026-03-10 + +### Added + +- **ce:compound context budget precheck** — Warns when context is constrained and offers compact-safe mode to avoid compaction mid-compound ([#235](https://github.com/EveryInc/compound-engineering-plugin/pull/235)) +- **ce:plan daily sequence numbers** — Plan filenames now include a 3-digit daily sequence number (e.g., `2026-03-10-001-feat-...`) to prevent collisions ([#238](https://github.com/EveryInc/compound-engineering-plugin/pull/238)) +- **ce:review serial mode** — Pass `--serial` flag (or auto-detects when 6+ agents configured) to run review agents sequentially, preventing context limit crashes ([#237](https://github.com/EveryInc/compound-engineering-plugin/pull/237)) +- **agent-browser inspection & debugging commands** — Added JS eval, console/errors, network, storage, device emulation, element debugging, recording/tracing, tabs, and advanced mouse commands to agent-browser skill ([#236](https://github.com/EveryInc/compound-engineering-plugin/pull/236)) +- **test-browser port detection** — Auto-detects dev server port from CLAUDE.md, package.json, or .env files; supports `--port` flag ([#233](https://github.com/EveryInc/compound-engineering-plugin/pull/233)) +- **lfg phase gating** — Added explicit GATE checks between /lfg steps to enforce plan-before-work ordering ([#231](https://github.com/EveryInc/compound-engineering-plugin/pull/231)) + +### Fixed + +- **Context7 API key auth** — MCP server config now passes `CONTEXT7_API_KEY` via `x-api-key` header to avoid anonymous rate limits ([#232](https://github.com/EveryInc/compound-engineering-plugin/pull/232)) +- **CLI: MCP server merge order** — `sync` now correctly overwrites same-named MCP servers with plugin values instead of preserving stale entries + +### Removed + +- **every-style-editor agent** — Removed duplicate agent; functionality already exists as `every-style-editor` skill ([#234](https://github.com/EveryInc/compound-engineering-plugin/pull/234)) + +### Contributors + +- Matt Van Horn ([@mvanhorn](https://x.com/mvanhorn)) — PRs #231–#238 + +--- + ## [2.38.1] - 2026-03-01 ### Fixed diff --git a/plugins/compound-engineering/README.md b/plugins/compound-engineering/README.md index af43b0d..f41f577 100644 --- a/plugins/compound-engineering/README.md +++ b/plugins/compound-engineering/README.md @@ -6,7 +6,7 @@ AI-powered development tools that get smarter with every use. Make each unit of | Component | Count | |-----------|-------| -| Agents | 29 | +| Agents | 28 | | Commands | 22 | | Skills | 20 | | MCP Servers | 1 | diff --git a/src/sync/json-config.ts b/src/sync/json-config.ts index 547ca3b..c12780f 100644 --- a/src/sync/json-config.ts +++ b/src/sync/json-config.ts @@ -18,8 +18,8 @@ export async function mergeJsonConfigAtKey(options: { const merged = { ...existing, [key]: { - ...incoming, - ...existingEntries, // existing user entries win on conflict + ...existingEntries, + ...incoming, // incoming plugin entries overwrite same-named servers }, } diff --git a/tests/opencode-writer.test.ts b/tests/opencode-writer.test.ts index f0aa976..33b5b4c 100644 --- a/tests/opencode-writer.test.ts +++ b/tests/opencode-writer.test.ts @@ -257,7 +257,7 @@ describe("writeOpenCodeBundle", () => { }) describe("mergeJsonConfigAtKey", () => { - test("preserves existing user entries on conflict", async () => { + test("incoming plugin entries overwrite same-named servers", async () => { const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "json-merge-")) const configPath = path.join(tempDir, "opencode.json") @@ -270,7 +270,7 @@ describe("mergeJsonConfigAtKey", () => { } await fs.writeFile(configPath, JSON.stringify(existingConfig, null, 2)) - // Plugin tries to add its own server and override user-server + // Plugin syncs its servers, overwriting same-named entries await mergeJsonConfigAtKey({ configPath, key: "mcp", @@ -286,7 +286,7 @@ describe("mergeJsonConfigAtKey", () => { expect(merged.model).toBe("my-model") // Plugin server added expect(merged.mcp["plugin-server"]).toBeDefined() - // User's server NOT overwritten by plugin - expect(merged.mcp["user-server"].command[1]).toBe("user-srv") + // Plugin server overwrites same-named existing entry + expect(merged.mcp["user-server"].command[1]).toBe("plugin-override") }) })