From 2101df5ca2f9e8cc69aefa11103a048652726542 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 6 Jun 2026 17:36:06 -0300 Subject: [PATCH] chore(release): finalize v3.8.13 changelog and cleanup Finalize the v3.8.13 changelog with release date, maintenance notes, and contributor credits. Update MCP docs to reference the correct tool inventory diagram, exclude nested .claude worktrees from ESLint scans, and tighten a response sanitizer type guard. --- CHANGELOG.md | 25 ++++++++++++++++--- docs/frameworks/MCP-SERVER.md | 2 +- eslint.config.mjs | 4 +++ open-sse/handlers/responseSanitizer.ts | 2 +- .../combo-custom-provider-resolution.test.ts | 2 +- tests/unit/t28-model-catalog-updates.test.ts | 8 ++++-- .../unit/t31-t33-t34-t38-model-specs.test.ts | 7 ++++-- 7 files changed, 40 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e86bae56b..18ed2b6fae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,7 @@ --- -## [3.8.13] — Unreleased - -_Development cycle in progress — entries are added as work merges into `release/v3.8.13` and finalized by the release flow._ +## [3.8.13] — 2026-06-06 ### ✨ New Features @@ -33,6 +31,27 @@ _Development cycle in progress — entries are added as work merges into `releas - **fix(sse):** expose the Claude (`claude-opus-4-6-thinking`, `claude-sonnet-4-6`) and Gemini budget tiers (`gemini-3.1-pro-{high,low}`, `gemini-3.5-flash-{low,extra-low}`) in the Antigravity catalog — they are user-callable on the Antigravity OAuth backend (agy parity), correcting an earlier assumption that Claude had been removed. ([#3303](https://github.com/diegosouzapw/OmniRoute/pull/3303), discussion #3184 — thanks @diegosouzapw) - **fix(catalog):** compute a combo's `context_length` from the known targets only — a single target with unknown context no longer collapses the whole combo to `undefined`; also accepts live `{id, contextLength}` model entries in the opencode-provider helper (follow-up to #3298). ([#3304](https://github.com/diegosouzapw/OmniRoute/pull/3304) — thanks @herjarsa / @diegosouzapw) +### 📝 Maintenance + +- **test(catalog):** align the Antigravity preview-alias catalog test with the #3303 budget tiers — asserts the restored Claude/Gemini tiers are surfaced, locking in the behavior so a future tier change can't silently drop them again (thanks @diegosouzapw) +- **docs:** rename the `resolve-issues` skill references to `review-issues` across the docs/skill surfaces, matching the renamed governance skill (thanks @diegosouzapw) +- **chore(release):** open the v3.8.13 development cycle (version bump + cycle bookkeeping) and finalize this changelog (thanks @diegosouzapw) + +### 🙌 Contributors + +Thanks to everyone whose work landed in v3.8.13: + +| Contributor | PRs / Issues | +| --- | --- | +| [@zhiru](https://github.com/zhiru) | #3300, #3306, #3307 / #3310, #3309, #3301, #3311 | +| [@oyi77](https://github.com/oyi77) | #3292 (closes #3070) | +| [@onizukashonan14-png](https://github.com/onizukashonan14-png) | #3296 | +| [@uniQta](https://github.com/uniQta) | #3290, #3295 | +| [@wilsonicdev](https://github.com/wilsonicdev) | #3297 | +| [@herjarsa](https://github.com/herjarsa) | #3298, #3304 | +| [@mikmaneggahommie](https://github.com/mikmaneggahommie) | reported the Completions.me rickroll (discussion #3293) | +| [@diegosouzapw](https://github.com/diegosouzapw) | maintainer — #3299, #3302, #3303; co-author on #3292 / #3306 / #3298 / #3304 / #3309 | + --- ## [3.8.12] — 2026-06-06 diff --git a/docs/frameworks/MCP-SERVER.md b/docs/frameworks/MCP-SERVER.md index 4c1bb66a97..3e5790fb91 100644 --- a/docs/frameworks/MCP-SERVER.md +++ b/docs/frameworks/MCP-SERVER.md @@ -10,7 +10,7 @@ lastUpdated: 2026-05-30 > > Source of truth: `open-sse/mcp-server/schemas/tools.ts` (30 tools) + `open-sse/mcp-server/tools/memoryTools.ts` (3 tools) + `open-sse/mcp-server/tools/skillTools.ts` (4 tools) + `open-sse/mcp-server/tools/notionTools.ts` (6 tools). Tool registration and scope wiring lives in `open-sse/mcp-server/server.ts`. -![MCP tool inventory (43 tools by category)](../diagrams/exported/mcp-tools-37.svg) +![MCP tool inventory (43 tools by category)](../diagrams/exported/mcp-tools-43.svg) > Source: [diagrams/mcp-tools-43.mmd](../diagrams/mcp-tools-43.mmd) (regenerate via `npm run docs:render-diagrams`). diff --git a/eslint.config.mjs b/eslint.config.mjs index 3a29e83b5c..3a99309a10 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -72,6 +72,10 @@ const eslintConfig = [ // Dependencies "node_modules/**", ".worktrees/**", + // Nested git worktrees created by review/resolve skills live under + // .claude/ (gitignored). They hold other sessions' in-progress work and + // their files move mid-scan, so never lint them from the main checkout. + ".claude/**", ".omnivscodeagent/**", // VS Code extension and its large test fixtures "vscode-extension/**", diff --git a/open-sse/handlers/responseSanitizer.ts b/open-sse/handlers/responseSanitizer.ts index 3b3518d474..80dec34e6e 100644 --- a/open-sse/handlers/responseSanitizer.ts +++ b/open-sse/handlers/responseSanitizer.ts @@ -642,7 +642,7 @@ function sanitizeResponsesStreamingOutputItem(item: unknown): JsonRecord | null text: collapseExcessiveNewlines(toString(partRecord.text) || ""), }; }) - .filter((part): part is JsonRecord => part !== null) + .filter((part): part is NonNullable => part !== null) : []; return { diff --git a/tests/unit/combo-custom-provider-resolution.test.ts b/tests/unit/combo-custom-provider-resolution.test.ts index ae8a30bad0..2f8e781a31 100644 --- a/tests/unit/combo-custom-provider-resolution.test.ts +++ b/tests/unit/combo-custom-provider-resolution.test.ts @@ -165,7 +165,7 @@ test("custom provider auth lookup search pool maps alias prefixes to internal pr ); assert.match( authSrc, - /nodePrefix === provider \|\| nodePrefix === canonicalProvider \|\| nodePrefix === canonicalAlias/, + /nodePrefix === provider\s*\|\|\s*nodePrefix === canonicalProvider\s*\|\|\s*nodePrefix === canonicalAlias/, "auth lookup should match provider node prefixes against the requested alias/canonical provider values" ); assert.match( diff --git a/tests/unit/t28-model-catalog-updates.test.ts b/tests/unit/t28-model-catalog-updates.test.ts index c046364d10..de6d68655a 100644 --- a/tests/unit/t28-model-catalog-updates.test.ts +++ b/tests/unit/t28-model-catalog-updates.test.ts @@ -28,10 +28,14 @@ test("T28: antigravity static catalog exposes client-visible Gemini preview IDs" const staticIds = (getStaticModelsForProvider("antigravity") || []).map((m) => m.id); assert.ok(staticIds.includes("gemini-3-pro-preview")); - assert.ok(!staticIds.includes("gemini-3.1-pro-low")); assert.ok(staticIds.includes("gemini-3-flash-preview")); + // #3303 (agy parity, discussion #3184): the Gemini budget tiers ARE + // client-visible on the Antigravity OAuth backend — restoring tiers an + // earlier assumption had wrongly hidden. + assert.ok(staticIds.includes("gemini-3.1-pro-low")); + assert.ok(staticIds.includes("gemini-3.1-pro-high")); + // Legacy aliases that were never client-visible stay absent. assert.ok(!staticIds.includes("gemini-3-pro-high")); - assert.ok(!staticIds.includes("gemini-3.1-pro-high")); assert.ok(!staticIds.includes("gemini-claude-sonnet-4-5")); assert.ok(!staticIds.includes("gemini-claude-sonnet-4-5-thinking")); assert.ok(!staticIds.includes("gemini-claude-opus-4-5-thinking")); diff --git a/tests/unit/t31-t33-t34-t38-model-specs.test.ts b/tests/unit/t31-t33-t34-t38-model-specs.test.ts index ad455dec5c..a5926182e9 100644 --- a/tests/unit/t31-t33-t34-t38-model-specs.test.ts +++ b/tests/unit/t31-t33-t34-t38-model-specs.test.ts @@ -20,8 +20,11 @@ test("T31: antigravity static catalog exposes client-visible Gemini preview IDs" // still accepts its internal model identifiers. const staticIds = (getStaticModelsForProvider("antigravity") || []).map((m) => m.id); assert.ok(staticIds.includes("gemini-3-pro-preview")); - assert.ok(!staticIds.includes("gemini-3.1-pro-low")); - assert.ok(!staticIds.includes("claude-sonnet-4-6")); + // #3303 (agy parity, discussion #3184): the Gemini + Claude budget tiers ARE + // client-visible on the Antigravity OAuth backend (Claude was never removed). + assert.ok(staticIds.includes("gemini-3.1-pro-low")); + assert.ok(staticIds.includes("claude-sonnet-4-6")); + // The legacy cloaked Claude aliases remain absent. assert.ok(!staticIds.includes("gemini-claude-sonnet-4-5-thinking")); assert.ok(!staticIds.includes("gemini-claude-opus-4-5-thinking")); });