Skip to content

Commit b3636b1

Browse files
Yeachan-HeoclaudeAlexU-A
authored
Release v4.7.0: Event-Driven Team Runtime & Multi-Model Flexibility (#1354)
* Fix HUD build guidance and detection for plugin cache (#1328) (#1332) * feat(hud): add wrap mode for maxWidth output (#1331) * fix: use $argv when spawning workers under fish shell (#1329) * fix(team): use $argv for fish worker launch forwarding * docs(changelog): note fish worker spawn argv fix * fix(hud): resolve documentation and error handling slop (#1307) * chore(release): bump version to 4.6.1 * fix(hud): resolve documentation and error handling slop Fix SKILL.md documentation to match implementation: - Remove non-existent showCache and showCost properties - Add proper safeMode documentation - Update config examples to match HudElementConfig type - Clarify CLAUDE_CONFIG_DIR support for config paths - Add agentsFormat options documentation Fix error handling in state.ts and index.ts: - Add error logging to all catch blocks - writeHudState now logs failures instead of silent return - readHudState logs read/parse errors - Config operations log errors to stderr - Debug-guarded error logging in index.ts All 281 HUD tests pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix(benchmark): harden harsh-critic parser for markdown variants (#1301) Rebased onto dev modular scoring structure. Parser changes already present on dev; this commit adds the test suite covering: - Markdown heading sections and bold-number findings - Perspective subsection headings - None gap analysis edge case - function():line-range evidence markers Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * feat(benchmark): calibrate keyword matcher with deterministic thresholds (#1300) Rebased onto dev modular scoring structure. Scorer changes already present on dev; this commit adds: - Test suite for punctuation/hyphen robustness - Dynamic threshold boundary tests (6-keyword negative/positive) - Scoring calibration rationale document Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * docs: remove deprecated analytics CLI commands (#1336) (#1341) * feat(notifications): add custom integration system with webhook and CLI support Add generic extensibility to notification system via custom webhooks and CLI commands, consolidating configure-openclaw into configure-notifications. New Features: - Custom webhook integrations with template variable support - Custom CLI command integrations (execFile, not shell) - Built-in presets: OpenClaw, n8n, ClawdBot, generic webhook/CLI - Automatic migration from legacy OpenClaw config - Interactive wizard in configure-notifications skill Security: - HTTPS enforcement for webhooks (except localhost) - Timeout bounds (1-60s) - CRLF injection prevention in headers - Shell metacharacter rejection in CLI args - execFile (not exec) for CLI commands Files Added: - src/notifications/template-variables.ts - src/notifications/validation.ts - src/notifications/presets.ts - src/notifications/__tests__/custom-integration.test.ts Files Modified: - src/notifications/types.ts (CustomIntegration types) - src/notifications/config.ts (config reader + migration) - src/notifications/dispatcher.ts (webhook/CLI dispatch) - src/notifications/index.ts (exports) - src/hooks/session-end/index.ts (remove OpenClaw code) - skills/configure-notifications/SKILL.md (custom wizard) - skills/configure-openclaw/SKILL.md (deprecation notice) Tests: 31 new tests, all 522 notification tests passing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test(qa): add integration tests for custom webhook and CLI dispatch Add end-to-end QA tests that verify: - Webhook dispatch with template interpolation - CLI command execution via execFile - Custom header handling Run with: node scripts/qa-tests/test-custom-integration.mjs * test: remove placeholder example test suite * test: add runtime and integration edge-case coverage * fix(cli): handle bare --notify without consuming next arg * test: fix stop-hook OpenClaw cooldown assertion (#1344) * test: fix stop-hook OpenClaw cooldown assertion * test: align session-end openclaw test with current hook behavior * fix(session-end): restore awaited OpenClaw wake on session end * Revert "fix(session-end): restore awaited OpenClaw wake on session end" This reverts commit 822e54f. * feat(cli): integrate omx ask/team into omc; deprecate team MCP runtime * feat(team): event-driven team redesign matching OMX architecture Implement event-driven team runtime (v2) with identical CLI API surface to oh-my-codex. Key changes: - Add 28-operation CLI API (api-interop.ts) identical to OMX - Add team-ops.ts MCP gateway with 40+ functions - Add runtime-v2.ts with snapshot-based monitoring (no polling watchdog) - Add dispatch queue pattern with file-based O_EXCL locking - Add worker/dispatch/leader-nudge hooks for event-driven coordination - Add dynamic scaling (scale up/down) gated by OMC_TEAM_SCALING_ENABLED - Add JSONL append-only event log for observability - Add task claim/transition/release with 15-min lease - Remove done.json entirely - completion via CLI API lifecycle transitions - Fix OMX_TEAM_AUTO_INTERRUPT_RETRY naming leak to OMC_ prefix - Feature-flagged behind OMC_RUNTIME_V2=1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(team): v2 runtime uses direct tmux spawn with CLI API inbox, no done.json or watchdog - Rewrite startTeamV2() to stop delegating to v1's startTeam() - Add buildV2TaskInstruction() with CLI API lifecycle commands - Add spawnV2Worker() for direct tmux pane creation - Fix runtime-cli.ts to use startTeamV2/shutdownTeamV2 when OMC_RUNTIME_V2=1 - Add omc team CLI entry point (start/status/shutdown/api subcommands) - Rebuild bridge bundles with v2 code paths - Verified: claude and codex workers spawn with CLI API inbox, no done.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: stop infinite 401/403 OAuth loops in Team persistent mode (#1308) (#1330) * fix(team): stop auth-error continuation loops in persistent mode * test: mock isAuthenticationError in stop hook cooldown test * fix(cli): remove duplicate 'team' command registration The legacy team command (runTeamCommand + TEAM_COMMAND_USAGE) was not removed when the new commands/team.ts handler was integrated, causing Commander to throw "cannot add command 'team' as already have command 'team'" on every CLI invocation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test(cli): add CLI boot regression tests for duplicate command registration Adds static analysis to detect duplicate .command() names in the CLI source, plus runtime tests ensuring omc --help, --version, and --madmax boot without crashing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(ask): add ask-codex and ask-gemini skills (#1350) * feat(ask): add ask-codex and ask-gemini skills with provider-specific CLI args - Add codex as valid ask provider alongside claude and gemini - Create ask-codex and ask-gemini skill surfaces (SKILL.md) for plugin discovery - Add wrapper scripts (scripts/ask-codex.sh, scripts/ask-gemini.sh) with PATH-independent repo-local CLI entrypoint execution - Use provider-specific CLI args: codex exec --dangerously-bypass-approvals-and-sandbox, gemini -p --yolo, claude -p - Fix test env: strip CLAUDECODE env var from spawned test processes to prevent nested session detection failures - Update skill tests with alias-aware counts (38/37/38) and ask-codex expectations - Add wrapper wiring tests: provider dispatch, prompt forwarding, env passthrough, exit code propagation, PATH-shadow isolation - Update docs (REFERENCE.md, CLAUDE.md, AGENTS.md) with ask-codex references Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: rebuild bridge/cli.cjs with codex provider support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve pre-existing lint errors and team-help test failure - Fix empty catch blocks in runtime-cli.ts, runtime-v2.ts, scaling.ts - Replace empty interface with type alias in state/tasks.ts - Update team-help test to check team.ts instead of index.ts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix(skills): use CLAUDE_PLUGIN_ROOT for ask skill wrapper paths (#1351) Wrapper paths in SKILL.md used relative ./scripts/ which doesn't resolve in production where the plugin is installed at a different location. Use ${CLAUDE_PLUGIN_ROOT}/scripts/ consistent with other skills like team and cancel. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * docs(skills): align team/ask docs and route ccg via ask skills * chore: bump version to 4.7.0 and add release notes Event-driven team runtime v2, ask-codex/ask-gemini skills for non-tmux multi-model flexibility, 15 security fixes, custom notifications, and HUD enhancements. 50+ PRs merged, 30K+ lines changed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Alex Urevick-Ackelsberg <alex@zivtech.com>
1 parent d45a323 commit b3636b1

File tree

342 files changed

+34620
-2609
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

342 files changed

+34620
-2609
lines changed

.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
{
1111
"name": "oh-my-claudecode",
1212
"description": "Claude Code native multi-agent orchestration with intelligent model routing, 28 agent variants, and 32 powerful skills. Zero learning curve. Maximum power.",
13-
"version": "4.6.7",
13+
"version": "4.7.0",
1414
"author": {
1515
"name": "Yeachan Heo",
1616
"email": "hurrc04@gmail.com"
@@ -27,5 +27,5 @@
2727
]
2828
}
2929
],
30-
"version": "4.6.7"
30+
"version": "4.7.0"
3131
}

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "oh-my-claudecode",
3-
"version": "4.6.7",
3+
"version": "4.7.0",
44
"description": "Multi-agent orchestration system for Claude Code",
55
"author": {
66
"name": "oh-my-claudecode contributors"

CHANGELOG.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,100 @@
1+
# oh-my-claudecode v4.7.0: Event-Driven Team Runtime & Multi-Model Flexibility
2+
3+
## Release Notes
4+
5+
Major release featuring a completely redesigned team orchestration runtime, restored non-tmux Codex/Gemini skills for maximum flexibility, comprehensive security hardening, and 50+ merged PRs.
6+
7+
### Highlights
8+
9+
- **Event-Driven Team Runtime v2** — Complete architectural redesign matching OMX patterns. Direct tmux spawn with CLI API inbox replaces watchdog/done.json polling. Dispatch queues, monitoring, and scaling modules provide production-grade orchestration. (#1348)
10+
- **Ask-Codex & Ask-Gemini Skills** — Restored non-tmux Codex and Gemini integration via `ask-codex` and `ask-gemini` skills. Users now have maximum flexibility: use `/ccg` for tri-model fan-out, `/omc-teams` for tmux pane workers, or the new ask skills for lightweight single-query dispatch — no tmux required. (#1350)
11+
- **OMX CLI Integration** — Unified `ask` and `team` CLI commands from OMX into OMC core. The team MCP runtime is deprecated in favor of the new CLI-native approach. (#1346)
12+
13+
### Features
14+
15+
- **feat(team): event-driven team redesign** — New `runtime-v2.ts` with `api-interop.ts`, `dispatch-queue.ts`, `events.ts`, `monitor.ts`, `scaling.ts`, `mcp-comm.ts`, and `team-ops.ts` modules. 5,000+ lines of new orchestration infrastructure. (#1348)
16+
- **feat(team): v2 runtime direct tmux spawn** — CLI API inbox replaces done.json and watchdog patterns for more reliable worker lifecycle management.
17+
- **feat(ask): add ask-codex and ask-gemini skills** — Non-tmux skills that invoke Codex/Gemini via wrapper scripts using `CLAUDE_PLUGIN_ROOT` for portable path resolution. (#1350, #1351)
18+
- **feat(cli): integrate omx ask/team into omc** — Unified CLI surface; deprecate team MCP runtime in favor of CLI-native team operations. (#1346)
19+
- **feat(notifications): custom integration system** — Webhook and CLI dispatch support for notifications beyond built-in Telegram/Discord/Slack presets. Template variables, validation, and integration tests included.
20+
- **feat(agents): harsh-critic v2** — Plan-specific protocol with adaptive harshness levels and reproducible benchmark pack. (#1335)
21+
- **feat(hud): configurable git info position** — Place git info above or below the HUD via config. (#1302)
22+
- **feat(hud): wrap mode for maxWidth** — New `wrap` alternative to truncation for long output lines. (#1331, #1319)
23+
- **feat(hud): API error indicator** — Explicit error display when rate limit API fetch fails. (#1255, #1259)
24+
- **feat(hud): active profile name** — Display current profile name for multi-profile setups. (#1246)
25+
- **feat(benchmark): deterministic keyword thresholds** — Calibrated keyword matcher with reproducible thresholds. (#1300)
26+
27+
### Bug Fixes
28+
29+
- **fix: infinite OAuth loop** — Stop 401/403 loops in Team persistent mode. (#1308, #1330)
30+
- **fix(cli): duplicate 'team' command** — Remove duplicate command registration that caused CLI boot failures.
31+
- **fix(cli): bundle CLI entry point** — Eliminate `node_modules` dependency for plugin marketplace installs. (#1293)
32+
- **fix(cli): bare --notify handling** — Prevent `--notify` from consuming the next positional argument.
33+
- **fix(team): CLI worker model passthrough**`OMC_EXTERNAL_MODELS_DEFAULT_CODEX_MODEL` now correctly propagates to workers. (#1291, #1294)
34+
- **fix(team-mcp): wait hang prevention** — Artifact convergence prevents indefinite blocking. (#1241)
35+
- **fix(team-runtime): readiness startup** — Restore startup sequence for non-prompt workers. (#1243)
36+
- **fix(team-runtime): done.json parse recovery** — Robust JSON parsing with fallback for corrupted watchdog files. (#1231, #1234)
37+
- **fix(team-runtime): paths with spaces** — Allow valid `launchBinary` paths containing spaces. (#1232, #1236)
38+
- **fix(team-security): CLI path trust** — Tightened trust validation and RC-loading behavior. (#1230, #1237)
39+
- **fix(hud): documentation and error handling** — Resolve slop in HUD docs and error paths. (#1307)
40+
- **fix(hud): async file I/O** — Prevent event loop blocking in HUD render hot path. (#1273, #1305)
41+
- **fix(persistent-mode): cancel signal check** — Check cancellation before blocking stop hook. (#1306)
42+
- **fix(deep-interview): state mode alignment** — Align with state tools enum for correct persistence. (#1233, #1235)
43+
- **fix(python-repl): Windows cleanup** — Fix orphan process and session cleanup on Windows. (#1239)
44+
- **fix(config): auto-detect Bedrock/Vertex AI** — Correct `forceInherit` detection for cloud providers. (#1292)
45+
- **fix: Fish shell worker spawn** — Use `$argv` instead of `$@` for Fish compatibility. (#1326, #1329)
46+
- **fix: duplicate shebang in CLI build** — Remove double shebang in bundled CLI entry. (#1309)
47+
- **fix: bundled path resolution** — Hardened `getPackageDir()` across agent loaders, daemon bootstrap, and reply listener. (#1322, #1323, #1324, #1325)
48+
49+
### Security
50+
51+
- **SSRF protection for ANTHROPIC_BASE_URL** — Validate base URL to prevent server-side request forgery. (#1298, #1304)
52+
- **Default-deny in checkSecurity()** — Critical fix: `live-data.ts` now denies by default instead of allowing unknown paths. (#1281)
53+
- **Shell injection prevention** — Validate model name and provider in `spawnCliProcess`. (#1285)
54+
- **Prompt injection mitigation** — Sanitize AGENTS.md content before session injection. (#1284)
55+
- **Environment credential isolation** — Filter sensitive env vars from child processes. (#1284, #1296)
56+
- **Path traversal fixes** — Harden session-end hook against directory traversal. (#1282)
57+
- **Shell/config injection** — Fix injection vectors in teleport and daemon modules. (#1283)
58+
- **TOCTOU race conditions** — Replace `existsSync+readFileSync` with atomic `try/catch ENOENT`. (#1288)
59+
- **Memory leak prevention** — Add max-size caps to unbounded Maps and caches. (#1287, #1274)
60+
- **Null safety** — Replace unsafe non-null assertions with defensive checks. (#1286, #1277)
61+
- **Silent catch logging** — Add error logging to 19+ silent catch blocks. (#1297, #1303)
62+
63+
### Documentation & i18n
64+
65+
- **Korean translations** — Full ARCHITECTURE, FEATURES, MIGRATION, and REFERENCE docs in Korean. (#1260, #1262, #1264)
66+
- **5 new language READMEs** — Expanded international documentation coverage. (#1289)
67+
- **Remove deprecated CLI docs** — Removed references to non-existent `omc stats`, `omc agents`, `omc tui` commands. (#1336, #1341)
68+
- **Team/Ask skill docs** — Aligned team and ask documentation with CCG routing. (#1353)
69+
70+
### Testing & CI
71+
72+
- **CLI boot regression tests** — Prevent duplicate command registration regressions.
73+
- **Edge/smoke coverage expansion** — Runtime and integration edge-case tests. (#1345)
74+
- **npm pack + install CI test** — Verify published package installs correctly. (#1318)
75+
- **Stop-hook cooldown assertion fix** — Correct OpenClaw test timing. (#1344)
76+
- **Harsh-critic parser hardening** — Handle markdown formatting variants in benchmark. (#1301)
77+
78+
### Stats
79+
80+
- **50+ PRs merged** | **30,000+ lines changed** | **268 files touched**
81+
- **15 security fixes** | **20+ bug fixes** | **10+ new features**
82+
83+
### Install / Update
84+
85+
```bash
86+
npm install -g oh-my-claude-sisyphus@4.7.0
87+
```
88+
89+
Or reinstall the plugin:
90+
```bash
91+
claude /install-plugin oh-my-claudecode
92+
```
93+
94+
**Full Changelog**: https://github.com/Yeachan-Heo/oh-my-claudecode/compare/v4.6.7...v4.7.0
95+
96+
---
97+
198
# oh-my-claudecode v4.6.7: Bundled Path Resolution & Daemon Startup Fixes
299

3100
## Release Notes
@@ -20,6 +117,12 @@ Patch release focused on bundled CJS runtime stability and daemon startup correc
20117
- **Reply listener daemon bootstrap module path**: Applied the same bundled module path fix to reply listener daemon startup.
21118
- Updated `src/notifications/reply-listener.ts`
22119

120+
- **Fish worker spawn argument forwarding**: Fixed worker launch forwarding in bundled runtime CLI for Fish shell by using `exec $argv` instead of `exec "$@"` (which Fish does not support), while preserving `exec "$@"` for bash/zsh and other POSIX shells.
121+
- Updated `src/team/tmux-session.ts`
122+
- Added regression tests in `src/team/__tests__/tmux-session.test.ts`
123+
- Regenerated `bridge/runtime-cli.cjs`
124+
- Fixes #1326
125+
23126
- **Regression coverage**:
24127
- Added `src/__tests__/package-dir-resolution-regression.test.ts`
25128
- Regenerated bridge/dist artifacts

0 commit comments

Comments
 (0)