Commit Graph

614 Commits

Author SHA1 Message Date
kilo-maintainer[bot] 99c621ee78 release: v7.5.5 2026-08-26 18:58:18 +00:00
kilo-maintainer[bot] 2a16b871a0 release: v7.5.4 2026-08-26 17:39:00 +00:00
kilo-maintainer[bot] 89b7561c13 release: v7.5.3 2026-08-26 17:11:02 +00:00
kilo-maintainer[bot] ed3380ea49 release: v7.5.0 2026-08-26 11:03:25 +00:00
marius-kilocode c880daf764 fix(vscode): preserve chat scroll intent 2026-08-26 12:14:46 +02:00
Marius dee2a279f6 Merge pull request #13408 from Kilo-Org/fix-session-scroll-flicker
fix(vscode): eliminate streaming transcript flicker
2026-08-25 14:07:05 +02:00
Marius 1110616b54 Merge pull request #13393 from Kilo-Org/fix-background-continuation-for-parallel-subagents
fix(vscode): promote parallel subagents independently
2026-08-25 14:05:12 +02:00
marius-kilocode 9bc84d2181 fix(vscode): address transcript review feedback 2026-08-25 12:29:36 +02:00
marius-kilocode 4736250c4f fix(vscode): stabilize streaming transcript scrolling 2026-08-25 11:57:33 +02:00
marius-kilocode 4c0767c527 fix(vscode): hide subagent promotion in readonly views 2026-08-25 11:06:34 +02:00
marius-kilocode 2f7301368f feat(agent-manager): replace sessions list with a per-project history button
Move the per-project SESSIONS list out of the Agent Manager sidebar and
behind a per-project history button that opens the sessions view scoped to
that project. Each session row offers direct actions to resume it in a new
worktree or in the project's local tabs, and sessions are no longer part of
the sidebar keyboard navigation order.
2026-08-25 10:37:37 +02:00
marius-kilocode 3e2adcf370 fix(ui): expand answered questions in chat 2026-08-24 12:25:32 +02:00
kirillk c0a86f9a00 Merge remote-tracking branch 'origin/main' into feat/provider-usage-center 2026-08-21 13:08:42 -04:00
marius-kilocode a04b093959 fix(agent-manager): address edit preview review findings 2026-08-21 13:31:46 +02:00
marius-kilocode a503e2a683 Merge remote-tracking branch 'origin/main' into show-agent-changes-in-sidebar
# Conflicts:
#	packages/kilo-ui/src/components/message-part.tsx
#	packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx
#	packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css
#	packages/kilo-vscode/webview-ui/agent-manager/side-panel-layout.ts
2026-08-21 12:43:13 +02:00
marius-kilocode abcb6cb597 feat(agent-manager): preview edits in side panel 2026-08-21 12:38:38 +02:00
kilo-maintainer[bot] 67cd629f3c release: v7.4.23 2026-08-20 12:26:16 +00:00
Marius 6f87e9c22e Merge pull request #13245 from Kilo-Org/implement-markdown-file-viewer-sidebar
feat(vscode): add Agent Manager document inspector
2026-08-20 14:18:00 +02:00
marius-kilocode dc362322f0 fix(vscode): keep session scroll pinned during layout corrections 2026-08-20 13:31:01 +02:00
marius-kilocode a2de3fc0e2 Merge remote-tracking branch 'origin/main' into implement-markdown-file-viewer-sidebar
# Conflicts:
#	packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx
#	packages/kilo-vscode/webview-ui/diff-viewer/FullScreenDiffView.tsx
#	packages/kilo-vscode/webview-ui/src/components/chat/ReviewComments.tsx
2026-08-20 10:44:26 +02:00
Marius 37ce1735c8 Merge pull request #13231 from Kilo-Org/optimize-message-submission-ux-transitions
fix(vscode): stabilize session status dock
2026-08-19 19:09:55 +02:00
marius-kilocode 515d40e90a fix(vscode): remove extra tool output gutter 2026-08-19 17:59:02 +02:00
marius-kilocode 01049be141 fix(vscode): keep tool scrollbar at the edge 2026-08-19 16:58:02 +02:00
marius-kilocode efa48c8cda fix(vscode): keep tool output actions visible 2026-08-19 16:32:39 +02:00
marius-kilocode 190b4a4dc6 feat(vscode): add Agent Manager document inspector 2026-08-19 16:15:49 +02:00
marius-kilocode a61ceee6e2 Merge remote-tracking branch 'origin/main' into optimize-message-submission-ux-transitions 2026-08-19 10:28:19 +02:00
Marius 1515c02941 Merge pull request #13214 from Kilo-Org/sundown-swe-pruner
fix(cli): remove experimental task-aware output pruning
2026-08-19 10:25:14 +02:00
marius-kilocode e1bcb320d9 fix(cli): remove experimental task-aware output pruning 2026-08-18 17:21:47 +02:00
marius-kilocode 3793736c82 feat(agent-manager): render PR comment diffs with Pierre 2026-08-18 16:58:27 +02:00
marius-kilocode 59048c44bd fix(vscode): stabilize inline diff scrolling 2026-08-18 11:06:59 +02:00
marius-kilocode ae50d9d7c2 Merge remote-tracking branch 'origin/main' into optimize-message-submission-ux-transitions
# Conflicts:
#	packages/kilo-vscode/webview-ui/src/context/session-queue.ts
#	packages/kilo-vscode/webview-ui/src/context/session-utils.ts
#	packages/kilo-vscode/webview-ui/src/context/session.tsx
2026-08-18 10:56:18 +02:00
Marius 73f7a44462 Merge pull request #13160 from Kilo-Org/fix-kilo-session-indicator-scroll-bug
fix(ui): preserve streaming chat scroll position
2026-08-17 11:14:14 +02:00
marius-kilocode 2acdb46eee fix(ui): preserve native scroll pauses 2026-08-17 10:55:01 +02:00
marius-kilocode cba6ebc6fa fix(ui): preserve streaming chat scroll position 2026-08-17 10:46:51 +02:00
Marius d709d41eb5 Merge branch 'main' into efficacious-region 2026-08-17 10:14:59 +02:00
marius-kilocode a088976987 wip: include untracked files before merge 2026-08-17 08:52:34 +02:00
marius-kilocode 9e9bf5b81e wip: commit working tree changes 2026-08-17 08:52:26 +02:00
marius-kilocode 4ea07a0b23 wip: save working tree before merging main 2026-08-17 08:51:44 +02:00
kilo-maintainer[bot] 67cda85c94 release: v7.4.22 2026-08-13 22:26:16 +00:00
sylwester-liljegren 8013e5f504 feat(ui): parse and render clickable file links (#11219)
* feat(ui): parse file-path candidates with line and column suffixes

Replace the regex-based parseFilePath with extractSuffix and
normalizeCandidatePath helpers, and make extractFilePathFromHref return
structured { path, line, column } data instead of a bare string.

This shifts inline-code detection from "does this string look like a
file?" to "extract a candidate path so the filesystem can confirm it
later", which also handles :line / :line:col and :start-end line ranges,
a/ and b/ diff prefixes, and Windows drive paths. Unit tests are
rewritten to cover the new helpers and the structured href result.

* feat(ui): render and open clickable file links

Mark every inline code span as a file-link candidate during markdown
rendering, then validate candidates against the filesystem after render
and promote confirmed files to clickable links. Results are cached so
morphdom re-renders during streaming resolve without extra round-trips,
and unconfirmed candidates fall back to plain code.

Clicking a confirmed link (or a markdown link whose href is a file path)
opens the file at the referenced line/column. Markdown file-path links
also get distinct styling.

* fix(ui): tighten file-link detection and streaming validation

Address kilo-code-bot review on #11219:
- preserve top-level a/ and b/ directories instead of treating them as diff
  prefixes for every candidate
- only treat markdown hrefs as file targets when the href still looks like a
  file path after removing query/fragment and parsing line suffixes
- observe text and file-link attribute mutations during streaming so morphdom
  in-place updates re-run validation

* fix(ui): preserve common extensionless file hrefs

Address kilo-code-bot review on #11219: keep the href guard that avoids
routing extensionless docs links through openFile, but allow common
extensionless workspace files (LICENSE, Dockerfile, Makefile) to use the
file-open path. Mirror the helper in kilo-ui and cover the allowlist plus
unknown extensionless rejection in file-path tests.

* fix(ui): scope file-link validation to session and harden against races

Addresses review feedback on PR #11219 (marius-kilocode):

- validateFiles requests now carry an explicit sessionID; the extension
  resolves the workspace directory from that id instead of its own
  mutable currentSession, so a session switch mid-request can't validate
  candidates against the wrong worktree.
- Introduce a module-level file-link-validator singleton shared by every
  TextPartDisplay instance: in-flight requests for the same path are
  coalesced instead of duplicated, and the validation cache lives outside
  component state so virtualization unmount/remount no longer discards it
  and repeats filesystem checks for unchanged history.
- Bound filesystem check concurrency in file-links.ts (mapLimit, cap 8)
  instead of firing an unbounded Promise.all per validateFiles call.
- Guard DOM promotion against stale responses: only mutate a candidate
  element if it's still connected and still represents the path that was
  validated, so a slow response can't clobber a newer candidate that
  reused the same node during streaming.
- A validateFiles timeout now rejects instead of resolving with [], and
  is retried with backoff before giving up as an unconfirmed (not
  negative) result, so it's never cached as "file doesn't exist".

* test(ui): update bidi contract test for file-link candidate markup

The codespan renderer added by this PR marks non-trivial inline code
spans as file-link candidates, so the plain <code dir="auto"> markup
this test expected no longer matches. Update the expectation to the
candidate-wrapped output while still asserting dir="auto" is preserved.

* refactor(ui): harden and de-duplicate clickable file-link validation

Follow-up review fixes on PR #11219:

- Escape the `data-file-candidate` attribute value in the codespan
  renderer. It's derived from raw model output, so a stray `"` could
  break out of the attribute (neutralized by the DOMPurify pass, but now
  fixed at generation time for correctness + defense-in-depth). Adds
  escapeAttribute() to the shared file-path module.
- Only treat code spans that look like file paths (an extension or a
  known extensionless name) as candidates, so bare identifiers like
  `useState`/`null` no longer trigger filesystem probes during
  streaming. Exposes looksLikeFilePath() for this.
- De-duplicate file-path.ts: expose it via the `@opencode-ai/ui/file-path`
  export and import it from kilo-ui instead of keeping a byte-identical
  copy with dead exports. Deletes packages/kilo-ui/src/file-path.ts.
- Keep target/rel on file-path markdown links so the shared opencode
  consumer's navigation/security behavior is unchanged; Kilo's click
  handler still intercepts via preventDefault.
- Cache negative validation results with a short TTL so a file created
  mid-session becomes clickable on the next scan (positives never
  expire). Retry/TTL are now tunable via checkFile options.
- Filter the MutationObserver so promote()'s own class/attribute writes
  no longer schedule an extra no-op validation pass.
- Add unit tests for looksLikeFilePath, escapeAttribute, the codespan
  candidate/escaping behavior, and the validator's dedup/batching/cache/
  TTL/retry paths.

* fix(ui): scope file-link open to its session and harden rendering

Thread an explicit sessionID through the click-to-open path (OpenFileFn,
openFile webview message, editor-actions) so opening a validated file link
resolves against the session it was rendered for, mirroring validateFiles and
avoiding the wrong worktree during an Agent Manager session switch.

Also: re-scan file-link candidates once streaming stops so candidates left
'unknown' after a mid-stream validation timeout get a final pass; make the
validator cache LRU (refresh recency on read) instead of FIFO; and escape
href/title in the markdown link renderer as defense-in-depth alongside
DOMPurify.

* feat(ui): make extensionless and bare-token file references clickable

The candidate heuristic previously required a dotted basename or one of three hardcoded extensionless names (Dockerfile/LICENSE/Makefile), so real files like 'install', 'run-script', or 'configure' were never validated and stayed plain.

Split the heuristic: keep looksLikeFilePath strict for markdown-link hrefs (decided statically, no filesystem check, so a false positive would hijack a doc route), and add a permissive looksLikeCandidate for inline code spans, which ARE validated against the filesystem afterward. A code span now qualifies unless it is empty or contains code punctuation, so extensionless files and separator paths become clickable while expressions like useState() stay plain.

To keep the broader candidate set from multiplying probes, defer candidate validation until a message finishes streaming instead of running it on every morphdom frame; completed history still validates on mount.

* refactor(ui): isolate file-link negative cache from confirmed positives

Addresses kilo-code-bot's suggestion on the widened looksLikeCandidate heuristic: with nearly every bare token now probed, transient negatives (useState, null, ...) dominated the single fixed-size LRU and could evict confirmed-file entries, forcing re-probes on revisit.

Split the validator cache into a positives Set (confirmed files, never expire) and a negatives Map (TTL'd), each LRU-bounded independently (2000 / 1000). Negative-probe churn now only evicts other negatives, a real clickable file is never pushed out by non-file noise, and eviction stays O(1) with no scan.

* feat(ui): validate file links during streaming with a per-element settle debounce

Replaces the defer-until-complete pass with incremental validation so links appear while a message streams (requested in review), without the partial-path probe storm that defer avoided.

Because morphdom keeps the same <code> node as a healed streamed path grows (src/fo -> src/foo.ts), each candidate carries a per-element debounce: a probe fires only after that element's path has been stable for 400ms, and re-arms whenever the path changes, so intermediate partials are superseded before hitting the filesystem. Settled candidates behind the streaming frontier light up mid-stream; on completion all pending candidates flush immediately. Combined with the split positive/negative caches, a growing token now costs one probe for its final value instead of one per frame.

---------

Co-authored-by: Sylwester Liljegren <sylwester.liljegren@softronic.se>
2026-08-13 13:59:13 +02:00
Josh Lambert aa7488dd5d Merge remote-tracking branch 'origin/main' into refactor/provider-usage-center-split 2026-08-12 17:53:53 -04:00
kilo-maintainer[bot] a5aaef74a8 release: v7.4.21 2026-08-11 03:07:28 +00:00
cmanu cc397bb885 feat(pr-view): new icons in kilo-ui for circle x, pull request, and refresh 2026-08-10 09:20:41 -07:00
Christiaan Arnoldus 981600921a feat(vscode): improve custom provider dialog layout and model toggles 2026-08-10 15:17:17 +02:00
Josh Lambert fe8120427a Merge remote-tracking branch 'origin/main' into refactor/provider-usage-center-split 2026-08-07 13:48:46 -04:00
Bruno Agatao 166fc1defa Merge remote-tracking branch 'origin/main' into feat/show-approval-reason-outside-workspace-reads-and-writes 2026-08-07 19:29:19 +02:00
Bruno Agatao 356f5b0a6c fix(ui): drop italic styling and highlight decision text in tool approval line 2026-08-07 19:19:07 +02:00
marius-kilocode f1e5ed30e4 refactor(ui): eliminate stop debounce timer in favor of synchronous scroll state 2026-08-07 17:17:35 +02:00
marius-kilocode b5bf1d996b feat(vscode): support mcp tool display setting in display preferences 2026-08-07 17:03:12 +02:00
marius-kilocode c514c08749 fix(ui): prevent snap-to-bottom and flickering during upward session scroll 2026-08-07 16:53:58 +02:00