feat(plugin): release v2.39.0 with community contributions

Bump plugin to 2.39.0 with features from Matt Van Horn (@mvanhorn):
context budget precheck, plan sequence numbers, review serial mode,
agent-browser debugging commands, test-browser port detection, lfg
phase gating, and Context7 API key auth.

Also fixes MCP server merge order so plugin servers correctly
overwrite stale entries during sync.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kieran Klaassen
2026-03-10 17:02:50 -07:00
parent 55be9a2caf
commit d2ab6c0768
6 changed files with 36 additions and 10 deletions

View File

@@ -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",

View File

@@ -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",

View File

@@ -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

View File

@@ -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 |

View File

@@ -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
},
}

View File

@@ -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")
})
})