The script uses Script.version (CLI version) for GitHub release upload,
not the extension's package.json version. Removed the unused variable
to avoid confusion.
The package.json already has version 7.x (6 more than CLI's 1.x).
When KILO_VERSION is set in the workflow, it contains the CLI version,
so we need to add 6 to match the vscode extension versioning.
- Split vscode publish script into build.ts and publish.ts
- Build script copies CLI binaries from dist artifacts instead of downloading
- VSIX packages renamed to kilo-vscode-{target}.vsix
- Added build-vscode job to publish.yml workflow
- VSCode publishing now part of main publish flow
- Removed standalone publish-vscode.yml workflow
Implement 4-phase streaming feedback for the VS Code webview:
- Phase 1: Working indicator with spinner, status text, and elapsed timer
- Phase 2: Auto-scroll on part updates during streaming
- Phase 3: Retry indicator showing attempt number and countdown
- Phase 4: Optimistic user messages for instant feedback
When users switched from the Kilo sidebar to the file explorer (or any
other sidebar view) and back, the webview was destroyed and recreated,
losing the active session state.
Add retainContextWhenHidden: true to the sidebar WebviewViewProvider
registration, matching the behavior already used for tab panels.
- Add watch-cli.ts script that watches packages/opencode/src/ for changes,
triggers a rebuild (bun run build --single --skip-install), and copies
the new binary to packages/kilo-vscode/bin/kilo
- Add watch:cli npm script in kilo-vscode package.json
- Add 'VSCode - CLI Watch' task in .vscode/tasks.json
- Include CLI watch in the composite 'VSCode - Watch' task so it runs
automatically when launching the extension via F5
OpenRouter sends encrypted redacted_thinking blocks that appear as
literal [REDACTED] text in reasoning parts. The TUI already strips
these, but the shared UI component (used by both the vscode extension
and packages/app) rendered them as-is.
Strip [REDACTED] from reasoning part text before rendering, matching
the TUI behavior.
The upstream UI sets --font-family-sans to Inter, but the Font component
that loads Inter via @font-face is not used in the VSCode webview. This
caused the browser to fall back to its default serif font.
Override --font-family-sans with var(--vscode-font-family) in the
kilo-vscode theme scope so all CSS references resolve to the native
VSCode UI font.
The text-part copy button was positioned above the text body (top: -28px)
which works in the main app with 32px margin-top, but overflows into the
tool part above in the narrower sidebar layout. Move it inside the text
body instead.
- Add CodeComponentProvider and DiffComponentProvider to App.tsx so
message parts with code/diffs render correctly
- Add permission dock UI to ChatView with deny/allow-always/allow-once buttons
- Forward patterns from permission.asked SSE event in KiloProvider
- Add pierreWorkerStubPlugin to esbuild to handle @pierre/diffs worker
imports (workers not available in VS Code webview CSP)
Add onMount hook to ProfileView that posts refreshProfile message,
ensuring balance data is always fresh when the user opens the profile page.
Previously balance was only fetched on initial webview mount.
- Add FileSystemWatcher to monitor dist/webview.* files
- Automatically reload webview when source changes (300ms debounce)
- Only active in ExtensionMode.Development
- Improves DX for rapid webview UI iteration
- State is preserved via existing syncWebviewState mechanism