Show unsupported workspace directories (Dev Container / WSL / invalid
virtual path) through the standard in-session connection banner instead
of a stuck "Loading…" state. The banner includes the workspace path and
two clear, localized options: reopen in the container/WSL via JetBrains
Gateway, or open from the local filesystem. Expanded error details now
fit the full text, capped to the available transcript height.
Remove the dev-only kilo.dev.forceUnsupportedWorkspace override used to
reproduce the state during development.
Addresses PR review: repairs the broken sentence in the SKILL.md Bun Path
Hint section and replaces the dead 'command -v bun' lookup (not a Bun $
shell builtin) with native Bun.which.
IDE-launched Gradle runs (e.g. Run IDE Split Mode) can have a stripped
PATH where 'bun' isn't resolvable, so :backend:generateOpenApiSpec and
:backend:buildRepoCli failed with 'A problem occurred starting process
command bun' in repo-CLI (unpinned) mode.
The jetbrains-cli-pin skill's unpin/regen commands now write an
ignored, worktree-local Bun path hint (.gradle/kilo-cli-pin.properties)
that backend/build.gradle.kts resolves and passes as an absolute path
to the affected tasks. pin removes the hint since pinned mode doesn't
depend on local Bun.
Add a skill that pins the JetBrains plugin to the latest released CLI,
unpins to the local repo CLI, or fresh-regenerates the local CLI. Every
command first cleans all leftover CLI binaries and build artifacts in the
current worktree so each run starts from a fresh, artifact-free state.
Reuses the release-jetbrains set-pin/pin-common helpers for validated
version bumps and cross-links the skill from the JetBrains AGENTS.md.
- Revert golden rule #8 from kebab-case back to camelCase, aligning
with the decision in PR #12713 which renames all plugin icons to
camelCase.
- Update workflow step 6 to mention the icons/views/ subfolder for
in-view chat/session icons, fixing the contradiction with lines 26/45.
- Change golden rule #8 from camelCase to kebab-case to match the
actual convention used by all 47+ icons in the plugin
- Acknowledge the icons/views/ subfolder in the roles intro and
placement section
Remove duplicated sizing, dark variant, and palette guidance from
packages/kilo-jetbrains/AGENTS.md that conflicted with the skill
(e.g. 13×13 classic vs the correct 16×16 legacy tool-window size).
AGENTS.md now explicitly defers to the skill for all SVG authoring
details and retains only Kotlin/runtime integration guidance.
CI:
- Render the config console's active overlay target from its new object
shape instead of passing it to JSX.
- Make the config overlay `expected` revision optional in the schema,
writer, and handler so clients without a binding write unconditionally
instead of receiving a 400, and add the missing PUT /indexing/consent
exerciser scenario. Regenerate the SDK for the schema change.
- The multi-project Storybook story called useLanguage() outside its
provider and rendered nothing; it now uses the story translator.
- Scope indexing test select locators by row title, since the tab gained a
project selector that shifted positional lookups.
Review findings:
- Gate worktree creation, promotion, and multi-version creation on the
target project's state: waitForStateReady only tracked the active
project, so those handlers could mutate a background project's state
before it loaded.
- Re-check trust and enablement for every project-stamped message instead
of resolving contexts through the unchecked map lookup.
- Register projects through resolveProjectRoot so a folder inside a linked
worktree cannot duplicate an existing project, and fix that helper to
issue valid rev-parse commands.
- Validate the persisted activeTarget shape before applying it.
- Stop throwing from workspace/session directory resolution: it runs
eagerly per webview message, where a throw dropped the message.
- Evict superseded config bindings per scope and directory.
- Guard the multi-project rename against the blur that Escape triggers.
- Unregister routes when disabling secondary projects.
- Replace the section message substring test with an explicit type set.
- Match an open session tab in the project search's current item and scope
selection acks by project id.
- Filter untrusted projects out of indexing consent, and restore config
scope switching plus project-scoped indexing writes that the consent
rework had removed.
- Round-trip the sessions-collapsed mutation so multi-project bodies, which
render purely from pushed state, reflect the toggle.
Add an experimental multi-project mode to the Agent Manager sidebar behind
kilo-code.new.experimental.multiProject (default off). A persistent project
registry catalogs additional git repositories across restarts, while the
workspace repository stays the pinned default project.
Extension:
- Immutable per-project contexts own all repository-bound services (state,
worktrees, setup scripts, stale tracking, pollers) with generation-based
invalidation and fail-closed trust checks.
- ProjectContexts manage activation, expansion, and fast switching; session
routes resolve directories exactly per project via a shared route service.
- pushProjectSessions caches each project's session list and re-posts it on
fresh skips; session.created/updated/deleted SSE events upsert into the
owning project's cache so externally created sessions appear immediately.
- Selection restore persists the active target per project and falls back to
the local context silently when the remembered target is gone.
- Worktree lifecycle handlers extracted into provider-lifecycle.ts with an
explicit deps object instead of ambient project scope.
- initializeState and onRequestState always refresh sessions: with zero
managed sessions the listing never ran and the sidebar skeletons forever.
- Log instead of dropping silently when a state-gated message is not ready.
Webview:
- ProjectList accordion with per-project sidebar body, search, actions, and
default-branch dialog; selecting a project header restores its target.
- Local session tabs and terminal contexts are bucketed per project so open
tabs never leak across projects sharing the LOCAL context.
- The active project's session list overlays the live session store so new
sessions show without waiting for a backend re-list.
- SectionHeader requires a DragDropProvider ancestor; the multi-project body
now provides one (its absence crashed the whole webview render).
- SidebarBody and TabBar extracted out of AgentManagerApp (3215 to 2748
lines); AgentManagerProvider down to 1887 with caps lowered accordingly.
Also includes the config write revision bindings and per-project indexing
consent groundwork that rode along on this branch.