From 51e5c8f733ff18f0570827b4dbbefbdb3b2b4048 Mon Sep 17 00:00:00 2001 From: tanglearncode Date: Thu, 13 Aug 2026 06:35:47 +0800 Subject: [PATCH] Release v0.3.5 Bump the marketplace-stream hosts -- Claude Code, Codex, Kimi Code, and Copilot -- to 0.3.5, along with the shared MCP client's default clientInfo version and the ref the Claude marketplace installs from. pi versions independently and is untouched. This release lets a clear match connect itself. On Copilot, get_context now connects a uniquely clear routing match when the session is grounded in nothing and the mode is auto, instead of printing a menu of one. Every safeguard still holds: an existing connection, a near tie, a weak match, ask or manual mode, an unavailable selection, or a context declined in this session all fall back to the menu. The confidence rule underneath it ships to every host. Connecting unasked now needs two agreeing terms the user actually typed, paired independently on both sides, so no single compound word can clear the floor on its own; an exact name or a whole-request alias stands in for it. Contexts are ranked and boosted before the shortlist is cut, the bridge's own automatic connections stay out of familiarity, and a refusal bars connecting unasked for one named half-life rather than for as long as the discount lingers. Co-Authored-By: Claude Opus 5 --- .claude-plugin/marketplace.json | 2 +- .github/plugin/marketplace.json | 4 ++-- .../plugins/neatcontext/.codex-plugin/plugin.json | 2 +- .../plugins/neatcontext/src/codex/mcp-bridge.mjs | 2 +- .../plugins/neatcontext/src/core/mcp-stdio-client.mjs | 2 +- kimi.plugin.json | 2 +- package.json | 2 +- plugins/claude-code/neatcontext/.claude-plugin/plugin.json | 2 +- plugins/claude-code/neatcontext/src/claude/mcp-bridge.mjs | 2 +- plugins/claude-code/neatcontext/src/core/mcp-stdio-client.mjs | 2 +- plugins/copilot/neatcontext/.github/plugin/plugin.json | 2 +- plugins/copilot/neatcontext/src/copilot/mcp-bridge.mjs | 2 +- plugins/copilot/neatcontext/src/core/mcp-stdio-client.mjs | 2 +- plugins/kimi-code/neatcontext/kimi.plugin.json | 2 +- plugins/kimi-code/neatcontext/src/core/mcp-stdio-client.mjs | 2 +- plugins/kimi-code/neatcontext/src/kimi/mcp-bridge.mjs | 2 +- plugins/pi/neatcontext/src/core/mcp-stdio-client.mjs | 2 +- shared/core/mcp-stdio-client.mjs | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f9f8825..0312293 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -12,7 +12,7 @@ "source": "git-subdir", "url": "https://github.com/XTSoftwareLabs/neatcontext-plugins.git", "path": "plugins/claude-code/neatcontext", - "ref": "v0.3.4" + "ref": "v0.3.5" }, "description": "Save Claude Code work as reusable, domain-aware context", "author": { diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index e787a95..508bc6d 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -5,13 +5,13 @@ }, "metadata": { "description": "Save GitHub Copilot work as reusable, domain-aware context", - "version": "0.3.4" + "version": "0.3.5" }, "plugins": [ { "name": "neatcontext", "description": "Save GitHub Copilot work as reusable, domain-aware context", - "version": "0.3.4", + "version": "0.3.5", "source": "./plugins/copilot/neatcontext" } ] diff --git a/codex-marketplace/plugins/neatcontext/.codex-plugin/plugin.json b/codex-marketplace/plugins/neatcontext/.codex-plugin/plugin.json index 4fee3cc..faf695d 100644 --- a/codex-marketplace/plugins/neatcontext/.codex-plugin/plugin.json +++ b/codex-marketplace/plugins/neatcontext/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "neatcontext", - "version": "0.3.4", + "version": "0.3.5", "description": "Save Codex work as reusable, domain-aware context", "author": { "name": "XTSoftwareLabs", diff --git a/codex-marketplace/plugins/neatcontext/src/codex/mcp-bridge.mjs b/codex-marketplace/plugins/neatcontext/src/codex/mcp-bridge.mjs index 2433101..2bf332b 100644 --- a/codex-marketplace/plugins/neatcontext/src/codex/mcp-bridge.mjs +++ b/codex-marketplace/plugins/neatcontext/src/codex/mcp-bridge.mjs @@ -41,7 +41,7 @@ import { import { assess, createRoutingIndex } from "../core/routing-candidates.mjs"; import { applySelection, resolveContext } from "../core/selection.mjs"; -const SERVER_INFO = { name: "neatcontext", version: "0.3.4" }; +const SERVER_INFO = { name: "neatcontext", version: "0.3.5" }; const GET_CONTEXT_TOOL = { name: "get_context", title: "Get Context", diff --git a/codex-marketplace/plugins/neatcontext/src/core/mcp-stdio-client.mjs b/codex-marketplace/plugins/neatcontext/src/core/mcp-stdio-client.mjs index 326d2e9..786f196 100644 --- a/codex-marketplace/plugins/neatcontext/src/core/mcp-stdio-client.mjs +++ b/codex-marketplace/plugins/neatcontext/src/core/mcp-stdio-client.mjs @@ -32,7 +32,7 @@ export function createStdioMcpClient({ cwd = null, env = {}, timeoutMs = DEFAULT_TIMEOUT_MS, - clientInfo = { name: "neatcontext", version: "0.3.4" }, + clientInfo = { name: "neatcontext", version: "0.3.5" }, // Injectable so the tests can produce the failures a real child process // only produces by accident: a pipe that is already gone when we write to it. spawnProcess = spawn diff --git a/kimi.plugin.json b/kimi.plugin.json index 746460b..d9319ca 100644 --- a/kimi.plugin.json +++ b/kimi.plugin.json @@ -1,6 +1,6 @@ { "name": "neatcontext", - "version": "0.3.4", + "version": "0.3.5", "description": "Save Kimi Code work as reusable, domain-aware context", "keywords": [ "neatcontext", diff --git a/package.json b/package.json index 799b9ce..a1a6298 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "neatcontext-plugins", - "version": "0.3.4", + "version": "0.3.5", "description": "Host integrations that save AI coding work as reusable, domain-aware context.", "type": "module", "private": true, diff --git a/plugins/claude-code/neatcontext/.claude-plugin/plugin.json b/plugins/claude-code/neatcontext/.claude-plugin/plugin.json index d74afcb..d94a39f 100644 --- a/plugins/claude-code/neatcontext/.claude-plugin/plugin.json +++ b/plugins/claude-code/neatcontext/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "neatcontext", "displayName": "NeatContext", - "version": "0.3.4", + "version": "0.3.5", "description": "Save Claude Code work as reusable, domain-aware context", "author": { "name": "XTSoftwareLabs", diff --git a/plugins/claude-code/neatcontext/src/claude/mcp-bridge.mjs b/plugins/claude-code/neatcontext/src/claude/mcp-bridge.mjs index d0812e7..2bfd424 100644 --- a/plugins/claude-code/neatcontext/src/claude/mcp-bridge.mjs +++ b/plugins/claude-code/neatcontext/src/claude/mcp-bridge.mjs @@ -41,7 +41,7 @@ import { import { assess, createRoutingIndex } from "../core/routing-candidates.mjs"; import { applySelection, resolveContext } from "../core/selection.mjs"; -const SERVER_INFO = { name: "neatcontext", version: "0.3.4" }; +const SERVER_INFO = { name: "neatcontext", version: "0.3.5" }; const GET_CONTEXT_TOOL = { name: "get_context", title: "Get Context", diff --git a/plugins/claude-code/neatcontext/src/core/mcp-stdio-client.mjs b/plugins/claude-code/neatcontext/src/core/mcp-stdio-client.mjs index 326d2e9..786f196 100644 --- a/plugins/claude-code/neatcontext/src/core/mcp-stdio-client.mjs +++ b/plugins/claude-code/neatcontext/src/core/mcp-stdio-client.mjs @@ -32,7 +32,7 @@ export function createStdioMcpClient({ cwd = null, env = {}, timeoutMs = DEFAULT_TIMEOUT_MS, - clientInfo = { name: "neatcontext", version: "0.3.4" }, + clientInfo = { name: "neatcontext", version: "0.3.5" }, // Injectable so the tests can produce the failures a real child process // only produces by accident: a pipe that is already gone when we write to it. spawnProcess = spawn diff --git a/plugins/copilot/neatcontext/.github/plugin/plugin.json b/plugins/copilot/neatcontext/.github/plugin/plugin.json index 99ce879..d144c8b 100644 --- a/plugins/copilot/neatcontext/.github/plugin/plugin.json +++ b/plugins/copilot/neatcontext/.github/plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "neatcontext", "displayName": "NeatContext", - "version": "0.3.4", + "version": "0.3.5", "description": "Save GitHub Copilot work as reusable, domain-aware context", "author": { "name": "XTSoftwareLabs", diff --git a/plugins/copilot/neatcontext/src/copilot/mcp-bridge.mjs b/plugins/copilot/neatcontext/src/copilot/mcp-bridge.mjs index 2afd881..4301cb2 100644 --- a/plugins/copilot/neatcontext/src/copilot/mcp-bridge.mjs +++ b/plugins/copilot/neatcontext/src/copilot/mcp-bridge.mjs @@ -41,7 +41,7 @@ import { } from "../core/routing-candidates.mjs"; import { applySelection, resolveContext } from "../core/selection.mjs"; -const SERVER_INFO = { name: "neatcontext", version: "0.3.4" }; +const SERVER_INFO = { name: "neatcontext", version: "0.3.5" }; const GET_CONTEXT_TOOL = { name: "get_context", title: "Get Context", diff --git a/plugins/copilot/neatcontext/src/core/mcp-stdio-client.mjs b/plugins/copilot/neatcontext/src/core/mcp-stdio-client.mjs index 326d2e9..786f196 100644 --- a/plugins/copilot/neatcontext/src/core/mcp-stdio-client.mjs +++ b/plugins/copilot/neatcontext/src/core/mcp-stdio-client.mjs @@ -32,7 +32,7 @@ export function createStdioMcpClient({ cwd = null, env = {}, timeoutMs = DEFAULT_TIMEOUT_MS, - clientInfo = { name: "neatcontext", version: "0.3.4" }, + clientInfo = { name: "neatcontext", version: "0.3.5" }, // Injectable so the tests can produce the failures a real child process // only produces by accident: a pipe that is already gone when we write to it. spawnProcess = spawn diff --git a/plugins/kimi-code/neatcontext/kimi.plugin.json b/plugins/kimi-code/neatcontext/kimi.plugin.json index 04f75ee..392b4a1 100644 --- a/plugins/kimi-code/neatcontext/kimi.plugin.json +++ b/plugins/kimi-code/neatcontext/kimi.plugin.json @@ -1,6 +1,6 @@ { "name": "neatcontext", - "version": "0.3.4", + "version": "0.3.5", "description": "Save Kimi Code work as reusable, domain-aware context", "keywords": [ "neatcontext", diff --git a/plugins/kimi-code/neatcontext/src/core/mcp-stdio-client.mjs b/plugins/kimi-code/neatcontext/src/core/mcp-stdio-client.mjs index 326d2e9..786f196 100644 --- a/plugins/kimi-code/neatcontext/src/core/mcp-stdio-client.mjs +++ b/plugins/kimi-code/neatcontext/src/core/mcp-stdio-client.mjs @@ -32,7 +32,7 @@ export function createStdioMcpClient({ cwd = null, env = {}, timeoutMs = DEFAULT_TIMEOUT_MS, - clientInfo = { name: "neatcontext", version: "0.3.4" }, + clientInfo = { name: "neatcontext", version: "0.3.5" }, // Injectable so the tests can produce the failures a real child process // only produces by accident: a pipe that is already gone when we write to it. spawnProcess = spawn diff --git a/plugins/kimi-code/neatcontext/src/kimi/mcp-bridge.mjs b/plugins/kimi-code/neatcontext/src/kimi/mcp-bridge.mjs index 06f4788..d6b084f 100644 --- a/plugins/kimi-code/neatcontext/src/kimi/mcp-bridge.mjs +++ b/plugins/kimi-code/neatcontext/src/kimi/mcp-bridge.mjs @@ -36,7 +36,7 @@ import { import { assess, createRoutingIndex } from "../core/routing-candidates.mjs"; import { applySelection, resolveContext } from "../core/selection.mjs"; -const SERVER_INFO = { name: "neatcontext", version: "0.3.4" }; +const SERVER_INFO = { name: "neatcontext", version: "0.3.5" }; const BIND_SESSION_TOOL = { name: "bind_session", title: "Bind Kimi Session", diff --git a/plugins/pi/neatcontext/src/core/mcp-stdio-client.mjs b/plugins/pi/neatcontext/src/core/mcp-stdio-client.mjs index 326d2e9..786f196 100644 --- a/plugins/pi/neatcontext/src/core/mcp-stdio-client.mjs +++ b/plugins/pi/neatcontext/src/core/mcp-stdio-client.mjs @@ -32,7 +32,7 @@ export function createStdioMcpClient({ cwd = null, env = {}, timeoutMs = DEFAULT_TIMEOUT_MS, - clientInfo = { name: "neatcontext", version: "0.3.4" }, + clientInfo = { name: "neatcontext", version: "0.3.5" }, // Injectable so the tests can produce the failures a real child process // only produces by accident: a pipe that is already gone when we write to it. spawnProcess = spawn diff --git a/shared/core/mcp-stdio-client.mjs b/shared/core/mcp-stdio-client.mjs index 326d2e9..786f196 100644 --- a/shared/core/mcp-stdio-client.mjs +++ b/shared/core/mcp-stdio-client.mjs @@ -32,7 +32,7 @@ export function createStdioMcpClient({ cwd = null, env = {}, timeoutMs = DEFAULT_TIMEOUT_MS, - clientInfo = { name: "neatcontext", version: "0.3.4" }, + clientInfo = { name: "neatcontext", version: "0.3.5" }, // Injectable so the tests can produce the failures a real child process // only produces by accident: a pipe that is already gone when we write to it. spawnProcess = spawn