Skip to content

Add JetBrains provider settings management - #11221

Merged
kirillk merged 27 commits into
mainfrom
tidy-antlion
Jun 17, 2026
Merged

Add JetBrains provider settings management#11221
kirillk merged 27 commits into
mainfrom
tidy-antlion

Conversation

@kirillk

@kirillk kirillk commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Add a full provider-management experience to the JetBrains plugin and align provider metadata across JetBrains and VS Code.

Demo

Providers filtering

Screen Shot 2026-06-16 at 10 21 21 PM

Providers OAuth

Screen Shot 2026-06-16 at 10 21 52 PM

Provider connected

Screen Shot 2026-06-16 at 10 22 36 PM

Add Custom Provider

Screen Shot 2026-06-16 at 10 23 14 PM

Provider prefix if not Kilo Gateway

Screen Shot 2026-06-16 at 10 23 59 PM

Features

  • Add a JetBrains Providers settings page with searchable provider catalog sections, stable row actions, loading/error states, and settings overlay integration.
  • Support connecting/configuring providers from JetBrains settings, including API-key provider configuration and OAuth-based provider login.
  • Show cancellable provider OAuth progress in JetBrains settings and prefer the headless OAuth flow when available.
  • Support enabling/disabling configured providers from the JetBrains provider list.
  • Support disconnecting providers from JetBrains settings.
  • Keep the JetBrains provider toolbar and auth/progress overlay fixed while provider settings content scrolls.
  • Gate JetBrains settings content on CLI readiness so provider/model/profile panels do not render against an unavailable backend.
  • Render provider descriptions and provider icons in JetBrains using shared metadata instead of fallback source/model-count text.
  • Share Kilo provider metadata through the CLI/server contract so JetBrains and VS Code can present provider names, notes, and icons consistently.
  • Update VS Code provider settings to use the shared provider catalog/icon metadata path.
  • Show provider names in the JetBrains collapsed model picker button for non-Kilo Gateway models, while keeping Kilo Gateway models unprefixed.

Refactorings

  • Add a JetBrains provider settings RPC boundary with shared DTOs, frontend service, backend RPC implementation, and backend provider settings manager.
  • Add a CLI data parser for JetBrains provider/model/settings payloads and cover it with backend tests.
  • Extract reusable JetBrains provider list row building, rendering, catalog metadata, and fake provider RPC test support.
  • Move reusable JetBrains device OAuth/QR UI out of profile-only code so provider settings can use the same flow.
  • Add reusable JetBrains settings overlay/readiness components for settings pages.
  • Extend generated JetBrains OpenAPI handling and regenerate SDK/OpenAPI provider types for the new provider metadata fields.
  • Add shared provider metadata helpers under packages/opencode/src/kilocode/provider/metadata.ts and wire Kilo-specific metadata through the shared provider route with kilocode_change annotations where needed.
  • Add shared UI/style tokens and provider icon assets needed by the new JetBrains settings UI.
  • Add i18n strings and changesets for the user-facing provider settings and model picker changes.

Tests And Verification

  • ./gradlew :frontend:test --tests 'ai.kilocode.client.settings.providers.ProvidersSettingsUiTest' from packages/kilo-jetbrains.
  • ./gradlew :backend:test --tests 'ai.kilocode.backend.cli.KiloCliDataParserTest' from packages/kilo-jetbrains.
  • ./gradlew frontend:test --tests ai.kilocode.client.session.ui.model.ModelPickerTest from packages/kilo-jetbrains.
  • bun run typecheck from packages/kilo-jetbrains.
  • bun run typecheck from packages/opencode.
  • bun run script/check-opencode-annotations.ts from the repo root.
  • git diff --check.
  • Push hook previously ran bun turbo typecheck successfully.

