Repository navigation
CCCC 0.4.55
CCCC v0.4.55 Release Notes
CCCC v0.4.55 adds a project backlog to the Tasks view. A Markdown file in your
project, such as BACKLOG.md, holds long-lived topics and ideas; CCCC shows its
entries next to the tasks, edits them in place and links each entry to the tasks
made from it. See Backlog.
It also resumes more saved conversations after a change of PATH, gives a native
session the Group rules only when they are due, and removes coordination notes.
It fixes tasks that stayed blocked after the work they waited for was done,
interrupting a managed Claude Code agent, a failed delivery that ran its retries
again after every restart, and several defects in the Web model connectors and in
CCCC Web. Two commands contributed to the CLI are included. This release covers
the changes since v0.4.54.
Before You Upgrade
Before upgrading, let sends and recordings finish. Restore or discard waiting sends,
then send or copy every unsent draft, restored ones included, and save unsaved edits
in Files: all of these live only in the open page. Check whether a message
already arrived before sending it again.
Upgrade the CCCC executable, restart the daemon and Web the way you usually launch
them, 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. A daemon left running keeps the previous version.
Runtime history stays in CCCC_HOME.
- A native session keeps the MCP server it started with until that server is
started again, for example by restarting the session. Until then the session
does not listcccc_backlog, still lists the removed note actions of
cccc_coordination, which now fail, and keeps the previous tool descriptions
and the previous handling ofidempotency_key. - A CCCC page opened before the upgrade sends a removed field with some replies
across Groups, and the daemon refuses those replies withunknown_arguments
until the page is reloaded. - Coordination notes saved by earlier versions are not deleted, but CCCC no
longer shows them. To keep a copy that is easy to read, copy their text from
the Coordination log tab before upgrading. See Coordination Notes
Removed. - After a daemon restart, a native session can receive the full Group rules once
more: the record of rules already given is kept in the daemon's memory. - When the upgrade or a different shell changes the
PATHthat CCCC passes to
managed agents, more of them now resume their saved conversations. See Saved
Conversations After a PATH Change.
Backlog
A Group can now point each project folder at a Markdown backlog file for topics
and ideas that outlive a single task. The file stays the only copy: CCCC reads it
when asked and changes only the entry being edited. Tasks work as before without
a backlog file.
- Tasks gets a Tasks | Backlog switch. Without a file, the Backlog view
offers to createBACKLOG.mdor to use an existing file, as the AGENTS.md panel
does. In a Git project a created file stays out of Git by default through the
repository's local exclude file;.gitignoreis not touched. - Entries are the headings under the file's sections. The first time CCCC changes
an entry, it adds a hidden ID comment to the entry's heading. A change is
refused when the file changed after it was read. - You can add, edit, move and close entries; closing moves an entry to Closed
with a one-line outcome. A folded entry shows its title and the tasks linked to
it; opening it shows its full text. - You can start a task from an entry; an unfinished task of that entry is reused.
From the task you can open its entry, write the result back to it or return the
task to the backlog. Task numbers are not written into the file, and finishing a
task never closes its entry: CCCC asks for an update instead. - Agents use the new
cccc_backlogtool, andcccc_taskaccepts the entry a task
comes from. The read-only exhibit Web does not show the backlog. - The standing instructions now tell every agent when to keep work in a task and
when to record a deferred issue or idea in the backlog, with why it waits and
when to revisit it. Without a configured file, agents are asked to propose one
to you instead of creating it.
Saved Conversations After a PATH Change
Installing or removing a tool can change the PATH that CCCC passes to an agent.
That alone made the next start of a managed Claude Code or Pi agent, or of an ACP
agent (Copilot, Devin, Cursor, Kimi Code, Auggie, Kiro, Hermes or Droid), begin a
new conversation, which v0.4.54 recorded on the agent's page.
Such a start now resumes the saved conversation when the launch differs only in
its PATH:
- The saved record must name the compared settings separately, which a successful
start under v0.4.54 or later writes. A record written by an earlier version
keeps the earlier behavior. - Pi and the ACP agents start with the new
PATH. - A Claude Code agent resumes only when no background session of it is still
running. A running one keeps thePATHit was started with: CCCC neither takes
it over nor stops it, starts a new conversation and does not count that start as
a failed resume. - Any other difference follows the existing rules, and a resume that fails still
reports the error instead of starting a new conversation.
Group Rules for Native Sessions
A native session's exact read of a message, cccc_message_history with an
event_id, returned the full Group rules every time, even right after the session
had received them. The rules are now included only while they are due: on the
first read in a conversation, after a reported compaction, when the rules change
or after the start of a new UTC hour, unless a delivery the session accepted
already carried them. The session's other exact reads start with a short
receiving-context header. Reading a message on a member's behalf still returns the full rules and
does not count as giving them. In a test with a fixture session, the part before
the message text in the second read of one message went from 2,365 to 217
characters.
Notifications to a Claude Code session mention the instructions only when the
rules are due.
Coordination Notes Removed
Coordination notes, the decisions and handoffs recorded for a Group, are removed:
- the Coordination log tab in CCCC Web;
- the
add_decisionandadd_handoffactions ofcccc_coordination, which
keeps reading and updating the Group's brief; - the
coordination.note.addcontext operation; - the two note lists in the
cccc_bootstraprecovery pack, which returned the
oldest two notes rather than the latest.
The removed actions fail as unsupported, and the operation is rejected as
unknown. Notes saved by earlier versions stay in the Group's stored context;
writes to the brief and to tasks keep them. Context reads and recovery no longer
return them. The Python and TypeScript SDKs remove their methods for writing
notes in 0.4.55.
Tasks and Delivery
- A task kept showing as blocked after every task it waited for was done. Task
reads now addopen_blocked_by, the dependencies that are not completed. A
dependency counts as completed when it is done, or archived after it was done;
archiving unfinished work keeps its dependents blocked, and an unknown task ID
still blocks. The Web board, the task list's attention filter and counts, the
MCP task summaries,cccc_bootstrapand the TUI's Blocked by use it. Stored
relationships do not change. Reported in #201. - When a provider turn kept failing until the delivery worker used up its retries,
the next agent start, Group resume or daemon restart ran another round of
retries for the same message. The final failure is now recorded as not
retryable, with its reason, and automatic delivery no longer picks it up. An
explicitmessage_delivercan still retry it. Found while investigating #209;
whether it caused the repeat reported there is not confirmed. - A task that had started and was moved back to planned could be deleted. It can
no longer be, as the Context Ops standard requires. - The Web assignee picker lists the Group's members, plus any assignee that tasks
already name. A member with no reported state and no task was missing from it. - A task or another part of the Group's context that changed in another tab or
through an agent could stay stale in CCCC Web until the panel was reopened. In a
browser test, the second of two tasks created one after the other did not
appear within 10 seconds before the fix and appeared after about 0.26 seconds
with it.
Messages
idempotency_keyincccc_message_sendnow also prevents a duplicate for a
local send and a send to another Group on the same instance: the key becomes the
send'sclient_idunless one is given. A retry with the same key sent the
message twice.connect_sendandconnect_send_filesreject unknown arguments with
unknown_argumentsbefore doing anything, like the other message writes.- Two fields that nothing read are removed:
remote_reply_to_event_id, which
CCCC Web sent with replies across Groups, and thetitleof the send for agents
without MCP. - Tool descriptions say that retry keys also apply to local sends, and that
leaving outactor_idacts as yourself.
Agents
- Interrupting a managed Claude Code agent had no effect with Claude Code 2.1.317.
CCCC interrupts through Claude Code's attach request, which lacked two fields
that this version requires, so Claude Code refused it and the turn kept running.
CCCC now sends them. An isolated probe that sent the corrected request to
Claude Code 2.1.317, with a stand-in model, interrupted a busy turn in about 0.28
seconds, and the background session stayed. CCCC's own request is tested against
a stand-in socket. Other Claude Code versions were not run. - A running headless agent without an observed turn was reported as idle,
although a live process shows neither. It is now reported as unknown, with the
reasonheadless_running_state_unknown, and CCCC Web treats it as active; a
paused Group stays paused. Reported in #202. cccc actor new-sessionrestarts an agent on a new conversation instead of
resuming the saved one, using the same arguments ascccc actor restart.
Contributed in #207.- A repeated Dots claim after the previous turn had completed returned
turn_in_progress. When no work is active, it now returns idle with
dots_wake_already_completed. Contributed in #212.
Web Model Connectors
- Calling
web_model_connector_configurewithout flags replaced the credential
of the active shared ChatGPT or Grok connector, which made the URL issued before
it stop working. The call now creates a connector only when none is active and
otherwise returns the existing one asoutcome: existing, without its secret.
Replacing the credential takesrotate=true; it keeps conversation pairings and
Dots state and returns the new secret once. The Rotate action in the Web
settings asks for rotation explicitly, and the Dots one-click setup says when a
connector already exists. Based on #216. - An interrupted connection attempt could leave CCCC's own setup message unsent in
ChatGPT's message box, and every later attempt refused to start because the box
was not empty. The next attempt now removes that message without sending it, but
only while the box holds exactly that message and no file; any other text or a
file is kept and the attempt is refused, as before. When the box holds an unsent
draft and no conversation is chosen, the health check recommends clearing the
box before choosing one. Reported in #218 and #219.
CLI
cccc ledger searchsearches a Group's ledger by sender, recipient, time, kind
and text, and pages through the results. Contributed in #217.cccc actor new-session: see Agents.
Web
- In Tasks, the Working summary block is now the Coordination brief,
and its text field Project background, in English, Chinese and Japanese. An
empty goal reads "No objective set". While you edit the brief, the strip above
the form no longer repeats the saved goal, focus and refresh note; they return
when you save or cancel. On a narrow screen, the controls of the editing row
wrap as whole groups instead of breaking inside a word. - Markdown pinned to Presentation draws Mermaid diagrams, as the Files
preview of the same file already did. - The Create Group quick picks show translated labels and matching icons, and
stack in one column on phones. - For a Group without a project folder, the AGENTS.md panel explains that a
project folder is needed, instead of offering a Create button that could not
work. - English labels: Edit agent; Documents in the Voice Secretary; New
session in the agent menu, on the agent page and in the hint shown after a
failed resume. - The Capability Center's view of source instances, which could not be reached,
is removed. - Segmented controls size their options to their labels. On touch screens one
option was clipped.
Validation Scope
Release preparation ran these checks on the final tree, the Rust checks in
isolated homes: the Web check and the full Web tests (4,992 tests in 664 files),
the repository's Python tests (126 passed) and ruff, and the release version
checks for v0.4.55; then rustfmt, clippy and the Rust tests in CI's three
groups (3,972 + 47 + 3 passed, 10 ignored), each listed test that is not ignored
run exactly once. After these checks, edits were limited to these release notes,
and git diff --check was run again.
Each change was also tested when it was made:
- The Backlog was driven through an isolated daemon on a copy of a 182-line
backlog file in use. Choosing the file left it byte for byte unchanged, giving
an entry its ID added only the ID comment, starting a task from the same entry
twice returned the same task, and a change after an outside edit was refused
with the file's bytes kept. The Backlog and task screens were walked in an
isolated instance in English, Chinese and Japanese at desktop and phone width. - Tests restart the Pi and the Copilot, Devin and Cursor ACP fixtures with only
PATHchanged and check that the provider sees the newPATHand loads the
saved session; the Claude Code path runs through the resume fixture. - The second-read measurement in Group Rules for Native
Sessions used a debug build in an isolated
daemon, driven over raw IPC with a written native-session record and no
provider process. A read on the member's behalf and a list read did not count
as giving the rules, and raising the session's context epoch, as a reported
compaction does, brought them back. - A test writes coordination notes in the earlier format, then changes the brief
and creates a task, and finds the notes unchanged. - The test for a delivery that used up its retries fails on the previous code
and passes with the change. No real daemon restart was run; the tests check
the claim that automatic recovery makes. - A real-Chrome pairing fixture interrupts CCCC's setup message, rewrites its
text or attaches a file while the box takes focus, and checks that nothing is
paired or sent. - The Mermaid diagrams in Presentation, in Chinese, and the Coordination brief,
in English, Chinese and Japanese, were checked in an isolated browser at
desktop and phone width.
A package built from the same code before the version change and the Claude Code
interrupt fix was walked through the common screens in English, Chinese and
Japanese at desktop and phone width: 508 screenshots, with no failed step.
This is not complete live acceptance. The isolated measurements do not show how
often a session receives the rules in daily use, or how often a real upgrade
starts a new conversation. The resume after a PATH change was not run through
CCCC with a real model. The interrupt was run against Claude Code 2.1.317 only.
Local validation was on Linux and does not establish native Windows or macOS
runtime acceptance.