CCCC v0.4.11 Release Notes
v0.4.11 builds on v0.4.10 with a focused reliability pass across the Weixin bridge, runtime state projection, headless streaming, and several operator-facing Web surfaces.
Compared with v0.4.10, this release replaces the Weixin Node.js sidecar with a Python SDK-based bridge, makes runtime state and streaming history harder to desynchronize, improves actor/runtime configuration surfaces, and adds clearer Weixin subscription guidance after login.
Highlights
1) Weixin bridge moved from a Node sidecar to wechatbot-sdk
The largest implementation change in v0.4.11 is the Weixin bridge migration.
The previous packaged Node.js sidecar and bundled .mjs bridge assets were removed. The Weixin adapter now runs through the Python wechatbot-sdk path, with the SDK dependency declared directly in the Python package metadata. This reduces packaging complexity and keeps Weixin login, inbound messages, media downloads, context-token handling, and outbound sends inside the same Python adapter layer as the rest of the IM bridge.
Key improvements:
wechatbot-sdk>=0.2.0is now the Weixin bridge dependency- Node sidecar package files and packaged sidecar resources were removed
- Weixin login status and start/logout routes now operate against the Python SDK-backed state
- media downloads, message normalization, context tokens, and outbound readiness are handled in the Python adapter
- adapter and Web route tests were refreshed around the new implementation
2) Weixin setup is clearer after login
v0.4.11 adds a more explicit Web settings path for Weixin users.
Logging into Weixin only connects the account; it does not automatically tell CCCC which Weixin bot chat should receive group messages. The IM Bridge settings panel now makes that distinction visible after login and explains the next step: send /subscribe in the target Weixin bot chat, then approve the request from Pending Requests.
The guidance adapts to the current state:
- if the IM Bridge config has not been saved, the panel tells the user to save and start the bridge first
- if the bridge is configured but stopped, it tells the user to start it first
- if the bridge is ready and no Weixin chat is bound, it explains the
/subscribeand approval flow - if Weixin chats are already bound, it shows the bound count and how to add another chat
This release also moves the remaining bare Chinese placeholder in the Weixin panel into the English, Chinese, and Japanese locale files.
3) Headless streaming and live work reconciliation were hardened
This release continues the v0.4.10 work on headless runtime visibility, but with a narrower bug-fix focus.
The Web streaming reducers now preserve terminal reply sessions more carefully, bind pending placeholders more conservatively, dedupe placeholder stream entries, and avoid moving a completed reply session back into a non-terminal phase. These changes reduce the chance that Codex or Claude headless output appears to reset, disappear, or stay incorrectly live after the canonical reply has already arrived.
Key improvements:
- pending placeholders are only rebound when they are still safe to bind
- completed or failed reply sessions are protected from accidental phase regression
- stream-id promotion and canonical reply reconciliation carry cached text and activities more consistently
- actor-scoped streaming cleanup avoids removing real activity timelines too early
- focused reducer tests now cover the edge cases that previously caused stale or unstable streaming UI
4) Runtime Dock state is more coherent for both PTY and headless actors
v0.4.11 clarifies the Runtime Dock ring-state model.
The ring tone calculation was extracted into a dedicated helper and simplified to shared state categories: stopped, ready, queued, active, and attention. That makes the visual state model less tied to headless-only stream phases and better suited to both PTY and headless actors.
The daemon-side runtime projection was also tightened. When an actor disappears from the runtime snapshot, the actor activity thread now emits a stopped entry into the ledger so the Web frontend can clear stale working halos and live indicators instead of relying only on in-memory activity broadcasts.
Key improvements:
- Runtime Dock state mapping now covers PTY and headless actors through the same helper
- stale working halos are cleared when actors disappear from runtime snapshots
actor.activityledger append failures are logged instead of silently ignored- Web SSE/runtime projections now reduce sidebar and dock state drift after lifecycle changes
5) Actor and chat surfaces received targeted UX fixes
Several smaller Web-facing improvements are included in this release.
The actor edit modal now opens more reliably with the actor's stored runtime/profile state instead of defaulting to the wrong custom/PTY view. The chat composer mention menu now shows actor display labels and secondary IDs where useful, making @ suggestions easier to scan in groups where actor IDs and display names differ. The mention preview can also be closed with Escape.
Key improvements:
- actor edit state sync is more faithful for profile-backed and custom actors
- mention suggestions show display labels while preserving actor IDs
- Escape closes the mention preview
- composer behavior keeps the existing send and resize behavior intact
6) CLI, contracts, and IM edge cases were tightened
v0.4.11 also includes a set of smaller correctness fixes that reduce confusing failure modes.
The CLI daemon fallback path now distinguishes real daemon unavailability from explicit daemon rejections, so local fallback does not accidentally bypass a daemon-side error. EventKind documentation parity is now checked by tests. Weixin configuration canonicalization received additional route-level and adapter-level coverage, including empty and legacy account fields.
Key improvements:
- daemon rejections are returned as daemon rejections instead of silently falling back to local behavior
- EventKind documentation parity has explicit test coverage
- Weixin config canonicalization is covered in Web route tests
- Weixin context-token and outbound behavior have broader adapter coverage
- the release range adds tests across CLI daemon fallback, actor lifecycle, Web SSE projection, streaming reducers, runtime dock items, and Weixin IM flows
Summary
In short, v0.4.11 is the release that brings together:
- a Python SDK-backed Weixin bridge with the Node sidecar removed
- clearer Weixin post-login subscription guidance in Web settings
- more stable headless streaming and canonical reply reconciliation
- a simpler Runtime Dock state model that applies to both PTY and headless actors
- better actor edit and mention-suggestion UX
- tighter CLI fallback, contract parity, and Weixin configuration tests