Persist the model selector expand/collapse preference in extension
globalState instead of per-webview state, and broadcast changes through
KiloConnectionService so every live webview (sidebar and Agent Manager
panel) stays in sync.
* feat(vscode): persist model selector expand/collapse state
Save the model picker's preview-panel expand/collapse preference via the
VS Code webview state API so it survives reload, hide/show, and restart.
* chore(vscode): add model picker changeset
* fix(vscode): address model selector review feedback
* feat(vscode): open sidebar changes in diff tab
* fix(vscode): stabilize sidebar changes review tab
* chore: update kilo-vscode visual regression baselines
* fix(vscode): harden sidebar changes tab messaging
* refactor(vscode): share review tab helpers
* fix(vscode): clear empty changes loading state
* fix(vscode): correct session state initialization
* fix(vscode): use getVSCodeAPI singleton in diff-viewer to prevent double acquireVsCodeApi call
* fix(vscode): ensure CLI connection before diff fetch and include content in diff hash
- Call connectionService.connect() in DiffViewerProvider.initialFetch() so
the panel works even if opened before any other Kilo view
- Include full diff content in hashFileDiffs instead of just after.length
to detect in-place edits that don't change line counts
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* feat(vscode): add knip dead code detection to agent-manager
Add knip to the kilo-vscode package to detect and prevent dead code in
the agent-manager. This includes:
- knip.json config scoped to src/agent-manager/ and webview-ui/agent-manager/
- CI pipeline step in test-vscode.yml to run knip on every PR
- Clean up unused exports: narrow interfaces/types to non-exported where
only used locally, remove unused re-exports from FileTree.tsx and
review-comments.ts
* expand knip scope to entire kilo-vscode package
- Widen project scope from agent-manager only to src/**/*.ts and
webview-ui/**/*.{ts,tsx}
- Exclude vendored src/services/autocomplete/** from analysis
- Enable ignoreExportsUsedInFile for component Props patterns
- Delete 4 dead files: legacy-migration barrel/messages, settings
barrel, webview telemetry util
- Trim barrel re-exports in cli-backend, telemetry, browser-automation
to only what consumers actually import through the barrel
- Unexport private helpers: getNonce, joinCspDirectives,
NEW_EXTENSION_IS_STILL_EXPERIMENTAL flag, getVSCodeAPI,
dispatchMockProviders, errorCodes
- Narrow 5 unused exported types to non-exported
- Add POST /telemetry/capture endpoint to CLI server
- Add TelemetryProxy singleton in extension (forwards to CLI)
- Add webview telemetry helper (postMessage → extension → CLI)
- Pass telemetry env vars (level, editor_name, platform, machineId) to CLI
- Wire up KiloProvider as TelemetryPropertiesProvider
- Replace TelemetryStub with real TelemetryProxy in autocomplete
- 53 telemetry events covering tasks, LLM, tools, UI, autocomplete, etc.
Two root causes fixed:
1. Model ID mismatch: backend model keys use provider prefix (e.g. 'kilo/auto')
but KILO_AUTO constant and settings default used 'auto' without prefix.
findModel() never matched. Fixed defaults everywhere.
2. Message delivery race: ProviderProvider registered its providersLoaded handler
in onMount (too late). Moved to component body, added requestProviders retry
with 500ms interval, and extension-side provider caching.
Reimplements commits 76d374f and e4a01805 from PR #131 with a
production-ready approach:
Webview changes:
- Add types/messages.ts with typed extension<->webview messages
- Add context/vscode.tsx for VS Code API access
- Add context/server.tsx for connection state management
- Add context/session.tsx for session and message state with SSE handling
- Add chat components: ChatView, MessageList, Message, PromptInput,
StatusIndicator, PermissionDialog
- Add styles/chat.css with VS Code CSS variable theming
- Update App.tsx to use context providers and ChatView
- Update Settings.tsx to use server context
Extension changes:
- Update KiloProvider CSP to allow localhost connections
- Add handlers for createSession, loadMessages, loadSessions
- Forward sessionCreated, messageCreated events to webview
- Convert backend types to webview-friendly format