Releases: kidandcat/ccc
Releases · kidandcat/ccc
v1.6.2
Bug Fix
-
fix: extractLastTurn now handles flat JSONL format from Claude Code v2.1.45+ (#9)
Claude Code v2.1.45 changed the transcript JSONL format to put
roleandcontentat the root level instead of nested inside amessageobject.extractLastTurnnow falls back to root-level fields when the nestedmessagefields are empty, supporting both old and new formats.Previously, the stop hook would only send the session name (e.g.
✅ test) instead of the actual Claude response text.
v1.6.1
fix: make voice/whisper an optional build tag for FFmpeg 6.x compat Default build (`make` or `go build`) no longer requires FFmpeg or whisper.cpp, fixing builds on Ubuntu 24.04 and Debian bookworm which ship FFmpeg 6.x. Voice transcription is now opt-in via the `voice` build tag (`make build-voice` or `go build -tags voice`). Closes #8 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.6.0
OTP Permission Mode (Secure Remote Sessions)
New TOTP-based permission system for controlling what Claude can do when controlled remotely via Telegram.
What's new
- OTP permission mode: When enabled, Claude's permission requests in Telegram-initiated sessions require a 6-digit TOTP code (Google Authenticator, Authy, etc.) to approve. Local terminal sessions keep their normal interactive UI.
- Setup wizard updated:
ccc setupnow includes a permission mode selection step (auto-approve vs OTP secure mode). - Permission grant window: After approving with OTP, permissions are granted for 5 minutes — parallel tool calls within the same session don't need repeated codes.
- Rate limiting: 5 failed OTP attempts auto-deny the permission request.
ccc config otp: Check current OTP status.ccc doctor: Now shows OTP status in health checks.
Breaking changes
- Removed
--dangerously-skip-permissions: Sessions now use hook-based permission control. With OTP disabled (default), behavior is identical to before. With OTP enabled, remote permissions go through TOTP verification. - Removed Notification hook: Replaced by the unified PreToolUse permission hook.
- Hook reinstall required: Run
ccc installto update hooks to the new format.
How it works
| Scenario | Behavior |
|---|---|
| OTP disabled (default) | Auto-approve all (same as before) |
| Local input (terminal) | Claude shows its normal permission UI |
| Telegram input (remote) | Requires OTP code via Telegram |
Setup
ccc setup YOUR_BOT_TOKEN # choose permission mode in step 1
ccc config otp # check current modev1.5.6
fix: initialize monitors on restart after /update After /update, the listener restarts with empty monitor state. This caused messages sent after restart to not trigger responses until /continue was used. Now monitors are properly initialized with current block state when the listener starts. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.5.5
fix: doctor hook check + cleanup error reporting - Update doctor to check for PreToolUse/AskUserQuestion hook (polling handles rest) - Capture and report errors when deleting Telegram topics in /cleanup - Update comments to reflect current behavior
v1.5.4
Fix all tmux name lookups for sessions with dots Replace dots with underscores in all places where tmux session names are constructed, not just in the monitor. This fixes image/document handling and other commands for sessions like "jairo.cloud". Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.5.3
Fix monitor not finding sessions with dots in name The monitor was using "claude-" + sessName directly instead of calling sessionName() which replaces dots with underscores. This caused sessions like "jairo.cloud" to not be found (tmux name is "claude-jairo_cloud"). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.5.2
Make /update safer with validation and backup - Validate downloaded binary size (must be > 1MB) - Test new binary with 'version' command before replacing - Backup old binary before replacing - Restore backup if codesign fails on macOS - Only delete backup after successful update Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.5.1
Fix /continue using wrong workDir path Use the stored session path from config instead of resolveProjectPath, which was creating a new path based on session name instead of using the original worktree path. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.4.10
fix: doctor hook check + cleanup error reporting - Update doctor to check for PreToolUse/AskUserQuestion hook (polling handles rest) - Capture and report errors when deleting Telegram topics in /cleanup - Update comments to reflect current behavior