Commit Graph

29513 Commits

Author SHA1 Message Date
kirillk d94f2bf1c9 fix(jetbrains): address worktree move and list review findings
Emit a move error for every failure path and roll back a worktree left by a
failed move, so the Agent Manager row cannot stay stuck on its last stage.
Fail patch capture loudly through the platform command line instead of
treating a git failure as a clean tree.

Keep the worktree session editor identity as the path alone and hand the
forked session over through a one-shot store, so a move no longer opens a
rival tab for the same worktree.

Stop clicks and drags in the empty space under a short list from acting on
the last row, carry the dragged row identity through the placeholder, let a
failed branch status surface instead of posing as healthy git, and require a
persisted session before offering Move to Worktree.

Also make three worktree RPC tests void-returning: JUnit silently skips
@Test methods that return a value, so they never ran.
2026-08-24 10:21:31 -04:00
kirillk ce5a71e5f0 fix(jetbrains): show worktree progress in agent rows 2026-08-24 09:42:30 -04:00
kirillk 32573a0a1d fix(jetbrains): show chat worktree actions only while the session is idle
New Worktree and Move to Worktree were offered mid-turn, where neither is a
sensible thing to invoke: the move aborts the session and forks it, and both
compete with a running agent. The dock's action row now withdraws while the
session is active (any busy state, including a pending permission or question),
matching the VS Code sidebar dock. A move in progress keeps the row so its
spinner and stage stay visible, and the PR row is unaffected because it is
informational rather than an action.

The dock sits outside the scroll pane, so releasing its row resizes the
transcript viewport twice per turn instead of once per session. SessionScroll
already re-pins from its viewport listener, but followTail() routed the
not-following case through followBottom(false), which bumped the generation
counter and aborted in-flight multi-pass chains on the first streamed content
growth. It now re-pins only when already following and otherwise just refreshes
the jump button, which is what onViewport wanted all along.

The connection-panel layout tests compared an absolute connection.y across a
state change, encoding an assumption that the bottom container never changes
height. They now assert the actual invariant: the banner stays one content gap
above that container.
2026-08-23 23:16:05 -04:00
kirillk 76faa3004b feat(jetbrains): add chat branch/PR dock with worktree actions
Add a branch/PR dock above the chat prompt in the JetBrains sidebar. It shows
the current branch's PR (state badge + title + changes) when one exists, and
otherwise a centered row of New Worktree / Move to Worktree actions plus a
changes badge, matching the VS Code sidebar dock.

New Worktree and Move to Worktree are registered platform actions
(Kilo.Chat.NewWorktree, Kilo.Chat.MoveToWorktree) rendered through an
ActionToolbar; each is invisible when not enabled, so the dock collapses when
there is nothing to show. New Worktree opens the Agent Manager New Worktree
dialog and switches to that tab after the dialog closes. Move to Worktree
captures uncommitted changes, creates a worktree at the source HEAD, transfers
the changes, and forks the session into it, streaming progress into the dock.

Branch/PR status uses the session's resolved directory (not the synthetic
split-mode project path) so the PR always matches the checked-out branch.
2026-08-23 18:18:58 -04:00
kirillk 31b7297dd0 fix(jetbrains): mute worktree metadata styling
Keep ActiveList titles bold, but keep descriptions muted even under selection so the secondary line does not collapse into the title foreground.

Recolor the resting worktree glyphs to the New UI secondary icon palette, which matches Label.infoForeground/context help text, and paint the running spinner in neutral icon grey instead of green so it stays bright without becoming a colored status light.
2026-08-21 17:32:30 -04:00
kirillk 64c14abc77 fix(jetbrains): use regular title weight in active lists
ActiveList titles were rendered bold for every row, which made Agent Manager, history, and settings lists read heavier than standard IDE lists and trees. Use the platform plain text style for the primary row title while keeping the explicit foreground so selected and deleting rows retain their color behavior.
2026-08-21 16:52:03 -04:00
kirillk 0879741e99 fix(jetbrains): move PR number after the worktree title
Keep the PR state badge first, but render the pull request number after the PR title so the header reads like the worktree list and avoids leading with metadata.
2026-08-21 16:14:13 -04:00
kirillk 34a7eb34a1 fix(jetbrains): align session and worktree icons
Use the Kilo running spinner anywhere the session UI showed the default platform spinner, so progress indicators match the Agent Manager running state.

Restore branch and lock glyphs as the resting Agent Manager worktree icons, add a JetBrains-styled local monitor icon for the current checkout, and remove the now-unused idle dot icon.
2026-08-21 16:05:49 -04:00
kirillk ccc6b52034 refactor(jetbrains): slide workflow selection after delete
The workflows page landed on main while selectionIndex() was being removed here, so
the merge left it calling a helper that no longer exists. Delete moves the highlight
to the row that took the slot, which is what ActiveListSelection.Slide does.
2026-08-21 14:37:26 -04:00
kirillk 4458ae6e5d Merge remote-tracking branch 'origin/main' into wandering-lantern 2026-08-21 14:32:44 -04:00
Kirill Kalishev ff74e2ea3f Merge pull request #11611 from Kilo-Org/feat/provider-usage-center
feat: add provider usage center
2026-08-21 14:29:41 -04:00
kirillk e8e4602ae4 test(jetbrains): load real icons in the worktree icon size test
The platform resolves every svg-backed icon to a 1x1 placeholder when
GraphicsEnvironment.isHeadless(), which is how CI runs but not how the tests run
locally on macOS. The test compared those placeholder widths against the
custom-painted activity icons, so it passed locally and failed CI with
expected:<1> but was:<16>.

