docs: update feature docs with current implementation status and fix stale references

This commit is contained in:
Mark IJbema
2026-02-12 14:43:34 +01:00
parent 3707f3d1df
commit dd74fc99b6
19 changed files with 39 additions and 63 deletions
@@ -4,8 +4,7 @@ Interactive UI for configuring and toggling auto-approval.
## Location
- [`webview-ui/src/components/settings/AutoApproveDropdown.tsx`](../../webview-ui/src/components/settings/AutoApproveDropdown.tsx:1)
- [`webview-ui/src/components/settings/AutoApproveMenu.tsx`](../../webview-ui/src/components/settings/AutoApproveMenu.tsx:1)
The old `AutoApproveDropdown.tsx` and `AutoApproveMenu.tsx` components don't exist in the new extension. [`AutoApproveTab.tsx`](../../webview-ui/src/components/settings/AutoApproveTab.tsx) exists in settings but is currently a stub. Auto-approval configuration needs to be built as a new feature.
## Interactions
@@ -2,9 +2,13 @@
Interactive functionality for rendered code blocks (copying, expanding, scroll behavior).
## Status
🔨 Partial
## Location
- [`webview-ui/src/components/common/CodeBlock.tsx`](../../webview-ui/src/components/common/CodeBlock.tsx:1)
Code blocks are now rendered via kilo-ui's `<KiloMessage>` component with shiki syntax highlighting. There is no standalone `CodeBlock.tsx` in the new extension — code block rendering is handled internally by kilo-ui's markdown pipeline via `<MarkedProvider>`.
## Interactions
@@ -13,11 +17,3 @@ Interactive functionality for rendered code blocks (copying, expanding, scroll b
- Sticky button positioning during scroll
- Inertial scroll chaining between code block and container
- Auto-hide buttons during text selection
## Suggested migration
**Reimplement?** No (UI-only).
- Keep this behavior in the webview as-is when switching the backend per [`docs/opencode-core/opencode-migration-plan.md`](docs/opencode-core/opencode-migration-plan.md:1).
- Ensure the Kilo CLI→Kilo event mapping preserves fenced code blocks in assistant output so the existing code-block renderer continues to activate.
- Reference: Kilo CLI also implements code-block copy in its own UI markdown renderer ([`packages/ui/src/components/markdown.tsx`](https://github.com/Kilo-Org/kilo/blob/main/packages/ui/src/components/markdown.tsx:1)), but Kilo does not need to adopt it.
@@ -4,7 +4,7 @@ Interactive terminal output rendering and approval controls for executed command
## Location
- [`webview-ui/src/components/chat/tool-message/CommandExecution.tsx`](../../webview-ui/src/components/chat/tool-message/CommandExecution.tsx:1)
Command execution rendering is now handled by kilo-ui's `<KiloMessage>` component which includes per-tool renderers including `BasicTool`. There is no standalone command execution component — tool messages are rendered through the unified message pipeline.
## Interactions
@@ -4,7 +4,7 @@ Batch approval UI for file read operations.
## Location
- [`webview-ui/src/components/chat/tool-message/BatchFilePermission.tsx`](../../webview-ui/src/components/chat/tool-message/BatchFilePermission.tsx:1)
Permissions are now rendered through kilo-ui's `DataProvider` pattern using `Dialog` + `BasicTool` + `data-component="permission-prompt"`. There is no standalone `BatchFilePermission.tsx` — the permission UI is integrated into the kilo-ui message rendering pipeline.
## Interactions
@@ -2,7 +2,7 @@
**GitHub Issue:** [#161](https://github.com/Kilo-Org/kilo/issues/161)
**Priority:** P0
**Status:** 🔨 Partial
**Status:** ✅ Complete
## Description
@@ -19,12 +19,7 @@ The chat session should be present and Kilo-themed. This is the core chat experi
## Current State
The basic chat infrastructure exists:
- [`ChatView.tsx`](../../webview-ui/src/components/chat/ChatView.tsx) — main chat layout with message list and prompt input
- [`MessageList.tsx`](../../webview-ui/src/components/chat/MessageList.tsx) — renders messages with auto-scroll
- [`Message.tsx`](../../webview-ui/src/components/chat/Message.tsx) — renders text, tool, and reasoning parts with status icons
- [`PromptInput.tsx`](../../webview-ui/src/components/chat/PromptInput.tsx) — send/abort controls
The chat UI now uses kilo-ui components throughout. `ThemeProvider` with `defaultTheme="kilo-vscode"` provides consistent theming. Messages render via kilo-ui's `<KiloMessage>` component with full markdown support. UI elements use kilo-ui `Button`, `IconButton`, `Tooltip`, `Popover`, `Toast`. The provider hierarchy in [`App.tsx`](../../webview-ui/src/App.tsx) includes `ThemeProvider → DialogProvider → VSCodeProvider → ServerProvider → LanguageBridge → MarkedProvider → ProviderProvider → SessionProvider → DataBridge`.
## Gaps
@@ -1,7 +1,7 @@
# Markdown Rendering
**Priority:** P0
**Status:** ❌ Not started
**Status:** ✅ Complete
**Source:** [JetBrains plugin analysis](../../LESSONS_LEARNED_JETBRAINS.md), [GitHub Issue #161](https://github.com/Kilo-Org/kilo/issues/161)
## Description
@@ -19,15 +19,7 @@ Assistant messages render as plain text. No markdown parsing, no syntax highligh
## Current State
[`TextPartView`](../../webview-ui/src/components/chat/Message.tsx:15) renders raw text:
```tsx
const TextPartView: Component<{ part: TextPart }> = (props) => {
return <div class="message-text">{props.part.text}</div>
}
```
No markdown library is imported. No syntax highlighting exists.
Message.tsx delegates rendering to kilo-ui's `<KiloMessage>` component which internally handles Markdown via `<MarkedProvider>`. Syntax highlighting is provided by shiki (bundled via kilo-ui). All assistant messages render as rich markdown with code blocks, links, lists, etc.
## Gaps
@@ -4,7 +4,7 @@ Interactive elements for specialized message content beyond plain markdown/code.
## Location
- Various specialized components
Content type rendering is now handled by kilo-ui's `<KiloMessage>` component which includes renderers for reasoning blocks, tool results, and other part types. The old standalone components (`ReasoningBlock`, `OpenMarkdownPreviewButton`, etc.) don't exist in the new extension.
## Interactions
@@ -2,7 +2,7 @@
**GitHub Issue:** [#166](https://github.com/Kilo-Org/kilo/issues/166)
**Priority:** P0
**Status:** ❌ Not started
**Status:** ✅ Complete
## Description
@@ -18,7 +18,7 @@ A task header displayed at the top of the chat session that provides key context
## Current State
No task header exists. The chat view starts directly with the message list.
[`TaskHeader.tsx`](../../webview-ui/src/components/chat/TaskHeader.tsx) implements the task header with session title, cost display (formatted USD), context token usage with percentage bar, and a compact button with tooltip. Uses kilo-ui `IconButton` and `Tooltip`. Integrated into [`ChatView.tsx`](../../webview-ui/src/components/chat/ChatView.tsx).
## Gaps
@@ -4,7 +4,7 @@ Interactive editing for todo lists surfaced by the agent/tool messages.
## Location
- [`webview-ui/src/components/chat/tool-message/UpdateTodoListToolBlock.tsx`](../../webview-ui/src/components/chat/tool-message/UpdateTodoListToolBlock.tsx:1)
Todo list data flows through the SSE pipeline: `todo.updated` events are handled by KiloProvider → webview message → session store with `todos()` accessor. No rendering UI component exists yet. The old `UpdateTodoListToolBlock.tsx` is not present in the new extension.
## Interactions
@@ -18,5 +18,4 @@
## Primary implementation anchors
- [`src/services/kilocode/`](../../src/services/kilocode/)
- [`src/services/mdm/`](../../src/services/mdm/)
Auth is handled via [`DeviceAuthCard.tsx`](../../webview-ui/src/components/DeviceAuthCard.tsx) for the device auth flow and [`ProfileView.tsx`](../../webview-ui/src/components/ProfileView.tsx) for login state display. The CLI backend manages the actual auth tokens. The old `src/services/kilocode/` and `src/services/mdm/` directories don't exist in the new extension.
@@ -18,4 +18,4 @@
## Primary implementation anchors
- [`src/services/browser/`](../../src/services/browser/)
- [`src/services/browser-automation/`](../../src/services/browser-automation/)
@@ -1,5 +1,16 @@
# Localization & locale alignment (Kilo Code ↔ Kilo CLI)
## Implementation Status
**Status: ✅ Complete**
The localization system is fully implemented:
- [`language.tsx`](../../webview-ui/src/context/language.tsx) provides the i18n context with three-layer dict merging (app + kilo-ui + kilo-i18n)
- 16 locale files in [`webview-ui/src/i18n/`](../../webview-ui/src/i18n/): ar, br, bs, da, de, en, es, fr, ja, ko, no, pl, ru, th, zh, zht
- Locale auto-detection: user override → VS Code language → browser default
- [`LanguageTab`](../../webview-ui/src/components/settings/LanguageTab.tsx) provides a working locale selector in settings
- Template interpolation support for dynamic values
## Goal
During the Kilo CLI backend migration, we must keep **UI translations** and **server-facing locale identifiers** consistent.
@@ -18,4 +18,4 @@
## Primary implementation anchors
- [`src/services/marketplace/`](../../src/services/marketplace/)
No marketplace service directory exists in the new extension. The marketplace feature needs to be built from scratch.
@@ -23,5 +23,4 @@
## Primary implementation anchors
- [`src/services/mcp/`](../../src/services/mcp/)
- [`src/services/mcp/oauth/`](../../src/services/mcp/oauth/)
MCP is managed by the CLI backend, not local extension services. The extension interacts with MCP via HTTP client methods in [`http-client.ts`](../../src/services/cli-backend/http-client.ts): `getMcpStatus`, `addMcpServer`, `connectMcpServer`, `disconnectMcpServer`. The [`BrowserAutomationService`](../../src/services/browser-automation/browser-automation-service.ts) uses these methods to register Playwright as an MCP server.
@@ -2,7 +2,7 @@
**GitHub Issue:** [#162](https://github.com/Kilo-Org/kilo/issues/162)
**Priority:** P2
**Status:** ❌ Not started
**Status:** ✅ Complete
## Description
@@ -18,7 +18,7 @@ Users should be able to switch between modes (e.g., Code, Architect, Ask, Debug,
## Current State
No mode switcher UI exists. The CLI backend supports modes (visible in the old extension).
[`ModeSwitcher.tsx`](../../webview-ui/src/components/chat/ModeSwitcher.tsx) implements a popover-based agent/mode selector listing all available agents with descriptions. Selection is persisted via `session.selectAgent()`. Integrated into [`PromptInput.tsx`](../../webview-ui/src/components/chat/PromptInput.tsx). Agent data is fetched via the `listAgents` HTTP endpoint and `AgentsLoadedMessage`.
## Gaps
@@ -2,7 +2,7 @@
**GitHub Issue:** [#163](https://github.com/Kilo-Org/kilo/issues/163)
**Priority:** P1
**Status:** 🔨 Partial (In progress)
**Status:** ✅ Complete
## Description
@@ -18,7 +18,7 @@ Users should be able to view and switch between the models for the providers tha
## Current State
No model switcher UI exists. The CLI backend likely has endpoints for listing available models and setting the active model.
[`ModelSelector.tsx`](../../webview-ui/src/components/chat/ModelSelector.tsx) implements a popover-based selector with search/filter, keyboard navigation (arrow keys + Enter), provider grouping with sort order, free model tags, and selected state. Integrated into [`PromptInput.tsx`](../../webview-ui/src/components/chat/PromptInput.tsx). Provider context in [`provider.tsx`](../../webview-ui/src/context/provider.tsx) fetches providers, connected status, and defaults.
## Gaps
@@ -2,7 +2,7 @@
**GitHub Issue:** [#175](https://github.com/Kilo-Org/kilo/issues/175)
**Priority:** P1
**Status:** ❌ Not started
**Status:** 🔨 Partial
## Description
@@ -19,7 +19,7 @@ Configure a provider and switch between configured providers. Providers are the
## Current State
No provider configuration UI exists. The [`ProvidersTab.tsx`](../../webview-ui/src/components/settings/ProvidersTab.tsx) settings tab is a stub. The CLI manages provider configuration.
Provider data infrastructure is in place. [`provider.tsx`](../../webview-ui/src/context/provider.tsx) context fetches and exposes provider data, connected providers, defaults, and model lists. This powers the [`ModelSelector.tsx`](../../webview-ui/src/components/chat/ModelSelector.tsx) component. [`ProvidersTab.tsx`](../../webview-ui/src/components/settings/ProvidersTab.tsx) still needs a full configuration UI for adding, editing, and removing providers.
## Gaps
@@ -18,22 +18,7 @@ Replicate the settings that are available in OpenCode (CLI) and allow users to c
## Current State
A 14-tab settings sidebar navigation shell exists in [`Settings.tsx`](../../webview-ui/src/components/Settings.tsx) with stub tab components:
- [`ProvidersTab.tsx`](../../webview-ui/src/components/settings/ProvidersTab.tsx)
- [`AgentBehaviourTab.tsx`](../../webview-ui/src/components/settings/AgentBehaviourTab.tsx)
- [`AutoApproveTab.tsx`](../../webview-ui/src/components/settings/AutoApproveTab.tsx)
- [`AutocompleteTab.tsx`](../../webview-ui/src/components/settings/AutocompleteTab.tsx)
- [`BrowserTab.tsx`](../../webview-ui/src/components/settings/BrowserTab.tsx)
- [`CheckpointsTab.tsx`](../../webview-ui/src/components/settings/CheckpointsTab.tsx)
- [`ContextTab.tsx`](../../webview-ui/src/components/settings/ContextTab.tsx)
- [`DisplayTab.tsx`](../../webview-ui/src/components/settings/DisplayTab.tsx)
- [`ExperimentalTab.tsx`](../../webview-ui/src/components/settings/ExperimentalTab.tsx)
- [`LanguageTab.tsx`](../../webview-ui/src/components/settings/LanguageTab.tsx)
- [`NotificationsTab.tsx`](../../webview-ui/src/components/settings/NotificationsTab.tsx)
- [`PromptsTab.tsx`](../../webview-ui/src/components/settings/PromptsTab.tsx)
- [`TerminalTab.tsx`](../../webview-ui/src/components/settings/TerminalTab.tsx)
- [`AboutKiloCodeTab.tsx`](../../webview-ui/src/components/settings/AboutKiloCodeTab.tsx)
15-tab settings shell exists, migrated to kilo-ui `Tabs` component. [`BrowserTab`](../../webview-ui/src/components/settings/BrowserTab.tsx) has real settings controls (enable/disable, system Chrome, headless toggles using kilo-ui `Switch`). [`LanguageTab`](../../webview-ui/src/components/settings/LanguageTab.tsx) has a working locale selector using kilo-ui `Select`. The remaining 13 tabs are still stubs.
## Gaps
@@ -20,7 +20,7 @@ Persist tasks so that users can continue prior tasks. This includes browsing pas
Basic session history exists:
- [`SessionList.tsx`](../../webview-ui/src/components/history/SessionList.tsx) — lists sessions with relative dates
- [`SessionList.tsx`](../../webview-ui/src/components/history/SessionList.tsx) — now uses kilo-ui `List` component with keyboard navigation and fuzzy search; lists sessions with relative dates
- [`session.tsx`](../../webview-ui/src/context/session.tsx) — create, list, select, load messages
## Gaps