Use resolveProjectDirectory() in KiloToolWindowFactory instead of
project.basePath directly, so split-mode frontends get the real
backend directory for workspace/session RPC calls.
Move raw SSE payloads, prompt bodies, and response bodies in
KiloBackendChatManager from INFO to DEBUG to avoid persisting
conversation content and potential secrets in normal IDE logs.
* fix(cli): continue queued follow-up prompts
* test(cli): stabilize local model persistence test
* fix(cli): preserve queued prompt order
* fix(cli): persist queued prompts before processing
* chore(cli): clarify prompt queue settling
* fix(cli): preserve queued prompt history order
* fix(cli): clear queue state on release and test abort
Update provider/model mapping to use new Provider/Model types with nested
capabilities. Add FixGeneratedApiTask fix for anyOf union wrappers (e.g.
boolean | object) that the generator can't flatten, replacing them with
JsonElement. Relocate run configs into the plugin package and temporarily
disable detekt complexity rules.
The version job ran `bunx changeset version` to consume .changeset/*.md
files and update CHANGELOG.md, but the publish job (which commits and
pushes) ran on a separate runner with a fresh checkout — discarding all
changelog changes. This caused CHANGELOG.md to stay stuck at 7.2.1
despite 9 subsequent releases.
Move changeset consumption into publish.ts so it runs on the same runner
that commits. Extract release notes from the updated changelog and pass
them to `gh release edit` so GitHub releases also get correct notes.
Introduce a "Take Heap Snapshot" command in the VS Code Command Palette
that triggers the bundled CLI process to write a V8 heap snapshot to the
log directory. This includes:
- New server route POST /kilocode/heap/snapshot in opencode
- HeapSnapshot module using node:v8 writeHeapSnapshot
- VS Code command registration and client-side fetch logic
- Generated SDK types and client methods for the new endpoint
The .gitignore generated in .kilo/ config directories was missing
pnpm-lock.yaml and yarn.lock patterns, causing these lockfiles to
appear as untracked files in users' projects.
Move test files to match the production source structure:
- app/: KiloAppState, KiloBackendAppService, SessionManager, Connection
- cli/: KiloCliDataParser, HttpClients, serialization tests
- workspace/: KiloBackendWorkspace
Extract 36 hardcoded strings to KiloBundle.properties: session status
messages, error fallbacks, status panel labels/sections/counts, prompt
placeholder and button tooltips. Tests updated to use bundle lookups.
- Move KiloAppService, KiloSessionService, KiloWorkspaceService,
Workspace from client/client.workspace to client.app package
- Rename ChatModel to SessionState for clarity
- Update all imports across actions, chat, tests
- Add Workspace data class and app-level KiloWorkspaceService that
manages workspaces keyed by directory with shared state flows
- Delete KiloProjectService entirely; tool window factory creates
workspace directly from project.basePath
- Rename directory() to resolveProjectDirectory() in RPC API for clarity
- SessionModel and SessionUi accept Workspace instead of project service
- KiloSessionService drops directory property; callers pass dir explicitly
- Rename welcome to status in SessionUi card layout
Refactor services (KiloSessionService, KiloAppService, KiloProjectService)
to accept RPC API via internal constructor for testability. Production
constructor passes null and resolves via durable{}.
26 tests across 10 focused test classes verify session creation, message
list updates, turn lifecycle, status computation, config selection,
workspace/app state watching, history loading, view switching, and
listener lifecycle. Every test asserts RPC calls are off-EDT and
listener callbacks are on-EDT.
Add detailed UI DSL v2 reference to JetBrains plugin AGENTS.md covering basics,
row layout, components catalog, labels, comments, groups, gaps, reactive state,
property binding, validation, and tips — derived from the official IntelliJ
UI DSL Showcase. Mark UI DSL v2 as the preferred approach for building UI.
- Resolve provider/modelId format mismatch in picker item lookup so
model selection persists across WorkspaceReady events
- Guard PartUpdated status updates behind busy flag so late-arriving
events after TurnClose don't re-show the status spinner
- SessionModel accepts optional session ID; lazily creates session on
first prompt with event subscription before send (fixes race condition)
- KiloSessionService drops active session state; all chat ops take
explicit session ID and directory parameters
- Fix KiloCliDataParser.parseError to handle CLI error format with
name/data.message fields instead of type/message
- Make KiloToolWindowFactory DumbAware so tool window is available
during indexing