Reviewer Notes

  1. From packages/kilo-jetbrains, build the dev CLI with bun run build --prepare-cli.
  2. Launch the JetBrains sandbox with ./gradlew runIde -Pkilo.dev.storage.isolated=true.
  3. Open Kilo settings and select Providers.
  4. Confirm provider rows are grouped/searchable and show fixed-size top-aligned icons with shared descriptions.
  5. Verify a provider can be connected or configured, enabled/disabled when configured, and disconnected from row actions.
  6. Confirm Kilo Gateway uses the Kilo icon and shared provider note.
  7. Confirm non-Kilo model picker buttons show labels like OpenAI / GPT-5.5, while Kilo Gateway models remain unprefixed.

Checklist

  • Tests/verification described
  • Changesets added for user-facing changes
  • Shared opencode changes annotated where required
  • I personally reviewed the diff and can explain the changes, including any AI-assisted work.

@kirillk kirillk changed the title Add JetBrains provider settings catalog Add JetBrains provider settings management Jun 15, 2026
@ZoranPavlovic

Copy link
Copy Markdown

@kirillk - Will this support or solve these items? If so - super stoked/excited!

#7189

@kirillk
kirillk marked this pull request as ready for review June 16, 2026 22:34
@kirillk

kirillk commented Jun 16, 2026

Copy link
Copy Markdown
Contributor Author

@kirillk - Will this support or solve these items? If so - super stoked/excited!

#7189

yes

@kilo-code-bot

kilo-code-bot Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (279 files)

