v0.40.0
New Features
Rename Projects in the Sidebar — Right-click any local project group in the sidebar and pick Rename to set a custom display title. The new name shows up wherever the project appears in the sidebar without touching the underlying project title or local path on disk — so renaming is purely cosmetic and reversible. The prompt dialog now supports a one-click Reset action to clear the custom name and fall back to the project's real title, and accepts an empty submission to do the same. Custom titles persist server-side via a new project.rename event in the event store, so they survive restarts and follow you across reconnections. jake
Improvements
Smarter Diff Commit Selection — The right sidebar's per-file commit checkboxes now use a compact "all-on with exceptions" or "all-off with exceptions" model instead of tracking every path explicitly. New files automatically inherit the project's current default state — so adding files to a commit and toggling individual exceptions both feel snappy and stay correct as your file list changes. Existing persisted selections are migrated automatically, and files remain checked by default. jake
Provider Defaults Sync into the Composer — When your provider settings finish hydrating after connecting, the chat composer now picks up the latest defaults (model, last-used provider, etc.) for any field you haven't manually changed yet. No more sending the first message of a session with stale defaults if your settings load arrives a moment late. jake
Terminal Pane Sizing — Tightened terminal workspace sizing so panes can no longer overflow the viewport on narrow screens. jake
No Drag Reordering on Small Screens — Local project drag reordering is now disabled on small screens (where it would conflict with normal scrolling/touch interactions), gated by a media-query-backed toggle. The full drag-and-drop experience remains on desktop. jake
Under the Hood
Reset-Capable Prompt Dialogs — The reusable prompt dialog now accepts allowEmpty, resetLabel, and resetValue options so any future "set to a custom value, or clear back to default" UI can use the same component. jake
Project Rename Plumbing — Added a project.rename WebSocket command, a project_sidebar_renamed event-store event, and sidebarTitle on ProjectRecord / SidebarProjectGroup with read-model and ws-router test coverage. jake
Diff & Chat Preference Tests — Added tests covering the diff selection model (migration from older snapshots, mode toggling, sparse exceptions) and chat preference hydration cases. jake