Transmission — Cycle 13 · Jul 28 → Aug 10, 2026

Chat rebuilt. Pipelines fan out. Sessions get a search.

CCC's chat surface is rebuilt end to end — new message chrome, tool-call summaries that tell you what each call actually did, and a Rewind that works from chat the same way it works in the terminal. Pipelines gain a new node type: foreach — one graph, one node, and a JSON work list fans the body out over every item, in parallel or in series, with a live sweep counter and per-item verdict. The session panel gets recency-ranked RECENT, a searchable Past Sessions modal with transcript preview, and a first-panel search. And across the server layer: a durable, append-only server events timeline for sessions, Ralph runs, and 500s — plus client error boundaries and an offline banner so problems surface in the UI instead of disappearing into the void.
371 Pull requests 52 New features 498 Commits 13 Days elapsed
0
Pull requests
0
New features
0
Commits
0
Days elapsed

01 / New this cycle

Ten systems that widen what an operator can do unattended.

A rebuilt chat surface with real Rewind, a new foreach pipeline node that fans a graph over a work list, the first panel-level session search, and a complete server observability layer — each shipped under test before the next started.

01

Chat

Session Chat Redesign — Rewind Actually Works

The chat view is rebuilt. Every message now carries the new chrome: a model chip, live context meter, and a permission-mode indicator. Collapsed tool calls show a one-line summary of what they did — file written, command run, fetch URL — without opening the terminal. And Rewind now works from chat: press Esc Esc (or the chat keyboard binding) to open the picker, choose a checkpoint, and Claude rolls back — files and conversation both — without leaving the chat pane. The chat-side rewind is wired through the same PTY path the terminal uses, so it is not a soft reset: the rollback is real.

02

Pipelines

Foreach Nodes — Per-Item Fan-Out

A new foreach node type lets a pipeline fan its body over a JSON array on the blackboard. The author marks which downstream nodes are "body nodes" — they run once per item, in parallel (or serially with stopOnFirstFailure), with {{item}}, {{itemIndex}}, and {{itemCount}} in scope. The run view shows a live sweep counter, a per-item verdict row, and the aggregated cost across all iterations. A foreach over a 10-item list that previously required 10 manually wired branches now fits in a single node.

03

Sessions

Recency-Ranked RECENT + Past Sessions Modal

The session panel sidebar is redesigned around how operators actually navigate. A RECENT section lists the last N sessions ranked by last-activity time — not by creation — so the session you were just working in is always at the top. A Past sessions → link opens a full-screen modal with fuzzy search over all completed sessions, matched text highlighted in the snippet, transcript context in the right pane, and a Resume Session button without leaving the modal. Sessions waiting for input bubble to the top of the live rail; the active session is always distinguishable.

04

Chat

Claude Code Keyboard Shortcuts in Chat

The chat composer now supports the full Claude Code keyboard vocabulary: Esc interrupts a running turn; Esc Esc opens the rewind picker; Shift+Tab cycles the permission mode; ↑ / ↓ walks the message history. All four bindings are wired through the PTY — they send the same control sequences the TUI interprets, so behavior is identical whether you're in chat or terminal. The working-status line Claude writes to the terminal also now mirrors above the composer, so you can read the current file or tool name without switching tabs.

05

Slack

Claude Code Commands via Slack

Any Slack workspace with the CCC bot installed can now run Claude Code slash commands by @-mentioning CCC in a message. The full /ccc-* command surface is registered: sessions, pipelines, intents, Ralph, secrets, and more. The bot joins threads when @-mentioned inside one and replies there — no stray channel-level posts.

06

Reliability

Client Error Reporting + Offline Banner

A client-side error boundary now catches rendering failures in scoped sections — a broken files panel no longer takes the whole session view down. An offline banner appears at the top of every page when the CCC server is unreachable, with a one-click Retry. Client-side errors post to /api/client-errors and appear in the server_events timeline alongside server-side failures, giving operators a single audit trail for a full-stack incident.

07

Secrets

Passphrase-Encrypted Export Archive

ccc export-secrets writes every credential — project secrets, provider API keys, git credentials, GitHub tokens, remote-host passwords, Discord bot tokens, Slack tokens, ingress sources — into a single scrypt + AES-256-GCM archive, sealed with a passphrase and a TOTP second factor. ccc import-secrets accepts the archive on any CCC instance: dry-run by default, idempotent, conflict-safe. A full migration between instances is a two-command operation. Lose the passphrase and the archive is unrecoverable by design.

08

Intents

Skeptical Autoplay Sign-Off Judge