Incremental changes (since 2e056c9, HEAD: 00b7959)

  • .github/workflows/test-jetbrains.yml (new - reusable JetBrains test workflow)
  • .github/workflows/containers.yml (branch rename: dev → main)
  • .github/workflows/test.yml (extracted JetBrains into reusable workflow)
  • script/check-workflows.ts (added test-jetbrains.yml to allowlist)
  • 15 .changeset/*.md files (release notes for all features/fixes in this batch)
  • Multiple sst-env.d.ts files removed across packages (cleanup)

Core CLI (packages/opencode/):

  • src/kilocode/indexing-worker-client.ts — Shared worker channel with multi-host support, per-key routing
  • src/kilocode/indexing-worker.ts — Multi-manager: AsyncLocalStorage + per-key queues replaces singleton
  • src/kilocode/indexing-worker-protocol.ts — Added key to all request/event types
  • src/kilocode/indexing.ts — Worktree baseline directory support (replaces worktree-disable); readypromise in search()
  • src/kilocode/provider/codex-refresh.tsFlock.withLock for concurrent process guard; AbortController timeout
  • src/kilocode/cli/cmd/tui/terminal-title.ts (new) — Terminal title with status indicators (unicode/emoji)
  • src/kilocode/cli/cmd/tui/title-icon.ts (new) — Title icon Schema + defaults
  • src/kilocode/cli/cmd/tui/app.tsxgetTerminalTitle handles all route types: home, session, plugin, kiloclaw
  • src/kilocode/cli/cmd/tui/context/tui-config.tsx — Defaults title_icon to "none"
  • src/kilocode/tool/registry.ts — Indexing config check to shortcut semantic tool availability
  • src/kilocode/server/httpapi/groups/kilo-gateway.ts — New authStatus endpoint
  • src/kilocode/server/httpapi/groups/config-console.ts — Exposed title_icon in TUI config shape
  • src/kilocode/server/httpapi/handlers/kilo-gateway.tsauthStatus handler
  • src/cli/cmd/tui/app.tsx — Refactored terminal title to delegate all logic to KiloApp.getTerminalTitle
  • src/cli/cmd/tui/config/tui-schema.ts — Added title_icon field (kilocode_change)
  • src/plugin/codex.ts — User-Agent header + AbortSignal support (kilocode_change)
  • src/plugin/loader.ts — Skip Atomic Chat plugin install (kilocode_change)
  • src/session/llm.ts — Uses USER_AGENT constant instead of inline opencode string (kilocode_change)
  • src/tool/registry.ts — Passes indexing flag into KiloToolRegistry.build (kilocode_change)

VS Code Extension (packages/kilo-vscode/):

  • src/diff/shared/image.ts (new) — Image MIME detection, base64 encoding, stream reading with size cap
  • src/diff/shared/path.ts (new) — resolveInside path safety helper
  • src/diff/sources/git-status.ts — Image-aware stamping, resolveInside moved out, added showBlobBytes, blobOid, diskStamp
  • src/diff/sources/staged.ts — Image diff support with loadImage for staged changes
  • src/diff/sources/unstaged.ts — Image diff + untracked file verification via ls-files --others
  • src/diff/sources/session.ts — SVG image diff + diff caching with fingerprint
  • src/diff/types.ts — Added DiffImage, DiffImageSide, DiffImageError
  • src/agent-manager/local-diff.ts — Image materialization, resolveInside for path safety, symlink handling
  • src/agent-manager/types.ts — Added kind and image to WorktreeDiffEntry
  • src/review-utils.ts — Uses vscode.open command for image preview support; optional line parameter
  • src/provider-actions.tsauthStatus call for Kilo auth; removed Kilo from provider auth states
  • src/speech-to-text/models.ts — Whisper Large V3 Turbo promoted to default (moved to top)
  • src/extension.ts — New /kilocode/switch URI handler with agent parameter; search command
  • webview-ui/ — IME enter guard, image diff components, model/agent switch links, speech-to-text refactor, custom model picker keep-open, experimental tab cleanup, 20 i18n locale updates

Tests (packages/opencode/test/):

  • test/kilocode/codex-auth-refresh.test.ts — Extended with refresh lock and timeout tests
  • test/kilocode/codex-refresh-user-agent.test.ts (new) — User-Agent header test
  • test/kilocode/indexing-startup.test.ts — Updated for baseline directory
  • test/kilocode/indexing-worker.test.ts — Updated for multi-manager
  • test/kilocode/indexing-worktree.test.ts — Worktree baseline tests
  • test/kilocode/terminal-title.test.ts (new) — Terminal title indicators
  • test/kilocode/tool-registry-indexing.test.ts — Indexing config flag tests
  • test/kilocode/tui-terminal-title-reactivity.test.ts (new) — Reactivity test
  • test/kilocode/server/httpapi-public.test.ts — authStatus endpoint test
  • test/session/llm.test.ts — USER_AGENT header test
  • packages/kilo-vscode/tests/unit/provider-catalog.test.ts — Updated for auth states

Other:

  • packages/sdk/js/src/v2/gen/sdk.gen.ts, types.gen.ts — Generated SDK for new endpoints
  • packages/storybook/sst-env.d.ts — Removed (cleanup)
  • packages/ui/package.json — Removed sst-env dependency
  • 20 i18n locale files — Translation additions for new features

Previously reviewed (unchanged from original review)

  • packages/kilo-jetbrains/ — No changes in incremental diff (3 existing comments remain active)
  • packages/core/src/models.ts
  • packages/kilo-vscode/webview-ui/src/components/settings/provider-catalog.ts
  • packages/kilo-vscode/src/shared/provider-model.ts
  • packages/opencode/src/kilocode/provider/metadata.ts
  • packages/opencode/src/kilocode/config/default-plugins.ts
  • packages/opencode/test/session/prompt.test.ts
  • script/upstream/opencode-changesets.ts + test

Incremental Review Notes

No new issues found. The 3 existing inline comments from the previous review (F1, F4, F5 — JetBrains provider settings, OAuth timeout, dark-theme icons) remain active against the original code paths and were not touched by incremental commits.

Key architectural changes reviewed:

  • Indexing multi-host refactor — Shared Worker channel replaces per-directory worker spawns. Events/progress are correctly routed via per-key identifiers. AsyncLocalStorage ensures console output carries the right key in the worker.
  • Codex refresh locksFlock.withLock prevents concurrent kilo process race on refresh tokens. AbortController + 30s timeout prevents hung refresh calls.
  • Worktree indexing — Previously disabled entirely; now shares the main checkout's index via baselineDirectory with delta-only reindexing on worktree-changed files.
  • Terminal title — Fully isolated in Kilo-specific code; base app.tsx delegates all logic to KiloApp.getTerminalTitle.
  • Image diffsvscode.open command replaces openTextDocument+showTextDocument to support image preview. Path safety via resolveInside. Image data capped at 5MB with base64 encoding.
Previous Review Summaries (7 snapshots, latest commit 2e056c9)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 2e056c9)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (128 files)

Incremental changes (last commit: 2e056c9)

  • packages/kilo-vscode/tests/unit/provider-catalog.test.ts (formatting only)

Previously reviewed (unchanged, 127 files)

  • .changeset/fix-jetbrains-provider-settings.md
  • .changeset/jetbrains-model-provider-label.md
  • .changeset/jetbrains-provider-disconnect.md
  • .changeset/jetbrains-provider-headless-oauth.md
  • .changeset/jetbrains-provider-oauth-cancel.md
  • .changeset/neat-jetbrains-provider-list.md
  • .changeset/restore-popular-providers.md
  • .changeset/restore-jetbrains-popular-providers.md
  • .changeset/shared-provider-icons.md
  • packages/core/src/models.ts
  • packages/kilo-i18n/src/*.ts (20 locale files)
  • packages/kilo-jetbrains/AGENTS.md
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/app/KiloBackendAppService.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/cli/KiloCliDataParser.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/provider/KiloBackendProviderSettingsManager.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/rpc/KiloProviderRpcApiImpl.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/rpc/KiloProviderRpcApiProvider.kt
  • packages/kilo-jetbrains/backend/src/main/resources/kilo.jetbrains.backend.xml
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloCliDataParserTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/migration/LegacyMigrationHttpBackendTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/provider/KiloBackendProviderSettingsManagerTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/testing/MockCliServer.kt
  • packages/kilo-jetbrains/build-tasks/src/main/kotlin/FixGeneratedApiTask.kt
  • packages/kilo-jetbrains/frontend/build.gradle.kts
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/app/KiloProviderService.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/plugin/KiloBundle.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/PickerRow.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/model/ModelPicker.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/model/ModelPickerRenderer.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/KiloSettingsConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/auth/DeviceOAuthPanel.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/auth/QrCode.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/SettingsOverlayPanel.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/SettingsPanel.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/SettingsProgressOverlay.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/models/ModelsConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/profile/LoggedOutProfileUi.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/profile/UserProfileConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProviderCatalog.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProviderListRenderer.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProviderListRows.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersSettingsUi.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/ui/UiStyle.kt
  • packages/kilo-jetbrains/frontend/src/main/resources/kilo.jetbrains.frontend.xml
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/model/ModelPickerTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/QrCodeTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurableTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/SettingsRowsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/providers/ProvidersSettingsUiTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/testing/FakeProviderRpcApi.kt
  • packages/kilo-jetbrains/shared/src/main/kotlin/ai/kilocode/rpc/KiloProviderRpcApi.kt
  • packages/kilo-jetbrains/shared/src/main/kotlin/ai/kilocode/rpc/dto/ProviderSettingsDto.kt
  • packages/kilo-vscode/src/shared/provider-model.ts
  • packages/kilo-vscode/tests/unit/provider-catalog.test.ts
  • packages/kilo-vscode/webview-ui/src/components/settings/ProviderSelectDialog.tsx
  • packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx
  • packages/kilo-vscode/webview-ui/src/components/settings/provider-catalog.ts
  • packages/kilo-vscode/webview-ui/src/i18n/*.ts (20 locale files)
  • packages/kilo-vscode/webview-ui/src/types/messages/providers.ts
  • packages/opencode/src/kilocode/config/default-plugins.ts
  • packages/opencode/src/kilocode/provider/metadata.ts
  • packages/opencode/test/session/prompt.test.ts
  • script/upstream/opencode-changesets.ts
  • script/upstream/opencode-changesets.test.ts
  • Plus ~40 additional files from the original review

What changed since last review

The latest commit (2e056c980c) is a formatting-only change to the provider catalog test: splitting a single-line import into a multi-line import statement. No behavioral changes.

Previous review (commit 1c7d5ca)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (128 files)

Incremental changes (last commit)

  • .changeset/restore-jetbrains-popular-providers.md
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProviderCatalog.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/providers/ProvidersSettingsUiTest.kt

Previously reviewed (unchanged, 12 plan deletions + 113 files)

  • .changeset/fix-jetbrains-provider-settings.md
  • .changeset/jetbrains-model-provider-label.md
  • .changeset/jetbrains-provider-disconnect.md
  • .changeset/jetbrains-provider-headless-oauth.md
  • .changeset/jetbrains-provider-oauth-cancel.md
  • .changeset/neat-jetbrains-provider-list.md
  • .changeset/restore-popular-providers.md
  • .changeset/shared-provider-icons.md
  • packages/core/src/models.ts
  • packages/kilo-i18n/src/*.ts (20 locale files)
  • packages/kilo-jetbrains/AGENTS.md
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/app/KiloBackendAppService.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/cli/KiloCliDataParser.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/provider/KiloBackendProviderSettingsManager.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/rpc/KiloProviderRpcApiImpl.kt
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/rpc/KiloProviderRpcApiProvider.kt
  • packages/kilo-jetbrains/backend/src/main/resources/kilo.jetbrains.backend.xml
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloCliDataParserTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/migration/LegacyMigrationHttpBackendTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/provider/KiloBackendProviderSettingsManagerTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/testing/MockCliServer.kt
  • packages/kilo-jetbrains/build-tasks/src/main/kotlin/FixGeneratedApiTask.kt
  • packages/kilo-jetbrains/frontend/build.gradle.kts
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/app/KiloProviderService.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/plugin/KiloBundle.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/PickerRow.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/model/ModelPicker.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/model/ModelPickerRenderer.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/KiloSettingsConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/auth/DeviceOAuthPanel.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/auth/QrCode.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/SettingsOverlayPanel.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/SettingsPanel.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/SettingsProgressOverlay.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/models/ModelsConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/profile/LoggedOutProfileUi.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/profile/UserProfileConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProviderListRenderer.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProviderListRows.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersSettingsUi.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/ui/UiStyle.kt
  • packages/kilo-jetbrains/frontend/src/main/resources/kilo.jetbrains.frontend.xml
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/ui/model/ModelPickerTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/QrCodeTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurableTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/SettingsRowsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/testing/FakeProviderRpcApi.kt
  • packages/kilo-jetbrains/shared/src/main/kotlin/ai/kilocode/rpc/KiloProviderRpcApi.kt
  • packages/kilo-jetbrains/shared/src/main/kotlin/ai/kilocode/rpc/dto/ProviderSettingsDto.kt
  • packages/kilo-vscode/src/shared/provider-model.ts
  • packages/kilo-vscode/tests/unit/provider-catalog.test.ts
  • packages/kilo-vscode/webview-ui/src/components/settings/ProviderSelectDialog.tsx
  • packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx
  • packages/kilo-vscode/webview-ui/src/components/settings/provider-catalog.ts
  • packages/kilo-vscode/webview-ui/src/i18n/*.ts (20 locale files)
  • packages/kilo-vscode/webview-ui/src/types/messages/providers.ts
  • packages/opencode/src/kilocode/config/default-plugins.ts
  • packages/opencode/src/kilocode/provider/metadata.ts
  • packages/opencode/test/session/prompt.test.ts
  • script/upstream/opencode-changesets.ts
  • script/upstream/opencode-changesets.test.ts
  • Plus ~40 additional files from the original review

What changed since last review

The latest commit restores popular provider suggestions in JetBrains provider settings when provider metadata is unavailable, mirroring the same fix applied to VS Code:

  • isPopularProvider() now checks the fallback provider ID set for ProviderSettingsProviderDto objects, not just for metadata.priority
  • popularProviderIndex() now correctly falls back to the popularIndex map when metadata.priority is null, before defaulting to Int.MAX_VALUE
  • New unit test validates that providers without metadata are sorted using the fallback popular ID ordering

Previous review (commit 9b73bf9)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (125 files)

Incremental changes (last commit)

  • .changeset/restore-popular-providers.md
  • packages/kilo-vscode/tests/unit/provider-catalog.test.ts
  • packages/kilo-vscode/webview-ui/src/components/settings/provider-catalog.ts

Previously reviewed (unchanged, 12 plan deletions + 110 files)

  • .kilo/plans/jetbrains-provider-*.md (12 plan deletions)
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurableTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/migration/LegacyMigrationHttpBackendTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/QrCodeTest.kt
  • packages/kilo-web-ui/src/components/session-review.tsx
  • packages/opencode/src/kilocode/config/default-plugins.ts
  • packages/opencode/test/session/prompt.test.ts
  • script/upstream/opencode-changesets.ts
  • script/upstream/opencode-changesets.test.ts
  • Plus 98 additional files from the original review

What changed since last review

The fix restores popular provider suggestions in the VS Code provider settings panel when provider metadata is unavailable:

  • isPopularProvider() now checks the fallback provider ID set for Provider objects, not just for strings
  • popularProviderIndex() now correctly distinguishes between priority: 0 (explicit metadata) and undefined priority (falls through to fallback ordering)
  • New unit test covers both scenarios

Previous review (commit 6e69bac)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (122 files)

Includes 24 incrementally changed files (12 plan deletions + 12 previously) + 98 from prior review, unchanged.

Incremental changes (plan cleanup only)

  • .kilo/plans/jetbrains-provider-descriptions.md — Deleted
  • .kilo/plans/jetbrains-provider-metadata-icons.md — Deleted
  • .kilo/plans/jetbrains-provider-oauth-not-ready-race.md — Deleted
  • .kilo/plans/jetbrains-provider-oauth-progress-cancel.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-disconnect.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-filterable-list.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-fixed-toolbar-dialog-width.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-layout-progress-buttons.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-parity.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-renderer-updates.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-threading.md — Deleted
  • .kilo/plans/jetbrains-provider-settings-toolbar.md — Deleted

Previously reviewed, unchanged

  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersConfigurable.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurableTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/migration/LegacyMigrationHttpBackendTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/QrCodeTest.kt
  • packages/kilo-web-ui/src/components/session-review.tsx
  • packages/opencode/src/kilocode/config/default-plugins.ts
  • packages/opencode/test/session/prompt.test.ts
  • script/upstream/opencode-changesets.ts
  • script/upstream/opencode-changesets.test.ts

Previous review (commit 6455aa0)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (102 files)
  • .changeset/*.md (7 changesets)
  • .kilo/plans/*.md (12 plan files)
  • packages/core/src/models.ts
  • packages/kilo-i18n/src/*.ts (17 locales)
  • packages/kilo-jetbrains/**/*.kt (30+ files)
  • packages/kilo-vscode/src/shared/provider-model.ts
  • packages/kilo-vscode/webview-ui/src/components/settings/provider-catalog.ts
  • packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx
  • packages/kilo-vscode/webview-ui/src/components/settings/ProviderSelectDialog.tsx
  • packages/kilo-vscode/webview-ui/src/i18n/*.ts (21 locales)
  • packages/kilo-vscode/webview-ui/src/types/messages/providers.ts
  • packages/opencode/src/kilocode/provider/metadata.ts
  • packages/opencode/src/provider/provider.ts
  • packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts
  • packages/opencode/test/kilocode/provider-metadata.test.ts
  • packages/sdk/js/src/v2/gen/types.gen.ts
  • packages/sdk/openapi.json
  • packages/ui/src/assets/icons/provider/kilo.svg
Previous Review Summaries (2 snapshots, latest commit ccbdb34)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit ccbdb34)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (112 files)

Includes 10 incrementally changed files + 102 from prior review, unchanged.

Incremental changes (10 files)

  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurable.kt — Scroll/no-scroll shell support
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/providers/ProvidersConfigurable.kt — Opts out of scroll shell
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/base/KiloReadyConfigurableTest.kt — Test for no-scroll shell
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/migration/LegacyMigrationHttpBackendTest.kt — Improved setAuth test
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/settings/QrCodeTest.kt — Fixed import path
  • packages/kilo-web-ui/src/components/session-review.tsx — Formatting
  • packages/opencode/src/kilocode/config/default-plugins.ts — Formatting
  • packages/opencode/test/session/prompt.test.ts — Formatting
  • script/upstream/opencode-changesets.ts — Formatting
  • script/upstream/opencode-changesets.test.ts — Formatting

Previous review (commit 6455aa0)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (102 files)
  • .changeset/*.md (7 changesets)
  • .kilo/plans/*.md (12 plan files)
  • packages/core/src/models.ts - Added description field with kilocode_change
  • packages/kilo-i18n/src/*.ts (17 locales) - Renamed/reorganized provider i18n keys
  • packages/kilo-jetbrains/**/*.kt (30+ files) - JetBrains provider settings management
  • packages/kilo-vscode/src/shared/provider-model.ts - Fallback provider metadata
  • packages/kilo-vscode/webview-ui/src/components/settings/provider-catalog.ts - Dynamic metadata-based sorting
  • packages/kilo-vscode/webview-ui/src/components/settings/ProvidersTab.tsx - UI updates
  • packages/kilo-vscode/webview-ui/src/components/settings/ProviderSelectDialog.tsx - Full provider objects
  • packages/kilo-vscode/webview-ui/src/i18n/*.ts (21 locales) - Removed stale provider note keys
  • packages/kilo-vscode/webview-ui/src/types/messages/providers.ts - metadata field
  • packages/opencode/src/kilocode/provider/metadata.ts - New shared metadata helper
  • packages/opencode/src/provider/provider.ts - ProviderMetadata schema, description field
  • packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts - Wired metadata
  • packages/opencode/test/kilocode/provider-metadata.test.ts - Tests
  • packages/sdk/js/src/v2/gen/types.gen.ts - Regenerated SDK types
  • packages/sdk/openapi.json - Regenerated OpenAPI spec
  • packages/ui/src/assets/icons/provider/kilo.svg - Updated Kilo icon

Key Observations

  • Fork hygiene: All shared opencode changes (provider.ts, handler/provider.ts, models.ts) are properly annotated with kilocode_change markers. The new metadata logic lives in packages/opencode/src/kilocode/provider/metadata.ts.
  • SDK/OpenAPI: Regenerated to include description, metadata, and key fields on the Provider type.
  • Tests: provider-metadata.test.ts covers known providers, github-copilot aliases, Kilo Gateway, and unknown provider fallback.
  • Changesets: 7 changesets present covering JetBrains provider settings, shared provider icons, model picker labels, disconnect, OAuth, and list organization.

Reviewed by deepseek-v4-pro-20260423 · 1,203,786 tokens

Review guidance: REVIEW.md from base branch main

Comment thread packages/kilo-jetbrains/frontend/build.gradle.kts

@markijbema markijbema left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kirillk F1 sounds important to fix, i'll leave the other two to your best judgement

kirillk added 3 commits June 17, 2026 09:16
# Conflicts:
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/settings/profile/LoggedOutProfileUi.kt
@kirillk
kirillk enabled auto-merge June 17, 2026 15:16
@kirillk
kirillk merged commit 901ecd7 into main Jun 17, 2026
24 checks passed
@kirillk
kirillk deleted the tidy-antlion branch June 17, 2026 15:31
NJ-2020 pushed a commit to NJ-2020/kilocode that referenced this pull request Jul 4, 2026
t7tran pushed a commit to t7tran/kilocode that referenced this pull request Aug 14, 2026
t7tran pushed a commit to t7tran/kilocode that referenced this pull request Aug 14, 2026
Add JetBrains provider settings management
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants