oh-my-claudecode v4.9.3: MCP Bridge Fix, 30+ Bug Fixes & Hardening
🔥 Critical Fix
MCP bridge server crash on startup — setRequestHandler was extracted without .bind(server), causing this === undefined in strict mode. All MCP tools (state_clear, state_list_active, lsp_diagnostics) were broken in v4.9.2. Fixed. (#1979)
Release Notes
Hotfix release with 1 critical MCP fix, 30+ bug fixes, and release pipeline improvements across 32 merged PRs.
Highlights
- fix: MCP bridge crash — unbound
thisin setRequestHandler (#1979) - fix(team): parse only complete lines in outbox-reader (#1982)
- fix(hooks): escape regex metacharacters in detectPipelineSignal (#1977)
- fix(lib): guard against prototype pollution in deepMerge (#1955)
- fix(installer): strip corrupted markers to prevent mergeClaudeMd unbounded growth (#1966)
Bug Fixes
- fix: bind server context in standalone MCP handler registration (#1979)
- fix(team): parse only complete lines in outbox-reader (#1982)
- fix(team): strip tmux- prefix and add claude to provider type (#1981)
- fix(notifications): move clearTimeout to finally block in sendCustomWebhook (#1980)
- fix(hud): preserve session fields when clearing background tasks (#1978)
- fix(hooks): escape regex metacharacters in detectPipelineSignal (#1977)
- fix(hooks): use correct field name for ralph mode in keyword-detector (#1970)
- fix(lib): accept dots in extractRepoSlug for repos like next.js (#1976)
- fix(hooks): clear timeout in finally block for session-start scripts (#1975)
- fix(hud): add PID tracking to prevent session-summary process accumulation (#1974)
- fix(team): count both failed and error tasks in team status (#1973)
- fix(notifications): remove Slack fallback to prevent unrelated session injection (#1972)
- fix(team): add locking to teamCreateTask for safe concurrent task creation (#1971)
- fix(team): add file locking to removeWorkerWorktree metadata update (#1962)
- fix(scripts): use tail reading in persistent-mode to prevent OOM on large transcripts (#1967)
- fix(installer): strip corrupted markers to prevent mergeClaudeMd unbounded growth (#1966)
- fix(tools): escape $ replacement patterns in AST grep replace (#1965)
- fix(interop): add file locking to updateSharedTask (#1964)
- fix(cli): increase generateJobId entropy from 4 to 8 hex chars (#1963)
- fix(hud): propagate directory parameter to initializeHUDState (#1961)
- fix(model-routing): replace require() with ESM import to prevent crash (#1960)
- fix(lib): add RALPLAN to mode name maps (#1959)
- fix(providers): include auth token in Gitea REST API fallback (#1957)
- fix(notifications): add Slack user authorization with fail-closed pattern (#1956)
- fix(lib): guard against prototype pollution in deepMerge (#1955)
- fix(team): revert task to pending when tmux pane creation fails (#1940)
- fix(lib): use atomicWriteJsonSync in mode-state-io to prevent race condition (#1938)
- fix(hooks): return fresh:false for missing heartbeat file (#1937)
- fix(setup): remove duplicate dev paths in plugin-setup (#1943)
- fix(team): run dedup check before writing worker inbox (#1942)
Infrastructure
- fix(release): add version sync hook to prevent satellite file drift
- fix(release): generate fresh release notes at tag time (no more stale body)
- fix(ci): sync version markers to 4.9.3
Stats
- 32+ PRs merged | 30+ bug fixes | 1 critical MCP fix | 3 infrastructure improvements
Install / Update
npm install -g oh-my-claude-sisyphus@4.9.3Or reinstall the plugin:
claude /install-plugin oh-my-claudecodeFull Changelog: v4.9.2...v4.9.3
Contributors
Thank you to all contributors: @sercankaya @riftzen-bit