Repository navigation
Releases: raffaelefarinaro/ciaobot
Releases · raffaelefarinaro/ciaobot
Release list
v1.5.0
v1.5.0 - 2026-10-12
Heads up:
- Settings → MCP is now read-only. It lists the MCP servers Claude Code and OpenCode are configured with, and shows their live status in running chats. It no longer adds, edits or deletes servers or their keys. Add and sign in to a server with the provider's own CLI from the workspace folder:
claude mcp add/claude mcp login, oropencode mcp add/opencode mcp auth. Servers you already set up keep working. - Schedule commands: an agent can now attach a shell command to a schedule only from a chat in bypass mode. In any other mode, add the command yourself in the schedule's edit card (#1284).
New features
- Compact a chat on demand: a Compact button beside the context meter (Work details, and the side rail on wide screens) shrinks the chat's history when it is getting full.
- Install help from Home: when your browser does not offer an install prompt, the Home setup card links to the install steps for every platform, and it marks the step as done once the app is installed.
Improvements
- A chat limited to its workspace now knows which folders it can use, and tells you where to change that (Settings → Workspaces → Edit → File access) when something is out of reach.
- Ciaobot opens faster: the first page loads less up front, and the archive and Settings load their data when you open them.
- A chat that stops on a weekly or monthly usage limit now retries once a day (up to a week), and it shows under "needs you" on Home with the error and what to do next. A newer run of the same routine replaces the old one.
- Uploaded documents keep their original file in the project folder next to the Markdown version, and the agent can read the original PDF too.
- Settings → MCP shows one status row for each running chat, instead of starting servers to check them.
- Sandboxed MCP servers launched through
npxnow start. - When a project is closed, its memory pass runs on the model of the project's last-used chat, as archived chats already do.
- On narrow panes the chat title sits above the project name instead of both being cut off. On phones the chat header is a single row.
- Settings shows one scope badge per row, puts the capability card near the top, and keeps the side rail at 1280px wide (#1294).
Bug fixes
- Memory backup's "Set up in Ciaobot" chat could not reach the Ciaobot data folder when the workspace's file access was Workspace only, so it could not create the backup repository (#1328)
- Provider usage-limit errors showed "Unknown error — The operation did not complete" instead of a quota card (#1292)
- Stopping a turn sent "Background agents finished" when no background agents had run (#1290)
- After Stop, the spinner could start again on a turn that had already finished, for up to 10 seconds on OpenCode
- Your first message showed twice after switching a chat to another provider or forking it
- Creating a project from the sidebar left you on Home instead of opening the project (#1293)
- When a schedule command timed out, the processes it had started kept running and its partial output was lost (#1283)
- An in-app update from v1.3.0 did not move to the new Ciaobot Server login item, and a failed rollback could leave no server host at all (macOS) (#1281, #1282)
- A memory pass that you stopped and then continued was never archived
- A tool error that mentions a quota, such as "disk quota exceeded", was shown as a provider error
v1.4.0
v1.4.0 - 2026-10-10
Heads up: on macOS, the background service now shows as "Ciaobot Server" in System Settings → General → Login Items. The update replaces the server host, so if you had granted it Accessibility or Automation access, macOS asks once more.
New features
- Command schedules: a schedule can run a shell command first and only opens a chat when the command prints something or fails, so routine checks with nothing to report cost no model time. Set it in the schedule's Command field.
- claude.ai connectors per workspace: turn your Claude account's connectors (Slack, Jira and the rest) off for a workspace in Settings → Workspaces. Claude chats there then start lighter and faster.
Improvements
- Lower token use across the board:
- OpenCode chats no longer resend Ciaobot's instructions on every turn.
- The end-of-chat memory pass is skipped for fully automated runs, and never loads claude.ai connectors.
- The schedule attention check runs on a small model.
- Agents page through long chat and proposal lists instead of loading them whole.
- Archived chats now list the tools each turn used.
- Automations defer editing application code or Ciaobot's runtime files to you, and never print secret values into a chat.
- Agents wait for CI or other agents in the background instead of polling in the chat.
- Delegating a task now needs at least a sentence of description, so the agent does not have to come back and ask what to do.
ciao service statusshows the interpreter the service is actually running, andciao service restartpicks up an edited service definition (macOS).
Bug fixes
- Chats that hit a provider's weekly usage limit no longer retry every hour for the rest of the week (#1259)
- Vault commands run by automations could write to a different workspace's vault than the chat's own; they now follow the active workspace and refuse a conflicting target (#1265)
- A stopped reply with several steps reloaded with its paragraphs run together (#1246)
- Some older archived chats hid the reply when the message contained a code block and a pasted heading (#1247)
ciao service restartkept running the old service definition after it was edited (macOS) (#1270)
v1.3.0
v1.3.0 - 2026-10-09
Heads up:
- The agent works inside the workspace folder by default ("Workspace only"): it can no longer read or change other files on your computer. If a workflow needs more, switch it in Settings → Workspaces → File access. On Windows the default stays "Whole machine". On Ubuntu 23.10 and later, follow the one-time sandbox setup in the Linux guide.
- Webhook triggers no longer have their own permission mode: events now run in the mode a new chat starts in (Settings → Models & providers), so if that default is bypass, webhook events run in bypass too. If you created a webhook trigger before this release, webhooks, workspace archive and rename will fail until you delete
.runtime/webhooks.jsonin your workspace and create the trigger again.
New features
- File access per workspace: confine the agent and its shell to the workspace folder, or allow the whole machine. Each workspace row in Settings shows which one it uses.
- Rename a workspace from Settings → Workspaces → Edit. Projects, automations and chats follow the new name.
- Task resolutions and progress notes: marking a task done asks how it was resolved, and an in-progress task keeps a log of progress notes from you or the working agent. Ciaobot learns from both, and can propose a reusable skill for you to review.
- Project closure notes: closing a project asks whether it was completed or stopped and records a short note in the project document for Ciaobot to learn from.
Improvements
- Settings → General opens with Updates (a compact "Up to date" when there is nothing to install), followed by app install, notifications and keyboard shortcuts.
- The task board has horizontal lanes and refreshes on its own, with no manual Reload.
- Google Workspace setup is a step-by-step checklist, with sign-in first and terminal commands under Advanced.
- Accepting a project or people note folds the change in as one edit instead of rewriting the note.
- Update task history collapses finished rows.
- Schedule times on the Automations page and in the sidebar are shown in your local time, like Home; a schedule's own timezone is named in its detail.
- The message action reads "Fork" instead of "Fork from here".
- The send button says what it does ("Send" or "New chat") for screen readers.
- The website links to these release notes.
Bug fixes
- An archived chat showed a reply only up to its first code block (#1241)
- Links to files in a chat failed to pin, and the viewer closed (#1167)
- Answering an OpenCode permission request after it expired showed "not found" (#1170)
- Accepting a category proposal failed when one of its notes was missing (#1157)
- The background service showed the wrong app identity in macOS settings (#1156)
ciao setuprepeated folders in the service'sPATH(#1199)- Stopping a reply kept it on screen, but part of it was missing after a reload (#1223)
- The message footer could name the helper model (Haiku) instead of the model you picked (#1224)
- An archived chat still offered "Archive chat" (#1225)
- An Update task history row said "Since Ciaobot 0.0.0" (#1228)
- Settings → General's "On this page" list could leave out Main workspace (#1227)
v1.2.1
v1.2.1 - 2026-10-08
Bug fixes
- Re-running the installer to update or repair a v1.2.0 install stopped with "Ciaobot.app manages the engine on this Mac"; it now runs normally (macOS) (#1141)
v1.2.0
v1.2.0 - 2026-10-07
Heads up:
- Password protection is always on:
PWA_AUTH_REQUIREDis gone, so an install that ran without a password now asks for one. Set it in Settings → PWA password. - Some
.envsettings moved to Settings → General:PWA_HOST,CIAO_LOG_LEVEL,CIAO_DEV_MODEandCIAO_APP_REPO. Your values are imported once at startup; after that.envis ignored for them. - Claude sign-in: a set
ANTHROPIC_API_KEYno longer counts as signed in. Sign in from Settings → Models & providers or withciao auth. - First-run setup now works only from the machine Ciaobot runs on, not from another device.
- Moving an install: editing
CIAO_WORKSPACEin.envnever moved it; use Settings → Main workspace → Move.
New features
- Workspace task board: a To do / In progress / In review / Done board for each workspace, with drag between columns, an autosaving task editor, and
/tasks/<id>links that open the task in place; the same tasks are available from theciao taskcommand. - Delegate tasks to an agent: hand a task to an agent in an ordinary chat, follow its progress and log from the task, review the result, and mark it done; approved tasks feed what Ciaobot learns. Delegated chats and task tags also show on Home and in the sidebar.
- Webhook triggers: under Automations, create a trigger with its own URL and secret so an external system (a failing build, for example) starts a chat in your workspace. Each trigger keeps a history of the events it accepted.
- Import past conversations: bring in Claude Code and OpenCode history from onboarding or Memory, choose what to share, and review the extracted memory proposals before anything is saved.
- Move your main workspace: Settings → Main workspace → Move... relocates the whole install, with a dry-run plan first and automatic rollback if anything fails (macOS, Linux, Windows);
ciao workspace-movedoes the same from a terminal. - Customizable keyboard shortcuts: turn workspace shortcuts off or rebind them in Settings, and choose whether Enter sends a message. Preferences are shared across your devices.
- Pinned files follow you across devices: the files pinned beside a chat stay in sync between browsers.
- Insights model per provider: choose the Session insights model separately for each provider in Settings.
Improvements
- Message actions (Copy, Fork from here, time, model, tokens) appear on hover instead of on click, and fit on one line on a normal-width pane.
- The login page now says it wants your password, shows where to find it, and explains failed or rate-limited attempts in plain words.
- Background runs have names, and Work details shows each one's log with a Stop button; the Work details panel is easier to read.
- A chat that stops because the provider login lapsed shows how to sign in again; a missing OpenCode shows an install step, like Claude does.
- Settings lists the skills each CLI ships.
- Project chats are listed newest first, and an unread chat that needs you shows one dot instead of two.
- Esc closes an open dialog or menu before it leaves Settings or Automations.
- A loading skeleton replaces the blank screen on first loads.
- Restarts finish faster when a provider turn is still running.
- On macOS, the service now runs under a signed Ciaobot Server host, installed during setup and kept in step by updates.
- Memory curation replaces superseded notes instead of piling on annotations.
gwsin a chat uses the workspace's Google account.
Bug fixes
- A Stop pressed just as a turn started was lost, and a stopped turn could replay its retry later (#1109)
- A whitespace-only queued follow-up re-ran the previous prompt (#1102)
- Queued follow-ups parked after an error or a question had no chip to edit or remove and were sent silently with the next message (#1108)
- Clicking Home after visiting Settings or another page reopened the previous chat and its pinned file (#1116)
- A
ciaocommand run inside a background command could pick up a stale install (#1013) - An "After this update" card kept offering an archived chat as open (#1052)
- The "legacy env ignored" housekeeping tile could not be cleared (#1134)
- A scheduled run on an OpenCode free-tier model logged an error trace on every dispatch (#1066)
ciao setuptold Windows users to add the wrong folder to PATH, andinstall.ps1 -NoStartprinted a command that broke on a profile path with a space (Windows)
v1.1.0
v1.1.0 - 2026-10-03
Heads up:
- Settings → Automations tab removed: the Session insights switch is now in Settings → General.
- Built-in subagents removed: researcher, secretary and memory are deleted on upgrade. Your own subagents are kept.
- Web-research skill removed: web pages are read with your provider's own web fetch.
- Fewer stock memory categories: Person, Project, Place, Idea, Resource, Journal and Note. Categories your notes already use stay available.
New features
- Windows 11 (preview): install with a one-line PowerShell command, run the engine as a per-user sign-in task, and update it in place. Windows 11 only; see the Windows guide in the docs.
- After this update: a Home card group offers short, per-release tasks for your workspace (for example cleaning up Learnings or re-homing people notes). You can start, resume, hide and reopen them, and finished ones are marked done from their own evidence. Task history is kept.
- Note verification: the nightly care run now checks stale notes against evidence, applies fixes it can back up, and files the rest as proposed edits you can preview. Memory review, history and the memory map show each note's and each fact's verification state, and note changes are revision-checked with undo.
- Complete a project: in vault review, a project note has a Complete button that archives it and repoints links to it.
- Lessons into skills: lessons learned in a chat are routed to your own skill, a stock skill or a new skill proposal, with the originating chat linked, and settled findings clean up Learnings.md.
- Start at sign-in: Settings → Home shows and controls whether the engine starts when you sign in.
- Memory-first onboarding: the welcome chat explains your memory categories, asks the workspace's purpose and your working style, and seeds what it learns.
- Use Ciaobot as an app: a permanent Settings → Home card explains installing the web app on each platform.
Improvements
- The engine no longer needs Node.js to install or run.
- Home actionable notices open in separate closable windows, with a control to bring them back. Memory To decide states each reason once per note and shows facts as plain prose without repeated neighbours.
- Selecting a chat message draws a thin accent outline and no longer scrolls the transcript. The comment box is tinted per workspace and Home sections are evenly spaced.
- Settings asset tabs follow the selected workspace, and the critique panel and extension settings are explained in place.
- The new-chat project picker is skipped when the project is already known, and an automatic memory pass no longer pops a toast when it ends.
- The Update tile points at Settings, where the update runs.
- OpenCode in bypass mode runs glob and grep without an approval card, and the install message now points at OpenCode 2.x.
- Backups cover schedules.json and vault Logs notes explicitly, and a coverage gap is no longer reported as a backup failure.
- Agents no longer get per-turn entity hints in the prompt; recall uses search.
- Credentials are kept out of the snapshot taken before a workspace re-root.
Bug fixes
- The closing reply of a chat was folded into Activity after reloading history, hiding the answer (#630)
- A chat could stay stuck on "streaming" after a reply finished, and messages could arrive out of order (#781)
- A message queued behind a running turn showed its answer under the previous turn's bubble.
- The engine ran out of file descriptors (Errno 24) and stopped accepting connections (#972)
- Stopping a Claude reply showed an unknown error, and the archive kept an internal diagnostic instead of the partial text (#952, #967)
- An idle chat's connection was dropped and reconnected every 14 seconds (#847)
- Literal HTML typed in a user message rendered as markup and the text disappeared (#867)
- Agent turns and background commands could run an older
ciaofrom PATH instead of the running engine (#989, #995) - Settings → Restart (from source) failed when git had no user identity (#851)
- Settings → MCP servers ran a stdio server's command and arguments together with no space (#850)
- A workspace's own
.mcp.jsonservers were never added to its allowed MCP servers (#863) - A memory-curation run that could not start was recorded as ok (#866)
ciao setupreported success when the memory step failed, andpython -m ciaodid nothing (#790, #791)- The comment popover could run off the right edge of the screen.
v1.0.1
v1.0.1 - 2026-09-28
New features
- Automatic memory backup: Ciaobot commits and pushes your vault and workspace data to your Git repository every five minutes while it is running. Set it up, pause it, check status or back up now from Settings → Memory backup, with a guided setup chat or a copyable setup prompt.
- Skill improvement suggestions: after a conversation is archived, the memory pass can propose evidence-backed improvements to the skills you own. Accepting one opens an improvement chat that edits the existing skill, and the suggestion tracks whether it is in progress, interrupted or applied.
- Share into Ciaobot: on the installed app, send text, links or files from the OS share sheet into Ciaobot; nothing reaches an agent until you add it to a draft and send. The app icon also gains New chat, Memory and Automations shortcuts, and the file viewer can share a file natively where the device supports it.
Improvements
- Memory's Suggested and To revisit pages are now one To decide page with All, Suggested and To revisit filters.
- Settings → Other devices detects your Tailscale Serve address automatically, so you no longer need to type the trusted HTTPS address.
- Skill suggestions come only from the memory pass; the weekly skill-reflection schedule is retired.
- The actions under a selected message now sit as a footer attached to that message, including on phones.
- Starting a chat shows an honest connection state with plain-language startup phases instead of a 0% boot screen.
- The Agent context panel shows the project brief the model actually receives, and the Work details panel scrolls without a visible scrollbar.
- The model picker refreshes its list each time it opens.
- Requests that arrive through a proxy are no longer treated as local, so local-only controls (such as the menu-bar feed and setup-token redemption) are refused to them.
- Open in default app is shown only when you use Ciaobot on the machine it runs on.
- The mobile chat header is tidier: the Archive button is an icon and the breadcrumb stacks on narrow screens.
- The memory map starts from the same layout on every load.
Bug fixes
- A chat answer sometimes stayed blank until you opened Activity (#630)
- Git sync, conflict resync and backup could run at the same time, and a failed commit was reported as success (#674, #680)
- One archived conversation appeared twice on Home, as a memory pass and again under "tidying up" (#687)
- Safari and iOS never received push notifications because Apple rejected them; the Settings test-notification button is removed.
- Sending from Home asked for the project again even though the project chip already named it, and left the sent text in the new chat's composer.
- Chats started from Home did not get a Claude-generated title.
- Opening a project link directly showed "No files yet".
- On a narrow window between 600 and 768px the menu button printed over the page name.
- Sidebar chat and project menus could open off the bottom of the window.
- The model picker could show no OpenCode models when the engine was under load.
- Notes under automations, and notes sharing a common file name, were matched as unrelated entities.
- The selected chat row showed a second accent bar on top of its highlight.
- Chat file lists no longer show temporary files.
v1.0.0
v1.0.0 - 2026-09-28
Ciaobot 1.0 is a single terminal-installed engine that you use from the browser: workspaces, projects and chats, durable vault memory, schedules, subagents and a task board on Claude Code or opencode, reachable from your phone over Tailscale or a VPS. This release retires the macOS app and adds in-app updates.
Heads up:
- macOS app users: Ciaobot.app is gone and is no longer built or updated. Migrate once with
curl -fsSL https://github.com/raffaelefarinaro/ciaobot/releases/latest/download/install.sh | sh -s -- --migrate. It moves your service to the engine, keeps your workspace and runtime data, and removes the old app. The one-liner without--migraterefuses to run while the app manages the engine. - Client/host (node) mode is removed: there is no longer a separate client app, a Device page or a connected-clients list. Open the engine's address in a browser on any device (Settings → Other devices lists the addresses).
- OpenCode users: OpenCode 2.0.16 or newer is required. Older servers are no longer supported.
- Environment variables removed:
CIAO_WORKSPACES(the workspace list now lives only in Settings),CIAO_ALLOWED_ORIGINS(a reverse proxy must forwardX-Forwarded-Host) and theCIAO_INSIGHTS_*variables. Remove them from.env; the model for insights is still chosen in Settings. - Removed features: read-aloud and voice dictation, Apple on-device models (an "Apple" insights model now reads as Automatic), and the Home review-queue tile.
New features
- In-app updates: Settings shows an update with progress. Running chats are drained first, the swap runs detached, and a failed update rolls back; an interrupted one resumes on restart. Chats that were waiting resume after a cancelled update.
- One-line engine installer and
ciao service: install or migrate with a single command, then start, stop and restart the service withciao service. A Home setup card walks through install and notifications. - Engine offline screen: when the engine is unreachable the PWA shows a recovery screen and reconnects without a reload.
- Push to every device: notifications reach all your devices, with a test-notification button and an Other devices card (Settings) listing the engine's addresses.
- Memory categories: Memory → Categories lists the note types in your vault and lets you edit them. Ciaobot can also propose new categories from clusters of similar notes, and agents write typed notes using them.
- Memory pass as a chat: each workspace has a Memory project where the memory pass runs as an ordinary chat you can open, follow and answer, with its own guardrails, replacing the one-shot insights pipeline.
- Archive workspaces: Settings → Workspaces → Archive sets a workspace aside without merging anything into your primary workspace; restore it from Archived workspaces.
- Open archived chats read-only: archived chats open with their summary and "Continue in new chat".
Improvements
- Memory is redesigned: its sections (Suggested, To revisit, Map, Retired, History) are in the sidebar, the map fills the pane with a docked note tile, and each suggestion states its change (new note, add to a note, merge, move) with an inline diff.
- Accepting a people fact for an existing person note folds it into that note instead of asking you to merge by hand.
- "Talk about it" on a suggestion keeps a link to its chat and shows an open chat button.
- Settings merges providers into one models & providers tab, with the long connector and skill lists collapsed.
- The core interface gets a layout pass: page grid, docked pinned file, back and forward navigation, a cleaner Work details rail and flat Google Workspace account rows.
- Dialogs, menus and popovers handle focus and dismissal more consistently.
- OpenCode runs on the V2 server API, with explicit approval for search tools and retryable permission and form prompts.
- Remote access is hardened: same-origin checks on every connection and stricter handling of local-only controls.
- The update tile on Home leads with the update button.
- Workspace-reroot refusals now say which vault folders block them.
Bug fixes
- Claude chats often showed 100% context in the message footer when the chat was far from full.
- Background-agent notices could mark the wrong tasks as finished, or lose context after
/compact(#502). - A chat repeated a full report after a background agent finished and the parent had already written it.
- An archived chat opened to a blank page (#619).
- Selecting text in the file viewer and pressing Comment left Add comment and Cancel unclickable.
- Deleting a workspace silently moved its projects and notes into your primary workspace; it is now Archive.
- A workspace added or archived in Settings could revert after a restart when
CIAO_WORKSPACESwas set. - Long critique model names ran outside their card on phones, and Option-key shortcut labels were wrong on Mac.
- The re-root plan could refuse without saying why (#521).
v0.18.1
v0.18.1 - 2026-09-23
Changed
- Merge pull request #518 from raffaelefarinaro/chore/sync-develop-v0.18.0 (
bc111da0) - Exclude completed projects from vault review queue (
64df3422) - Require frontmatter on every vault note the agent writes (
3f47e499) - Show the model that did the turn's work in the chat footer (
4f23a23e) - Improve memory proposal quality: route known entities, drop session noise (
49951935) - Remove clusters and bridge notes from the memory map (
50435cdd) - Release review fixes for the proposal routing and vault review changes (
a2c7d10d) - Keep review rows and unresolved project names instead of dropping them (
3f300486) - Address Codex review on #522: keep facts reviewable instead of guessing (
e2c0de47) - Check session-write evidence in the named file only (
ec6ac33a) - Narrow the stem shortcut and recognise completed-project moves (
9e831b38)
Fixed
- Fix silent drops and edge cases found reviewing the release fixes (
228b0148)
v0.18.0
v0.18.0 - 2026-09-22
Added
- feat(recall): close the negation and abstention gaps in the evidence drill-down (
9fdd5821) - feat(memory): preview a proposal's exact change before accepting it (
505b0e80) - feat(insights): wire the structured extraction path to fact candidates (
d92e79cc) - feat(memory): make an edited accept undoable from History (
f7dd0398) - feat(linux): add VPS hosting support (
6ed6ef00) - feat(agent-surface): add the ciao agent CLI and its loopback dispatcher (S0) (
11489026) - feat(agent-surface): delete three operations and land the post-experiment fixes (S1) (
59cf1ba9) - feat(agent-surface): migrate the rare admin group to the CLI (S2) (
bbdc8955) - feat(agent-surface): migrate the chat lifecycle group to the CLI (S3) (
30ed3b22) - feat(agent-surface): migrate background runs and schedules to the CLI (S4) (
1a20f246) - feat(agent-surface): empty the MCP catalog by migrating the hot-loop group (S5) (
56ceab3f) - feat(agent-surface): rewrite hot-loop callers to ciao command wording (S5) (
69fc902f) - feat(control-plane): file_surface suggests nearest paths on a miss (Q-08) (
d1af1480) - feat(agent-surface): add GET /api/agent/status and drop the /mcp mount (S6) (
4cd29182) - feat(settings): replace the ciaobot-fastmcp row with an Agent CLI status panel (S6) (
8b552b97)
Changed
- Merge pull request #478 from raffaelefarinaro/chore/sync-develop-v0.17.0 (
0c7d6486) - refactor(web): extract the proposal action result type and decision recorder (
fcc1810c) - Merge pull request #479 from raffaelefarinaro/fix/issue-452 (
9b783774) - Merge pull request #480 from raffaelefarinaro/fix/issue-460 (
eab1d234) - Merge pull request #484 from raffaelefarinaro/fix/issue-446 (
7caa47cb) - Merge pull request #483 from raffaelefarinaro/fix/issue-456 (
c2ed1388) - Merge develop into fix/issue-459 (
a010d916) - Merge pull request #482 from raffaelefarinaro/fix/issue-459 (
2f61fb2c) - Merge branch 'develop' into fix/issue-453 (
c6ab81d1) - Merge pull request #481 from raffaelefarinaro/fix/issue-453 (
999f89e4) - Merge pull request #487 from raffaelefarinaro/fix/issue-485 (
095cdbf9) - Merge pull request #488 from raffaelefarinaro/fix/issue-486 (
7b4feac6) - Merge pull request #489 from raffaelefarinaro/fix/catch-up-client-node (
0d3938c7) - refactor(web): type the proposal accept outcomes (
d71e02c9) - refactor(web): extract the chat composer and completed-turn Activity row (
9e37971f) - Merge pull request #492 from raffaelefarinaro/fix/453-outcomes (
6985a113) - Merge pull request #493 from raffaelefarinaro/fix/490 (
341b2822) - Merge pull request #494 from raffaelefarinaro/fix/453-chatpanel (
fb7104f8) - Merge pull request #495 from raffaelefarinaro/fix/loose (
fab0e71e) - refactor(web): split annotations and pure chat helpers out of the projects store (
22e41538) - refactor(web): extract the Settings MCP tab into a composable and a panel (
5bba165c) - Merge pull request #496 from raffaelefarinaro/fix/453-stores (
5fe7bee3) - Merge remote-tracking branch 'origin/develop' into fix/453-settings (
77b5982b) - Merge pull request #497 from raffaelefarinaro/fix/453-settings (
d3ff3b04) - refactor(web): extract the chat transcript read path out of routes_api (
1c96e3dc) - Merge pull request #498 from raffaelefarinaro/fix/453-routes (
5d1cef41) - Merge pull request #491 from raffaelefarinaro/raffaelefarinaro/linux (
028887fb) - Merge branch 'develop' of https://github.com/raffaelefarinaro/ciaobot into develop (
240f7db5) - perf(web): stop rebuilding the known-path rules once per text span (
bbd04cf3) - refactor(chat): extract the subagent completion watcher from ProjectChatManager (
8f4e7d18) - Merge pull request #504 from raffaelefarinaro/docs/sync-and-port-accuracy (
bb593fd5) - Merge remote-tracking branch 'origin/develop' into fix/499-500-501 (
6e1b48cb) - Merge pull request #503 from raffaelefarinaro/fix/499-500-501 (
c441a359) - refactor(workspace): make AGENTS.md the only workspace guide (
a5c6470e) - Merge pull request #505 from raffaelefarinaro/fix/vault-lint-memory-root (
f934bfc7) - Merge pull request #506 from raffaelefarinaro/raffaelefarinaro/issuereach (
4e6271f4) - Merge pull request #507 from raffaelefarinaro/feat/agents-md-guide (
18fb6dc4) - Remove the re-entry chat summary feature (
b2a3cd10) - Merge origin/develop into raffaelefarinaro/removeSummary (
83bf3dad) - Merge pull request #509 from raffaelefarinaro/raffaelefarinaro/removeSummary (
65d60c2d) - memory-curation: add weekly guide-body review to Workspace care (
b5b5830c) - Use the on-device Foundation Model for a backfill pre-filter and dictation correction (
6eb9cfd6) - refactor(agent-surface): move operations into a shared module-level table (S2a) (
cf8a4265) - refactor(agent-surface): collapse the core prompt to the single CLI-first file (S5) (
6fcc7649) - refactor(agent-surface): remove the MCP transport and rename the shared core (S6) (
2ffc7cbe) - Merge pull request #508 from raffaelefarinaro/raffaelefarinaro/mcpvscli (
c527400d) - Merge pull request #510 from raffaelefarinaro/raffaelefarinaro/mcpvscli-s1 (
0a29944f) - Merge pull request #512 from raffaelefarinaro/raffaelefarinaro/mcpvscli-s2 (
9b93a455) - Merge pull request #513 from raffaelefarinaro/raffaelefarinaro/mcpvscli-s3 (
9a5eeddd) - Merge pull request #515 from raffaelefarinaro/raffaelefarinaro/mcpvscli-s5 (
02e840bc) - Merge pull request #516 from raffaelefarinaro/raffaelefarinaro/mcpvscli-s6 (
ca9a08ca)
Fixed
- fix(mcp): label the usage aggregation window and harden telemetry writes (
c01e6ee4) - fix(memory): type the reconcile decision and offer a retry from review (
37d2efb1) - fix(memory): validate evidence against a fact-candidate v1 record (
a9b40116) - fix(memory): reach the reconcile retry from the review queue (
c9a1fb3d) - fix(triage): gate startup triage on the report's own has_issues (
09cabc82) - fix(schedules): treat an interrupted run as a missed slot (
61c4a022) - fix(schedules): skip startup catch-up on a client node (
aaa48fac) - fix(linux): address review findings on update guidance and unit quoting (
fca05116) - fix(schedules): correlate a run's outcome with the dispatch that produced it (
9084c989) - fix(memory): byte-exact undo, learning source on accept, card strip at phone width (
3ec9083c) - fix(linux): pin bundled-app test to macOS and make workspace private (
6134715b) - fix(linux): keep WorkingDirectory literal, refuse backslashes (
fdeea17c) - fix(linux): fail closed when server type is unknown before restart (
e9ed309f) - fix(linux): stage systemd unit in a root-owned private directory (
da7521de) - fix(linux): skip macOS desktop rebuild in Linux dev deploys (
e9363fe3) - fix(linux): keep application code administrator-owned (
ceb1ba60) - fix(preflight): tighten OpenAI key regex to avoid INDEX.md false positive (
da618020) - fix(chat): give the CLI-envelope vocabulary one home (
666f20e7) - fix(chat): key the notification summary on the record's opening tag (
cd6f649d) - fix(chat): a completion is a record that opens with the notification tag (
4616660a) - fix(workspace): commit the guide rename, and stop telling agents to write CLAUDE.md (
d1c83580) - fix(client): settle a stopped turn and surface a lost host connection (
5ee44cc2) - fix(vault): count a root-level MEMORY.md as a memory root (
3323533e) - fix(chat): dedupe the Outputs list and collapse it into links (
73b01881) - fix(settings): repair the Google account card layout (
5740c89b) - fix(ui): keep the model picker inside the viewport (
8f5c5c70) - fix(workspace): commit every guide change, and stop fuzzy-resolving the guide probe (
ad9d54cc) - fix(workspace): fix the injected prompt and stop the merge corrupting regions (
a918f77b) - fix(client): keep a stopped turn unread-free and the outage notice single (
872a799c) - fix(workspace): never follow a symlink when writing the guide backup (
2d799ce6) - fix(client): key the banner on a mounted ChatPanel, not the URL (
88d52671) - fix(agent-surface): apply the S0 review and security-review findings (
eb93917e) - fix(agent-surface): address the PR 508 review comments (
80bc020d) - fix(agent-surface): address the second PR 508 review round (
eec5c81e) - fix(agent-surface): address the third PR 508 review round (
8a6fc8d2) - fix(agent-surface): make --chat optional on send/stop/continue, defaulting to the calling chat (
929ab392) - fix(agent-surface): recall guidance abstains when a narrower search cannot recover an omitted qualification (
e5eb2333) - fix(agent-surface): fail closed on compound CLI commands and preserve pre-existing memory on cleanup (
5afe0c82) - fix(agent-surface): address S2 code-review findings (
66fbe9d4) - fix(agent-surface): default chat surface is CLI, keeping migrated ops reachable (
65847b7b) - fix(agent-surface): keep MCP default and inject the CLI token on both surfaces (S2 security review) (
e2807c21) - fix(agent-surface): keep the still-MCP-exposed destructive tool gated in opencode auto (
e00b10dc) - fix(agent-surface): address S5 code-review findings (
71572b59) - fix(agent-surface): preserve the file-surface event and harden suggestions for the CLI surface (
c65ed2a2) - fix(agent-surface): keep lifespan shutdown cleanup in a finally block and retarget the renamed doc (
9acb05e5) - fix(agent-surface): remove the argv auto-approval (security P1, S6) (
829fea43) - fix(agent-surface): require the ciao prefix for the CLI file-surface touch (
784e21db) - fix(agent-surface): keep chat stop/continue target-explicit and harden the comparison runner (
d40e77cc) - fix(agent-surface): address the S6 review round (
4fb68e3e) - fix(agent-surface): let explicit ciao file surface paths bypass the shell heuristic; retire INTEGRATIONS MCP runtime notes (
fa9d60da) - fix(agent-surface): recognize newline-separated surface commands and evaluate opencode's effective bash action (
aa9f0c86...