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.
- Change outputs from dist/** to .next/** (Next.js default)
- Keep POSTHOG_API_KEY and FREE_TIER_AMOUNT to silence Vercel warnings
- Add NEXT_PUBLIC_POSTHOG_KEY and NEXT_PUBLIC_POSTHOG_HOST for
correct Turborepo cache invalidation
Delete implementation detail docs for all ✅ Done features — these
contained migration instructions that are no longer relevant now that
the feature is built.
Delete all unknowns/ docs — these were pre-implementation research
questions that have since been answered and implemented.
Remove broken links in opencode-migration-plan.md and update
settings-ui.md to reflect actual current state.
Declare POSTHOG_API_KEY and FREE_TIER_AMOUNT in the
@kilocode/kilo-docs#build task so Vercel exposes them during
builds and Turborepo includes them in the cache hash.
Code Block Interactions, Command Execution, Diff Viewing, Image Handling,
and Todo List Management are all fully implemented via kilo-ui. Connection
State UI and Inline Actions updated to reflect partial progress.
Add gitUrl and gitBranch fields to kilo_meta so shared sessions
include repository context. Resolves the best remote (origin > single
available > upstream) and fetches the URL with a 10s in-flight cache.
PostHog's capture_pageview fires on initial page load, but _app.tsx
already manually captures $pageview on routeChangeComplete for SPA
navigations. This caused double pageview events on initial load.
Set capture_pageview: false and let the manual call in _app.tsx handle
all pageview tracking consistently.
- raw-markdown.ts: Check path bounds before any filesystem probes to
prevent leaking file existence info outside the pages directory
- TableOfContents.tsx: Fix SSR hydration mismatch by moving
window.location.hash into useEffect + state instead of reading it
during render
- raw-markdown.ts: Replace weak regex path sanitization with
path.normalize (the path.resolve bounds check remains as primary guard)
- instrumentation-client.ts: Guard PostHog init against missing env var
instead of using non-null assertion (prevents crash in local dev)
- CopyPageButton.tsx: Show error feedback instead of false success when
copy fails