Skip to content

CCCC 0.4.49

Choose a tag to compare

@github-actions github-actions released this 06 Nov 07:53
· 24 commits to main since this release

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 run claude --resume: on
    Claude Code 2.1.317, /reload-plugins leaves 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. The cccc MCP 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 --path now 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.

Full source comparison