Root cause: Gemini CLI prepends MCP warning text to init event line,
causing JSON parse failure and losing session_id.
Fix: extract JSON from first '{' when initial parse fails.
All templates restored to `resume <SESSION_ID>` for both Codex and
Gemini, supporting parallel multi-session workflows.
New: spec-impl cross-phase session reuse (prototype → review).
Gemini CLI stream-json does not output session_id in events,
so the wrapper cannot capture it. All templates now use
`resume latest` for Gemini (Codex still uses `resume <SESSION_ID>`).
Affected templates: frontend, workflow, execute, feat, plan, codex-exec
- Output Session-ID to stderr immediately when backend reports
session_started, so Claude can capture it even if task times out
- Fix Command: display line to show actual task text instead of
misleading -p - for Gemini backend (geminiDirect logic)
- Bump codeagent-wrapper 5.8.0 → 5.9.0
- Bump EXPECTED_BINARY_VERSION to 5.9.0
Gemini CLI does not support "-" as stdin marker for the -p flag.
When useStdin=true, the wrapper was passing "-p -" which caused Gemini
to misparse arguments (--include-directories consuming "-" as its value).
Now Gemini backend receives the actual task text via -p directly,
skipping the stdin pipe entirely.
* fix: surface wrapper progress in task output
Propagate the --progress flag through the wrapper runtime path so background Codex tasks emit compact progress lines to stderr. Also enable progress output in long-running CCG command templates and add focused parser/arg coverage for the new behavior.
* fix: address review feedback for task progress output
Remove the unintended progress enablement in runCodexProcess, make progress snippets rune-safe for CJK output, add direct utility coverage, and align the remaining background command templates to use --progress consistently.
- Fix permission pattern: Bash(codeagent-wrapper*) → Bash(*codeagent-wrapper*)
- Fix spec-init <<< here-string triggering Claude Code security check
- Unify all platforms to use permissions.allow (remove Hook + jq dependency)
- Auto-migrate: clean up old Hook and old permission entries on upgrade
- Fix TS2345 in installer-mcp.ts by narrowing serverConfig to McpServerConfig
- Add pnpm typecheck + pnpm test as required pre-release checks in CLAUDE.md
The skill runner path was still pointing to ~/.claude/skills/run_skill.js
instead of ~/.claude/skills/ccg/run_skill.js after the v1.7.75 namespace
migration, causing quality gate invocations to fail.
Root cause: Windows/Linux users reported missing commands and skills after
install/update. Three critical issues found:
1. Update flow deleted all files BEFORE installing new ones. If the
subprocess failed (network timeout, npm cache, permissions), the user
was left with nothing — no commands, no skills, no rollback.
2. Multiple install functions silently returned empty results when template
directories were missing (wrong PACKAGE_ROOT resolution), while still
reporting success. Users saw "install complete" but had 0 files.
3. findPackageRoot only searched 5 levels up, insufficient for deeply
nested npm cache paths on Windows.
Changes:
- Rewrite update flow: backup → install → verify → cleanup/rollback
If install fails, old version is automatically restored from backup
- findPackageRoot: depth 5→10, validate templates/ dir exists, detect
filesystem root, log actionable error on failure
- installWorkflows: pre-flight templateDir validation, post-flight
0-commands check → force success=false
- installSkillFiles: report errors instead of silent return, post-copy
SKILL.md validation, individual try-catch for migration moves,
always overwrite (not conditional on --force)
- installPromptFiles: report errors instead of silent return
- copyMdTemplates: log warning when source dir missing
- collectSkillNames: distinguish ENOENT from permission/path errors
- init.ts: prominent red-box error display with fix instructions
- showBinaryDownloadWarning: correct Windows path separators
Adds wrangler-action step to upload all 6 binaries to R2 mirror
after GitHub Release upload. Requires CLOUDFLARE_API_TOKEN and
CLOUDFLARE_ACCOUNT_ID secrets.
config-mcp handlers only wrote to ~/.claude.json but never called
syncMcpToCodex()/syncMcpToGemini(), so MCP servers added via the
config menu (e.g. fast-context) were missing from Codex and Gemini.
Make it clear that Codex/Gemini are analyzers, not code writers.
Default: Claude writes code (transparent, no black box).
codex-exec: Codex writes code + multi-model review.