Create a dedicated agent-behaviour directory within settings components
and add a standalone WorkflowsTab component, preparing for further
extraction of subtab content from the monolithic AgentBehaviourTab.
Add two stories for the Workflows subtab in AgentBehaviourTab:
- AgentBehaviourWorkflows: shows commands list with descriptions
- AgentBehaviourWorkflowsEmpty: shows empty state
Also adds a reusable SubtabWrapper helper that clicks into a
specific subtab on mount, similar to EditModeWrapper.
The CLI's Config.Command uses 'template' not 'command' for the
command body. Update CommandConfig type to match and use cmd.template
in the workflows subtab display.
Replace the placeholder Workflows sub-tab with a functional view that
lists custom commands from config.command. Each entry shows the
command name (with / prefix), description, and the command template.
Includes a description paragraph explaining how workflows work and
how to invoke them via /command-name in chat.
Shows an empty state when no custom commands are configured.
Closes#7601
The install modal body and result views had no horizontal or bottom
padding, causing content to sit flush against the dialog edges. Add
padding that matches the dialog header's horizontal spacing (20px).
The compile script (triggered by F5 preLaunchTask) was reusing a cached
CLI binary when the source appeared unchanged. This could miss changes in
dependency packages outside packages/opencode/. Pass --force to
local-bin.ts so the backend is always rebuilt during a full compile.
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
Show 'remote' instead of 'SSE' for URL-based servers since the
actual transport may be StreamableHTTP. Handle the legacy
{ command: string, args: string[] } config shape in the expanded
detail view alongside the array-based command format.
Make MCP server rows expandable with a chevron toggle. When expanded,
show config details: command, arguments, URL, environment variables,
and disabled status. The expandable detail replaces the flat command
display with a structured view.
Tools, resources, and logs display requires additional CLI message
infrastructure (follow-up) since the webview does not currently have
access to the per-server tool/resource data from the CLI endpoints.
Closes#7599
* 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>