* 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.
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
Pressing Escape now aborts a busy session in the VS Code extension,
matching the behavior of the web app. Works whether the textarea is
focused or not. Ghost text dismissal still takes priority over abort
when both conditions are true.
* tmp
* feat(agent-manager): read-only mode for unassigned sessions, tooltip fix, worktree validation
* tmp
* fix keydown
* feat(agent-manager): replace empty worktree hint with 'New Worktree' button
* fix(agent-manager): validate message params before dispatching handlers
* fix(agent-manager): clear stale directory mappings on worktree deletion, remove unused code
* feat(agent-manager): auto-focus prompt input on session switch and panel focus
* refactor(agent-manager): rename short var wt to worktree
* fix(agent-manager): local tabs with pending session support and serialized saves
- Add pending tab system for local sessions (pending:N IDs in localSessionIDs)
- Show 'New Session' tab on first start, empty state when all tabs closed
- Pending tabs behave like normal tabs (closable, selectable, keyboard nav)
- Guard against duplicate sessionCreated events (HTTP + SSE)
- Serialize WorktreeStateManager saves to prevent concurrent write races
- Add flush() method and use it in tests to eliminate flaky failures
* refactor(agent-manager): rename short var mgr to manager
* tmp
* tmp
* tmp
* feat(agent-manager): add fixed local session tab with branch display and persistence
Add a dedicated local session item at the top of the agent manager sidebar
that always runs in the main repo (never a worktree). The local session
persists across panel reopens via vscode webview state, shows the current
git branch name (refreshed on click), and supports keyboard navigation.
Extract navigation logic into a pure testable function with 16 unit tests.
* fix(agent-manager): invalidate stale persisted localSessionID on recovery
The local session ID was persisted to webview state but never checked
against the actual sessions list on recovery. If the session was deleted
or expired between VS Code reloads, the UI would get stuck selecting a
ghost session with no way to recover.