Turn real loading on for the assertions with IconLoader.activate(), the platform's
TestOnly hook for exactly this, and restore the ambient state afterwards. Tighten
the load assertions to > 1 so the placeholder can no longer satisfy them.

Verified by forcing -Djava.awt.headless=true on the frontend test JVM: the test
fails before this change and the whole frontend suite passes after it.
2026-08-21 14:08:08 -04:00
kirillk f60e8dc841 refactor(jetbrains): route every list refresh through one selection policy
Four call sites still rebuilt their list with ActiveListSelection.Index(selectedIndex()),
a hand-rolled Slide that pinned the old slot even when the selected row survived at a
new index — McpSettingsUi.edit could therefore land on a different server whenever the
reload reordered rows. Replace them with Slide, or Key where the mutated row is known,
and delete the helper and the Index policy behind them.

Scrolling was a policy case too (PreserveNoScroll), which meant a plain refresh dragged
the viewport back to the selection on every status poll. Scroll from sync() only when
the refresh actually moved the selection, which collapses Preserve/PreserveNoScroll into
one policy and leaves the viewport alone while rows are merely re-found.

Also fold the remaining duplicates into the shared path: WorktreeSessionEditorPanel names
the shown session with Key instead of update-then-select, HistoryPanel drops its private
restore wrapper and its copy of move() (which stepped over unfiltered rows), and move()
now treats an empty selection as starting past the near end.
2026-08-21 13:42:20 -04:00
kilo-maintainer[bot] 7ce4b20d58 chore: update kilo-vscode visual regression baselines 2026-08-21 17:28:06 +00:00
kirillk a41cdd4b38 fix: sync bun.lock workspace versions after merge 2026-08-21 13:25:00 -04:00
kirillk c0a86f9a00 Merge remote-tracking branch 'origin/main' into feat/provider-usage-center 2026-08-21 13:08:42 -04:00
kirillk 092214b11c fix(jetbrains): paint the whole row body into the drag image
rowImage translated the graphics by the body's offset inside the cell before
calling wrap.paint(). paint() already maps the graphics origin to the component's
own top-left, so the offset was applied twice. On rows that do not open a section
the offset is zero and nothing looked wrong, but on a row that carries the section
header band the copy was shifted up by the band height, leaving the dragged row
sliced off at the top and the rest of the image blank.
2026-08-21 13:00:42 -04:00
kirillk 6376629912 fix(jetbrains): size the drag gap to the row body
A row that opens a section paints the section header band inside its own cell, so
capturing the drag placeholder height from getCellBounds folded that band in. The
gap then rendered a band taller than the row, and because the equal-height pass
measures the gap like any other row, every row stretched to that inflated height.

Measure the row body instead, which is also what the floating drag image paints.
2026-08-21 12:50:07 -04:00
kirillk 07d2189d31 fix(jetbrains): keep list selection stable across refreshes
ActiveList rebuilt its model with CollectionListModel.replaceAll, which fires an
intervalRemoved with an empty model. The old sync() then fell back to selecting
row 0, and that spurious selection fired onSelect, clobbering the caller's
remembered row. Dropping a dragged worktree and switching away from the Agents
tab both hit this path, so the selection jumped to the first row.

