Skip to content

feat(jetbrains): reload core settings - #14666

Merged
kirillk merged 3 commits into
mainfrom
polished-harvest
Sep 30, 2026
Merged

kirillk merged 3 commits into
mainfrom
polished-harvest

Conversation

@kirillk

@kirillk kirillk commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

What Problem This Solves

JetBrains users could edit Kilo configuration files but had no direct way to ask Core to reload project config, skills, agents, commands, and MCP prompts from disk. Applying those changes required leaving the current workflow or restarting Core. Restart and Reinstall also immediately cancelled active sessions without first warning the user.

Why This Change Was Made

The JetBrains client now calls Core's existing workspace-scoped instance.reload endpoint instead of restarting the Core process. This preserves the endpoint's project isolation and active-session safety behavior while exposing the same reload workflow from the places users already manage a session. Destructive lifecycle actions remain available for recovery, but now require explicit confirmation before cancelling active sessions. No issue is linked; this change was requested directly for the JetBrains client.

Changes:

  • Add /reload as a client-side slash command for the active workspace.
  • Add a dedicated Reload Core Settings IntelliJ action to the prompt menu, session context menu, and tool window Core group.
  • Separate reload from the destructive Restart and Reinstall menu actions.
  • Report active-session reload conflicts separately from general Core failures.
  • Warn and require confirmation before Restart or Reinstall cancels active sessions.
  • Translate every new reload and lifecycle-warning string across all 19 language bundles.
  • Add a minor changeset for @kilocode/kilo-jetbrains.

User Impact

JetBrains users can reload Core settings without restarting Core, either by entering /reload or choosing Reload Core Settings from session and tool window menus. Reload remains blocked when a session is actively running in the project, with a clear warning instead of silently failing. Restart and Reinstall now explain that active sessions will be cancelled and let the user back out safely.

Screenshots / Video

Slash Command

JetBrains prompt completion for the reload slash command

Session Menu

Reload Core Settings in the JetBrains session menu

Evidence

  • ./gradlew :backend:test --tests ai.kilocode.backend.rpc.KiloWorkspaceRpcApiImplTest :frontend:test --tests ai.kilocode.client.app.KiloWorkspaceServiceTest --tests ai.kilocode.client.actions.KiloRecoveryActionsTest --tests ai.kilocode.client.actions.SessionContextMenuActionsTest: passed; verified endpoint routing, HTTP 409 handling, action workspace selection, menu order, and /reload execution.
  • ./gradlew :frontend:test --tests ai.kilocode.client.actions.KiloRecoveryActionsTest: passed; verified both declining and accepting Restart and Reinstall warnings.
  • ./gradlew :frontend:test --tests ai.kilocode.client.plugin.KiloBundleLocaleTest: passed; verified all seven new keys are present and nonblank in all 19 language bundles.
  • ./gradlew typecheck: passed for the JetBrains package.
  • ./gradlew test: passed the full JetBrains test suite.
  • bun turbo typecheck "--filter=!@kilocode/kilo-jetbrains" and bun turbo typecheck "--filter=@kilocode/kilo-jetbrains": passed in the push hook.

Dependency

None.

@kilo-code-bot

kilo-code-bot Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Reviewed the incremental commit ce91d05 ("feat(jetbrains): warn before core lifecycle actions"). RestartKiloAction and ReinstallKiloAction now gate their fire-and-forget calls behind a shared confirmCoreLifecycle helper that shows a warning via Messages.showYesNoDialog (yes = the action label, no = Cancel, warning icon) and returns early when declined. The argument order matches the platform signature, @RequiresEdt is accurate for action handlers, both button-text bundle keys (action.Kilo.Restart.cli.text, action.Kilo.Reinstall.cli.text) already exist, and the confirmed paths reach restartAsync()/reinstallAsync() unchanged. The two new keys are added to the base bundle and all 18 locale bundles with no duplicate key definitions; the changeset now describes the added warning. The new tests invoke the real actions through TestDialogManager (TestDialog.DEFAULT restored in tearDown) covering the decline and accept paths, and the locale test asserts all seven keys are present and non-blank in every bundle. No resource or lifecycle leaks and no new issues.

