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.
- installer-data: replace 28 object literals (345 lines) with cmd() builder (85 lines)
- Remove dead ALL_COMMANDS array
- Adding a new command = 1 function call
- Edge case init-project → 'init' handled via cmdOverride param
- installer-template: replace if/else MCP chain with data-driven registry
- Adding a new MCP provider = 1 line in MCP_PROVIDERS
- 'skip' fallback stays as special case (unique multi-step logic)
- Windows: auto-approve codeagent-wrapper via permissions.allow
(Hook depends on jq/grep/true which don't exist on Windows)
- macOS/Linux: keep existing Hook approach (works fine)
- Auto-migrate: remove old Hook on Windows upgrade
- Skip jq check on Windows (not needed with permissions.allow)
- Add contributors table to both READMEs (5 human contributors)
- Add .github/workflows/contributors.yml: auto-update on push to main
- Exclude `claude` account from contributors list
- Uses akhilmhdh/contributors-readme-action for automatic maintenance
- Change `|| exit 1` to `|| true` — non-matching commands now silently pass
- Add `2>/dev/null` to jq — suppress stderr when jq is missing
- Auto-migrate: upgrade replaces old `exit 1` hooks with fixed version
Fixes: PreToolUse hook "failed with non-blocking status code 1" warning
that fired on every Bash command not containing "codeagent-wrapper"