What we are supposed to be doing
Per CHAT_MIGRATION_PLAN.md, docs/migration/, docs/dynamic-models-*.md, and src/ux/README.md, the goal of the retire-webview effort is:
- Retire the webview/React UI and the end-of-life
@vscode/webview-ui-toolkit.
- Express every interaction through native VS Code APIs — Chat Participant (
vscode.chat.createChatParticipant), TreeView sidebar, QuickPick/InputBox, status bar, command buttons — instead of a custom message bus + HTML/CSP.
- Keep the neutral provider layer (provider-agnostic handlers + neutral history) with dynamic model fetching so model lists come from provider APIs rather than hardcoded maps.
- Migrate tests to Mocha (Microsoft-supported, runs in real VS Code/Electron).
Where we actually are (architecture review findings)
The native surface (src/ux/) + TaskManager is wired and active; extension.ts no longer registers a webview. But the migration is half-applied, leaving parallel/dead systems and a few live bugs:
Net assessment
Two strategic decisions drive the rest:
Test status on branch: npm run test:unit = 174 passing / 0 failing (Mocha).
What we are supposed to be doing
Per
CHAT_MIGRATION_PLAN.md,docs/migration/,docs/dynamic-models-*.md, andsrc/ux/README.md, the goal of theretire-webvieweffort is:@vscode/webview-ui-toolkit.vscode.chat.createChatParticipant), TreeView sidebar, QuickPick/InputBox, status bar, command buttons — instead of a custom message bus + HTML/CSP.Where we actually are (architecture review findings)
The native surface (
src/ux/) +TaskManageris wired and active;extension.tsno longer registers a webview. But the migration is half-applied, leaving parallel/dead systems and a few live bugs:buildApiHandlernever usesProviderFactory/ModelRegistry/Dynamic*Handler) — goal Added rebranding support, split ClineProvider.ts, other changes #3 not actually wiredsrc/core/webview/) still imported everywhereTheaTaskdepends on retiredTheaProvidershape via no-op shim; chat dropspartial(no streaming)Net assessment
Two strategic decisions drive the rest:
buildApiHandler, or delete it. Today ~40 files of parallel provider/registry/webview infra exist that the running product never calls.TheaTaskfromTheaProvider, then delete the webview layer.Test status on branch:
npm run test:unit= 174 passing / 0 failing (Mocha).