All notable changes to this project are documented in this file.
The format follows Keep a Changelog, and versions follow SemVer/PEP 440.
- IM key-based chat authorization: dynamic bind-key authentication for IM bridges, replacing static trust with per-chat cryptographic binding. Includes
/bindcommand, auto-subscribe on successful bind, pending approval management, and revoke semantics. cccc_im_bindMCP tool: programmatic chat authorization via the MCP surface.- Authorized chats Web UI: view/manage bound IM chats and pending bind approvals from Settings → IM Bridge tab.
- Bind key UI: generate and display bind keys for chat authorization directly from Web settings.
- Actor profiles system: profile linking across daemon, Web, and MCP — including profile runtime, persistent store, and a dedicated Actor Profiles settings tab.
- Remote access control plane: remote daemon access with hardened IM revoke semantics for secure multi-node operation.
- Telegram typing indicators: typing action support with configurable throttling for more natural conversational UX.
- IM authentication IPC documentation: new standards doc covering IM auth IPC methods.
- IM display names: prefer actor titles over raw actor IDs in IM-rendered messages for better readability.
- Modal UX refinements: extracted modal close handlers and adjusted inbox modal height for cleaner interaction.
- Fixed MCP message send incorrectly collapsing
Nonerecipients to empty list, breaking broadcast semantics. - Fixed
authorized_attimestamp handling in IM Web UI. - Fixed IM KeyManager state not reloading from disk on each inbound poll, causing stale authorization data.
- Fixed docs incorrectly requiring post-bind
/subscribestep (now handled automatically).
- Actor lifecycle event coverage: daemon streaming now emits fuller actor/group lifecycle transitions for better observability and downstream automation hooks.
- Secret safety UX upgrade: actor secret keys now support masked previews in Web edit flows, improving operator confidence without exposing plaintext.
- Branding assets refresh: project logos were added and integrated into Web/README surfaces for consistent distribution identity.
- Automation idle semantics were aligned with explicit group-state behavior, reducing ambiguity in scheduled reminder execution during
idlemode. - Terminal safety hardening: resize and related terminal maintenance paths were tightened to avoid unstable behavior in mixed runtime conditions.
- Docs and onboarding were updated to match current
v0.4behavior, including SDK entry points, release hub linking, and refreshed top-level README content.
- Fixed lifecycle edge cases where actor/group state transitions and event emission could diverge.
- Fixed multiple test-surface instability points (especially MCP/environment isolation), improving release reproducibility.
- Chat-native orchestration model: operators can assign and coordinate work in a persistent Web conversation, with full delivery/read/ack/reply state tracking.
- External IM extension of the same workflow: Telegram, Slack, Discord, Feishu/Lark, and DingTalk bridges allow the same group control model outside the browser.
- Prompt-configurable multi-agent workflow design: guidance prompts and automation rules become first-class workflow controls instead of ad-hoc conventions.
- Bi-directional orchestration capability: CCCC schedules agents, and agents can schedule/manage CCCC workflows via MCP tools under explicit boundaries.
- Append-only ledger truth model: every group event is persisted in
groups/<group_id>/ledger.jsonlfor replayable, auditable operations. - Structured automation engine: interval/recurring/one-time triggers with typed actions (
notify,group_state,actor_control) for operational delegation. - Accountable messaging semantics: read cursors, acknowledgement paths, and reply-required obligations for high-signal collaboration.
- Generation shift from v0.3: replaced the tmux-first operating model with a daemon-first collaboration kernel and versioned contracts.
- Control-plane unification: Web/CLI/MCP/IM now operate on one shared state model (thin ports, daemon-owned truth).
- Runtime state standardization: operational state is managed under
CCCC_HOME(default~/.cccc/) instead of repository-local state. - Operating workflow modernization: day-to-day usage aligns around
attach / actor / group / send / mcpover tmux-era command patterns.
- Reliability hardening across RC cycles for delivery flow, automation execution, reconnect/resume handling, and registry normalization.
- Stability and UX fixes in Web interactions (including mobile operation and composer/tasking flows).
- MCP/docs/CLI parity drift reduced through dedicated guardrail tests.
- Deprecated tmux-first orchestration line from active mainline development (archived at
cccc-tmux).
- Web i18n framework: integrated
react-i18nextwith namespace-based locale loading (common,layout,chat,modals,actors,settings) and automatic browser language detection. - Chinese (zh) locale: complete Simplified Chinese translation across all 6 namespaces (735 keys), with native-level phrasing review and unified typography (full-width
:, Unicode…). - Japanese (ja) locale: complete Japanese translation across all 6 namespaces (735 keys), with native-level phrasing review and unified typography (full-width
:, Unicode…, full-width?). - Language switcher UI: minimal trigger button showing only short label (
EN/中/日), positioned at the rightmost of the header; dropdown panel with scale-in animation and left accent bar for active item; React Portal for proper positioning. - i18n key parity test: automated test to verify all locale files have identical key sets across languages.
LanguageSwitcherrefactored from cycle-button to professional popover dropdown.- Language switcher moved to header rightmost position (after Settings button) with separator.
- Shared language configuration extracted to
languages.ts. - README overhaul with comprehensive project details, architecture, features, and quick start guide.
- Installation instructions updated to use TestPyPI for release candidates.
- Docker Claude config updated with bypass permissions flag.
- Chinese locale encoding unified from
\uXXXXescape sequences to direct Unicode characters. - Chinese translation quality:
忙碌中→处理中,义务状态→回复状态,编辑器→输入框,代码片段→模板. - Japanese colon typography: 39 instances of half-width
:after CJK characters corrected to full-width:. tolabel in chat kept as English "To" in ZH/JA (international convention).- Misleading "Clipboard" label corrected to "Context" in EN/ZH/JA layout.
- Daemon modularization: extracted monolithic
server.pyinto 22+ focused ops modules with full dispatch orchestration (request_dispatch_ops.py), preserving identical logic with callback injection for all external dependencies. - MCP parity guardrails: toolspec dispatch parity test, schema guard test, CLI reference parity test, and web automation docs parity test.
- MCP toolspec normalization: consistent indentation and formatting across all 1400+ lines of tool definitions.
- Web UI component extraction:
ModalFrame,SettingsNavigation,ContextSectionJumpBar,ProjectSavedNotifyModal,ScopeTooltipextracted from monolithic modal files. - Docker deployment guide with custom API endpoint configuration and proxy handling.
- Access-token authentication gate and non-root Docker user support.
- Auto-wake disabled recipients: agents are automatically started when they receive a message.
- Message mode selector in the Web UI composer; reply-required workflow with digest nudges.
- DingTalk enhancements: message deduplication, file sending via new API, stream mode documentation.
- IM bridge improvements: proxy environment variable passthrough, implicit send behavior clarification.
cccc_group_set_stateMCP tool now acceptsstopped(mapped togroup_stop).
- Daemon ops modules use dependency injection (callbacks) instead of global imports for testability.
- Serve loop extracted to
serve_ops.py; socket protocol tosocket_protocol_ops.py. - MCP dispatcher split by namespace; tool schemas extracted from handler code.
- Web Settings:
AutomationTabsplit into focused subcomponents. - Runtime behavior tests made runner-independent for cross-platform CI.
- Registry auto-cleans orphaned entries on group load failures.
- Release and standards docs aligned to version-agnostic examples.
- Orphaned PTY actor processes cleaned up on daemon restart.
- Mobile modal UX regressions (composer, runtime selectors).
- Template import now correctly handles
auto_mark_on_delivery. - Tooltip ref callback stability in Web UI.
reply_requiredcorrectly coerced to boolean in MCP message send.
- Release candidate baseline before the rc19/rc20 quality-convergence cycle.
- Established append-only ledger, N-actor model, MCP tool surface, Web UI console, and IM bridge architecture.