Skip to content

Releases: kidandcat/ccc

v1.6.2

18 Feb 13:16

Choose a tag to compare

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 role and content at the root level instead of nested inside a message object. extractLastTurn now falls back to root-level fields when the nested message fields 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

17 Feb 23:52

Choose a tag to compare

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

12 Feb 20:59

Choose a tag to compare

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 setup now 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 install to 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 mode

v1.5.6

05 Feb 13:35

Choose a tag to compare

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

05 Feb 13:10

Choose a tag to compare

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

05 Feb 10:30

Choose a tag to compare

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

05 Feb 10:22

Choose a tag to compare

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

05 Feb 08:09

Choose a tag to compare

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

05 Feb 08:03

Choose a tag to compare

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

05 Feb 11:43

Choose a tag to compare

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