* tmp
* feat: drag-and-drop tab reordering in agent-manager
Extract tab ordering logic into tab-order.ts with reconcileOrder,
applyTabOrder, firstOrderedTitle. Extract SortableTab and
ConstrainDragYAxis into sortable-tab.tsx. Persist tab order via
WorktreeStateManager to .kilocode/agent-manager.json. Add unit tests.
* cleanup: remove duplicate tests, unused code, and stale re-export
- Delete reorder-tabs.test.ts (merged into tab-order.test.ts)
- Remove reconcileOrder (duplicate of applyTabOrder)
- Remove unused session variable in removeSession
- Remove stale reorderTabs re-export from navigate.ts
* fix: use applyTabOrder for local tab recovery, remove unused pending prop
- Local tab order recovery now uses applyTabOrder (consistent with worktree
handling), gracefully appending new sessions instead of dropping the order
- Remove unused pending prop from SortableTab component
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.
* feat(vscode): add git worktree support for agent manager sessions
* test(vscode): add WorktreeManager unit and integration tests
* refactor(vscode): address review — extract branch-name, shared SessionMode type, remove premature delete handling
* refactor(vscode): pass directory through handler chain, fix listener leak, add cleanup regression tests
- Remove messageDirectory class field; pass dir as parameter to all handler methods
- Only trust directory override when onBeforeMessage interceptor is attached
- Add proper type for CreateWorktreeSessionRequest, remove `as any` cast
- Fix onMessage listener leak with onCleanup in AgentManagerApp
- Use removeWorktree() for pre-creation cleanup instead of inline fs.rm
- Add regression tests for orphaned directory removal and cleanup before re-creation
* refactor(vscode): bind directory to session not message, fix duplicate import
- KiloProvider: add sessionDirectories map and setSessionDirectory()
- getWorkspaceDirectory() resolves by sessionId lookup instead of per-message override
- Remove dir param from all 18 handler methods — they resolve directory from their sessionId
- AgentManagerProvider: call setSessionDirectory() at session creation and recovery
- Remove directory injection from message interceptor (interceptor only routes custom messages)
- Fix duplicate ExtensionMessage import in AgentManagerApp.tsx
- Forward agent param in worktree session creation
* fix: update stale docstring in AgentManagerProvider
* fix: path guard on rm, clean up sessionDirectories on delete/dispose, track recovered sessions for SSE, log metadata write failures
* fix: recover worktree sessions on restart by merging worktree directories into loadSessions
- handleLoadSessions fetches sessions from all registered worktree directories
and merges them into the response (deduped by session ID)
- recoverWorktrees result is awaited by the interceptor before loadSessions
passes through, ensuring sessionDirectories are populated first
- Fixes: worktree sessions disappearing after VS Code restart
* fix: non-blocking worktree recovery — refresh session list after discovery instead of blocking loadSessions
* fix: don't retry with new branch when existingBranch was requested
- Extension sends vscode.env.language to webview via ready message
- LanguageProvider uses priority: user override → VS Code lang → browser → en
- LanguageTab has a Select dropdown with all 16 locales + 'Auto'
- Language preference stored in kilo-code.new.language VS Code setting
- setLanguage message from webview saves preference to VS Code config
- Use Dialog via useDialog() hook to avoid dual @kobalte/core context mismatch
- Use BasicTool for the collapsible permission header (matching app pattern)
- Use data-component=permission-prompt / data-slot=permission-actions
for the button row (styled by kilo-ui CSS, matching app pattern)
- Remove 7 custom permission CSS classes from chat.css
- Remove direct @kobalte/core dependency from kilo-vscode