Repository navigation
CCCC 0.4.49
CCCC v0.4.49 Release Notes
CCCC v0.4.49 finishes runtime switching: an agent can now move to or from a Web
Model, directly from a native session or through a Profile, under the same rules
as any other switch; see
Switch To and From a Web Model. Messages now
reach what is actually running, so saving another runtime for a running agent no
longer sends its work to the wrong place, and a message cut off part way into a
terminal is kept for review instead of being written again automatically. The
interface moves toward an e-ink look, in a soft paper light theme and a graphite
dark theme. An eligible plain message between agents can now arrive in a Claude
session's notification, repeating reminders can stop after a chosen number of
runs, a native foreman gets the same default capabilities as a managed one, and a
stuck attachment upload can be stopped. This release covers the changes since
v0.4.48; see
Before You Upgrade before installing.
Before You Upgrade
Before upgrading, let sends and recordings in progress finish, and restore or
discard any sends waiting to be restored. Waiting sends and unsent drafts live
only in the open page, so reloading it loses them.
Then upgrade the CCCC executable and restart the daemon and Web through your
usual launch method to load the new code and bundled Web assets, and reload open
CCCC pages. The standalone installer behind cccc update stops a running daemon
and starts it again from the new version. Before a pip upgrade, run
cccc daemon stop and close any foreground CCCC so pip can replace the
executable, especially on Windows, then start CCCC again. A daemon left running
keeps the previous version. Runtime history remains in CCCC_HOME.
- For already connected native sessions, update and reload the CCCC integration
and reconnect its MCP server in each app. Restarting the CCCC daemon alone does
not reload those processes. For Claude Code, quit and runclaude --resume: on
Claude Code 2.1.317,/reload-pluginsleaves a running Monitor on the old
executable. Until a Claude session restarts, a notification can arrive cut off,
with a note to read the whole message from the ledger. TheccccMCP server says
when it differs from the daemon address file and which side to restart. Follow the
native-session upgrade steps
for your app. - A Home that used manual Group Bridge early on may have kept its old credential,
pairing and registration files, with a warning at every start, because of a
finished early delivery. That delivery no longer prevents their retirement.
Damaged state is still kept, with the warning, and the instance's private key
stays.
Switch To and From a Web Model
An administrator can now switch an agent to or from a Web Model the same way as
any other runtime, including directly between a Web Model and a native session,
or through a Profile. In the agent editor, Runtime no longer greys out those
choices. The CLI offers the same switch as cccc actor switch.
- Entering a Web Model starts nothing. Connect the agent to a conversation in its
settings, and its messages wait until then. The switch's result offers
Set up connection. - Leaving a Web Model retires its connection, so coming back means connecting
again. - While CCCC is handing a message to the browser, a switch asks you to try again
in a moment, and so do removing the agent, deleting or resetting its Group, and
a save that changes its connection. - A reply the old conversation is still writing may not come back to CCCC, and an
unsent draft stays in that conversation for you to handle. Work whose delivery
is uncertain at the switch is not delivered again; the handoff notice lists it
for the new runtime to check. - Saving a different runtime without restarting is refused while the agent has an
unfinished Web Model turn. Wait for it, or use Save and restart, which
switches safely.
See
Connect existing native sessions
for details.
Messages Reach What Is Running
- After you save another runtime or Profile for a running agent, its terminal
keeps receiving messages, with the submit key it launched with, until a launch
replaces it. A Profile change takes effect at that launch, and a connector no
longer takes work from a terminal that still runs. - A message cut off part way into a terminal is kept for review, and CCCC does
not automatically write it again. Work claimed for a terminal that has since
stopped, and never written to it, moves to the agent's current runtime. - When a browser delivery has to wait, CCCC retries the same batch. If its retries
run out, or a daemon restart or upgrade leaves it unconfirmed, CCCC keeps the batch
for review once the page is ready, because the conversation may still hold its
draft. Later messages wait until you review it.
Other Changes
- An eligible plain message between agents can now arrive in a Claude session's
notification, with no separate read. A message from you, Mail, a long message, a
message with attachments or its own project path, or one containing<,>or
&still asks for a read, and so does the next delivery when the Group's
instructions are due. - CCCC offers native agents their Group instructions more often: the next
delivery after a compaction that Claude or Codex reports, after the
instructions change, or in a new hour carries them or asks for a read. Between
those deliveries, an agent works from its own summary. Codex, Pi and OpenCode
now receive the instructions with a message about once an active hour. - A repeating reminder can stop after a chosen number of runs. The rule editor
has an optional Maximum runs, and the list shows progress and completed
rules. Only firings while a limit is set count: raising or lowering the limit
keeps the count, and removing it resets the count. - An automation change in the Group's ledger now records the version change and
which sections changed, without rule IDs, rule contents or snippet text. - The interface moves toward an e-ink look: a soft paper light theme and a
graphite dark theme, with text colors retuned for each. Layout, fonts and
components are unchanged. - A native foreman now gets the default foreman capabilities, as a managed one
does: when it joins a running Group, on Start or a daemon restart, and when a
switch makes it native. A capability you blocked stays blocked. - While a message with attachments is uploading, a stop button next to Send
ends the wait and keeps your draft for recovery. It does not recall the message,
which may already have arrived, so check the conversation before sending it
again. - Opening a message from a notification now says so when the message cannot be
opened, and offers Try again, instead of failing silently. - An agent can now take up a planned or active task that nobody holds.
- A message sent with
cccc send --pathnow belongs to that project, and a
relative path means the directory you ran the command in.
Validation Scope
Release preparation ran the Rust workspace tests and static checks, the Web tests
and static checks, and repository checks in isolated homes. Runtime switching and
delivery to what is actually running were tested through the daemon's own
operations. Browser delivery was tested with a real daemon and an isolated Chrome
against a local page, not ChatGPT: a batch that had to wait came back and was sent
once, and batches in the states a restart or v0.4.48 leaves went to review without
being sent.
Isolated smoke tests of the release candidate's Linux executable covered its
served Web assets and, with synthetic native sessions and no provider process,
runtime switches through the CLI between managed, native and Web Model, including
a refused option, an unfinished completion and its retry, and the answer a
replaced native session gets from the cccc MCP server. On the candidate's own page
in an isolated browser, with synthetic native sources, connection setup was opened
after moving a native agent to ChatGPT and to Grok, after Save and restart on
a managed agent and after retrying a pending switch; a Web Model agent moved back
to a native session; and the pages were walked at desktop and phone width. A held
upload was stopped and kept its draft, a message that could not be opened offered
Try again and opened on retry, a reminder limit survived a change of interval,
and a limited reminder ran to its limit, showed as completed and was cleared.
Upgrades from the published v0.4.48 executable were run in isolated homes: a Home
with a Group, agents and messages; a Web Model agent holding an unfinished batch
and one holding a failed batch, through the daemon's own operations; and a real
Claude Code 2.1.317 terminal against a fake model on a private network, through
the upgrade, the documented reload and a compaction. A DeepSeek agent restarted
during a turn was run against a fake provider.
This is not complete live acceptance. After a restart onto the release candidate,
real Claude Code and Codex sessions that were already active kept exchanging
messages, still on their previous MCP servers and, for Claude, its previous
Monitor, whose notifications arrived cut off with the read instruction. A real
Grok Web Model agent on a pull connection took a scheduled notice and finished its
turn. Browser delivery to a real Web Model conversation and a switch between a
real native session and a Web Model were not tried, and whether a real model reads
less often was not measured. claude --resume after an upgrade was seen in one
working session, not in the isolated checks. Native Windows and macOS were not
tried.
Thanks to chriscoveries for the repeating-reminder limit and the automation event
summary, to jianhuiyang92-byte for the interface feedback behind the e-ink look,
and to everyone who contributed code, tested and reported issues.