From baf88e6e5833147125168fd4f52ac13dd058aefb Mon Sep 17 00:00:00 2001 From: Karan Date: Sun, 25 Oct 2026 17:05:38 -0400 Subject: [PATCH 1/2] Release: @genclass/mcp 0.2.0 and @genclass/runtime 0.3.0-beta.2 @genclass/mcp 0.2.0: the 0.1.0 on npm is an earlier build (eight tools, no genclass_scan, no GENCLASS_REPORT), so everything in the changelog's first section ships first in 0.2.0; the version, its pinned launchers in the README, the plugin, server.json and the root manifests (npm run sync), the dashboard's own install line, and the changelog's heading. @genclass/runtime 0.3.0-beta.2: the version in package.json and src/version.ts, the changelog's heading over the unreleased section (scan, the newest-line install path, the agent link's and analytics' fixes). The lockfile's two workspace versions. Tags v0.3.0-beta.2 and mcp-v0.2.0 on this commit run release.yml and release-mcp.yml. After npm has the runtime: RUNTIME_ON_NPM and SNIPPET_RUNTIME in telemetry-worker, then a deploy. Co-Authored-By: Claude Fable 5.1 --- .claude-plugin/marketplace.json | 7 ++- .cursor-plugin/marketplace.json | 2 +- README.md | 2 +- docs/adoption/listings/mcp.md | 12 ++--- docs/runtime/AGENT.md | 4 +- gemini-extension.json | 7 ++- llms-install.md | 2 +- package-lock.json | 4 +- packages/mcp/CHANGELOG.md | 5 +- packages/mcp/README.md | 48 +++++++++---------- packages/mcp/package.json | 2 +- .../mcp/plugin/.claude-plugin/plugin.json | 2 +- packages/mcp/plugin/.mcp.json | 5 +- packages/mcp/plugin/README.md | 6 +-- packages/mcp/plugin/hooks/hooks.json | 2 +- packages/mcp/plugin/mcp.json | 5 +- packages/mcp/plugin/plugin.json | 12 ++++- packages/mcp/server.json | 4 +- packages/mcp/src/http.ts | 2 +- packages/runtime/CHANGELOG.md | 2 +- packages/runtime/README.md | 2 +- packages/runtime/package.json | 2 +- packages/runtime/src/version.ts | 2 +- 23 files changed, 82 insertions(+), 59 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 41154a2f..1a38e6b3 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,13 +1,16 @@ { "name": "genclass", - "owner": { "name": "GenClass", "url": "https://genclass.dev" }, + "owner": { + "name": "GenClass", + "url": "https://genclass.dev" + }, "description": "GenClass for Claude Code: see the race, replay it, prove the fix.", "plugins": [ { "name": "genclass", "source": "./packages/mcp/plugin", "description": "The GenClass MCP server, a prompt hook that brings new findings to each prompt, and a skill for intermittent and timing-dependent frontend bugs.", - "version": "0.1.0", + "version": "0.2.0", "category": "development" } ] diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 11a7f171..3cb74c78 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -11,7 +11,7 @@ "name": "genclass", "source": "packages/mcp/plugin", "description": "The GenClass MCP server and a skill for intermittent and timing-dependent frontend bugs.", - "version": "0.1.0", + "version": "0.2.0", "category": "development" } ] diff --git a/README.md b/README.md index 7b44732f..e52639d2 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ steps again with the network answering in different orders (and slower) to find exact order that broke, and write a Playwright test that fails until the fix is in. Everything stays on your machine. ```bash -claude mcp add genclass -- npx -y @genclass/mcp@0.1.0 +claude mcp add genclass -- npx -y @genclass/mcp@0.2.0 ``` ```ts diff --git a/docs/adoption/listings/mcp.md b/docs/adoption/listings/mcp.md index 375c0b68..4a2836ed 100644 --- a/docs/adoption/listings/mcp.md +++ b/docs/adoption/listings/mcp.md @@ -96,7 +96,7 @@ official registry); docs.github.com "Extend Copilot Chat with MCP" (VS Code adds > different orders to find race conditions, replays one exact order to prove a fix, and writes a Playwright > regression test. It needs no account or API key and sends nothing off the machine. Measured so far on one page > (a stale-response race): it found the race in 5 of 6 reordered runs and reported nothing on the fixed page. - > Install in VS Code: `code --add-mcp '{"name":"genclass","command":"npx","args":["-y","@genclass/mcp@0.1.0"]}'`. + > Install in VS Code: `code --add-mcp '{"name":"genclass","command":"npx","args":["-y","@genclass/mcp@0.2.0"]}'`. > Thank you. ## 3. Anthropic directory (claude.ai/directory/manage) @@ -117,7 +117,7 @@ support.claude.com "Anthropic Software Directory Policy". the four acknowledgements. Updates: GitHub push webhook. - **What the checks will say.** Local run of `claude plugin validate packages/mcp/plugin --profile directory` (Claude Code 2.1.310): passes; one warning, `ICON_MISSING`. The portal also holds pinned launchers for a reviewer: - expect "Runs a pinned npx or uvx package" (both `.mcp.json` and the hook run `npx -y @genclass/mcp@0.1.0`), and + expect "Runs a pinned npx or uvx package" (both `.mcp.json` and the hook run `npx -y @genclass/mcp@0.2.0`), and possibly "MCP server command wasn't read" because the server is not a file inside the plugin folder. An unpinned launcher would block; `packages/mcp/test/manifests.test.ts` keeps both pins equal to `package.json`'s version. The way to avoid the hold is to ship the built server (`dist/cli.js`, 125 KB, no dependencies) inside the plugin @@ -159,7 +159,7 @@ Source: glama.ai/mcp/faq; glama.ai/blog/2025-07-08-what-is-glamajson; schema gla ```dockerfile FROM node:22-alpine ENV GENCLASS_STATE_DIR=none -ENTRYPOINT ["npx", "-y", "@genclass/mcp@0.1.0"] +ENTRYPOINT ["npx", "-y", "@genclass/mcp@0.2.0"] ``` - **Fields.** Display name `GenClass`; description: the 100-character text above. How Glama treats a server in a @@ -208,7 +208,7 @@ Source: https://mcp.so/submit; chatmcp/mcpso issue 1 "Submit Your MCP Servers he > GenClass: https://github.com/genclass-dev/GenClass-lib (server in `packages/mcp`). A local MCP server that shows a > coding agent what happened inside a web app's pages in causal order, finds race conditions by re-running a page > with responses delivered in different orders, replays one exact order to prove a fix, and writes a Playwright - > regression test. Install: `npx -y @genclass/mcp@0.1.0`. Category: developer tools. + > regression test. Install: `npx -y @genclass/mcp@0.2.0`. Category: developer tools. ## 9. cursor.directory @@ -238,10 +238,10 @@ Source: google-gemini/gemini-cli `docs/extensions/releasing.md` and `docs/extens - **How.** No submission: a daily crawler lists public repositories with the GitHub topic `gemini-cli-extension` whose root holds `gemini-extension.json`. Add the topic to `genclass-dev/GenClass-lib` once 0.1.0 is on npm. The - committed `gemini-extension.json` starts `npx -y @genclass/mcp@0.1.0` (kept equal to the package version by + committed `gemini-extension.json` starts `npx -y @genclass/mcp@0.2.0` (kept equal to the package version by `manifests.test.ts`). - **Install line for the entry.** `gemini extensions install https://github.com/genclass-dev/GenClass-lib`. This - clones the whole repository, which is large; `gemini mcp add genclass npx -- -y @genclass/mcp@0.1.0` adds the server + clones the whole repository, which is large; `gemini mcp add genclass npx -- -y @genclass/mcp@0.2.0` adds the server alone. ## 12. Smithery (smithery.ai) diff --git a/docs/runtime/AGENT.md b/docs/runtime/AGENT.md index 3c841c59..631ad0b0 100644 --- a/docs/runtime/AGENT.md +++ b/docs/runtime/AGENT.md @@ -40,14 +40,14 @@ results are in section 7 and in [RESULTS.md](RESULTS.md) section 16. ## 1. Setup ```bash -claude mcp add genclass -- npx -y @genclass/mcp@0.1.0 # or: npx -y @genclass/mcp@0.1.0 init (writes .mcp.json) +claude mcp add genclass -- npx -y @genclass/mcp@0.2.0 # or: npx -y @genclass/mcp@0.2.0 init (writes .mcp.json) ``` Or as a Claude Code plugin from this repository's marketplace (`.claude-plugin/marketplace.json`; the plugin is `packages/mcp/plugin`: the server, a `UserPromptSubmit` hook and a skill whose description tells Claude when to use it): `/plugin marketplace add genclass-dev/GenClass-lib`, then `/plugin install genclass@genclass`. Other clients (Cursor, VS Code, Codex CLI, Gemini CLI, Windsurf, Cline, Goose, Zed, JetBrains, OpenCode): the install blocks in -[packages/mcp/README.md](../../packages/mcp/README.md#install), or `npx -y @genclass/mcp@0.1.0 config `. +[packages/mcp/README.md](../../packages/mcp/README.md#install), or `npx -y @genclass/mcp@0.2.0 config `. Every launcher is pinned to the release. `packages/mcp/server.json` is the entry for the official MCP Registry (published by the release workflow with GitHub OIDC after the npm package); the listings for other directories are drafted in [docs/adoption/listings/mcp.md](../adoption/listings/mcp.md). diff --git a/gemini-extension.json b/gemini-extension.json index 11b5b6e9..a8c962d3 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,11 +1,14 @@ { "name": "genclass", - "version": "0.1.0", + "version": "0.2.0", "description": "Find race conditions in your web app by reordering its responses, replay one, prove the fix.", "mcpServers": { "genclass": { "command": "npx", - "args": ["-y", "@genclass/mcp@0.1.0"] + "args": [ + "-y", + "@genclass/mcp@0.2.0" + ] } } } diff --git a/llms-install.md b/llms-install.md index 31d52a0f..26d9b5bd 100644 --- a/llms-install.md +++ b/llms-install.md @@ -23,7 +23,7 @@ merging it with the servers already there: "mcpServers": { "genclass": { "command": "npx", - "args": ["-y", "@genclass/mcp@0.1.0"] + "args": ["-y", "@genclass/mcp@0.2.0"] } } } diff --git a/package-lock.json b/package-lock.json index 41675fb7..14774e4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16828,7 +16828,7 @@ }, "packages/mcp": { "name": "@genclass/mcp", - "version": "0.1.0", + "version": "0.2.0", "license": "Apache-2.0", "bin": { "genclass-mcp": "bin/genclass-mcp.mjs" @@ -16901,7 +16901,7 @@ }, "packages/runtime": { "name": "@genclass/runtime", - "version": "0.3.0-beta.1", + "version": "0.3.0-beta.2", "license": "Apache-2.0", "dependencies": { "onnxruntime-web": "1.30.0" diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 2c0ad877..4c77e651 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog -## 0.1.0 (unreleased) +## 0.2.0 (2026-10-25) + +The `0.1.0` on npm (published 2026-10-25) is an earlier build: eight tools, no `genclass_scan`, no `GENCLASS_REPORT`. +Everything below ships first in `0.2.0`. - **`genclass_setup` installs the newest runtime line.** It prints `npm install @genclass/runtime@beta` (the agent entry and interaction analytics need 0.3.0-beta.1 or later) for a project on 0.2.x, on a range without a version diff --git a/packages/mcp/README.md b/packages/mcp/README.md index f7d6568c..31c69415 100644 --- a/packages/mcp/README.md +++ b/packages/mcp/README.md @@ -22,7 +22,7 @@ inside your network ([genclass.dev/enterprise](https://genclass.dev/enterprise)) ## Install Pick your client. Every block pins this release, so the client starts exactly this version; -`npx -y @genclass/mcp@0.1.0 config ` prints the same lines, and `genclass_setup` prints the block for the +`npx -y @genclass/mcp@0.2.0 config ` prints the same lines, and `genclass_setup` prints the block for the client it runs in. @@ -39,8 +39,8 @@ As a plugin (the server, a prompt hook that brings new findings to each prompt, Or the server alone (`--scope project` writes `.mcp.json` for everyone on the project; `--scope user` for all your projects): ```bash -claude mcp add --scope project genclass -- npx -y @genclass/mcp@0.1.0 -# or: npx -y @genclass/mcp@0.1.0 init --hook (.mcp.json, plus the prompt hook in .claude/settings.json) +claude mcp add --scope project genclass -- npx -y @genclass/mcp@0.2.0 +# or: npx -y @genclass/mcp@0.2.0 init --hook (.mcp.json, plus the prompt hook in .claude/settings.json) ``` ### Claude Desktop @@ -54,7 +54,7 @@ Settings, Developer, Edit Config (`~/Library/Application Support/Claude/claude_d "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -63,7 +63,7 @@ Settings, Developer, Edit Config (`~/Library/Application Support/Claude/claude_d ### Cursor -[![Add genclass MCP server to Cursor](https://cursor.com/deeplink/mcp-install-dark.png)](https://cursor.com/link/mcp/install?name=genclass&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBnZW5jbGFzcy9tY3BAMC4xLjAiXX0%3D) or `cursor://anysphere.cursor-deeplink/mcp/install?name=genclass&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBnZW5jbGFzcy9tY3BAMC4xLjAiXX0%3D` +[![Add genclass MCP server to Cursor](https://cursor.com/deeplink/mcp-install-dark.png)](https://cursor.com/link/mcp/install?name=genclass&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBnZW5jbGFzcy9tY3BAMC4yLjAiXX0%3D) or `cursor://anysphere.cursor-deeplink/mcp/install?name=genclass&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBnZW5jbGFzcy9tY3BAMC4yLjAiXX0%3D` Or `.cursor/mcp.json` in the project (`~/.cursor/mcp.json` for all projects): @@ -74,7 +74,7 @@ Or `.cursor/mcp.json` in the project (`~/.cursor/mcp.json` for all projects): "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -83,10 +83,10 @@ Or `.cursor/mcp.json` in the project (`~/.cursor/mcp.json` for all projects): ### VS Code -[![Install in VS Code](https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF)](https://vscode.dev/redirect/mcp/install?name=genclass&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40genclass%2Fmcp%400.1.0%22%5D%7D) or from a terminal: +[![Install in VS Code](https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF)](https://vscode.dev/redirect/mcp/install?name=genclass&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40genclass%2Fmcp%400.2.0%22%5D%7D) or from a terminal: ```bash -code --add-mcp '{"name":"genclass","command":"npx","args":["-y","@genclass/mcp@0.1.0"]}' +code --add-mcp '{"name":"genclass","command":"npx","args":["-y","@genclass/mcp@0.2.0"]}' ``` Or `.mcp.json` at the workspace root (the portable format; `.vscode/mcp.json` takes the same entry under `servers`): @@ -98,7 +98,7 @@ Or `.mcp.json` at the workspace root (the portable format; `.vscode/mcp.json` ta "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -108,7 +108,7 @@ Or `.mcp.json` at the workspace root (the portable format; `.vscode/mcp.json` ta ### Codex CLI ```bash -codex mcp add genclass -- npx -y @genclass/mcp@0.1.0 +codex mcp add genclass -- npx -y @genclass/mcp@0.2.0 ``` Or `~/.codex/config.toml` (`.codex/config.toml` in a trusted project). The first start downloads the package, so allow more than the default 10 seconds: @@ -116,14 +116,14 @@ Or `~/.codex/config.toml` (`.codex/config.toml` in a trusted project). The first ```toml [mcp_servers.genclass] command = "npx" -args = ["-y", "@genclass/mcp@0.1.0"] +args = ["-y", "@genclass/mcp@0.2.0"] startup_timeout_sec = 30 ``` ### Gemini CLI ```bash -gemini mcp add genclass npx -- -y @genclass/mcp@0.1.0 # -s user: for all projects +gemini mcp add genclass npx -- -y @genclass/mcp@0.2.0 # -s user: for all projects ``` Or `.gemini/settings.json` in the project (`~/.gemini/settings.json` for all projects): @@ -135,7 +135,7 @@ Or `.gemini/settings.json` in the project (`~/.gemini/settings.json` for all pro "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -153,7 +153,7 @@ Or `.gemini/settings.json` in the project (`~/.gemini/settings.json` for all pro "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -163,13 +163,13 @@ Or `.gemini/settings.json` in the project (`~/.gemini/settings.json` for all pro Devin CLI and Devin Desktop's Devin Local agent: ```bash -devin mcp add -s user genclass -- npx -y @genclass/mcp@0.1.0 +devin mcp add -s user genclass -- npx -y @genclass/mcp@0.2.0 ``` ### Cline ```bash -cline mcp add genclass --yes -- npx -y @genclass/mcp@0.1.0 +cline mcp add genclass --yes -- npx -y @genclass/mcp@0.2.0 ``` Or MCP Servers, Configure, Configure MCP Servers (`~/.cline/data/settings/cline_mcp_settings.json`): @@ -181,7 +181,7 @@ Or MCP Servers, Configure, Configure MCP Servers (`~/.cline/data/settings/cline_ "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -190,7 +190,7 @@ Or MCP Servers, Configure, Configure MCP Servers (`~/.cline/data/settings/cline_ ### Goose -`goose://extension?cmd=npx&arg=-y&arg=%40genclass%2Fmcp%400.1.0&id=genclass&name=genclass&description=Find%20race%20conditions%20by%20reordering%20responses%2C%20replay%20one%2C%20prove%20the%20fix` (open it to install), or `goose configure` (Add Extension, Command-line Extension, command `npx -y @genclass/mcp@0.1.0`), or `~/.config/goose/config.yaml`: +`goose://extension?cmd=npx&arg=-y&arg=%40genclass%2Fmcp%400.2.0&id=genclass&name=genclass&description=Find%20race%20conditions%20by%20reordering%20responses%2C%20replay%20one%2C%20prove%20the%20fix` (open it to install), or `goose configure` (Add Extension, Command-line Extension, command `npx -y @genclass/mcp@0.2.0`), or `~/.config/goose/config.yaml`: ```yaml extensions: @@ -199,7 +199,7 @@ extensions: name: genclass enabled: true cmd: npx - args: ["-y", "@genclass/mcp@0.1.0"] + args: ["-y", "@genclass/mcp@0.2.0"] env_keys: [] envs: {} timeout: 300 @@ -216,7 +216,7 @@ extensions: "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -234,7 +234,7 @@ AI Assistant: Settings, Tools, AI Assistant, Model Context Protocol (MCP), Add, "command": "npx", "args": [ "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ] } } @@ -254,7 +254,7 @@ AI Assistant: Settings, Tools, AI Assistant, Model Context Protocol (MCP), Add, "command": [ "npx", "-y", - "@genclass/mcp@0.1.0" + "@genclass/mcp@0.2.0" ], "enabled": true } @@ -264,7 +264,7 @@ AI Assistant: Settings, Tools, AI Assistant, Model Context Protocol (MCP), Add, -Any other MCP client: a stdio server, command `npx`, arguments `-y @genclass/mcp@0.1.0`, no environment variables +Any other MCP client: a stdio server, command `npx`, arguments `-y @genclass/mcp@0.2.0`, no environment variables required. Then connect the app's development build (once). The agent link needs the newest runtime line, `@genclass/runtime` @@ -318,7 +318,7 @@ on the fixed one, and explore on the fixed page reported nothing. Details: [docs - **Channels** (Claude Code research preview): start Claude Code with `claude --dangerously-load-development-channels server:genclass` and new findings arrive in the session as they happen (`notifications/claude/channel`). -- **Prompt hook** (part of the Claude Code plugin): `npx -y @genclass/mcp@0.1.0 init --hook` adds a `UserPromptSubmit` +- **Prompt hook** (part of the Claude Code plugin): `npx -y @genclass/mcp@0.2.0 init --hook` adds a `UserPromptSubmit` hook to `.claude/settings.json`; each prompt then carries the findings that changed since the last one. ## Environment diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 77405094..5ee40d0f 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@genclass/mcp", - "version": "0.1.0", + "version": "0.2.0", "mcpName": "io.github.genclass-dev/genclass", "description": "GenClass for coding agents: an MCP server that sees what happens inside your app's pages (clicks, requests, the order responses arrived, state writes, errors), re-runs them with the network answering in different orders to find race conditions, and replays one exact order to prove a fix. Local only, no dependencies.", "type": "module", diff --git a/packages/mcp/plugin/.claude-plugin/plugin.json b/packages/mcp/plugin/.claude-plugin/plugin.json index d275aa2c..853a3e3e 100644 --- a/packages/mcp/plugin/.claude-plugin/plugin.json +++ b/packages/mcp/plugin/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "genclass", - "version": "0.1.0", + "version": "0.2.0", "description": "See what happens inside your app's pages in causal order, find race conditions by replaying different response orders, reproduce a bug exactly and prove the fix with a generated Playwright test. Local only.", "author": { "name": "GenClass", diff --git a/packages/mcp/plugin/.mcp.json b/packages/mcp/plugin/.mcp.json index 22160be6..ebe9f088 100644 --- a/packages/mcp/plugin/.mcp.json +++ b/packages/mcp/plugin/.mcp.json @@ -2,7 +2,10 @@ "mcpServers": { "genclass": { "command": "npx", - "args": ["-y", "@genclass/mcp@0.1.0"] + "args": [ + "-y", + "@genclass/mcp@0.2.0" + ] } } } diff --git a/packages/mcp/plugin/README.md b/packages/mcp/plugin/README.md index d4f8f0e8..b146c690 100644 --- a/packages/mcp/plugin/README.md +++ b/packages/mcp/plugin/README.md @@ -20,8 +20,8 @@ page of the dev server. The page side needs `@genclass/runtime` 0.3.0-beta.1 or | part | file | what it does | |---|---|---| -| MCP server `genclass` | `.mcp.json` | runs `npx -y @genclass/mcp@0.1.0`: nine tools (`genclass_status`, `genclass_findings`, `genclass_explain`, `genclass_explore`, `genclass_replay`, `genclass_analytics`, `genclass_setup`, `genclass_scan`, `genclass_clear`) and a bridge on 127.0.0.1:47357 that your app's pages connect to | -| `UserPromptSubmit` hook | `hooks/hooks.json` | runs `npx -y @genclass/mcp@0.1.0 hook` before each prompt: up to five findings recorded since the last prompt are added to the prompt as context | +| MCP server `genclass` | `.mcp.json` | runs `npx -y @genclass/mcp@0.2.0`: nine tools (`genclass_status`, `genclass_findings`, `genclass_explain`, `genclass_explore`, `genclass_replay`, `genclass_analytics`, `genclass_setup`, `genclass_scan`, `genclass_clear`) and a bridge on 127.0.0.1:47357 that your app's pages connect to | +| `UserPromptSubmit` hook | `hooks/hooks.json` | runs `npx -y @genclass/mcp@0.2.0 hook` before each prompt: up to five findings recorded since the last prompt are added to the prompt as context | | skill `genclass` | `skills/genclass/SKILL.md` | tells Claude when to use the tools (an intermittent frontend bug; after changing code that fetches, submits, autosaves, polls or debounces) and how to confirm a fix | The launcher is pinned to the plugin's version, so the plugin runs the exact release it was reviewed with. @@ -55,7 +55,7 @@ diagnostics, which `GenClass.init({ telemetry: false })` turns off ([PRIVACY.md] - Everything: `/plugin disable genclass@genclass` (or `/plugin uninstall genclass@genclass`). - Only the hook: Claude Code has no switch for one plugin hook; uninstall the plugin and add the server alone - (`claude mcp add genclass -- npx -y @genclass/mcp@0.1.0`), or set `"disableAllHooks": true` in your settings, which + (`claude mcp add genclass -- npx -y @genclass/mcp@0.2.0`), or set `"disableAllHooks": true` in your settings, which turns off every hook. - In the app: remove the `connectAgent(rt)` line; the page then never talks to the bridge. diff --git a/packages/mcp/plugin/hooks/hooks.json b/packages/mcp/plugin/hooks/hooks.json index 5117a046..470bdba3 100644 --- a/packages/mcp/plugin/hooks/hooks.json +++ b/packages/mcp/plugin/hooks/hooks.json @@ -5,7 +5,7 @@ "hooks": [ { "type": "command", - "command": "npx -y @genclass/mcp@0.1.0 hook", + "command": "npx -y @genclass/mcp@0.2.0 hook", "timeout": 30 } ] diff --git a/packages/mcp/plugin/mcp.json b/packages/mcp/plugin/mcp.json index 571427a9..8b8f0c7c 100644 --- a/packages/mcp/plugin/mcp.json +++ b/packages/mcp/plugin/mcp.json @@ -4,7 +4,10 @@ "genclass": { "type": "stdio", "command": "npx", - "args": ["-y", "@genclass/mcp@0.1.0"] + "args": [ + "-y", + "@genclass/mcp@0.2.0" + ] } } } diff --git a/packages/mcp/plugin/plugin.json b/packages/mcp/plugin/plugin.json index 6a7fd7c3..83e07457 100644 --- a/packages/mcp/plugin/plugin.json +++ b/packages/mcp/plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "genclass", - "version": "0.1.0", + "version": "0.2.0", "description": "See what happens inside your app's pages in causal order, find race conditions by replaying different response orders, reproduce a bug exactly and prove the fix with a generated Playwright test. Local only.", "author": { "name": "GenClass", @@ -10,5 +10,13 @@ "homepage": "https://genclass.dev", "repository": "https://github.com/genclass-dev/GenClass-lib", "license": "Apache-2.0", - "keywords": ["race-condition", "debugging", "playwright", "frontend", "mcp", "stale-response", "double-submit"] + "keywords": [ + "race-condition", + "debugging", + "playwright", + "frontend", + "mcp", + "stale-response", + "double-submit" + ] } diff --git a/packages/mcp/server.json b/packages/mcp/server.json index 0fc70211..90c431f6 100644 --- a/packages/mcp/server.json +++ b/packages/mcp/server.json @@ -9,13 +9,13 @@ "source": "github", "subfolder": "packages/mcp" }, - "version": "0.1.0", + "version": "0.2.0", "packages": [ { "registryType": "npm", "registryBaseUrl": "https://registry.npmjs.org", "identifier": "@genclass/mcp", - "version": "0.1.0", + "version": "0.2.0", "transport": { "type": "stdio" } diff --git a/packages/mcp/src/http.ts b/packages/mcp/src/http.ts index 7bcc9601..17c23097 100644 --- a/packages/mcp/src/http.ts +++ b/packages/mcp/src/http.ts @@ -25,7 +25,7 @@ import type { Store } from "./store.js"; import { DEFAULT_PORT } from "./types.js"; export const MAX_BODY = 1024 * 1024; -export const VERSION = "0.1.0"; +export const VERSION = "0.2.0"; /** A page origin on this machine (where a page with connectAgent runs by default), or one the developer allowed. */ export function devOrigin(origin: string | undefined, allow?: ReadonlySet): boolean { diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 3b4e3c1f..5290e220 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 0.3.0-beta.2 (2026-10-25) - **The dashboard is laid out like Supabase Studio** (telemetry-worker, owner request 2026-10-25; `src/studio.ts`). An account is the organization and each app a project: `/account` is the organization's Projects page (search, diff --git a/packages/runtime/README.md b/packages/runtime/README.md index 10207291..afba33d3 100644 --- a/packages/runtime/README.md +++ b/packages/runtime/README.md @@ -353,7 +353,7 @@ Claude Code and other coding agents, and lets the agent: - **keep the proof:** a generated Playwright test that sets the same order and fails while the bug is there. ```bash -claude mcp add genclass -- npx -y @genclass/mcp@0.1.0 +claude mcp add genclass -- npx -y @genclass/mcp@0.2.0 ``` ```ts diff --git a/packages/runtime/package.json b/packages/runtime/package.json index ad8c3bd1..142f0941 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@genclass/runtime", - "version": "0.3.0-beta.1", + "version": "0.3.0-beta.2", "description": "A runtime for web apps: a small local model watches user actions, async work, network, state and errors, and flags, and optionally prevents, stale responses, races, duplicate requests, inconsistent state and failure storms.", "type": "module", "license": "Apache-2.0", diff --git a/packages/runtime/src/version.ts b/packages/runtime/src/version.ts index 75c2e734..7000308d 100644 --- a/packages/runtime/src/version.ts +++ b/packages/runtime/src/version.ts @@ -2,4 +2,4 @@ // test/telemetry.test.ts ("RUNTIME_VERSION matches package.json"); bump both together: .github/workflows/release.yml // checks that the v tag equals package.json and that this file holds the same string. -export const RUNTIME_VERSION = "0.3.0-beta.1"; +export const RUNTIME_VERSION = "0.3.0-beta.2"; From 506d9d19d1b811f591cc842f255994f4792758c5 Mon Sep 17 00:00:00 2001 From: Karan Date: Sun, 25 Oct 2026 17:07:00 -0400 Subject: [PATCH 2/2] Lockfile: the registry's 0.3.0-beta.1 for the two packages that pin it exactly packages/playwright and packages/genclass-runtime depend on the published @genclass/runtime 0.3.0-beta.1, not the workspace; with the workspace at 0.3.0-beta.2 the lock needs their nested copies from the registry, as npm install writes them (npm ci refused the hand-edited lock). Co-Authored-By: Claude Fable 5.1 --- package-lock.json | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/package-lock.json b/package-lock.json index 14774e4d..64984858 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16826,6 +16826,37 @@ "node": ">=20" } }, + "packages/genclass-runtime/node_modules/@genclass/runtime": { + "version": "0.3.0-beta.1", + "resolved": "https://registry.npmjs.org/@genclass/runtime/-/runtime-0.3.0-beta.1.tgz", + "integrity": "sha512-tKr7xU7nsFOmXcQQcpLx4k/R1Pd0vXASBkk9vu59WULX3WdDzYXJTq6DFk9UNFJxpxquFGXYa94btBy4In0dZw==", + "license": "Apache-2.0", + "dependencies": { + "onnxruntime-web": "1.30.0" + }, + "bin": { + "genclass-runtime": "bin/genclass-runtime.mjs" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "react": ">=18", + "redux": ">=4", + "zustand": ">=4" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "redux": { + "optional": true + }, + "zustand": { + "optional": true + } + } + }, "packages/mcp": { "name": "@genclass/mcp", "version": "0.2.0", @@ -16899,6 +16930,38 @@ } } }, + "packages/playwright/node_modules/@genclass/runtime": { + "version": "0.3.0-beta.1", + "resolved": "https://registry.npmjs.org/@genclass/runtime/-/runtime-0.3.0-beta.1.tgz", + "integrity": "sha512-tKr7xU7nsFOmXcQQcpLx4k/R1Pd0vXASBkk9vu59WULX3WdDzYXJTq6DFk9UNFJxpxquFGXYa94btBy4In0dZw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "onnxruntime-web": "1.30.0" + }, + "bin": { + "genclass-runtime": "bin/genclass-runtime.mjs" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "react": ">=18", + "redux": ">=4", + "zustand": ">=4" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "redux": { + "optional": true + }, + "zustand": { + "optional": true + } + } + }, "packages/runtime": { "name": "@genclass/runtime", "version": "0.3.0-beta.2",