01
Chat
Transmission — Cycle 13 · Jul 28 → Aug 10, 2026
01 / New this cycle
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
02
Pipelines
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
04
Chat
05
Slack
/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
/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
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
09
Server
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
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.
02 / On the bridge
Screens pulled from this cycle's pull requests — captured against live, isolated instances.
Chat · Redesign
The new chat surface shows the model in use, live context consumption, and what every tool call actually did — no terminal-tab switching required. The composer carries the full keyboard vocabulary: Esc interrupt, Esc Esc rewind, Shift+Tab mode cycle, ↑↓ history. The session's current working status mirrors above the input box.
Pipelines · Foreach
Drop a foreach node into any pipeline. Point it at a blackboard key holding a
JSON array. Mark which downstream nodes are body nodes — they re-run once per item with {{item}}, {{itemIndex}}, and {{itemCount}} injected. Stop on first failure, or sweep all items and
collect verdicts. The run view tracks progress live.
Sessions · Navigation
The panel sidebar's RECENT section ranks completed sessions by last-activity time, not creation order. Sessions waiting for input bubble above everything else. A "Past sessions →" footer link opens the full search modal. The live session rail and the past-sessions list are now clearly separated, so the panel is never a single undifferentiated scroll.
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
Twelve more capabilities that landed quietly this cycle.
Sessions
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
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
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
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
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
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
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
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
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
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
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
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
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.