applyModel() was writing to both the global modelSelections map (keyed by
agent name) and the per-session sessionOverrides map. When switching
between sessions in a worktree, any session without its own override
inherited the last-written global model from another session.
Fix: when a session is active, applyModel() now writes ONLY to the
per-session sessionOverrides map. The global modelSelections map is only
written when no session is active (sidebar mode).
Extract session-model-store.ts with pure functions mirroring the store
operations so the per-session isolation logic is directly testable.
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Solid.js delegates onKeyDown to document level, so stopPropagation alone
cannot prevent ChatView's document-level Escape handler from firing.
Add defaultPrevented check to the ChatView handler so menus that already
called preventDefault are respected.
* tmp
* fix: prevent branch dropdowns from closing on first click
Delay branch selector autofocus until mount and ignore focus-outside dismissal while the popover is still opening inside dialogs.
Add a description paragraph at the top of the Rules sub-tab
explaining what rules are and how they work. The description
is shown above the instruction files list.
File creation and per-rule toggles are deferred since the CLI
does not expose per-instruction-file enable/disable, and file
creation requires a webview-to-extension file creation message.
Closes#7600
* fix(vscode): fix progress label variable, prevent worktree sessions from opening locally
- Fix labels[status] → labels[m.status] in ChatView progress handler
(progress text was always "Working..." instead of step-specific labels)
- Guard onSelectSession in Agent Manager: when a worktree-scoped session
appears in the recent list, navigate to its worktree instead of calling
openLocally() which would strip its directory mapping
- Remove empty captureState test placeholder
* fix(vscode): exit review mode when opening recent worktree session
Include editing state in annotation metadata so pierre detects the
change and re-renders the annotation in edit mode. Extract duplicated
annotationsForFile logic into shared buildFileAnnotations helper.
Closes#7585
The .am-tab-label had a hardcoded max-width: 150px that truncated
session titles like "New session - 2026-03-25T..." with ellipsis.
The scrollable tab bar already handles overflow via overflow-x: auto
with fade indicators, so the fixed constraint was unnecessary.
* fix(agent-manager): make Cmd+Shift+M work from VS Code terminal
The Agent Manager keybinding was not firing when a VS Code terminal had
focus because the terminal intercepts all keystrokes by default — only
commands in terminal.integrated.commandsToSkipShell are forwarded to
VS Code's keybinding system, and extension commands are not included.
- Register agentManagerOpen and showTerminal in commandsToSkipShell on
activation so the terminal forwards those keystrokes to VS Code
- Post focusInput to the webview after revealing the panel so the prompt
textarea is focused reliably (the window focus event is unreliable
when switching from a terminal)
* fix(agent-manager): respect workspace-scoped commandsToSkipShell overrides
Use inspect() to find the highest-precedence scope that already defines
commandsToSkipShell and update that scope, instead of always writing to
Global which misses workspace overrides and leaks values.
Extend the title/description flex layout rules from .session-list to
.cloud-session-list so narrow widths truncate the title with ellipsis
instead of wrapping the text onto multiple lines.
- Show toast on transfer failure instead of silently resetting
- Use explicit continueInWorktree prop (default false) so open-in-tab
panels and other KiloProvider instances do not show the button
- Pass continueInWorktree from sidebar App.tsx and AgentManagerApp.tsx
- Add windowsHide:true to git-transfer.ts execFile calls
Buttons use flex:1 via > * selector so they grow to fill available
space. When the diff badge is hidden (no changes), remaining buttons
expand to fill the row. Diff badge wrapper uses flex:0 + margin-left:auto
to stay right-aligned at its natural width.
Replace the "Show Changes" text button with a compact diff stats badge
showing file count, additions, and deletions (3f +42 -8) using data
from session.summary(). Shorten "Continue in Worktree" to "Worktree".
All three buttons share one row.
Move New Task into the same flex row as Show Changes and Continue in
Worktree. All three sit side by side as equal-width buttons, wrapping
only when the sidebar is too narrow.
Remove data-full-width from buttons inside the flex row (it forced
width:100% overriding flex). Use flex:1 with min-width:fit-content
so they share the row and only wrap when genuinely too narrow.
- Handle continueInWorktree in AgentManagerProvider.onMessage so the
button works from local Agent Manager sessions
- Add ContinueInWorktreeIn to AgentManagerInMessage union
- Stop and report error when git state transfer fails instead of
silently continuing with an empty worktree
- Use explicit continueInWorktree prop on ChatView so the button only
shows in sidebar and Agent Manager local sessions, not worktree tabs
Adds a button (sidebar + Agent Manager local sessions) that captures
git state as patches, creates a worktree, applies changes, and forks
the session — all without modifying the source working tree.
* feat(agent-manager): add open locally action for unassigned sessions
Fix onSelectSession bug where clicking a recent session left the pending
tab active, causing clearCurrentSession() to destroy the loaded session on
next click. Now properly replaces pending tab, clears activePendingId, and
switches to LOCAL context.
Add agentManager.openLocally message that clears the session's worktree
directory override so it falls back to workspace root. Exposed as a
context menu item on unassigned sessions and a secondary button in the
read-only banner.
* fix(vscode): remove unsafe openLocally from onSelectSession
onSelectSession fires for any recent session including worktree sessions.
Sending openLocally would strip the directory override from sessions that
still belong to a worktree. Directory clearing is only appropriate on
explicit open-locally actions (context menu + read-only banner).
* refactor(agent-manager): extract openLocally helper to fix inconsistent state management
---------
Co-authored-by: andrway <andrway@example.com>
Co-authored-by: marius-kilocode <marius@kilocode.ai>
local-bin.ts now tracks the latest git commit hash of packages/opencode/
in bin/.cli-version. On subsequent runs, if the hash differs, the binary
is automatically rebuilt instead of silently reusing a stale one.
Remove the separate cloud history toolbar button and combine both lists
into one History panel with Local/Cloud tabs and an always-visible
Import session button. The 'Only this repository' checkbox moves below
the search bar in the cloud tab.
PR #7473 moved KiloNotifications from App.tsx into MessageList.tsx. Since the
agent manager reuses ChatView (which renders MessageList), KiloNotifications
now calls useNotifications() inside the agent manager — but its provider was
only in the sidebar's App.tsx. The missing context crashed the entire SolidJS
tree, rendering the agent manager blank.
Adds a regression test that statically verifies provider chain parity between
App.tsx and AgentManagerApp.tsx so this class of bug is caught at CI time.