Files Reviewed (24 files)
  • .changeset/jetbrains-reload-core-settings.md
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/actions/ReinstallKiloAction.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/actions/RestartKiloAction.kt
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_ar.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_bs.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_da.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_de.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_es.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_fr.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_ja.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_ko.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_nl.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_no.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_pl.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_pt_BR.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_ru.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_th.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_tr.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_uk.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_zh_CN.properties
  • packages/kilo-jetbrains/frontend/src/main/resources/messages/KiloBundle_zh_TW.properties
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/actions/KiloRecoveryActionsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/plugin/KiloBundleLocaleTest.kt
Previous Review Summaries (2 snapshots, latest commit cc88eba)

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

Previous review (commit cc88eba)

Status: No Issues Found | Recommendation: Merge

Reviewed the incremental change since the last review: a <separator/> was added between Kilo.ReloadCoreSettings and Kilo.Restart in the Kilo.CliGroup popup (kilo.jetbrains.frontend.xml:233) and the corresponding menu-order test was updated to assert the separator sits between those two references. The new test's indexOf targets are unambiguous (<reference ref="Kilo.Restart"/> occurs only in the Core group before line 234), and substring(reload, restart) is guarded by the preceding reload < restart assertion. No new issues.

Files Reviewed (16 files)
  • .changeset/jetbrains-reload-core-settings.md
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/rpc/KiloWorkspaceRpcApiImpl.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/rpc/KiloWorkspaceRpcApiImplTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/testing/MockCliServer.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/actions/ReloadCoreSettingsAction.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/agentManager/worktree/NewWorktreeDialog.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/app/KiloWorkspaceService.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/prompt/SlashAction.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/actions/KiloRecoveryActionsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/actions/SessionContextMenuActionsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/app/KiloWorkspaceServiceTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/testing/FakeWorkspaceRpcApi.kt
  • packages/kilo-jetbrains/shared/src/main/kotlin/ai/kilocode/rpc/KiloWorkspaceRpcApi.kt

Previous review (commit 205e34a)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (16 files)
  • .changeset/jetbrains-reload-core-settings.md
  • packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/rpc/KiloWorkspaceRpcApiImpl.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/rpc/KiloWorkspaceRpcApiImplTest.kt
  • packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/testing/MockCliServer.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/actions/ReloadCoreSettingsAction.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/agentManager/worktree/NewWorktreeDialog.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/app/KiloWorkspaceService.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt
  • packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/ui/prompt/SlashAction.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/actions/KiloRecoveryActionsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/actions/SessionContextMenuActionsTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/app/KiloWorkspaceServiceTest.kt
  • packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/testing/FakeWorkspaceRpcApi.kt
  • packages/kilo-jetbrains/shared/src/main/kotlin/ai/kilocode/rpc/KiloWorkspaceRpcApi.kt

Reviewed the new reloadCoreSettings RPC path end to end: the backend maps Core's 409 (ConflictError -> hasActiveSession) to false, the frontend maps false to BUSY and unexpected failures to FAILED, and the /reload slash command plus the Kilo.ReloadCoreSettings action wire those results to user-facing warnings. Verified against the server contract in packages/opencode/src/kilocode/server/httpapi/handlers/instance-reload.ts and .../groups/instance-reload.ts (200 true / 409 conflict), and that a successful reload reaches the UI because KiloBackendWorkspace reloads on the server.instance.disposed SSE event emitted by InstanceStore.reload. No resource or lifecycle leaks introduced; the let/naming/kilocode_change/marker conventions are respected for this Kilo-owned package.


Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

@kirillk
kirillk merged commit 6cec957 into main Sep 30, 2026
26 checks passed
@kirillk
kirillk deleted the polished-harvest branch September 30, 2026 16:23
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.

2 participants