Commit Graph

25293 Commits

Author SHA1 Message Date
Marius 032f3bb55f fix(cli): block project markdown secret exfiltration (#12168)
* fix(cli): guard markdown substitutions by config trust

* chore(cli): annotate markdown trust test changes

* fix(cli): preserve trusted global instruction patterns
2026-07-13 12:17:59 +00:00
Christiaan Arnoldus 6639022345 Merge pull request #12149 from umi008/fix/gemma-thinking-level
fix(cli): skip thinkingLevel for Gemma models on Google provider
2026-07-13 13:20:33 +02:00
Christiaan Arnoldus a476f44731 Merge pull request #11955 from jstar0/fix/gemini-schema-required
fix: sanitize empty Gemini object requirements
2026-07-13 13:09:42 +02:00
Marius fc52751b02 Merge pull request #12167 from Kilo-Org/scandalous-watcher
fix(cli): resolve curl upgrade version from npm dist-tag instead of GitHub releases/latest
2026-07-13 13:08:25 +02:00
Marius 4618f1b092 fix(cli): preserve sanitized tool schema inputs (#12166) 2026-07-13 13:04:56 +02:00
Marius 90a49c8560 Merge pull request #10466 from Kilo-Org/decorous-lever
feat(vscode): add persistent local session tabs
2026-07-13 13:03:48 +02:00
marius-kilocode dcbb107ee2 fix(cli): use public npm registry for curl fallback, fix tests and changeset 2026-07-13 12:47:39 +02:00
marius-kilocode 988a92eae9 fix(cli): resolve curl upgrade version from npm dist-tag instead of GitHub releases/latest 2026-07-13 12:38:48 +02:00
Marius ebfa5287e3 Merge pull request #12164 from Kilo-Org/fix-kilo-serve-busy-loop-linux
fix(cli): avoid independent worktree indexing scans
2026-07-13 12:16:21 +02:00
Marius be15cf4b55 fix(cli): sanitize unsupported regex lookarounds (#12153)
* fix(gateway): sanitize unsupported regex lookarounds

* fix(cli): sanitize tool schemas across providers

* fix(cli): use direct schema type dependency
2026-07-13 10:02:42 +00:00
Marius 1d6ab47105 Merge pull request #12162 from Kilo-Org/fix-gemini-auth-key-change
fix(cli): explain Gemini API key rejections
2026-07-13 11:53:11 +02:00
Marius 65a0f6646b docs(kilo-docs): exclude Google AI Studio API keys page from link checker (#12163)
The Google AI Studio API keys page (aistudio.google.com/api-keys)
redirects to Google account sign-in for unauthenticated requests, so
lychee sees a 302 and fails the link check. The URL is correct and is
the one Google's own Gemini API key documentation links to, so exclude
it from the link checker like the already-excluded console.cloud.google.com.
2026-07-13 11:39:40 +02:00
marius-kilocode 039b73dfae fix(cli): avoid independent worktree indexing scans 2026-07-13 11:35:18 +02:00
Marius d74a04d01a Merge pull request #12092 from Kilo-Org/fix-gpt-reasoning-display
fix: restore GPT-5.6 reasoning summaries
2026-07-13 11:32:21 +02:00
marius-kilocode ed7f13711e Merge remote-tracking branch 'origin/main' into decorous-lever
# Conflicts:
#	packages/kilo-vscode/webview-ui/src/components/chat/ChatView.tsx
2026-07-13 11:29:09 +02:00
kilo-maintainer[bot] 3d6cbd8f53 chore: update kilo-vscode visual regression baselines 2026-07-13 09:24:55 +00:00
marius-kilocode 1ed710a994 fix(ui): preserve reasoning after incomplete comments 2026-07-13 11:21:38 +02:00
marius-kilocode 3ee91448ee fix(cli): explain Gemini API key rejections 2026-07-13 11:13:39 +02:00
marius-kilocode d69d502805 feat(vscode): complete local session tab workflow 2026-07-13 11:11:35 +02:00
Marius f3abace24d Merge pull request #11837 from mjnaderi/fix-kilo-gateway-login-rate-limit-message
fix(cli): show Kilo Gateway login rate limit message
2026-07-13 10:57:57 +02:00
Marius 92c4b3bfb4 Merge pull request #12151 from Kilo-Org/fix-flaky-test
test(sandbox): stabilize fragmented ClientHello coverage
2026-07-13 10:53:46 +02:00
Marius 857c496f7d chore(script): reconcile team list with active maintainers (#12154)
The hardcoded team list in packages/script/src/index.ts (Script.team)
and its duplicate in script/changelog-github.cjs had drifted apart and
both included accounts no longer in the Kilo-Org. This list is consumed
by script/raw-changelog.ts to strip 'Thanks @user!' attribution for
internal members, so stale entries let departed contributors keep
receiving credit while active ones still get thanked.

Reconcile both copies against the live org-member and repo-collaborator
rosters: remove departed humans, add missing active accounts, keep all
bot/CI accounts, and alphabetize for parity between the two files.
2026-07-13 10:52:43 +02:00
Marius 6cfa52bb7a Merge pull request #12155 from Kilo-Org/feat/vscode-chat-search-supersede
feat(vscode): add in-chat search for the current session
2026-07-13 10:44:58 +02:00
marius-kilocode 54a27c3fc3 chore(script): drop kilo-engineering from team list
It does not author commits, so stripping its attribution from release
notes is unnecessary.
2026-07-13 10:44:44 +02:00
kilo-maintainer[bot] 167c304a4d chore: update kilo-vscode visual regression baselines 2026-07-13 08:35:17 +00:00
Marius d6720d2afe Merge pull request #12028 from sylwester-liljegren/feat/vscode-file-picker-mention
feat(vscode): add file picker to @ mention dropdown
2026-07-13 10:34:00 +02:00
Sylwester Liljegren 064be73fef fix(vscode): strip markdown links from non-JSON MCP/generic tool output
McpTool's formattedOutput() only fences output when it parses as JSON;
non-JSON output (the common case for a tool returning prose or
markdown) is fed straight into the real Markdown renderer, which does
parse [label](url) into a link, hiding the URL half. toolText() was
treating all non-bash tool output the same as bash's (never stripped),
which reintroduced the exact mismatch this PR fixes for JSON-shaped
output on plain-text results. Now mirrors McpTool's own JSON.parse-or-
fallback branching: JSON output stays raw (rendered fenced, literal),
non-JSON output gets the same link stripping as text/reasoning chunks.

(cherry picked from commit e33a1a7ebc)
2026-07-13 10:30:52 +02:00
Sylwester Liljegren fb44bb8dc3 fix(vscode): don't strip markdown link syntax from tool/bash text; revert history-search cap
WARNING: stripMarkdownLinkUrls was applied to tool/bash chunks too.
Bash output is rendered via escapeHtml + syntax highlighting -- never
through Markdown -- and the generic/MCP fallback renderer wraps its
output in a fenced code block before it ever reaches Markdown. Both
show link-like `[x](y)` text literally, so stripping it searched text
that no longer matched what's on screen (e.g. a shell command that
echoes/cats a markdown link, or JSON with bracket+paren sequences).
Stripping is now only applied to text/reasoning chunks, which do go
through the real Markdown renderer.

Reverted the auto-load-history cap/opt-in from the previous commit: a
partial match count while some history remains unsearched can actively
mislead a user into the wrong conclusion, which outweighs the cost of
loading a long session's full history. Search now simply auto-loads
the entire session before reporting a final count/"No results", same
as originally requested. Revisit with a cap or lazy/incremental search
strategy in a follow-up PR if this proves too slow/expensive in
practice on very long sessions.

(cherry picked from commit f0ff4d3066)
2026-07-13 10:30:48 +02:00
Sylwester Liljegren e841aca8f9 fix(vscode): don't strip markdown link syntax from user message text
User messages render via UserMessageDisplay/HighlightedText
(message-part.tsx), which never parses markdown at all -- [label](url)
always shows literally, brackets and all, unlike assistant text/
reasoning/tool content which goes through the real Markdown renderer.
Stripping link URLs there collapsed two genuinely visible literal
occurrences into one. Stripping now only applies to non-user rows.

(cherry picked from commit 097124d7ed)
2026-07-13 10:30:44 +02:00
Sylwester Liljegren b0d19df9b9 fix(vscode): strip markdown link/image URLs before counting search matches
(cherry picked from commit 9487abb538)
2026-07-13 10:30:38 +02:00
Sylwester Liljegren f96771d302 fix(vscode): address chat search review findings from testing round
High: visible tool content (e.g. a todowrite checklist) could be
highlighted in the DOM while the counter still reported "No results"
and navigation was disabled. toolText() previously only indexed
state.title for non-bash tools, independently of what
transcript-search-highlight.ts actually scans in the DOM. Rewrote it
to recursively collect every string leaf from state.input/state.metadata
plus state.output for any tool, so matching and highlighting draw from
one canonical, much more comprehensive notion of "the tool's text"
instead of two divergent ones. read/glob/grep/list remain excluded --
kilo-ui's context-tool-results.tsx confirmed they never render raw
input/output text, even expanded, so including it there would
reintroduce the same class of mismatch for those tools.

High: search only covered the initially-loaded message page (80
messages), silently missing older history in long sessions. MessageList
now auto-requests older pages (session.loadOlderMessages()) while a
search is active with a non-empty query, looping via reactivity on
hasOlderMessages()/loadingOlderMessages() until history is exhausted.
A new searchingHistory state surfaces this to the widget, which shows
"Searching earlier messages..." and withholds a final "No results"
until the whole session has actually been searched (a live match count
still updates progressively as pages load).

Medium: whole-word matching used plain \b, which only treats ASCII
letters/digits/underscore as word characters and silently breaks for
Cyrillic, Arabic, CJK, and similar text. Replaced with Unicode-aware
boundary lookarounds using \p{L}/\p{M}/\p{N} property escapes, with the
`u` flag applied to every compiled pattern.

New chat.search.searchingHistory i18n key added across all 20 locales.

(cherry picked from commit 47d4ebd73b)
2026-07-13 10:30:34 +02:00
Sylwester Liljegren 3d28bfc50e fix(vscode): style No results as neutral text, not an error
(cherry picked from commit d78770d444)
2026-07-13 10:30:31 +02:00
Sylwester Liljegren db9da24a37 feat(vscode): show No results text in chat search when nothing matches
(cherry picked from commit 82bfb6342f)
2026-07-13 10:30:24 +02:00
Sylwester Liljegren d402df2cfe fix(vscode): jump to first match automatically while typing/toggling
(cherry picked from commit e6deb63f32)
2026-07-13 10:30:19 +02:00
Sylwester Liljegren f4f23e1e39 fix(vscode): match search text to error-row rendering for all variants
errorText() previously only matched ErrorDisplay.tsx's default card body
(unwrapped error.data.message). It now mirrors the component's full
Switch/Match classification (parseAssistantError/parseProviderAuthError,
isUnauthorizedPaidModelError/isUnauthorizedPromotionLimitError, and the
same canAuth() gate used to decide whether the provider-auth prompt or
the default card renders), so search text matches whichever variant is
actually shown: paid-model, promotion-limit, provider-auth (including
the ChatGPT oauth copy), or the default unwrapped message.

(cherry picked from commit 7e9a984f08)
2026-07-13 10:30:14 +02:00
Sylwester Liljegren 628ce6da93 fix(vscode): address CI failure and review feedback on chat search
- Wrap StoryProviders in TranscriptSearchProvider - fixes the failing
  Visual Regression check (5 stories threw because TaskHeader/MessageList
  call useTranscriptSearch() unconditionally with no fallback context).
- Reset the whole search widget when the current session changes so
  stale query/matches don't linger across a session switch.
- Search error rows via the same unwrapped error.data.message shown by
  ErrorDisplay, instead of the internal, never-rendered error.name.
- Reorder bash tool search text to description -> command -> output,
  matching the actual DOM order in shell-rolling-results.tsx, so
  occurrence numbering lines up with what gets highlighted.
- Surface invalid regular expressions explicitly instead of leaving them
  indistinguishable from "no matches".
- Track both legs of the chained highlight rAF so cleanup can cancel
  either one, preventing a stray callback from touching state after
  unmount.
- Widen Escape/Enter handling to the whole search widget, not just the
  text input.
- Add an aria-label to the search input and type the search provider's
  children as ParentComponent instead of any.

New chat.search.invalidRegex i18n key added across all 20 locales.

(cherry picked from commit 64dd8e3a2b)
2026-07-13 10:30:11 +02:00
Sylwester Liljegren 7a7c28c271 feat(vscode): add in-chat search for the current session
Add a search widget to the VS Code sidebar and editor-tab chat header.
Clicking the header search icon opens an inline, VS Code-style find bar
with match case, whole word, and regular expression options. Matches are
highlighted across the transcript via the CSS Custom Highlight API, and
next/previous controls step through each occurrence, recentering only
when a match drifts near the viewport edge.

All user-facing strings are localized across the 20 supported locales.

(cherry picked from commit 3f8b4443c3)
2026-07-13 10:30:05 +02:00
Marius f6149e8b1f fix(agent-manager): accept Windows workspace path casing (#12152)
* test(agent-manager): cover Windows local path casing

* fix(agent-manager): accept Windows workspace path casing
2026-07-13 10:29:21 +02:00
marius-kilocode d17041f7a9 chore(script): reconcile team list with active maintainers
The hardcoded team list in packages/script/src/index.ts (Script.team)
and its duplicate in script/changelog-github.cjs had drifted apart and
both included accounts no longer in the Kilo-Org. This list is consumed
by script/raw-changelog.ts to strip 'Thanks @user!' attribution for
internal members, so stale entries let departed contributors keep
receiving credit while active ones still get thanked.

Reconcile both copies against the live org-member and repo-collaborator
rosters: remove departed humans, add missing active accounts, keep all
bot/CI accounts, and alphabetize for parity between the two files.
2026-07-13 10:26:35 +02:00
Ulises Millán 77f7983995 fix(cli): resolve latest CLI release when GitHub latest points to non-CLI tag (#12148)
* fix(cli): resolve latest CLI release when install script hits non-CLI tag

The GitHub releases/latest endpoint can point to non-CLI releases
(e.g., jetbrains/v7.0.4), whose tag prefix doesn't match the existing
version regex. Query the paginated releases endpoint, pick the first
tag starting with 'v', and use that version for both display and the
download URL instead of trusting releases/latest.

Closes #12125

* fix(cli): select stable installer release

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-07-13 08:25:31 +00:00
marius-kilocode 76f6002ab7 fix(vscode): use unknown bridge for migration message casts
Direct as-casts from { type: string } to a shape with source/operationId
fail TS2352 under the extension tsconfig (tsgo). Cast through unknown first.
2026-07-13 10:24:55 +02:00
marius-kilocode 6d61b45ddd refactor(vscode): extract legacy-migration message cases out of webview switch
Move the five legacy-migration webview message cases out of the large
onDidReceiveMessage switch into an early-return handler, matching the
existing routeEarlyMessage/handleMemoryMessage pattern. The switch's
async arrow function exceeded the complexity cap of 150 after the
recent main merge; extracting these cases lowers it below the cap.
2026-07-13 10:19:29 +02:00
Marius 411125ea39 Merge branch 'main' into feat/vscode-file-picker-mention 2026-07-13 10:10:28 +02:00
Thomas Brugman bf2b33b87b fix(cli): use filePath in Gemini prompt 2026-07-13 09:24:23 +02:00
marius-kilocode 135c2c4e96 test(sandbox): stabilize fragmented ClientHello coverage 2026-07-13 08:53:26 +02:00
umi008 05dadaaaed fix(cli): skip thinkingLevel for Gemma models on Google provider
Gemma 4 models (gemma-4-31b-it, gemma-4-26b-a4b-it) don't support the
thinkingLevel parameter. When models.dev metadata reports reasoning
capability for these models, the variants function generates
thinkingConfig with thinkingLevel entries that cause 400
INVALID_ARGUMENT errors from the Google AI Studio API.

Add an early return for gemma model IDs before the thinkingLevel default
branch, matching the pattern used by grok (line 728) and other
non-reasoning models.

Closes #12063
2026-07-12 22:17:04 -06:00
kilo-maintainer[bot] 3cb82a0907 chore: update nix node_modules hashes 2026-07-12 05:54:36 +00:00
Marius b8e07791dd Merge pull request #12075 from Kilo-Org/network-domain-exceptions
feat: allow sandbox network destinations
2026-07-12 07:39:34 +02:00
King Star 9887e43fc4 test: annotate Gemini schema regressions 2026-07-11 18:12:14 +08:00
Kirill Kalishev 619b595f4b Merge pull request #12119 from Kilo-Org/jetbrains/release/v7.0.4
release(jetbrains): v7.0.4
2026-07-10 18:44:57 -04:00