* feat(vscode): show loading spinner when closing a worktree in agent manager
Replace the close button with a small spinner while the worktree is being
removed from disk, so the UI feels responsive during the async operation.
* Update README with Kilo Code content and demo gif
* Update README.md
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
* fix: add .vscode-test/ to kilo-vscode gitignore
The @vscode/test-cli downloads VS Code Electron binaries into
.vscode-test/ when running extension tests. This directory was not
gitignored, causing 1000+ test artifacts to appear in diffs.
---------
Co-authored-by: Mark IJbema <mark@kilocode.ai>
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Promote and close buttons now overlay on top of session/worktree
labels instead of occupying their own space, eliminating the empty
gap when not hovering. Time label hides on session hover; worktree
branch name fades out with a gradient mask under the close button.
Adding a session to an existing worktree via the "+" tab button was reusing
agentManager.worktreeSetup messages, which triggered the full-screen setup
overlay with spinner over the entire detail pane. Replace with a lightweight
agentManager.sessionAdded message that just selects the new session.
Add ts-morph-based regression test to ensure onAddSessionToWorktree never
sends worktreeSetup messages.
* fix: standardize config schema URL to opencode
Replace all occurrences of https://kilo.ai/config.json with
https://opencode.ai/config.json in config source code and CLI docs.
* revert: restore kilo.ai/config.json URLs in config.ts
Reverts the code changes from PR #489 that replaced kilo.ai/config.json
with opencode.ai/config.json in packages/opencode/src/config/config.ts.
The docs changes in cli.md are intentionally kept as opencode.ai/config.json.
* revert: restore kilo.ai/config.json URLs in docs (cli.md)
* Apply suggestions from code review
Co-authored-by: Marius <marius@kilocode.ai>
---------
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Joshua Lambert <25085430+lambertjosh@users.noreply.github.com>
Co-authored-by: Marius <marius@kilocode.ai>
The @vscode/test-cli downloads VS Code Electron binaries into
.vscode-test/ when running extension tests. This directory was not
gitignored, causing 1000+ test artifacts to appear in diffs.
- Use trimEnd() instead of trim() in git() to preserve leading whitespace
in porcelain output (fixes status parsing for ' M file' lines)
- Remove unused 'untracked' from FileChange status union
- Use repository.rootUri.fsPath instead of workspaceFolders[0]
- Add explicit null-check for client after try/catch
- Fix test mocks: add isActive/activate, use mockImplementation to throw,
fix expected error message to match production code
The mockGitContext variable was declared without a type annotation,
causing TypeScript to infer a narrow type from the initial assignment
(status: "modified"). This made reassignment with status: "added"
fail with TS2322. Adding the GitContext type allows all valid status
values.
Set the HEADER_TASKID (X-KILOCODE-TASKID) header on outgoing requests
to the Kilo provider, using the session ID as the task identifier.
This follows the same pattern as the existing project ID and machine ID
headers.
The session context used a single global status signal shared across all
Agent Manager tabs. Switching tabs reset status to idle and dropped SSE
events for non-active sessions, making it impossible to see or abort
busy sessions after a tab switch.
- Replace single statusInfo/busySince signals with per-session stores
- Remove currentSessionID guard from handleSessionStatus so all tracked
session status events are recorded
- Remove unconditional idle reset in selectSession/clearCurrentSession
- Fetch session statuses from server on tab switch to recover any
missed SSE events
- Forward full retry info (attempt, message, next) in SSE status events
Replace hardcoded values with kilo-ui design tokens throughout the
agent manager CSS: border-radius uses --radius-* tokens, font sizes
use --font-size-* tokens, colors use single semantic token references
instead of triple-fallback var() chains with hex defaults, and
interactive states use :active opacity instead of CSS transitions.
Replace raw tab close <button> with IconButton component.
requestFileSearch handler called getWorkspaceDirectory() without a
sessionId, so @ file mentions in Agent Manager worktree sessions always
searched the main workspace instead of the worktree directory. This
meant files only in the worktree branch were not found, and shared
files could resolve to the wrong copy.
Pass currentSession.id so the sessionDirectories map is consulted,
matching the pattern every other handler already follows.
MCP HTTP methods (addMcpServer, disconnectMcpServer, getMcpStatus,
connectMcpServer) were not sending the x-opencode-directory header.
The server fell back to process.cwd(), creating the Playwright MCP
client in a different Instance.state() bucket than the one used when
the agent processes messages. The browser tools appeared registered
but were invisible to the agent.
Fixes#292