- tmux Layout Tip: Added English and Chinese usage notes explaining that
Ctrl+bthenSpacecycles tmux layouts and can be pressed repeatedly
- Completion Status: Completion hook now distinguishes
completed,cancelled,failed, andincompleteinstead of reporting every terminal state as completed - Cancellation Handling: Gemini and Claude adapters now consistently honor cancellation and emit a terminal status instead of leaving requests stuck in processing
- Routing Safety: Completion routing now keeps parent-project to subdirectory compatibility while preventing nested child sessions from hijacking parent notifications
- Codex Session Binding: Bound Codex requests no longer drift to a newer session log in the same worktree
- askd Startup Guardrails:
bin/asknow respectsCCB_ASKD_AUTOSTART=0and scrubs inherited daemon lifecycle env before spawning askd - Claude Session Backfill:
ccbstartup again backfillswork_dirandwork_dir_norminto existing.claude-sessionfiles - Regression Tests: Added focused tests for completion status handling, caller routing, autostart behavior, cancellation paths, and Codex session binding
- Async Guardrail: Added global mandatory turn-stop rule to
claude-md-ccb.mdto prevent Claude from polling after asyncasksubmission - Marker Consistency:
bin/asknow emits[CCB_ASYNC_SUBMITTED provider=xxx]matching all other provider scripts - SKILL.md DRY: Ask skill rules reference global guardrail with local fallback, eliminating duplicate maintenance
- Command References: Fixed
/ping→/cpingandping→ccb-pingin docs
- Explicit CCB_CALLER:
bin/askno longer defaults to"claude"whenCCB_CALLERis unset; exits with an error instead - SKILL.md template: Ask skill execution template now explicitly passes
CCB_CALLER=claude
- Local History: Context exports now save to
./.ccb/history/per project - CWD Scope: Auto transfer runs only for the current working directory
- Legacy Migration: Auto-detect
.ccb_configand upgrade to.ccbwhen possible - Claude /continue: Attach the latest history file with a single skill
- Old Session Fields:
.claude-sessionnow recordsold_claude_session_id/old_claude_session_pathwithold_updated_at - Auto Context Export: Previous Claude session is extracted to
./.ccb/history/claude-<timestamp>-<old_id>.md - Transfer Cleanup: Improved noise filtering while preserving tool-only actions
- Claude Completion Hook: Unified askd now triggers completion hook for Claude
- askd Lifecycle: askd is bound to CCB lifecycle to avoid stale daemons
- Mounted Detection:
ccb-mountednow uses ping-based detection across all platforms - State File Lookup:
askd_clientfalls back toCCB_RUN_DIRfor daemon state files
- Unified Daemon: All providers now use unified askd daemon architecture
- Install/Uninstall: Fixed installation and uninstallation bugs
- Process Management: Fixed kill/termination issues
bin/ask: Foreground mode available via--foreground;--backgroundforces legacy async- Managed Codex sessions default to foreground to avoid background cleanup
- Environment overrides:
CCB_ASK_FOREGROUND=1/CCB_ASK_BACKGROUND=1 - Foreground runs sync and suppresses completion hook unless
CCB_COMPLETION_HOOK_ENABLEDis set CCB_CALLERnow defaults tocodexin Codex sessions when unset
New unified commands replace provider-specific commands:
| Old Commands | New Unified Command |
|---|---|
cask, gask, oask, dask, lask |
ask <provider> <message> |
cping, gping, oping, dping, lping |
ccb-ping <provider> (skill: /cping) |
cpend, gpend, opend, dpend, lpend |
pend <provider> [N] |
Supported providers: gemini, codex, opencode, droid, claude
- Full support for Windows native environment with WezTerm terminal
install.ps1now generates wrappers forask,ccb-ping,pend,ccb-completion-hook- Background execution uses PowerShell scripts with
DETACHED_PROCESSflag - WezTerm CLI integration with stdin for large payloads (avoids command line length limits)
- UTF-8 BOM handling for PowerShell-generated session files
completion_hook.py: Usessys.executablefor cross-platform script executionccb-completion-hook:- Added
find_wezterm_cli()with PATH lookup and common install locations - Support
CCB_WEZTERM_BINenvironment variable - Uses stdin for WezTerm send-text to handle large payloads
- Added
bin/ask:- Unix: Uses
nohupfor true background execution - Windows: Uses PowerShell script + message file to avoid escaping issues
- Unix: Uses
- Added
SKILL.md.powershellforcpingandpendskills
New unified skills:
/ask <provider> <message>- Async request to AI provider/cping <provider>- Test provider connectivity/pend <provider> [N]- View latest provider reply
- Old provider-specific commands (
cask,gask, etc.) are deprecated - Old skills (
/cask,/gask, etc.) are removed - Use new unified commands instead
# Old way
cask "What is 1+1?"
gping
cpend
# New way
ask codex "What is 1+1?"
ccb-ping gemini
pend codexFor older versions, see CHANGELOG_4.0.md