Skip to content

Commit 4325cb1

Browse files
debugmcpdevcynarlabclaude
authored
chore(release): prepare v0.22.0 (#141)
* chore(release): prepare v0.22.0 - CHANGELOG: date 0.22.0 and backfill missing entries (#107, #116, #119, #126-#131 fixes, commander 14->15 major bump, test-suite and README notes) - README: v0.22.0 callouts, add Ruby to the adapter diagram and repair its corrupted row, correct the Docker image language list, link the .NET guide - release-dry-run.sh: cover @debugmcp/adapter-ruby in version-consistency, npm pack, and already-published checks - release.yml: add Ruby toolchain to build-and-test and npm-publish jobs, bump workflow_dispatch default ref to v0.22.0 - sync all package versions to 0.22.0 (scripts/sync-versions.cjs) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * ci: align codeql-action/autobuild with init/analyze at v4.36.3 Dependabot bumped init (#140) and analyze (#139) in separate PRs and left autobuild at v4.36.2; mixed versions fail the Analyze job with 'Loaded a configuration file for version 4.36.2, but running version 4.36.3'. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: JF <john.franklin@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 1d32a3c commit 4325cb1

16 files changed

Lines changed: 66 additions & 34 deletions

File tree

‎.github/workflows/codeql.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
languages: ${{ matrix.language }}
3434

3535
- name: Autobuild
36-
uses: github/codeql-action/autobuild@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
36+
uses: github/codeql-action/autobuild@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
3737

3838
- name: Perform CodeQL Analysis
3939
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3

‎.github/workflows/release.yml‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
ref:
1010
description: 'Git ref (tag or branch) to release from'
1111
required: true
12-
default: 'refs/tags/v0.21.0'
12+
default: 'refs/tags/v0.22.0'
1313

1414
permissions: {}
1515

@@ -62,6 +62,14 @@ jobs:
6262
distribution: 'temurin'
6363
java-version: '21'
6464

65+
- name: Setup Ruby
66+
uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1.314.0
67+
with:
68+
ruby-version: '3.3'
69+
70+
- name: Verify rdbg (bundled debug gem)
71+
run: rdbg --version
72+
6573
- name: Sanity versions
6674
run: |
6775
node -v
@@ -250,6 +258,11 @@ jobs:
250258
distribution: 'temurin'
251259
java-version: '21'
252260

261+
- name: Setup Ruby
262+
uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1.314.0
263+
with:
264+
ruby-version: '3.3'
265+
253266
- name: Install dependencies
254267
run: pnpm install --frozen-lockfile --ignore-scripts
255268

‎CHANGELOG.md‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.22.0] - 2026-07-06
11+
1012
### Added
1113
- **Ruby debugging support** – launch and attach via `rdbg` (debug gem) DAP, including remote attach to containers and Kubernetes pods through port forwarding; conditional breakpoints, locals, repl-context expression evaluation, detach/re-attach (adapted from PR #88, contributed by [@Poyraxx](https://github.com/Poyraxx))
1214
- **Direct-connect attach** – adapter policies can now return a `connect`-mode spawn config to attach straight to an already-listening DAP server without spawning an adapter process; policy selection is driven by the session language via a single shared `getPolicyForLanguage()` mapping instead of adapter-command sniffing
1315
- **Ruby documentation** – `docs/ruby/README.md` user guide with verified launch/attach flows and Docker/Kubernetes remote-attach walkthroughs (`examples/ruby/remote-attach/`)
1416

1517
### Fixed
18+
- **JavaScript attach mode** – establish the js-debug child session when attaching, so breakpoints, stepping, and inspection work for attached Node.js processes (#131, fixes #124)
19+
- **Truthful attach failures** – `attach_to_process` now reports adapter/connection errors instead of returning an empty success (#129)
20+
- **`pause_execution` state** – reports the correct session state instead of a stale one (#119)
21+
- **Proxy lifecycle** – the per-session proxy process is stopped when a debuggee terminates naturally, eliminating leaked proxy processes (#127)
22+
- **Server orphan self-defense** – a stdin watchdog shuts the server down when its MCP client disappears, and backend shutdown is graceful across stdio/http/sse commands (#130)
23+
- **Proxy bootstrap heartbeat** – removed a one-sided heartbeat that could kill healthy proxies during slow startups (#126, fixes #123)
24+
- **Logging** – per-process log files prevent multi-process rotation races, and a rotation-failure latch stops runaway retry loops (#128, fixes #121)
25+
- **Python interpreter validation** – a configured `pythonPath` is validated for debugpy availability up front, with a clear error instead of a hang (#107, fixes #106)
26+
- **Java adapter vendoring** – honors `SKIP_ADAPTER_VENDOR` and skips gracefully on a `javac` older than JDK 21 (#116)
1627
- Attach sessions no longer apply host-side file existence checks to breakpoint paths — attach targets may run on a remote filesystem (container, pod, other machine)
1728
- `test:unit` now actually runs the per-adapter unit suites on Windows (the `tests/adapters/*/unit` glob never expanded under cmd.exe)
1829
- CLI bundle prepare-pack workspace list updated for new adapter packages
1930

31+
### Changed
32+
- Test suite parallelized and hardened via Vitest projects — unit suite runtime dropped from ~12 minutes to ~10 seconds (#110)
33+
- README refreshed with current capabilities and language matrix (#87)
34+
35+
### Dependencies
36+
- Bumped `commander` 14 → 15. The CLI surface is unchanged; `commander` is bundled into the published CLI, so end-user installs are unaffected. (#92)
37+
2038
## [0.21.0] - 2026-05-30
2139

2240
### Changed

‎README.md‎

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
mcp-debugger is a Model Context Protocol (MCP) server that exposes step-through debugging as structured tool calls. It lets AI agents set breakpoints, inspect variables, evaluate expressions, and step through running programs across seven languages — driving real language debuggers through the Debug Adapter Protocol (DAP).
1919

20-
> 🆕 **v0.21.0** — the minimum runtime is now **Node.js 22+** (Node 20 reached end-of-life). See the [CHANGELOG](./CHANGELOG.md) for the full release history.
20+
> 🆕 **v0.22.0** — **Ruby debugging support** lands (launch + attach via `rdbg`, including remote attach to containers and Kubernetes pods), alongside JavaScript attach-mode fixes and session/proxy lifecycle hardening. See the [CHANGELOG](./CHANGELOG.md) for the full release history.
2121
2222
## ✨ Key Features
2323

@@ -87,7 +87,7 @@ claude mcp list
8787
docker run -v $(pwd):/workspace debugmcp/mcp-debugger:latest
8888
```
8989

90-
> ⚠️ The Docker image ships Python, JavaScript, Go, Java, and .NET adapters. Rust debugging requires the local, SSE, or packed deployments where the adapter runs next to your toolchain. Note: adapters are loaded dynamically at runtime — only those whose toolchain is installed and detected will be reported as available by `list_supported_languages`.
90+
> ⚠️ The Docker image bundles the toolchains for **Python, JavaScript, and Java** debugging (Rust, Go, and .NET are disabled inside the container image, and the image does not include a Ruby runtime). For those languages, run the server via npm/npx next to your local toolchain — or, for Ruby, use remote attach to a `rdbg --open` process inside the container (see the [Ruby guide](./docs/ruby/README.md)). Adapters load dynamically at runtime — `list_supported_languages` reports only those whose toolchain is detected.
9191
9292
### Using npm
9393

@@ -159,15 +159,13 @@ Version 0.10.0 introduces a clean adapter pattern that separates language-agnost
159159
┌──────────────┐ ┌─────────────────┐
160160
│ ProxyManager │◀─────│ Language Adapter│
161161
└──────────────┘ └─────────────────┘
162-
│
163-
┌──────────────┴──────────────────────────────────────────┐
164-
│ │
165-
┌───────────┼───────────┬───────────┬───────────┬───────────┐ │
166-
│ │ │ │ │ │ │
167-
┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐
168-
│Python ││JavaScript││Rust ││Go ││Java ││Dotnet ││Mock │
169-
│Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter │
170-
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────���───┘
162+
│
163+
┌───────────┬───────────┬───────────┼───────────┬───────────┬───────────┬───────────┐
164+
│ │ │ │ │ │ │ │
165+
┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐
166+
│Python ││Ruby ││JavaScript││Rust ││Go ││Java ││.NET ││Mock │
167+
│Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter │
168+
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘
171169
```
172170

173171
### Adding Language Support
@@ -312,6 +310,7 @@ Then get the local variables:
312310
- 🟨 [JavaScript Debugging Guide](./docs/javascript/README.md) – JavaScript/TypeScript features
313311
- 🐹 [Go Debugging Guide](./docs/go/README.md) – Go debugging with Delve
314312
- ☕ [Java Debugging Guide](./docs/java/README.md) – Java debugging with JDI bridge
313+
- 🔷 [.NET Debugging Guide](./docs/dotnet/README.md) – .NET/C# debugging with netcoredbg
315314
- [Rust Debugging on Windows](docs/rust-debugging-windows.md) - Toolchain requirements and troubleshooting
316315
- 🔧 [Troubleshooting](./docs/troubleshooting.md) – Common issues & solutions
317316

@@ -379,7 +378,7 @@ See [tests/README.md](./tests/README.md) for detailed testing instructions.
379378

380379
## 📊 Project Status
381380

382-
- ✅ **Production Ready**: v0.21.0 with seven language adapters and polished multi-language distribution
381+
- ✅ **Production Ready**: v0.22.0 with seven language adapters and polished multi-language distribution
383382
- ✅ **Clean architecture** with a dynamic adapter pattern
384383
- ✅ **Python · Ruby · JavaScript/TypeScript · Go · Java · .NET/C#**: Full step-through debugging
385384
- 🦀 **Rust**: Full support on Linux/macOS/Windows (Windows requires the GNU toolchain; MSVC is not supported by CodeLLDB)

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "mcp-debugger-monorepo",
33
"private": true,
4-
"version": "0.21.0",
4+
"version": "0.22.0",
55
"description": "Run-time step-through debugging for LLM agents - Monorepo root",
66
"homepage": "https://github.com/debugmcp/mcp-debugger",
77
"repository": {

‎packages/adapter-dotnet/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@debugmcp/adapter-dotnet",
3-
"version": "0.21.0",
3+
"version": "0.22.0",
44
"description": ".NET/C# debug adapter for MCP debugger using netcoredbg",
55
"type": "module",
66
"main": "dist/index.js",
@@ -31,7 +31,7 @@
3131
"node": ">=22.0.0"
3232
},
3333
"peerDependencies": {
34-
"@debugmcp/shared": "0.21.0"
34+
"@debugmcp/shared": "0.22.0"
3535
},
3636
"repository": {
3737
"type": "git",

‎packages/adapter-go/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@debugmcp/adapter-go",
3-
"version": "0.21.0",
3+
"version": "0.22.0",
44
"description": "Go debugging adapter for mcp-debugger using Delve",
55
"type": "module",
66
"main": "./dist/index.js",

‎packages/adapter-java/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@debugmcp/adapter-java",
3-
"version": "0.21.0",
3+
"version": "0.22.0",
44
"description": "Java debug adapter for MCP Debugger using JDI bridge",
55
"type": "module",
66
"main": "./dist/index.js",

‎packages/adapter-javascript/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@debugmcp/adapter-javascript",
3-
"version": "0.21.0",
3+
"version": "0.22.0",
44
"description": "JavaScript/TypeScript debug adapter for MCP debugger",
55
"type": "module",
66
"main": "dist/index.js",
@@ -34,7 +34,7 @@
3434
"@vscode/debugprotocol": "^1.68.0"
3535
},
3636
"peerDependencies": {
37-
"@debugmcp/shared": "0.21.0"
37+
"@debugmcp/shared": "0.22.0"
3838
},
3939
"devDependencies": {
4040
"@types/node": "^25.9.3",

‎packages/adapter-mock/package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@debugmcp/adapter-mock",
3-
"version": "0.21.0",
3+
"version": "0.22.0",
44
"description": "Mock debug adapter for testing MCP debugger",
55
"type": "module",
66
"main": "dist/index.js",
@@ -28,7 +28,7 @@
2828
"node": ">=22.0.0"
2929
},
3030
"peerDependencies": {
31-
"@debugmcp/shared": "0.21.0"
31+
"@debugmcp/shared": "0.22.0"
3232
},
3333
"repository": {
3434
"type": "git",

0 commit comments

Comments
 (0)