Commit Graph
24951 Commits
Author SHA1 Message Date
marius-kilocode a5df5bc8e4 fix(vscode): prevent selector popover clipping in new worktree dialog
The New Worktree dialog renders model, reasoning-variant, and mode pickers
inline (portal=false) so clicks aren't swallowed by the modal overlay. The
CSS overflow escape hatch that lets an open popover break out of the dialog's
scroll containers keyed only on model-selector-popover, so the variant and
mode dropdowns added later were clipped by .am-nv-dialog-content and the
prompt container.

Generalize the :has() rules to any popover-content inside the dialog. Popover
content unmounts on close, so the override only applies while a dropdown is open.

Add a visual-regression story (NewWorktreeDialog with the variant dropdown
open) that reproduces the clipping without the fix and covers all inline
pickers going forward.
2026-07-07 14:20:30 +02:00
Mark IJbema 08f0bf6457 Merge pull request #11886 from Kilo-Org/mark/config-file-substitution-trust
fix(cli): block file/env references in untrusted project config
2026-07-07 13:37:17 +02:00
Christiaan Arnoldus 4e6616d735 Merge pull request #12000 from Kilo-Org/fix/routed-free-model-name
fix(vscode): show routed model name for auto-routed free sessions
2026-07-07 12:46:56 +02:00
kiloconnect[bot] dfce4059f3 chore: add changeset for routed free-model name fix 2026-07-07 10:04:17 +00:00
kiloconnect[bot] a1670270f1 fix(vscode): keep routed free-model name in usage panel 2026-07-07 10:03:56 +00:00
75b994330f docs: add deprecation notice to App Builder page (#11997)
Co-authored-by: eshurakov <54751+eshurakov@users.noreply.github.com>
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
2026-07-07 10:57:43 +02:00
Evgeny Shurakov 40790d8139 fix(cli): show remote badge in prompt status (#11976) 2026-07-07 09:32:11 +02:00
Catriel Müller 08f2e96a62 Merge pull request #11428 from drye/feat/cli-vim-mode-prompt
feat(cli): add vim modal editing to the prompt input
2026-07-06 16:41:36 -03:00
Catriel Müller 9ce665d3ee Merge remote-tracking branch 'origin/main' into feat/cli-vim-mode-prompt 2026-07-06 16:03:20 -03:00
Catriel Müller ea0f5a044f Merge pull request #11223 from maphew/fix/cli-cloud-fork-session-import
fix(cli): import cloud sessions before validation
2026-07-06 14:44:53 -03:00
Kirill Kalishev 65ead5a892 Merge pull request #11971 from Kilo-Org/jetbrains/release/v7.0.1
release(jetbrains): v7.0.1
2026-07-06 12:19:37 -04:00
kilo-maintainer[bot] 11dd8abdf9 chore: update nix node_modules hashes 2026-07-06 16:10:34 +00:00
Kirill Kalishev 2bf41a8b13 docs(jetbrains): edit changelog for v7.0.1 2026-07-06 12:10:07 -04:00
Kirill Kalishev 556623c034 docs(jetbrains): edit changelog for v7.0.1 2026-07-06 12:07:31 -04:00
kilo-maintainer[bot] f8252028f6 release(jetbrains): v7.0.1 2026-07-06 16:01:51 +00:00
Johnny Eric Amancio b976b5a013 feat(cli): opt-in project memory (#11921)
* feat(memory): opt-in project memory — capture, recall, CLI + TUI integration

Add project memory: the standalone @kilocode/kilo-memory effect layer plus the
opencode CLI/server/TUI integration. Memory is disabled by default, so it is a
no-op until enabled (no behavior change when off).

Capture (turn-close consolidation): per-op parse salvage, secret redaction that
skips the offending op instead of aborting the batch, supersede-only auto-updates
(never model-driven deletes), correction-aware echo handling, non-LLM fallback
digests on interrupted/error turns, a shared interval throttle with idle-flush.

Recall + injection: keyword tokenizer with camelCase/compound splitting, light
stemming, and an English-first stopword filter (Unicode-aware; non-English falls
back to plain token-overlap), a live relevance floor, a budget-reserved startup
index, a session-digest catalog, and per-session prompt-cache pinning of the
injected memory block.

Surfaces: kilo_memory_save / kilo_memory_recall tools, the memory HTTP API
(contract schemas live in the package), and a status-focused TUI sidebar showing
auto-save, loaded context, and active recall, plus the /memory dialog.

* fix(memory): address PR review feedback

- C1: bump @kilocode/kilo-memory in the changeset
- C2: redact secrets before they hit the audit log (skip + salvage paths);
  redact before truncating in salvageTyped so a secret straddling the
  500-char cap can't leak an unmatched fragment; opText -> salvageText
- C3: de-abbreviate savedOperations, "changes" wording, ops.ts -> operations.ts
- C4: log.warn on the remaining silent-catch fallbacks (turn diff, memory
  context injection, tool-visibility check)
- C5: relocate memory storage from ~/.kilo to Global.Path.data, delete the
  now-dead needsDependencyInstall guard, add /memory status (root path) and
  /memory edit ($VISUAL/$EDITOR + auto-rebuild)
- C6: replace the hardcoded English stopword list with corpus-derived
  ubiquitous-term filtering (df across the user's own entries) and the
  English suffix stemmer with suffix-tolerant term matching, so recall
  noise-filtering works in any language
- C8: delete the CORRECTION_INTENT English regex; echo turns now run typed
  capture (digest stays echo-gated), bounded by the interval throttle, with
  the typed prompt as the language-agnostic content filter
- C9: exclude generated paths (dist/build/coverage/*.gen.*/*.map/snapshots)
  from the durable-diff churn fallback so generated churn can't burn a
  consolidation call
- C11: fix duplicated assert in httpapi-memory test; assert the error body
- kilo-code-bot batch: clause-boundary regex fix, byte-safe catalog
  truncation, max-length guards on remember/correct/forget payloads (text,
  query, key, sessionID), trim consistency in reconcile, param-shadowing
  rename, missing doc entry for kilo_memory_recall, dead-code removal,
  dialog UI fixes, memoryEnabledCache eviction bound, dedicated Configure
  schema, recall permission renderer, covered-session pointer cap, redact
  chat transcript before the consolidation model call, split configProtected
  metadata from disableAlways so memory-save prompts don't show config-file
  copy, drop unused MemoryService.layer provide from tool registry
- redact colon-separated low-entropy secrets too (password: hunterx),
  accepting the prose false-positive tradeoff (secret: enabled) in favor of
  not missing a real secret
- rename lastConsolidatedAt -> lastTypedConsolidationAt to make its narrow
  scope (typed-consolidation throttle clock) explicit; regen openapi/SDK
- drop now-dead home/config fields from MemoryPaths.Host after the data-dir
  relocation; add Process.splitCommand for quoted $EDITOR/$VISUAL paths with
  spaces, used by /memory edit and the pre-existing Editor.open utility

* refactor(memory): shared client helpers, capture hardening, /memory UX rework

- extract client-side derivations into kilo-memory so both frontends share
  one implementation: MemoryDecisions.summarize (decision-log summary),
  MemoryAutosaveStatus.summarize (autosave-status semantics), and
  MemoryMarkerMeta (marker wire contract encode/decode)
- match exact-key upserts via the canonical stored id (slugged key,
  normalized section) so a re-emitted spaced/uppercase key updates the
  entry instead of falling to fuzzy dedupe
- salvageTyped throws on valid JSON without an operations array so the
  caller's fallback path records a parse error instead of a silent
  zero-op success
- rename memory tool metadata files -> sources (stripPartMetadata rewrites
  tool-part metadata.files assuming apply_patch records, mangling string[])
- read state instead of status for tool enabled checks; dedupe TUI helpers
  (errorMessage, shared route(), Locale.number, relativeTime)
- /memory UX: bare /memory opens a help modal driven by a structured
  command catalog in kilo-memory; /memory on|off become the canonical
  toggle verbs (enable/disable kept as quiet aliases); /memory status opens
  a clean overview dialog (root path, autosave, startup context, source
  counts, index size) instead of a toast; /memory show is the single full
  audit view (inspect removed)
jetbrains/v7.0.1
2026-07-06 17:45:49 +02:00
Kirill Kalishev 71b352ab61 Merge pull request #11970 from Kilo-Org/jetbrains/release/v7.0.1-rc.15
release(jetbrains): v7.0.1-rc.15
2026-07-06 11:21:02 -04:00
Kirill Kalishevandkilo-code-bot[bot] d24b8e700d Update packages/kilo-jetbrains/CHANGELOG.md
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
2026-07-06 11:08:18 -04:00
Kirill Kalishev b9d00e42a9 docs(jetbrains): edit changelog for v7.0.1-rc.15 2026-07-06 11:02:20 -04:00
kilo-maintainer[bot] d4eab7e3bb release(jetbrains): v7.0.1-rc.15 2026-07-06 14:54:57 +00:00
Kirill Kalishev 3673ac41b1 Merge pull request #11932 from Kilo-Org/massive-fontina
fix(jetbrains): polish transcript and settings interactions
jetbrains/v7.0.1-rc.15
2026-07-06 10:49:32 -04:00
kirillk 0ae9519682 Merge remote-tracking branch 'origin/main' into massive-fontina 2026-07-06 09:52:17 -04:00
kirillk 04600b63c2 chore: remove plan file from pr 2026-07-06 08:57:04 -04:00
Evgeny Shurakov cd49ae633c CLI - Remote model catalog and WebSocket reconnection fixes (#11835)
* feat(cli): remote model catalog and WebSocket reconnection fixes

* fix(cli): preserve provider default semantics under truncation and deflake reconnect test

* fix(cli): omit provider default when per-provider truncation removes preferred model

* refactor(cli): simplify remote model catalog by removing size limits

* refactor(cli): strip remote model catalog to sanitize-and-shape only

* fix(cli): cap remote model catalog at MAX_MODELS

* fix(cli): preserve model metadata and enforce remote catalog limits

* fix(cli): omit currentModel and defaultModel when truncation drops them

* fix(cli): keep stable connection identity across reconnects

* feat(cli): include protocol version in remote session heartbeat
2026-07-06 14:48:30 +02:00
kilo-maintainer[bot] a857f569e8 chore: update nix node_modules hashes 2026-07-06 12:43:49 +00:00
Christiaan Arnoldus f2639e9d23 Merge pull request #11968 from Kilo-Org/fix/bedrock-empty-output
fix(cli): restore Amazon Bedrock output by pinning @smithy/util-buffer-from
2026-07-06 14:29:05 +02:00
Christiaan Arnoldus 75715088b1 fix(cli): restore Amazon Bedrock output by pinning @smithy/util-buffer-from
@smithy/util-buffer-from >=4.3.0 became a re-export shim of @smithy/core/serde.
Under the browser build condition, @smithy/core's serde exposes fromArrayBuffer
as Symbol.for("node-only"), so @smithy/util-utf8's toUtf8 throws inside the
Bedrock event-stream decoder, whose catch { break } silently ends the stream.
Every Bedrock request completed with empty output on HTTP 200.

Pin to 4.2.2 (last self-contained 4.x) so fromArrayBuffer stays a real function.
2026-07-06 14:02:57 +02:00
Mark IJbema 8dad071203 fix(cli): surface scope-blocked {file:} even under missing:empty; cover guard
Agent prompts substitute with missing:"empty", which swallowed every file read error — including a deliberate out-of-scope scope block — so an escaping {file:} was silently emptied and never warned, contradicting the agent.ts catch narrative. Tag security blocks as ConfigVariableGuard.BlockedError (out-of-scope, fd swap, /proc) and, in substitute(), always reject those regardless of missing:"empty"; genuine missing/IO errors are still emptied. Now an out-of-scope {file:} in an agent prompt rejects, hits the agent catch, and records a warning. Adds guard/substitute tests for the block-under-missing:empty, missing-is-emptied, and BlockedError classification cases.
2026-07-06 13:37:39 +02:00
Mark IJbema cc418f4437 Merge pull request #11966 from Kilo-Org/mark/notification-version-headers
feat(gateway): send version headers on notification requests
2026-07-06 13:33:34 +02:00
Vishal Kumar Singh 835500b4eb docs: clarify local Ollama setup (#11652) 2026-07-06 13:04:58 +02:00
Mark IJbema 1d69a2b442 feat(gateway): send version headers on notification requests
Wire fetchKilocodeNotifications up to the shared header helpers
(getDefaultHeaders + buildKiloHeaders) so notification requests carry
User-Agent, X-KILOCODE-EDITORNAME, and org headers instead of only
Authorization/Content-Type. Also set KILOCODE_VERSION to the extension
version when spawning kilo serve so the extension version flows into the
User-Agent, letting the backend discriminate on extension version.
2026-07-06 12:33:26 +02:00
Mark IJbema e06feff06c docs(cli): clarify {file:} rejection message is about a missing project scope
The message said file references are 'not allowed in project config', but in-root file references ARE allowed when a fileScope is supplied (the normal project path). This branch only fires when no scope was provided, so reword it to reflect that specific case and update the comment.
2026-07-06 12:02:05 +02:00
Mark IJbema 10e519d830 fix(cli): don't let a project agent substitution error break config loading
ConfigAgent.load() awaited ConfigVariable.substitute without a catch, so a throw (untrusted {env:} or out-of-scope {file:} in a project agent prompt) propagated through Effect.promise and failed the whole config load. Catch it, record a warning, and skip only the offending agent — mirroring the existing frontmatter-parse handling and the project config-file loops. Scope stays JSON-config-loading; the markdown substitution path (KilocodeMarkdown.substitute) remains the separate follow-up in #11889.
2026-07-06 11:58:18 +02:00
Mark IJbema c7f0ccf102 fix(cli): close non-Linux scope-check TOCTOU by verifying fd matches validated path
The read is fd-pinned, but on non-Linux the scope check realpath'd the caller's path independently of the fd, so an attacker could swap the path between open and check to validate an in-root inode while the fd pointed elsewhere. fstat the open fd and compare dev/ino against the resolved path; reject if they differ, so the inode we validate is the inode we read.
2026-07-06 10:40:59 +02:00
Mark IJbema faa2bae104 docs: clarify project {file:} rejects paths that escape the project root
In-root absolute paths are intentionally allowed; only references that leave the root (absolute paths outside it, ../ traversal, symlinks) are rejected. Fix the docs wording and add a regression test for the in-root absolute case.
2026-07-06 10:03:15 +02:00
Mark IJbema 47a40fe7f7 fix(cli): tolerate unsafe project config in settings overlay
KilocodeConfigOverlay.load() propagated InvalidError from untrusted {env:}/out-of-scope {file:} substitutions through Promise.all, breaking the whole /config/overlay instead of skipping the offending file. Skip failed files (log + return {}) so the settings overlay still shows remaining config, matching the main config loader's degrade-gracefully behavior.
2026-07-06 10:02:29 +02:00
Mark IJbema e9f6b02084 docs: move trusted-config callout below the provider options table
The warning callout was inserted between table rows, breaking the timeout/chunkTimeout rows' rendering. Move it after the full table.
2026-07-06 09:52:05 +02:00
Mark IJbema 1d49502b77 fix(cli): read config file references through the pinned fd to close TOCTOU race
On non-Linux, read() validated the target via realpath but re-read by path, letting an attacker swap the file between the check and the read. Read through the already-open FileHandle (file.readFile) on every platform so the validated inode is the one read. Drops the now-unused load callback.
2026-07-06 09:51:26 +02:00
kirillk 5a60c9c0fb test(jetbrains): cover prompt focus outline 2026-07-05 23:22:15 -04:00
kirillk 819cef526d feat(jetbrains): outline focused prompt input 2026-07-05 21:26:45 -04:00
kirillk dd0a6323fb feat(jetbrains): highlight focused prompt input 2026-07-05 21:12:21 -04:00
kirillk e79f4a5582 Merge remote-tracking branch 'origin/main' into massive-fontina 2026-07-05 20:54:59 -04:00
kirillk bf41013402 fix(jetbrains): simplify prompt toolbar suppression 2026-07-05 20:46:37 -04:00
kirillk 6e388ea23b fix(jetbrains): hide prompt floating toolbar 2026-07-05 13:13:01 -04:00
kirillk 6138b102fb fix(jetbrains): address transcript review feedback 2026-07-05 12:09:33 -04:00
kirillk dafe38fbd0 fix(jetbrains): stabilize task tool body indent 2026-07-04 15:59:50 -04:00
kirillk 8361d246ee fix(jetbrains): render compaction marker without prompt chrome 2026-07-04 15:36:43 -04:00
kirillk 59baa02340 fix(jetbrains): use transcript font for prompt text 2026-07-04 14:03:44 -04:00
kirillk d14412943b fix(jetbrains): tighten task tool coverage 2026-07-04 13:39:42 -04:00
kirillk 30407a3e12 fix(jetbrains): improve prompt picker interactions 2026-07-04 12:07:00 -04:00