Before autoplay can merge a PR, a dedicated judge agent now reviews the implementation session's output and applies an adversarial pass — looking for partial work, skipped test suites, or TODOs left in place. If the judge downgrades the verdict, autoplay halts and surfaces the reason on the intent's Autoplay pill; it does not proceed. The judge also tracks loop progress — how many autoplay iterations have run on this intent — and halts if the story has cycled more than a configurable cap without a clean sign-off.

09

Server

Server Events — Durable Append-Only Timeline

A new server_events table captures every meaningful state transition in an append-only log: session spawns and state changes, Ralph iteration boundaries, 500-level server errors with stack and request id, and client-side boundary fires. The log is queryable by session, by type, and by time range from the CCC API. Every incident — even one that destroys its own session — leaves a trail that survives the crash.

10

Intents

Correlation Context Across the Stack

Every log line that touches a session or request now carries a structured correlation context — sessionId, projectId, socketId, requestId, event — injected via AsyncLocalStorage without modifying any call site. A single grep sessionId=abc now returns the full lifecycle of a session across the PTY manager, the DB layer, the socket handlers, and the HTTP routes. Two concurrent sessions that previously interleaved indistinguishably in the logs are now separable in one command.

This cycle CCC rebuilt its chat surface so every session action is visible and reversible without leaving the chat pane, gave pipelines a foreach node that fans any graph over a JSON work list, wired the session panel with recency-ranked history and a full-text search, and laid a durable observability layer — server events, error boundaries, an offline banner — so incidents leave a trail instead of disappearing into the void.

— CCC · orchestration + inference substrate

03 / Also aboard

Smaller payloads, real reach.

Twelve more capabilities that landed quietly this cycle.

Sessions

Archive from the Context Menu

Ended sessions now have an Archive action in their right-click menu, moving them out of the active rail without a round-trip to settings. Archived sessions remain searchable in the Past Sessions modal.

Chat

Tool Call Summaries

Collapsed tool-call rows now display a one-line summary of what the call actually did — file written, command run, URL fetched. You no longer need to open the terminal to know what happened inside a folded turn.

Chat

Live TUI Status in Chat

The working-status text Claude Code writes to the TUI (tool name, current file, elapsed time) now appears above the chat composer in real time — the same signal, without switching to the terminal tab.

Intents

Per-Phase Agent Selection

Each intent phase — research, plan, implement — can now run under a different agent, with per-project defaults. A research phase that needs web access can use a different model than the implementation session that follows it.

CLI

Project-Aware Session Spawn

Sessions spawned from inside a project's directory now inherit the project ID automatically. The -p flag is no longer required for scripts and automations that run from a known repo root.

Slack

Thread-Aware Bot Replies

When CCC's Slack bot is @-mentioned inside a thread, it now joins that thread and posts its reply there. Previously, every reply went to the channel root regardless of where the mention appeared.

Self-Update

Auto-Detect Repo Path

CCC now detects its own checkout location at startup by walking upward from the running binary. CCC_SELF_REPO_PATH no longer needs to be set manually for ccc update to locate the source tree.

Desktop App

Packaged Service Logs

All three packaged services — the CCC server, the Electron shell, and the updater — now write timestamped, rotated log files to disk. Crash forensics no longer require reproducing the failure in a dev build.

Ralph

Failure Reason Recorded

When a Ralph run fails, the stop reason and last error are now persisted to the database and surfaced on the Ralph detail page. Previously the run showed 'Failed' with no further context once the session closed.

MCP

2026-07-28 Spec Compliance

Every CCC MCP server has been brought onto the current spec — correct capability declarations, compliant auth flows, and updated tool envelope shapes. Clients that enforce strict spec validation no longer reject CCC servers.

Sessions

Crash State Accuracy

Sessions that exit with a non-zero code now display as Crashed, not Running or Ended. The last N lines of output are preserved so the failure reason is visible without re-running the session.

Intents

Primary-Checkout Work Mode

An intent can now be set to run directly in the project's main checkout instead of requiring an isolated worktree. Teams that prefer trunk-based development no longer need to opt out of the worktree flow each time.

04 / Under the hull

The unglamorous 80%.

Eighty-nine bugs closed this cycle. Chat message ordering was wrong when two turns overlapped — fixed at the transcript-watcher layer, not patched per caller. Large auto-submitted prompts were silently truncated at cold boot — the PTY paste guard now fires on bracketed-paste mode from the start. The Deny button on permission cards never reached the PTY — it now sends the correct control sequence. The context meter kept pre-compaction token counts after /compact — now reads the post-compaction figure. Completed sessions showed a mangled model label — resolved from the correct field. The settings sidebar hid itself at laptop height — the nav stack is reordered. Every fix closes a class of failure, not a single reported instance.

89
Bug fixes
52
Features
371
Pull requests