Commit Graph
12992 Commits
Author SHA1 Message Date
Josh Lambert 25b2c5ae7e feat: redesign Auto-Approve settings to support granular permission rules
Redesign the Auto-Approve tab in VS Code extension settings to display
and edit granular pattern-based permission rules (object syntax).

- Add PermissionRule type to support nested objects (e.g. { bash: { "*": "deny", "git *": "allow" } })
- Granular tools (external_directory, bash, read, edit) show wildcard row, exceptions list with per-pattern dropdowns, delete buttons, and inline add input
- Simple tools show single Ask/Allow/Deny dropdown
- Group todoread/todowrite and websearch/codesearch into combined rows
- Remove "Set all permissions" card, add description subtitle
- Truncate long patterns with ellipsis and title tooltip
- Two-phase config update for exception deletion to work with patchJsonc
2026-03-09 20:42:25 -03:00
Igor Šćekić 1a2c2cc825 Merge pull request #6792 from Kilo-Org/fix/auto-scroll-improvements 2026-03-10 00:32:19 +01:00
Catriel Müller 707f8626d5 Merge pull request #6803 from Kilo-Org/catrielmuller/premissions-fixs
fix(vscode): resolve permission prompt hangs in VS Code extension
2026-03-09 20:30:41 -03:00
Christiaan Arnoldus df18b91313 Merge pull request #6821 from Kilo-Org/docs/add-bedrock-byok-provider
docs: add AWS Bedrock as a supported BYOK provider
2026-03-09 21:51:41 +01:00
kiloconnect[bot] 593b6f97c1 docs: add AWS Bedrock as a supported BYOK provider
Add Bedrock to the list of supported BYOK providers and document
the AWS-specific credential format (JSON with accessKeyId,
secretAccessKey, and region) and required IAM permissions.
2026-03-09 19:52:12 +00:00
Igor Šćekić e8d0b12df2 Merge pull request #6259 from shssoichiro/fix-cli-per-agent-model 2026-03-09 18:06:31 +01:00
Marius 27ab1bef61 fix: use arrow-down-to-line SVG icon for scroll-to-bottom button (#6810)
Replace plain Unicode ↓ character with the proper <Icon name="arrow-down-to-line" />
component from kilo-ui, matching the desktop app's implementation.
2026-03-09 11:53:20 -05:00
github-actions[bot] 4b4fa6e901 chore: update kilo-vscode visual regression baselines 2026-03-09 16:45:09 +00:00
Mark IJbema 568badb224 Merge pull request #6807 from Kilo-Org/mark/always-show-prompt-input
feat: always show prompt input during permission prompts
2026-03-09 17:34:23 +01:00
Mark IJbema 8072fb285b Merge pull request #6805 from Kilo-Org/mark/add-missing-translations
Add missing translations for 15 locales
2026-03-09 17:20:12 +01:00
Mark IJbema 2f66f96533 fix: hide working indicator when waiting for user input 2026-03-09 17:18:33 +01:00
Mark IJbema d1409ff257 feat: always show prompt input during permission prompts 2026-03-09 17:16:13 +01:00
Mark IJbema 5a9b855f38 Merge pull request #6804 from Kilo-Org/mark/remove-unnecessary-kilocode-change-markers
Remove unnecessary kilocode_change markers from kilocode directories
2026-03-09 17:15:11 +01:00
Mark IJbema 57fd2d1a22 Add missing translations for dialog.model.manage.provider.toggle and session.modeSwitch keys
All 15 non-English locales in packages/app/src/i18n/ were missing 5 keys:
- dialog.model.manage.provider.toggle
- session.modeSwitch.switching
- session.modeSwitch.waiting
- session.modeSwitch.notAvailable
- session.modeSwitch.fallback

Also removes stale desktop.* keys from packages/kilo-i18n/src/bs.ts that
belong in packages/desktop/src/i18n/bs.ts (where they already exist).
2026-03-09 17:14:10 +01:00
Mark IJbema 05f6611bf7 Remove unnecessary kilocode_change markers from kilocode directories 2026-03-09 17:06:31 +01:00
Josh Holmer 73c0d924ed fix(cli): save and load per-agent model selection 2026-03-09 11:51:46 -04:00
Catriel Müller 86bc9a1030 fix(vscode): add respondingPermissions to StoryProviders mock session
The mockSessionValue in StoryProviders.tsx was missing the
respondingPermissions field added in the permission hang fix.
Components now call session.respondingPermissions() so the missing
field caused a runtime error in stories, breaking the visual regression
snapshot for bash-with-permission.
2026-03-09 12:51:33 -03:00
github-actions[bot] 4f6d421461 chore: update kilo-vscode visual regression baselines 2026-03-09 15:41:57 +00:00
Catriel Müller c6950f8365 fix(vscode): resolve permission prompt hangs in VS Code extension
- Handle permission.replied SSE events: map them to permissionResolved
  messages so cascaded and server-resolved permissions clear the webview
  prompt without user action
- Remove optimistic permission removal: replace with a respondingPermissions
  Set that disables buttons while awaiting server confirmation, then the
  SSE-driven permissionResolved clears the prompt
- Notify webview on HTTP failure: handlePermissionResponse now posts
  permissionError to re-enable buttons and show a toast instead of
  silently swallowing the error
- Migrate from deprecated permission.respond to permission.reply endpoint,
  fixing a missing await bug in the legacy server handler
- Recover missed permissions on reconnect and session load: new
  fetchAndSendPendingPermissions() calls GET /permission after SSE
  reconnects and after loadMessages, so events lost during reconnection
  or while the webview was not ready are replayed
2026-03-09 12:37:42 -03:00
Igor Šćekić 6cb678a1bb fix: move auto-scroll improvements to kilo-ui to prevent upstream merge conflicts 2026-03-09 15:55:30 +01:00
Catriel Müller 6c676664f9 Merge pull request #6799 from Kilo-Org/catrielmuller/dotkilo-migration
fix: migrate default project folder from .opencode to .kilo
2026-03-09 11:43:08 -03:00
Igor Šćekić c1a0a49a1e Merge pull request #6797 from Kilo-Org/fix/file-url-click 2026-03-09 15:35:46 +01:00
Mariusandgithub-actions[bot] 1aa5e554b3 Add sidebar changes review tab in VS Code extension (#6705)
* feat(vscode): open sidebar changes in diff tab

* fix(vscode): stabilize sidebar changes review tab

* chore: update kilo-vscode visual regression baselines

* fix(vscode): harden sidebar changes tab messaging

* refactor(vscode): share review tab helpers

* fix(vscode): clear empty changes loading state

* fix(vscode): correct session state initialization

* fix(vscode): use getVSCodeAPI singleton in diff-viewer to prevent double acquireVsCodeApi call

* fix(vscode): ensure CLI connection before diff fetch and include content in diff hash

- Call connectionService.connect() in DiffViewerProvider.initialFetch() so
  the panel works even if opened before any other Kilo view
- Include full diff content in hashFileDiffs instead of just after.length
  to detect in-place edits that don't change line counts

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-09 15:30:16 +01:00
Catriel Müller 3b535cf5aa feat: migrate .opencode project folder to .kilo 2026-03-09 11:19:57 -03:00
Igor Šćekić 63f74cad77 fix: handle file:// URLs in markdown link click handler
file:// hrefs were rejected by extractFilePathFromHref (the ://
guard) and fell through to target=_blank, which does nothing in a
VS Code webview. Now they are parsed via new URL(), decoded, and
forwarded to the existing openFile handler.
2026-03-09 15:08:10 +01:00
Igor Šćekić abcc26f6dc fix: improve auto-scroll reliability during streaming
- Remove onClick handleInteraction from MessageList to stop clicks breaking auto-follow
- Always resume auto-scroll when working becomes true (re-enables on follow-up messages)
- Simplify isAuto to pure time-based gating (removes fragile position-comparison race)
- Debounce stop() in handleScroll to ignore layout-induced scroll shifts
2026-03-09 14:55:40 +01:00
Mark IJbema 3329921049 Merge pull request #6784 from Kilo-Org/mark/fix-todo-permission-prompt
feat(vscode): show todo permissions inline, add todo progress to TaskHeader
2026-03-09 14:42:10 +01:00
Mark IJbema 7af9a5f726 i18n: add translations for task.todos.progress and task.todos.allDone in all 15 languages 2026-03-09 14:39:46 +01:00
Mariusandgithub-actions[bot] c43ee0743f refactor(agent-manager): add max-lines lint rule and extract large files (#6777)
* refactor(agent-manager): add max-lines lint rule and extract large files

Add ESLint max-lines error at 3000 lines for .ts/.tsx files in the
extension. Extract NewWorktreeDialog into its own file and move review/
file-tree CSS into agent-manager-review.css to bring both violating
files under the limit.

- AgentManagerApp.tsx: 3144 -> 2536 lines
- agent-manager.css: 3159 -> 2728 lines

* fix: update arch tests to scan all CSS/TSX files after extraction

* chore: update kilo-vscode visual regression baselines

* fix: extend lint scope to cover webview-ui/ so max-lines enforces on TSX

* fix: add missing review CSS import to Storybook stories

* chore: update kilo-vscode visual regression baselines

* fix: restore BranchInfo import removed during extraction

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-09 13:25:22 +00:00
Marius f72fc4e81f refactor(agent-manager): decouple vscode imports into thin adapter files (#6782)
* refactor(agent-manager): decouple vscode imports into thin adapter files

Extract vscode dependencies from SessionTerminalManager, SetupScriptRunner,
and SetupScriptService into dedicated adapter files (terminal-host.ts,
task-runner.ts). Business logic modules now depend on injected interfaces
instead of importing vscode directly.

Add architecture tests enforcing the vscode import boundary with maxLines
caps that ratchet down over time, preventing coupling from creeping back.

* fix: update SessionTerminalManager test for renamed TerminalHost methods

* fix: avoid new Promise(async) anti-pattern in task-runner

Move the executeTask await before the Promise constructor so rejections
propagate correctly instead of hanging forever.

* Fix log output
2026-03-09 13:20:11 +00:00
github-actions[bot] ac31960457 chore: update kilo-vscode visual regression baselines 2026-03-09 13:07:43 +00:00
Mark IJbema bf52ea0737 fix(vscode): broaden todo indent selector (remove parent class requirement) 2026-03-09 14:05:49 +01:00
github-actions[bot] f13587903e chore: update kilo-vscode visual regression baselines 2026-03-09 13:01:01 +00:00
Mark IJbema c545591390 fix(vscode): align todo checkboxes with icon in header
The trigger has 8px left padding + 16px icon + 8px gap = 32px total.
Add padding-left: 32px to the todos list inside .vscode-session-turn-assistant
so checkboxes align with the title text in the BasicTool header.
2026-03-09 13:59:14 +01:00
Mark IJbema 14b6c8d5a7 feat(vscode): show todo progress in TaskHeader with expandable list
- Add a collapsible todo section below the task title in TaskHeader
- When todos exist: shows 'N/M to-dos done' (or 'N to-dos done' when all complete)
- All-done state shows in success color
- Click to expand/collapse the full todo list with checkboxes
- Completed todos are shown with strikethrough
- Uses existing kilo-ui Icon, Checkbox components and existing CSS patterns
- Adds CSS for task-header-todos component in chat.css
- Adds i18n keys task.todos.progress and task.todos.allDone
- Adds visual regression stories: TaskHeaderWithTodos and TaskHeaderWithTodosAllDone
2026-03-09 13:59:14 +01:00
Mark IJbema f5341585c4 refactor(vscode): remove HIDDEN_TOOLS alias, use UPSTREAM_SUPPRESSED_TOOLS everywhere 2026-03-09 13:59:14 +01:00
Mark IJbema b3c76a263d refactor(vscode): rename HIDDEN_TOOLS to UPSTREAM_SUPPRESSED_TOOLS and clarify why
todowrite/todoread are suppressed by the upstream message-part renderer
(it returns null for them in PART_MAPPING['tool']). There is no dedicated
'todo dock' in the VS Code extension - the upstream suppression was inherited
without a matching UI feature.

The set is now called UPSTREAM_SUPPRESSED_TOOLS with a comment explaining:
- Why these tools are suppressed by default (upstream returns null)
- When we DO render them (pending permission or completed state)
- Why ChatView uses this set (to not block the prompt for their permissions)

HIDDEN_TOOLS is kept as an alias for backward compatibility with ChatView.
2026-03-09 13:59:14 +01:00
Mark IJbema d9dfca93fc test(vscode): add visual regression stories for todo inline permissions
- TodoWriteWithPermission: shows todowrite pending permission inline
  in the chat with the todo list widget + permission buttons
- TodoWriteCompleted: shows todo list displayed in chat after
  permission is granted and todowrite completes
2026-03-09 12:51:31 +01:00
Mark IJbema fc1008aa23 fix(vscode): add spacing between todo permission description and buttons 2026-03-09 12:50:23 +01:00
Mark IJbema 078b651914 fix(vscode): improve todo permission prompt clarity
- Replace raw '*' pattern with a descriptive label for todo permissions:
  'Update the todo list' for todowrite, 'Read the todo list' for todoread
- Hide meaningless '*' patterns in inline permission prompts (they just
  mean 'all' and are confusing to users)
- Only show patterns for non-todo tools where they are meaningful
  (e.g. file paths for read/edit permissions)
2026-03-09 12:50:23 +01:00
Mark IJbema d51155559a feat(vscode): show todo permissions inline and keep prompt visible
- Show todo tool parts (todowrite/todoread) inline in the chat when
  there's a pending permission request, just like other tool permissions
- After permission is granted and the tool completes, show the todo list
  UI inline in the chat so the user can see what happened
- Keep PromptInput visible when only todo permissions are pending
  (since they're shown inline, not in the bottom dock)
- Use ToolRegistry to render todo tool parts directly, bypassing the
  upstream PART_MAPPING["tool"] which returns null for todo tools
2026-03-09 12:50:23 +01:00
kiloconnect[bot] 94160a095c fix(vscode): show todo permission prompts in bottom dock
todowrite/todoread tool parts are intentionally hidden from the chat
message stream (they have their own dedicated dock UI). However, when
these tools require permission approval, the permission prompt was
invisible because:

1. The inline permission renderer in AssistantMessage filters out hidden
   tool parts, so the attached permission prompt never renders
2. The bottom dock in ChatView only shows permissions without a tool
   context (!p.tool), but todo permissions always have tool context set

Fix by extending the bottom dock filter to also show permissions for
hidden tools, so they render in the dock instead of being swallowed.
2026-03-09 12:50:23 +01:00
Mark IJbema c724bd2866 Merge pull request #6779 from Kilo-Org/session/agent_049c38d4-d0a9-457e-bd12-09be01749596
fix: skip auto-commit of visual regression screenshots for fork PRs
2026-03-09 12:49:50 +01:00
kilo-maintainer[bot] c641957a80 chore: update nix node_modules hashes 2026-03-09 11:43:08 +00:00
Marius 9d6dca1863 feat(vscode): add knip dead code detection to agent-manager (#6773)
* feat(vscode): add knip dead code detection to agent-manager

Add knip to the kilo-vscode package to detect and prevent dead code in
the agent-manager. This includes:

- knip.json config scoped to src/agent-manager/ and webview-ui/agent-manager/
- CI pipeline step in test-vscode.yml to run knip on every PR
- Clean up unused exports: narrow interfaces/types to non-exported where
  only used locally, remove unused re-exports from FileTree.tsx and
  review-comments.ts

* expand knip scope to entire kilo-vscode package

- Widen project scope from agent-manager only to src/**/*.ts and
  webview-ui/**/*.{ts,tsx}
- Exclude vendored src/services/autocomplete/** from analysis
- Enable ignoreExportsUsedInFile for component Props patterns
- Delete 4 dead files: legacy-migration barrel/messages, settings
  barrel, webview telemetry util
- Trim barrel re-exports in cli-backend, telemetry, browser-automation
  to only what consumers actually import through the barrel
- Unexport private helpers: getNonce, joinCspDirectives,
  NEW_EXTENSION_IS_STILL_EXPERIMENTAL flag, getVSCodeAPI,
  dispatchMockProviders, errorCodes
- Narrow 5 unused exported types to non-exported
2026-03-09 12:31:20 +01:00
kiloconnect[bot] 91454991d5 fix: update fork PR error message to direct contributors to Kilo developers 2026-03-09 10:32:52 +00:00
Marius 7b15e8c738 feat: add vscode visual regression testing skill (#6775)
Add a Kilo skill that provides comprehensive instructions for writing
Storybook stories and visual regression tests for the VS Code extension
webview UI. The skill documents the Storybook + Playwright architecture,
StoryProviders API, mock data patterns, snapshot naming conventions,
CI pipeline details, and import path references.
2026-03-09 11:24:14 +01:00
kiloconnect[bot] 8dcf7407e3 fix: skip auto-commit of visual regression screenshots for fork PRs 2026-03-09 10:24:13 +00:00
Marius adf6c03b55 test: add P0 coverage for agent-manager hotspots (#6778)
Add 12 new tests covering previously untested high-risk code paths:

GitOps.workingTreeStats (6 tests):
- numstat parsing for tracked changes
- binary file handling (- entries)
- clean working tree and git failure recovery
- untracked file line counting
- 1MB file size cap enforcement

GitOps conflict handling (2 tests):
- checkApplyPatch with context mismatch
- applyPatch with conflicting changes

buildWorktreePatch security (1 test):
- pathspec filtering rejects absolute paths and .. traversal

WorktreeManager.withGitLock (3 tests):
- concurrent creates serialize without index.lock conflicts
- lock releases after error so next op proceeds
- concurrent remove + create don't conflict
2026-03-09 11:23:44 +01:00
Igor Šćekić 4ae308cc33 Merge pull request #6733 from Kilo-Org/fix/6552-title-session-id-leak 2026-03-09 11:10:48 +01:00