Commit Graph
13979 Commits
Author SHA1 Message Date
kilo-maintainer[bot] 6ed7fdb40d release: v7.0.51 v7.0.51 2026-03-19 13:20:57 +00:00
Marian Alexandru Alecu 2749147f8c Merge pull request #7306 from Kilo-Org/fix/opentui-mouse-leak
fix(cli): bump opentui to v0.1.87
2026-03-19 14:26:58 +02:00
Marius 4bdeb4b69d feat(vscode): keyboard navigation for mode/agent switcher (#7307) 2026-03-19 13:14:58 +01:00
kilo-code-bot[bot]andkiloconnect[bot] 4dd192044d feat(agent-manager): improve Compare Models discoverability with tooltip and label (#7275)
Add translated tooltip explaining the feature purpose across all 16 locales.
Replace bare icon-only pill with a labeled button and dashed border to make
the Compare Models entry point visually distinct from version count pills.

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-03-19 12:27:58 +01:00
Thomas BrugmanandMarius c776444708 feat(vscode): implement client-side slash commands (/new, /sessions, /models, etc.) (#7296)
* feat(vscode): implement client-side slash commands (/new, /sessions, /models, etc.)

Extend the VS Code extension's slash command system to support client-side
commands that execute locally in the webview without backend round-trips.

Client commands (/new, /sessions, /models, /agents, /help, /profile,
/settings) appear first in the autocomplete dropdown with an 'Actions'
group label, separated from server-side 'Commands' by a visual divider.

Commands work even when disconnected from the CLI backend since they
trigger local UI actions (navigation, picker opens) via window events.

Closes #7294

* fix: prioritize exact name matches over hint/alias matches in slash command lookup

Resolves review feedback: if a server command shares a name with a client
alias (e.g. server /continue vs client /sessions alias 'continue'), the
exact name match now wins. Also removed misleading 'works when disconnected'
comment since the textarea is disabled while disconnected.

* fix: keep textarea interactive when disconnected so client commands are reachable

Replace disabled={isDisabled()} with a CSS class + aria-disabled so the
textarea remains interactive during disconnects. The send guards already
independently block server messages/commands when not connected, and
client-side slash commands (/new, /help, /settings, etc.) now genuinely
work before the backend is ready.

* fix(vscode): address review feedback — settings in tab, hide /sessions in agent manager, add /modes alias, /compact, remove /profile

- /settings now opens in an editor tab via openSettingsPanel message
  instead of navigating inline in the sidebar
- /sessions is excluded in the agent manager (worktree) context
- /agents gains /modes alias for legacy extension users
- /compact dispatches compactSession event to summarize the session
- /profile removed per reviewer request
- Added OpenSettingsPanelRequest message type and KiloProvider handler

* Update packages/kilo-vscode/webview-ui/src/hooks/useSlashCommand.ts

Co-authored-by: Marius <marius@kilocode.ai>

* Update packages/kilo-vscode/webview-ui/src/components/chat/PromptInput.tsx

Co-authored-by: Marius <marius@kilocode.ai>

* fix(vscode): guard /compact against empty/busy sessions and missing model

Add the same availability checks as the compact button in TaskHeader:
skip if session is busy, has no messages, or has no model selected.
Prevents silent no-ops or errors after the user's input is cleared.

---------

Co-authored-by: Marius <marius@kilocode.ai>
2026-03-19 11:14:32 +00:00
Mark IJbema b1c91bcbbc Merge pull request #6225 from Kilo-Org/mark/move-dynamic-context-to-user-message
refactor: move dynamic editor context from system prompt to user message
2026-03-19 12:04:48 +01:00
Mark IJbema aee00686de fix(cli): add required id fields to ephemeral environment details part
The injected TextPart for environment details was missing id, sessionID,
and messageID fields required by the MessageV2.TextPart type.
2026-03-19 12:02:38 +01:00
Alex Alecu 723d608ef6 fix(cli): bump opentui to v0.1.87 2026-03-19 12:58:30 +02:00
Mark IJbema e3f57cfd1f Merge pull request #7264 from Kilo-Org/gt/toast/c5df4379
fix(vscode): prevent stale configLoaded from reverting optimistic settings updates
2026-03-19 11:48:59 +01:00
Mark IJbema 81c9cab4f2 remove messaghe from system prompt 2026-03-19 11:48:30 +01:00
Mark IJbema 2c5a355d78 Merge pull request #7300 from Kilo-Org/fix/high-contrast-borders
fix(vscode, ui): add high contrast theme border support
2026-03-19 10:34:39 +01:00
Mark IJbema b852ac9f66 fix(vscode): allow vscode-high-contrast body classes in CSS prefix test 2026-03-19 10:29:33 +01:00
Mark IJbema 493366a7b3 Merge pull request #7259 from Kilo-Org/mark/feat-mcp-delete-settings
feat(vscode): add MCP server delete button in Agent Behaviour settings
2026-03-19 10:27:33 +01:00
Christiaan Arnoldus 4cdb19ced8 Merge pull request #7299 from Kilo-Org/fix/mcp-tool-output-scroll
fix(vscode): restore scrolling for MCP tool output in VS Code theme
2026-03-19 10:22:53 +01:00
kiloconnect[bot] 485da288c6 fix(vscode): restore scrolling for MCP tool output in VS Code theme
The VS Code theme card styling for tool output set overflow: hidden on all
[data-component="tool-output"] elements, which overrode the upstream
scrollable behavior (overflow-y: auto) from message-part.css. This caused
MCP tool output to be clipped with no way to scroll.

Add a nested &[data-scrollable] rule that restores overflow-y: auto when the
data-scrollable attribute is present, consistent with native tool behavior.

Fixes #7284
2026-03-19 09:10:19 +00:00
kiloconnect[bot] 4adea8b821 fix(vscode, ui): add high contrast theme border support
The extension had zero high contrast theme support — --vscode-contrastBorder
was never referenced anywhere. In HC themes, interactive elements (buttons,
inputs, tabs, list items, panels) were indistinguishable from backgrounds.

- Add --border-contrast and --border-contrast-active to vscode-bridge.css
- Add body.vscode-high-contrast/body.vscode-high-contrast-light sections
  to chat.css, agent-manager.css, marketplace.css, and migration.css with
  border rules for all interactive elements
- Add --vscode-contrastBorder/contrastActiveBorder to storybook HC theme
  definitions (hc-black, hc-light)
- Update theme-decorator.tsx to set VS Code body classes (vscode-dark,
  vscode-light, vscode-high-contrast, vscode-high-contrast-light)
- Add HC Light option to extension storybook preview
2026-03-19 09:02:23 +00:00
Mark IJbema 09a0a5ba5d Merge branch 'main' into mark/feat-mcp-delete-settings 2026-03-19 09:47:57 +01:00
Imanol Maiztegui f1d7e08ff3 Save permissions without disposing instances (#7279) 2026-03-18 23:06:46 +01:00
Catriel Müller 2138780ddb OpenCode v1.2.21
OpenCode v1.2.21
2026-03-18 18:09:27 -03:00
github-actions[bot] 6f1a07b8eb chore: update visual regression baselines 2026-03-18 21:03:05 +00:00
Catriel Müller a9ffdddbd1 refactor: improve flaky visual regression test 2026-03-18 18:00:12 -03:00
github-actions[bot] 52419115c0 chore: update visual regression baselines 2026-03-18 20:14:17 +00:00
Catriel Müller 4106011dbc refactor: update bun lock 2026-03-18 17:11:50 -03:00
Catriel Müller 7edd3f6fc2 Merge branch 'main' into catrielmuller/kilo-opencode-v1.2.21 2026-03-18 17:10:56 -03:00
Catriel Müller 4d58d220f3 fix: messagepart visual regression tests // improve animations 2026-03-18 16:56:23 -03:00
Mark IJbema d55709327b fix(vscode): invalidate per-instance config cache before re-fetching after global config update
Config.updateGlobal() only resets the global config lazy cache but leaves
the per-instance merged Config.state stale. This caused config.get() to
return old values immediately after a write, making the configUpdated
message overwrite the webview's correct optimistic state.

Fix by calling global.dispose() after the config write to force Instance
disposal, so the subsequent config.get() re-merges all layers with the
fresh global config.

Also: replace configUpdateInProgress boolean with a ref-counted pending
counter to handle overlapping writes, and send configUpdated on the error
path so the webview's pendingUpdates counter always decrements.
2026-03-18 20:42:55 +01:00
Alex Gold b1bf29ebec Merge pull request #7150 from Kilo-Org/docs/kiloclaw-google-auth-setup
docs(kilo-docs): add Google Workspace integration page to KiloClaw docs
2026-03-18 15:32:56 -04:00
Alex Gold 3a82345662 Merge branch 'main' into docs/kiloclaw-google-auth-setup 2026-03-18 15:29:53 -04:00
Marius 4706eae267 chore(vscode): remove unused revert i18n keys (#7274) 2026-03-18 19:25:09 +00:00
kiloconnect[bot] 3bfa130628 docs(kilo-docs): simplify setup, clarify Gmail options, fix prompt wording
- Remove Google Cloud Console verification step from Setup section
- Add Gmail forwarding as a second option alongside delegation
- Rewrite example prompts to address KiloClaw directly (you/your)
  instead of referencing 'the KiloClaw account' in third person
2026-03-18 19:03:14 +00:00
Alex Gold 14f70afe1e Merge pull request #7126 from Kilo-Org/docs/discord-chat-platforms-missing-steps
docs(kilo-docs): add missing Discord application creation steps to chat-platforms
2026-03-18 14:56:50 -04:00
kiloconnect[bot] f355c70858 docs(kilo-docs): update Google Workspace examples to reflect dedicated KiloClaw account
Reframe examples, prompts, and usage scenarios around KiloClaw's
own dedicated Google account rather than implying access to the user's
personal account. Add a sharing/delegation table showing how users
grant KiloClaw access to their personal data, and update example
prompts throughout to reference the dedicated account.
2026-03-18 18:53:13 +00:00
Thomas BrugmanandMarius c7cc1f9448 feat(vscode): add slash command support to chat input (#7263)
* feat(vscode): add slash command support to chat input

Add autocomplete dropdown for slash commands (like /compact, /init,
/local-review) triggered by typing / at the start of the input.
Commands are fetched from the CLI backend and matched on submit
to route through session.command() instead of session.prompt().

Closes #6949

* fix(vscode): address review feedback for slash commands

- Forward attached files in sendCommand handler (parse message.files
  with zod and pass as parts to session.command)
- Refresh command list after skill removal (call fetchAndSendCommands
  alongside fetchAndSendSkills in removeSkillViaCli)
- Fix multiline slash command regex (use \S+ instead of [^ ]+ so
  newlines don't become part of the command name)
- Handle cloud-session previews in sendCommand (fall back to
  sendMessage which routes through importAndSend)

* fix(vscode): include review comments in slash command args and remove redundant cast

- Incorporate pending review comments into slash command arguments
  so they are not silently discarded when sending e.g. /init with
  code review annotations pending
- Remove unnecessary type assertion in useSlashCommand; the
  discriminated union is already narrowed by the type guard

* fix(vscode): address remaining review feedback for slash commands

- Include files in sendMessageFailed responses from handleSendCommand
- Route cloud preview slash commands through session.command() after import
- Call fetchAndSendSkills() on successful skill removal to refresh webview

* refactor(vscode): extract addOptimistic helper in session context

Deduplicate optimistic message creation logic shared by sendMessage
and sendCommand into a single addOptimistic helper.

* refactor(vscode): extract resolveSession helper in KiloProvider

Deduplicate session-creation boilerplate shared by handleSendMessage
and handleSendCommand into a single resolveSession helper.

* fix(vscode): preserve real error messages from resolveSession failures

Move !this.client check back to explicit early return so
resolveSession() errors propagate to the catch block with
getErrorMessage() instead of being swallowed as a disconnect.

---------

Co-authored-by: Marius <marius@kilocode.ai>
2026-03-18 17:46:44 +00:00
Joshua Lambert a86d7cb493 Merge pull request #7268 from Kilo-Org/docs/local-backend-env-vars
docs: document environment variables for local backend testing
2026-03-18 13:34:41 -04:00
Josh Lambert 3c48907904 docs: document environment variables for local backend testing 2026-03-18 13:25:41 -04:00
Catriel Müller aa36359685 Merge pull request #7266 from Kilo-Org/catrielmuller/support-win32-arm64
feat: add Windows ARM64 build support for CLI and VS Code extension
2026-03-18 14:23:29 -03:00
Catriel Müller 4863c31e39 refactor: remove markers on vscode ext 2026-03-18 14:18:08 -03:00
Catriel Müller 232f5a3680 refactor: update bun lock 2026-03-18 14:13:21 -03:00
Catriel Müller 3034667f50 feat: add Windows ARM64 build support for CLI and VS Code extension
- Add win32/arm64 target to packages/opencode/script/build.ts
- Add win32-arm64 target to packages/kilo-vscode/script/build.ts and publish.ts
- Add @parcel/watcher-win32-arm64@2.5.1 optional dev dependency to packages/opencode/package.json
- Update RELEASING.md to document win32-arm64 CLI and VSIX targets
2026-03-18 14:10:03 -03:00
Mark IJbema 3481a16b64 fix(vscode): prevent stale configLoaded from reverting optimistic settings updates
Track in-flight updateConfig calls with a pendingUpdates counter in config.tsx
so that configLoaded messages arriving during a pending write are discarded.
Add a configUpdateInProgress flag in KiloProvider to skip fetchAndSendConfig
while handleUpdateConfig is executing, providing belt-and-suspenders protection
against the SSE-triggered reload racing with the async config write.
2026-03-18 16:52:39 +00:00
Imanol Maiztegui 469d01a3a4 Formatting (#7262) 2026-03-18 17:51:32 +01:00
Imanol Maizteguiandgithub-actions[bot] a84b8fac51 Improved Permission descriptions (#7260)
* feat(kilo-vscode): Add better permission descriptions on non-bash tools

* feat(kilo-vscode): Improved permission title

* feat(kilo-vscode): Improved permission descriptions - i18n

* feat(kilo-vscode): Descriptive rules

* test: Unit tests and Visual regression tests

* chore: update kilo-vscode visual regression baselines

* fix: Unified utils files

* fix(kilo-vscode: Added missing i18n keys

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-18 16:40:42 +00:00
Mark IJbema 783d374ebc i18n(vscode): add MCP server removal translations for all locales 2026-03-18 17:38:11 +01:00
Marius 92f6648405 fix(agent-manager): avoid full diff rebuild on annotation changes (#7258)
* fix(agent-manager): avoid full diff rebuild on annotation changes

* fix: use diff.summarized for comment preservation, add test
2026-03-18 17:21:25 +01:00
Mark IJbema 692b8d3134 fix(vscode): use global scope for dispose when MCP removed from global
When an MCP exists in both project and global scope, both are removed.
Use global scope for disposeCliInstance so the global config cache is
also invalidated (global dispose is a superset of project dispose).
2026-03-18 17:21:04 +01:00
Marian Alexandru Alecu 48504430f5 Merge pull request #7252 from Kilo-Org/fix/cli-paste-summary-thresholds
feat(cli): delay paste summary
2026-03-18 18:15:31 +02:00
Mark IJbema e032f2924f feat(vscode): add delete button for MCP servers in Agent Behaviour settings
Add the ability to remove MCP servers directly from the Agent Behaviour
settings tab, matching the existing pattern for custom mode removal.

- Add delete icon button on each MCP entry with confirmation dialog
- Add removeMcp message type and session context method
- Add handleRemoveMcp in KiloProvider that uses the marketplace
  installer's remove logic (tries project scope, then global)
- Add i18n strings for the removal confirmation dialog
2026-03-18 16:59:40 +01:00
Mark IJbema c9ad9236d0 Merge pull request #7249 from Kilo-Org/mark/fix-mcp-marketplace-settings-refresh
fix(vscode): MCP marketplace installs not appearing in Agent Behaviour settings
2026-03-18 16:55:36 +01:00
Mark IJbema a55cef0f29 Merge pull request #7234 from Kilo-Org/session/agent_ea5f9d31-e14a-4957-b651-657dbb21aa2e
fix(vscode): persist notification dismissals so they don't reappear
2026-03-18 16:22:07 +01:00
Mark IJbema 9a8f1359f3 fix(vscode): use global.config.update for global marketplace changes
For global-scope marketplace installs/removes, the extension was using
global.dispose to reset the CLI's config cache. However, older CLI
versions (pre-6d6e285bb) lack the Config.global.reset() call in the
dispose handler, so the lazy-cached global config was never invalidated.

Fix: use global.config.update with an empty config object to trigger
Config.updateGlobal(), which always calls global.reset(). An empty
merge is a no-op for the file content but properly resets the cache.
This works on both old and new CLI binaries.
2026-03-18 16:20:44 +01:00