Skip to content

CCCC 0.4.55

Choose a tag to compare

@github-actions github-actions released this 12 Nov 11:39
· 2 commits to main since this release

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 list cccc_backlog, still lists the removed note actions of
    cccc_coordination, which now fail, and keeps the previous tool descriptions
    and the previous handling of idempotency_key.
  • A CCCC page opened before the upgrade sends a removed field with some replies
    across Groups, and the daemon refuses those replies with unknown_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 PATH that 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 create BACKLOG.md or 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; .gitignore is 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_backlog tool, and cccc_task accepts 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 the PATH it 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_decision and add_handoff actions of cccc_coordination, which
    keeps reading and updating the Group's brief;
  • the coordination.note.add context operation;
  • the two note lists in the cccc_bootstrap recovery 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 add open_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_bootstrap and 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
    explicit message_deliver can 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_key in cccc_message_send now also prevents a duplicate for a
    local send and a send to another Group on the same instance: the key becomes the
    send's client_id unless one is given. A retry with the same key sent the
    message twice.
  • connect_send and connect_send_files reject unknown arguments with
    unknown_arguments before 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 the title of the send for agents
    without MCP.
  • Tool descriptions say that retry keys also apply to local sends, and that
    leaving out actor_id acts 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
    reason headless_running_state_unknown, and CCCC Web treats it as active; a
    paused Group stays paused. Reported in #202.
  • cccc actor new-session restarts an agent on a new conversation instead of
    resuming the saved one, using the same arguments as cccc 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_configure without 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 as outcome: existing, without its secret.
    Replacing the credential takes rotate=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 search searches 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
    PATH changed and check that the provider sees the new PATH and 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.