feat(onboarding): Stage 0 model-setup webview panel - #439
Merged
jeonghun-jj-lee merged 1 commit intoAug 19, 2026
Conversation
- OnboardingPanel host with singleton lifecycle, CSP, brand CSS - Provider→model data map (anthropic, openai, google, bedrock) - testConnection: single-call credential validation - writeOnboardingConfig: merge-safe config writing - onOnboardingComplete event for downstream wiring (Slice 2) - Webview: welcome animation → form with progressive disclosure - esbuild target for the onboarding webview bundle - 19 unit tests covering AC1–AC9
jeonghun-jj-lee
marked this pull request as ready for review
August 19, 2026 16:53
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThe extension adds an onboarding panel and webview for selecting a provider and model, testing credentials, writing merged configuration, and signaling completion. The webview is bundled through esbuild and covered by Vitest tests. ChangesOnboarding setup
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant OnboardingWebview
participant OnboardingPanel
participant ProviderAPI
participant ConfigFile
participant CompletionListener
OnboardingWebview->>OnboardingPanel: submit connection test configuration
OnboardingPanel->>ProviderAPI: send provider-specific validation request
ProviderAPI-->>OnboardingPanel: return connection result
OnboardingPanel-->>OnboardingWebview: return test result
OnboardingWebview->>OnboardingPanel: send config-success after successful test
OnboardingPanel->>ConfigFile: merge provider, model, API key, and schema
OnboardingPanel->>CompletionListener: emit onboarding completion
Possibly related issues
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements #433 — the non-agentic model-setup webview that configures an LLM provider before chat can open.
What's included
OnboardingPanelhost (src/onboarding_panel.ts): singleton WebviewPanel with CSP, brand CSS, message routingPROVIDER_MODELS(anthropic, openai, google, amazon-bedrock) — no hard-coded conditionalstestConnection: makes exactly one LLM call to validate credentials; returns ok/error without leaking the API keywriteOnboardingConfig: merge-safe config write to~/.config/opencode/opencode.jsononOnboardingCompleteevent: downstream wiring point for Slice 2 (auto-open chat)src/onboarding_webview.ts): welcome animation (~2.5s fade-in → dissolve) then form with progressive disclosureAcceptance Criteria coverage
Tests
19 unit tests in
test/onboarding_panel.test.ts— all passing.Closes #433
Summary by CodeRabbit
New Features
Bug Fixes