11452 Commits

Author SHA1 Message Date
Marius 594fb4b5d6 fix(vscode): prevent UI blocking when switching sessions rapidly (#533)
* fix(vscode): prevent UI blocking when switching sessions rapidly

- Show loading spinner in MessageList during session switch instead of blank screen
- Fire handleLoadMessages without await so rapid switches aren't serialized
- Abort stale getMessages requests via AbortController when switching away
- Scope error messages with sessionID so stale 404s don't clear wrong session's loading state
- Silence expected 404s on cross-worktree getSession calls via silent HTTP option

* fix: replace empty catch block with warning log for getSession errors
2026-02-20 16:05:15 +00:00
Marius 485fa9db52 fix(agent-manager): resolve sessionsLoaded race condition with webview mount (#539)
The loading skeleton gates (worktreesLoaded && sessionsLoaded) could
permanently block the Agent Manager UI. initializeState() called
refreshSessions() which sent sessionsLoaded before the webview's
onMount handlers registered, so the signal was lost. Since sessions
were already populated, the MessageList backup effect never triggered
a retry.

Add refreshSessions() to the requestState handler which fires from
the webview's onMount, guaranteeing all message listeners are ready.
2026-02-20 16:02:29 +00:00
Catriel Müller 8dcc40f01b refactor: simplify pr 2026-02-20 12:55:17 -03:00
Halil İbrahim ceylan cb5e3cea23 refactor(ui): remove unused text part copy wrapper styles 2026-02-20 12:55:17 -03:00
Marian Alexandru Alecu 8ddabbf84a Merge branch 'dev' into fix/fix-orphan-sub-agents 2026-02-20 17:52:59 +02:00
Marius c520e4523a fix(agent-manager): add am- prefix to prompt-input CSS classes (#535)
The agent-manager-arch test enforces that all CSS class selectors in
agent-manager.css use the am- prefix. The NewWorktreeDialog was reusing
unprefixed prompt-input-* classes from the sidebar chat CSS, which
violated this rule and broke the test-vscode CI pipeline.
2026-02-20 15:48:50 +00:00
Igor Šćekić 043c37ab7e Merge pull request #531 from Kilo-Org/fix/vscode-notification-absolute-position
fix(vscode): absolutely position notification bar to not push content down
2026-02-20 16:44:09 +01:00
Marius 3b7d0721f3 fix(agent-manager): reset stale body styles when webview regains focus (#530)
Kobalte modal dropdowns set pointer-events:none and overflow:hidden on
document.body. When the user opens the setup script editor from the
settings dropdown, VS Code steals focus before the dropdown cleanup
runs, leaving the body permanently unclickable. Clear these stale
styles in the existing window focus handler so the UI recovers when
the user returns to the agent manager tab.
2026-02-20 16:40:09 +01:00
Marius 57ea8f1185 fix(agent-manager): show "not a git repository" instead of infinite loading spinner (#529)
When the Agent Manager opens in a non-git folder, initializeState()
returned early without pushing state to the webview, leaving the
skeleton loader spinning forever. Now pushes empty state with
isGitRepo: false so the UI can display a clear message and hide
worktree action buttons.
2026-02-20 16:39:06 +01:00
Alex Alecu a514530139 fix: ensure abort fires even if shutdown throws in web.ts
Wrap Instance.disposeAll() and server.stop() in try/finally so
abort.abort() always fires, preventing the process from hanging
if either call rejects.
2026-02-20 17:38:40 +02:00
Alex Alecu 7f94b83893 fix: ensure abort fires even if shutdown throws in serve.ts
Wrap Instance.disposeAll() and server.stop() in try/finally so
abort.abort() always fires, preventing the process from hanging
if either call rejects.
2026-02-20 17:38:35 +02:00
Igor Šćekić 29a6495d88 Merge pull request #521 from Kilo-Org/add-vscode-tests
add extension tests
2026-02-20 16:01:58 +01:00
Catriel Müller f2b60c81dd Merge pull request #454 from haliliceylan/fix-406
fix(ui): show horizontal scrollbar on code blocks in markdown
2026-02-20 11:46:05 -03:00
Igor Šćekić 00fa743efa fix(vscode): absolutely position notification bar to not push content down 2026-02-20 15:43:51 +01:00
Brendan O'Leary 8401ff4b70 Merge pull request #500 from Kilo-Org/florian/docs/changelog
Add quick docs for KiloClaw's changelog
2026-02-20 09:41:35 -05:00
Igor Šćekić 776402da13 fix: correct translation mismatches and add hint to message-part.tsx permission prompts
- Fix quoted button label in br, pl, ru, zht to match their allowAlways values
- Add permission-hint to both permission prompt locations in message-part.tsx
2026-02-20 15:38:47 +01:00
Igor Šćekić 43ae6b2425 feat(vscode): add session-lifetime hint to permission auto-approve dialog
Clarifies that 'Allow always' only applies for the duration of the current
session, not globally. Adds translated hint text below the permission
action buttons in all supported locales.
2026-02-20 15:27:42 +01:00
Catriel Müller c66c3118c3 Merge pull request #437 from Kilo-Org/catrielmuller/320-notifications-vscode
feat(vscode): add Kilo notifications banner to VS Code extension
2026-02-20 11:11:40 -03:00
Marius 0d1a1e1c2a feat(agent-manager): multi-version worktree creation (#525)
* tmp

* feat(agent-manager): add multi-version worktree creation with grouping and loading states

* feat(agent-manager): reuse prompt-input UI in dialog, fix model/agent persistence, polish

* fix(agent-manager): restore Tooltip import lost during merge, fixing dialog open

* fix(agent-manager): address PR review — validate msg.text, remove dead labels, run setup script for multi-version worktrees

* fix(agent-manager): address PR review round 2 — error notification, remove dead code, type extension messages, fix loading race condition
2026-02-20 15:09:14 +01:00
Marius 9fbfb7ec34 feat(agent-manager): add keyboard shortcuts dialog to settings menu (#524)
Add a Keyboard Shortcuts item to the settings gear dropdown in the
Agent Manager sidebar. Opens a kilo-ui Dialog showing all available
shortcuts grouped by category (Sidebar, Tabs, Terminal, Global) with
platform-appropriate key rendering (Mac symbols / Windows key names).

Also exposes the global agentManagerOpen keybinding so it appears in
the dialog alongside the agent-manager-scoped shortcuts.
2026-02-20 15:08:05 +01:00
Marius daee6b292e feat(agent-manager): collapsible sessions section with persisted state (#522)
Make the SESSIONS header in the Agent Manager sidebar clickable to
collapse/expand the session list. When collapsed, the worktrees section
takes the full vertical space. The collapsed state is persisted to
.kilocode/agent-manager.json so it survives VS Code restarts.
2026-02-20 15:07:04 +01:00
Marius a471173c9b test(agent-manager): improve test coverage for provider routing, concurrent saves, and terminal manager (#527)
Add 23 new tests across 4 files covering previously untested code paths:

- AgentManagerProvider: static-analysis tests for message routing, ordering
  constraints (setup before session, state before ready), cleanup on failure
- WorktreeStateManager: concurrent save serialization, corrupt/partial JSON
- WorktreeManager: branch collision retry path, safety guard for removals
- SessionTerminalManager: new test file for structural invariants (exit
  cleanup ordering, CWD fallback, context key lifecycle)
2026-02-20 15:06:22 +01:00
Marius ed34c9f010 fix(agent-manager): dismiss setup overlay on script error (#523)
The catch block in runSetupScriptForWorktree only logged to the output
channel but never posted a status error to the webview. Since the setup
overlay only dismisses on ready or error status, any exception during
script execution left the overlay covering the entire UI permanently.
2026-02-20 15:00:38 +01:00
Marius 03e6adaaec fix(vscode): route focusChatInput (Cmd+Shift+A) to active panel (#526)
* fix(vscode): route focusChatInput (Cmd+Shift+A) to active panel

The focusChatInput command was hardcoded to always target the sidebar
KiloProvider. When the Agent Manager panel was focused, the shortcut
had no effect. Now the command checks which panel is active at
invocation time and routes the message accordingly.

* fix(vscode): route addToContext setChatBoxMessage through target() too

Both setChatBoxMessage and focusInput in the addToContext handler now
use target() so the context text and focus always go to the same panel.
2026-02-20 15:00:17 +01:00
Catriel Müller 85aeb6f6a6 refactor: fix undefined 2026-02-20 10:59:57 -03:00
Catriel Müller 9fb453a9af refactor: add console to catch 2026-02-20 10:59:57 -03:00
Catriel Müller 3a0ef619ed refactor: prune old notifications 2026-02-20 10:59:57 -03:00
Catriel Müller aa52b851fd Merge branch 'dev' into catrielmuller/320-notifications-vscode 2026-02-20 10:59:50 -03:00
kilo-maintainer[bot] 6b9f23ff00 chore: generate 2026-02-20 13:54:12 +00:00
Marian Alexandru Alecu b3eab31a54 Merge pull request #459 from Kilo-Org/feat/suggestions-after-plan-end 2026-02-20 15:53:12 +02:00
Marian Alexandru Alecu 6337e0d517 Merge branch 'dev' into feat/suggestions-after-plan-end 2026-02-20 15:28:35 +02:00
Igor Šćekić 71a0187412 style(vscode): format telemetry-proxy-utils test 2026-02-20 14:23:24 +01:00
Igor Šćekić 48f4dc49ce style(vscode): format permission-queue test 2026-02-20 14:23:19 +01:00
Igor Šćekić 0c691460e9 style(vscode): format chat-autocomplete-utils test 2026-02-20 14:23:13 +01:00
Igor Šćekić 40e5cd57ac test(vscode): extract toggleAnswer, buildSubtitleText from QuestionDock and add tests 2026-02-20 14:16:28 +01:00
Igor Šćekić 582566f3ec test(vscode): extract fileName, dirName, buildHighlightSegments from PromptInput and add tests 2026-02-20 14:15:14 +01:00
Igor Šćekić 5808ab0042 test(vscode): extract providerSortKey, isFree, buildTriggerLabel from ModelSelector and add tests 2026-02-20 14:13:54 +01:00
Igor Šćekić 92f5c74f20 test(vscode): strengthen formatTime and postprocessAutocompleteSuggestion assertions 2026-02-20 13:42:59 +01:00
Igor Šćekić b1d5fa104f test(vscode): add generateQRCode tests for data URL output and error on empty input 2026-02-20 13:41:51 +01:00
Igor Šćekić 1bad5eb067 test(vscode): add code-action-provider tests for action set and command IDs 2026-02-20 13:40:57 +01:00
Igor Šćekić bc3bb46aa0 fix(vscode): log warning in parseSSEDataLine catch instead of empty catch block 2026-02-20 13:39:39 +01:00
Marius 2d2699f072 feat(vscode): add loading skeletons for Agent Manager sessions and worktrees (#518)
* feat: add loading skeletons for agent manager sessions and worktrees

Add skeleton loading states to the Agent Manager sidebar so users see
pulsing placeholders while worktrees and sessions load from the backend.

- Track worktreesLoaded/sessionsLoaded signals in the webview
- Add agentManager.requestState message so the webview can pull state
  on mount (fixes race where initial pushState fires before mount)
- Await stateReady in the extension before responding to requestState
  (ensures JSON is loaded from disk before sending data)
- Mark sessions loaded from both agentManager.state and sessionsLoaded
  message paths for consistent behavior
- Add skeleton CSS with staggered pulse animations

* fix: gate worktree list on sessionsLoaded to prevent branch name flash

The worktreeLabel() function falls back to wt.branch (e.g. kilo-...)
when session data hasn't arrived yet. Gate the worktree list render
on both worktreesLoaded and sessionsLoaded so the skeleton stays
visible until session titles are available.

- Listen for sessionsLoaded message directly instead of watching
  session.sessions() length (handles empty session lists too)
- Remove premature sessionsLoaded=true from agentManager.state handler
  since that message only carries IDs, not session titles

* fix: make skeleton shapes match actual worktree/session item layout

Worktree skeleton: single row with branch icon placeholder + text bar,
matching the .am-worktree-item padding (10px) and gap (8px).

Session skeleton: title bar + timestamp bar on the right, matching
the .am-item layout with justify-content: space-between, padding
(6px 10px), and smaller font size for the time placeholder.

* fix: add .catch() to requestState handler to prevent unhandled rejection

If initializeState() rejects, pushState() still fires with whatever
state is available (empty arrays), so skeletons resolve to the empty
state instead of loading forever.

* fix: log error in requestState catch handler per style guide
2026-02-20 12:39:21 +00:00
Igor Šćekić b1ff1d607a fix(vscode): use parseAutocompleteResponse util in HoleFiller.getFromChat 2026-02-20 13:39:03 +01:00
Igor Šćekić 7fc37ca2e3 fix(vscode): remove unused buildTextAfterMentionSelect import in useFileMention 2026-02-20 13:38:08 +01:00
Igor Šćekić 5bdcd646bc ci(vscode): add unit test script and CI workflow with path filter 2026-02-20 13:37:36 +01:00
Catriel Müller bb713c7c8c Merge branch 'dev' into fix-406 2026-02-20 09:34:46 -03:00
Marian Alexandru Alecu 2943ef75fe Merge branch 'dev' into feat/suggestions-after-plan-end 2026-02-20 14:32:45 +02:00
Alex Alecu 1378c57501 Merge branch 'feat/suggestions-after-plan-end' of github.com:Kilo-Org/kilo into feat/suggestions-after-plan-end 2026-02-20 14:31:03 +02:00
Marius cb18296f88 feat(agent-manager): add keyboard shortcut tooltips and worktree hover cards (#516)
* feat(agent-manager): add keyboard shortcut tooltips and worktree hover cards

- Add TooltipKeybind to all agent manager buttons (tabs, new session,
  close tab, terminal, new worktree, delete worktree, promote to worktree)
- Add HoverCard popovers on worktree items showing branch name, base
  branch, session count, creation date, and navigation shortcut hint
- Show directional keybind hints only for directly adjacent items
  (tabs: ⌘←/⌘→, worktrees: ⌘↑/⌘↓)
- Resolve keybindings from package.json at runtime per platform
  (Mac symbols vs Windows/Linux Ctrl+key format)
- Send resolved keybindings from extension to webview via new
  agentManager.keybindings message instead of hardcoding shortcuts
- Prevent multiple HoverCards from appearing simultaneously via
  shared hover state lifted above the For loop
- Suppress HoverCard when hovering the delete button

* refactor: extract formatKeybinding and adjacentHint into testable modules

- Extract formatKeybinding into format-keybinding.ts (pure function,
  no vscode dependency, takes mac boolean parameter)
- Extract adjacentHint into navigate.ts as a reusable pure function
  for computing directional keybind hints
- Add tests for adjacentHint (12 cases) and formatKeybinding (13 cases)
- Simplify tab/worktree direction logic in AgentManagerApp to use
  adjacentHint instead of inline index arithmetic
2026-02-20 12:26:04 +00:00
kilo-maintainer[bot] 658878a362 chore: update nix node_modules hashes 2026-02-20 12:23:45 +00:00