π CodeBuddy Code v2.155.0 Release β
π¦ Version Information β
| Component | Version |
|---|---|
| CodeBuddy Code CLI | v2.155.0 |
| Agent SDK JS | v0.3.263 |
| Agent SDK Python | v0.3.262 |
β¨ New Features β
System Notifications on Completion (Web UI) β
The settings page now includes a "Notifications" toggle (off by default). When enabled and the page is not in the foreground (tab hidden or window unfocused), system notifications pop up at the following moments, and clicking one brings the window back:
- Conversation wrap-up: When a main conversation turn completes, errors, is interrupted, or stops waiting for your reply.
- Team and task settlement: When a colleague or background task completes / fails.
- Non-intrusive boundaries: Notifications pop up only when the toggle is on and the page is not in the foreground. Only one notification is shown for the same event within 5 seconds. Tasks you stop manually and bulk failures caused by daemon restarts do not trigger notifications.
Notifications are sent directly by the local CodeBuddy process, so no browser site permission is needed, and you are no longer affected by having to click "Allow" again every time the port changes. When the platform does not support it or the endpoint is unreachable, it falls back to browser notifications only if browser notification permission has already been granted. The settings page provides "Send a test notification" to help you tell whether "we didn't send it" or "the system swallowed it". The notification body uses the latest turn's reply, and thinking entries are never presented as the body. If the body is not ready yet, only the status is reported; the previous turn's reply is never used in its place.
Enhanced Scheduled Task Management β
Scheduled tasks now support editing, pausing, resuming, and viewing execution history. When a task is triggered, trigger information is shown in the conversation so you can confirm the execution.
Terminal A2A Tasks on the Callee Side Are Queryable Across Restarts β
In --a2a / mixed mode, completed A2A tasks (COMPLETED / FAILED / CANCELED / REJECTED) are now persisted to disk. After a process restart (sandbox hibernation and wake-up, CLI crash restart, sandbox-proxy re-pull), callers can still retrieve results via GetTask using the taskId. In mixed mode, tasks are physically isolated per session, and taskIds from other sessions always return TaskNotFound. Running tasks are not persisted; after a restart they are treated as TaskNotFound and should be resent by the caller.
Web UI Automatically Enters CodeBuddyS on First Visit β
When you open the CLI Web UI in a browser for the first time (not in an embedded iframe), it automatically enters the CodeBuddyS view, equivalent to manually clicking the sidebar switcher. After you switch back to CodeBuddy, your choice is remembered and it no longer switches automatically. If it is hard-disabled by an environment variable or ops switch, or blocked by a network failure, it records "attempted" and does not retry. If you never visit the web page, the configuration is never written and the runtime stays dormant; TUI / WorkBuddy / IDE are unaffected.
π§ Improvements β
- Sidebar top bar condensed into one row: Mode switching, search, and new-session no longer each take up a separate block. Search is collapsed into an icon; clicking it opens a floating input box above the list with automatic focus. Pressing Esc, clicking outside, or clicking a list row closes it and clears the filter, leaving no hidden filters behind.
- Mode switcher labels: Chinese labels are "CodeBuddy εεΉ² / CodeBuddy η»ι" and English labels are "CodeBuddy Solo / CodeBuddy Group", making the difference between the two workspaces clear at a glance.
- Stable port by default for interactive launches: Interactive TUI /
cbclaunches pick a free port and persist it (~/.codebuddy/web-ui-port.json). When multiple instances run on the same machine, subsequent instances takebase+1 / base+2 β¦in turn (up to 4). Besides saving you from remembering a new port each time, this also stabilizes the localStorage origin, so device-level preferences such as workspace mode and the notification toggle are no longer cleared whenever the port changes. The behavior of--port, an already-setSERVER__PORT, and--serveis unchanged. - Agent Home visuals and layout: Unified the visual hierarchy of the channel input box, task panel, and task status events, and improved form layout on narrow screens and across browsers.
- Adaptive model selection layout: The model information layout adapts to the available terminal width, preventing descriptions from wrapping character by character in narrow windows.
π Bug Fixes β
- Out-of-order conversation timeline: Fixed an issue where an entire turn's reply poured out out of order after termination / completion. The final answer is now rendered at its actual position in time instead of dropping below interaction panels such as "Question canceled". While a question / approval panel is pending, completed body text before the panel stays visible instead of collapsing into a single-line summary.
- Reply body typography: Restored body font size and heading hierarchy (body 15px/1.7, more distinct heading levels, looser paragraph spacing), and loosened the typography of expanded process group content accordingly. The neutral typography of the tool and thinking tracks is unchanged.
- Memory crash in long sessions: Fixed memory accumulation during context compression in long sessions with large-window models, which occasionally caused out-of-memory crashes. After a successful compression, the in-memory runtime session history is trimmed synchronously, avoiding temporary memory amplification from full deep copies of history on every request. Persistence and cold-start behavior are unchanged.
- Custom model configuration hint: Previously, when a custom model had no endpoint URL configured (including an empty value), requests were sent to the platform gateway and reported "The current model is unavailable, please switch to another model", presenting a configuration issue as a model issue. Now the request fails before it is sent, with a prompt to complete the endpoint URL. Locally launched models now show a prompt to wait for download and startup to finish. Custom models distributed by enterprise administrators still go through the platform gateway as before.
- MCP tool call errors: Fixed all MCP tool calls failing due to request header validation errors when a custom model name contained Chinese / non-Latin1 characters.
- PTC / Code Mode tool Hooks: Fixed PreToolUse Hooks not firing when built-in tools were orchestrated through REPL, Hook output flooding the screen, and misaligned display when Hooks arrived out of order. Each inner tool call now has its own call identifier, so the Pre / Post lifecycle is reliably correlated. Inner Hooks belong only to their parent REPL record, keeping the main interface compact; press Ctrl+O to view the full output.
- Web UI workspace directory: Fixed an issue where, after launching the CLI from a different directory and opening the Web UI from the CLI, the workspace still showed "the directory last opened in the editor". The workspace now always follows the CLI launch directory (or an explicitly specified directory). Opening an older link with a directory parameter still enters the directory in the link.
- Windows shell commands hanging: Fixed shell commands hanging on Windows when the PTY worker file was missing (quarantined by antivirus, broken installation,
--omit=optional). It now automatically falls back to the child process implementation when missing. - Browser preview failures: When a page fails to load, a clear reason and recovery actions are shown, while direct preview of local and intranet pages is preserved.
- Agent Home task assignment not waking assignees: Fixed wake-up tickets going unconsumed when the assignee was offline, so the assignee was never started. Fixed a transitional state after a failed re-pull being misjudged as "terminated by user", which permanently disabled automatic wake-up. Wake-up audits can now distinguish "actually delivered" from "ticket only".
- Extra consumption after cache expiry: When a session has used prompt caching, has been idle for over an hour, and the context has reached 50% of the effective window, the context is compressed proactively before the next message is sent, reducing long-context consumption.
- Model selection when resuming sessions: Fixed
cbc -c/--resumelosing the model selection when resuming a non-default main Agent such as PTC, and wrongly falling back to the first entry in the Agent's model list. - Terminal file drag and drop: Fixed an issue in the Web IDE where dragging files from the Explorer to the Dock, workspace, or canvas terminal mistakenly opened the file and caused UI lag. The path is now always pasted.
- Main Agent inbox delivery: Reports from colleagues to the main Agent are no longer "first to tick takes it". Delivery happens only if the session contains a message from the user, it does not steal from other active sessions, and for messages older than 30 minutes the user's last message must be later than when the message was persisted. A colleague's report is preferentially delivered to the session that started / woke it. Messages not yet delivered go into a backoff queue and are delivered naturally the next time the user speaks, so nothing is lost. Both delivery and deferral leave audit records.
- Repeated approvals: Bulk deletion counts are now accumulated independently per tool call, so deletion counts from earlier commands in a long task no longer cause small subsequent deletions to repeatedly require approval. The file Open phase no longer re-checks sensitive content, avoiding two consecutive sensitive-content approvals.
- Attribution of sensitive file rulings: File operations inferred by the CLI from denial messages are no longer treated as actual deletions, preventing sensitive reads from being wrongly denied outright.