Give ActiveList one capture -> refresh -> restore path: rows expose a stable
identity, the view remembers the selected identities as a sticky anchor written
only by user intent, and restores them after every rebuild with an explicit
absent-row policy. This removes the four hand-rolled restore blocks in
AgentManagerPanel, HistoryPanel, and SettingsInlineListPanel, along with the
AgentManagerPanel.selected mirror and the settings syncing guard.
2026-08-21 12:40:52 -04:00
LCZcn96 097a922ec9 fix(vscode): align slash command selection with display order (#13188) 2026-08-21 17:50:45 +02:00
Kirill Kalishev ed150aedde Merge pull request #13275 from Kilo-Org/chore/jetbrains-cli-pin-v7.4.23
chore(jetbrains): bump CLI pin to v7.4.23
2026-08-21 09:51:34 -04:00
kirillk 59d1ec8a22 feat(jetbrains): reorder worktrees with drag and drop 2026-08-21 09:36:44 -04:00
Marius 671a73de9d Merge pull request #13306 from Kilo-Org/show-agent-changes-in-sidebar
feat(agent-manager): preview edits in side panel
2026-08-21 14:45:26 +02:00
Marius c171b12fc3 fix(vscode): use a minimum prompt input gutter (#13310)
* fix(vscode): use minimum prompt input gutter

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: kilo-maintainer[bot] <kilo-maintainer[bot]@users.noreply.github.com>
2026-08-21 13:51:49 +02:00
Marius 871b5276a4 Merge pull request #13221 from Kilo-Org/make-pty-processes-durable-across-reloads
fix(agent-manager): prevent PTYs escaping worktree cleanup
2026-08-21 13:48:26 +02:00
marius-kilocode 03396c43e4 fix(agent-manager): satisfy merged app line limit 2026-08-21 13:45:31 +02:00
marius-kilocode f94d0e4d42 Merge remote-tracking branch 'origin/main' into show-agent-changes-in-sidebar
# Conflicts:
#	packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx
2026-08-21 13:42:01 +02:00
Marius cf400ab18d Merge pull request #13309 from Kilo-Org/fix-column-prefix-model-search
fix(model-selector): match colon-prefixed names
2026-08-21 13:39:36 +02:00
Marius 04c3e2abd3 Merge pull request #13304 from Kilo-Org/fix-agent-manager-multi-project-session-loading
fix(agent-manager): scope multi-project session state
2026-08-21 13:38:51 +02:00
marius-kilocode a04b093959 fix(agent-manager): address edit preview review findings 2026-08-21 13:31:46 +02:00
marius-kilocode fd0b639613 fix(model-selector): match colon-prefixed names 2026-08-21 13:18:24 +02:00
marius-kilocode ed06021675 refactor(agent-manager): clarify PTY cleanup lifecycle names 2026-08-21 12:55:16 +02:00
marius-kilocode 35d9933eb6 fix(agent-manager): stay within app line limit 2026-08-21 12:46:07 +02:00
marius-kilocode a503e2a683 Merge remote-tracking branch 'origin/main' into show-agent-changes-in-sidebar
# Conflicts:
#	packages/kilo-ui/src/components/message-part.tsx
#	packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx
#	packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css
#	packages/kilo-vscode/webview-ui/agent-manager/side-panel-layout.ts
2026-08-21 12:43:13 +02:00
marius-kilocode 904d3e9b39 fix(agent-manager): address review feedback 2026-08-21 12:42:33 +02:00
marius-kilocode abcb6cb597 feat(agent-manager): preview edits in side panel 2026-08-21 12:38:38 +02:00
marius-kilocode 7a448d7fae Merge remote-tracking branch 'origin/main' into fix-agent-manager-multi-project-session-loading
# Conflicts:
#	packages/kilo-vscode/src/agent-manager/pr-status-bridge.ts
#	packages/kilo-vscode/tests/unit/am-pr-status-bridge.test.ts
#	packages/kilo-vscode/webview-ui/agent-manager/pr/PRPanel.tsx
2026-08-21 12:35:19 +02:00
marius-kilocode 6e55714093 fix(agent-manager): scope multi-project session state 2026-08-21 12:18:31 +02:00
Christiaan Arnoldus f958a5a56e Merge pull request #13301 from Kilo-Org/fix/max-steps-user-message
fix(cli): send max-step instruction as user message
2026-08-21 12:04:00 +02:00
Kirill Kalishev a3c591e1e7 Merge pull request #13255 from Kilo-Org/branch-pick
feat(jetbrains): open sub-agent sessions in editor tabs
2026-08-21 05:11:24 -04:00
chrarnoldus 13f16969a2 fix(llm): preserve coalescing helper types
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-08-21 08:48:25 +00:00
chrarnoldus 406c1910b1 refactor(llm): share user message coalescing
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-08-21 08:44:44 +00:00
Marius 4fd330fbe2 Merge pull request #13272 from Kilo-Org/fix-long-code-references-in-pr-comments
fix(agent-manager): stabilize PR review comments
2026-08-21 10:39:23 +02:00
chrarnoldus 705f6b7dad test(llm): expect coalesced Gemini user content
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-08-21 07:44:57 +00:00
Kirill Kalishev 5caa48b305 Merge pull request #13287 from Kilo-Org/fix/jetbrains-slash-completion-fast-typing
fix(jetbrains): keep slash completion open while typing
2026-08-21 03:42:51 -04:00
chrarnoldus 1663c27e7a fix(llm): preserve provider message alternation
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-08-21 07:41:58 +00:00
chrarnoldus 43c4491560 fix(cli): send max-step instruction as user message
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-08-21 07:30:33 +00:00
kirillk b39277a457 refactor(jetbrains): unify changes card open action; add sub-agent translations
Route ChangesCardView.Header's open-in-diff button through the shared HeaderOpenAction, matching the edit/patch and task cards, so the toolbarButton + hoverPlaceholder wiring lives in one place. Add the new sub-agent bundle keys (openSubagent, subagent.title, subagent.path) to all locale files.
2026-08-20 16:31:52 -04:00
kirillk 0161c3a4ba fix(jetbrains): refine agent manager badges 2026-08-20 16:30:58 -04:00
kirillk b743c00846 Merge remote-tracking branch 'origin/main' into branch-pick
# Conflicts:
#	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/ModifiedFilesView.kt
#	packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/tool/TaskToolView.kt
#	packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/SessionUiLayoutTest.kt
2026-08-20 16:16:30 -04:00