Skip to content

feat(vscode): reimplement task timeline graph header#8480

Merged
marius-kilocode merged 1 commit into
mainfrom
closed-shift
Apr 7, 2026
Merged

feat(vscode): reimplement task timeline graph header#8480
marius-kilocode merged 1 commit into
mainfrom
closed-shift

Conversation

@marius-kilocode

@marius-kilocode marius-kilocode commented Apr 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Reimplements the legacy KiloTaskHeader graph visualization in the new SolidJS-based VS Code extension.

  • Timeline bars — colored horizontal bars representing session activity (part type → color: read/write/tool/error/text), width proportional to time between parts, height proportional to content length
  • Context window progress — three-segment bar (used/reserved/available) with token counts, turns red at ≥50% usage
  • Token breakdown — input/output/cache writes/cache reads display
  • Interactions — drag scroll, mouse wheel → horizontal scroll, auto-scroll to latest bar, active bar pulse animation, fade-in on new bars
  • Persistent toggle — expand/collapse stored in localStorage (default: shown), with bottom border separator
image image image

Deferred (follow-up)

  • Click-to-scroll (needs correct part→message mapping work)
  • Gutter bars on chat turns (depends on click-to-scroll)

Comment thread packages/kilo-vscode/webview-ui/src/utils/timeline/colors.ts Outdated
Comment thread packages/kilo-vscode/webview-ui/src/utils/timeline/sizes.ts Outdated
@kilo-code-bot

kilo-code-bot Bot commented Apr 7, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: 3 Issues Found | Recommendation: Address before merge

Fix these issues in Kilo Cloud

Overview

Severity Count
CRITICAL 0
WARNING 3
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
packages/kilo-vscode/src/KiloProvider.ts 1142 Timeline visibility changes are still only sent to the current provider instance, so other open webviews can keep a stale expanded or collapsed state.
Other Observations (not in diff)

Issues found in unchanged code that cannot receive inline comments:

File Line Issue
packages/kilo-vscode/webview-ui/src/utils/timeline/colors.ts 31 Real list and apply_patch tool IDs still fall through to the generic tool color instead of the read/write palette.
packages/kilo-vscode/webview-ui/src/utils/timeline/sizes.ts 53 Tool timestamps are still read from part.time instead of part.state.time, so time-based widths collapse for tool bars.
Files Reviewed (26 files)
  • packages/kilo-vscode/webview-ui/src/components/chat/TaskHeader.tsx
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/bash-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/bash-rule-approved-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/bash-rule-denied-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/bash-rules-mixed-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/edit-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/external-dir-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/glob-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/glob-rule-approved-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/many-rules-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/many-rules-mixed-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/subagent-expanded-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/websearch-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/permission-dock-dropdown.spec.ts-snapshots/permission-dock-dropdown/write-expanded-pending-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/chat/chat-view-with-messages-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/chat/task-header-with-todos-all-done-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/chat/task-header-with-todos-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/bash-with-permission-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/glob-with-permission-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-edit-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-external-dir-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-heredoc-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-subagent-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-todo-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-websearch-chromium-linux.png
  • packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/composite-webview/permission-dock-write-chromium-linux.png

Reviewed by gpt-5.4-20260305 · 1,090,980 tokens

@kilo-code-bot kilo-code-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rendering Performance Review (requested by @markijbema)

@markijbema asked: How significant does this impact rendering performance? We only show a block per conversation we are already showing, so I would expect little — but is that the case?

Short answer: the impact is low. Your intuition is correct. Here's the detailed breakdown:

Scope of rendering

TaskHeader is rendered once per active session view (via ChatView.tsx:129), not per-conversation-in-a-list. The timeline only appears within the currently visible session. This immediately bounds the blast radius.

SolidJS <Index> — the right primitive

The timeline uses <Index> (not <For>), which means each bar element is created once and its bindings are updated in place when properties change. SolidJS doesn't re-create DOM nodes when the array shifts — it patches the existing ones. The PR comment in TaskTimeline.tsx:13 ("Even 1000+ bars are fine") is a fair claim for this primitive.

Cost analysis per update

When a new part arrives, here's what happens:

  1. allParts() (line 68–74 of TaskTimeline.tsx) — iterates all messages and calls session.getParts() per message. This is O(messages) and builds a Record<string, Part[]>. Not memoized itself, but it's called within the bars memo.

  2. collect() + sizes() — runs inside createMemo via bars. collect() iterates all assistant parts, filtering step-start. sizes() does one pass to compute content lengths, then one Math.max spread over the array, then one map to produce final widths/heights. Total: ~3 linear passes over the parts array.

  3. JSON.stringify(tp.state.input ?? {}) in sizes.ts:39 — this is the most expensive per-element operation. For each tool part, it serializes the input to measure its length. On a session with 200 tool calls with moderate input objects, this is measurable but still sub-millisecond total.

  4. DOM updates — only the last bar is newly created; existing bars get their reactive properties patched (which is usually a no-op since historical bars don't change).

Potential concern: allParts() recomputes on every reactive tick

allParts() is a plain reactive function (not a createMemo), and it's called inside bars which is memoized. But any change to session.messages() or any call to session.getParts() returning new data will trigger a full recomputation of the entire bars array — including re-running sizes() with JSON.stringify on every tool part.

For a long-running session with hundreds of parts, this becomes quadratic in aggregate: each new part triggers a full recompute of all previous parts' sizes. This isn't a problem at typical session lengths (say <200 parts), but worth noting. If this ever becomes a concern, the fix would be to incrementally append new bars rather than recomputing the full collect()+sizes() pipeline.

The tokens memo in TaskHeader.tsx

The tokens memo (line 63–73) reverse-iterates session.messages() on every messages change. This is O(messages) but typically short-circuits quickly since the last message is usually the assistant message with tokens. Negligible.

CSS animations

The timeline-fade-in animation on .task-timeline-bar-fill--new is applied to every bar unconditionally (the --new class is always present). On initial load of a session with many bars, all bars will animate simultaneously. This triggers a composite paint per bar. For 50+ bars this could cause a visible frame drop on initial render. Consider only applying the animation to bars that are actually new (e.g., via a data attribute tracking whether the bar existed on the previous render cycle), or removing the class after the animation completes.

The timeline-pulse animation is correctly scoped to only the last active bar.

Wheel event handler

onWheel is registered with { passive: false } and calls preventDefault(). This is necessary for the horizontal scroll behavior, but non-passive wheel listeners block the compositor thread. Since this is scoped to a small element (the timeline strip, not the entire page), the impact is minimal.

Summary

Aspect Impact
One timeline per active session Low — bounded scope
SolidJS <Index> for bars Low — no DOM recreation
Full recompute on each new part Low at typical sizes, grows linearly
JSON.stringify in sizes Sub-ms for typical sessions
--new animation on all bars Minor jank risk on initial render of large sessions
Non-passive wheel listener Negligible (small element)

Overall: negligible performance impact for normal usage. The only item worth a minor follow-up would be scoping the fade-in animation so it doesn't re-fire on all bars when the timeline first mounts with existing data.

Comment thread packages/kilo-vscode/webview-ui/src/components/chat/TaskHeader.tsx Outdated
user: "var(--tl-user, color-mix(in srgb, var(--vscode-editor-findMatchBackground) 50%, var(--vscode-errorForeground)))",
read: "var(--tl-read, var(--vscode-textLink-foreground))",
write: "var(--tl-write, var(--vscode-focusBorder))",
tool: "var(--tl-tool, var(--vscode-activityBarBadge-background))",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems tricky to also use background colors, since we won't know how they will look on different thimes, did you try it on a few themes? (dark, light, high contrast, and the weird red one for instance) to sanity check this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bar will have different colors in each theme, in fact using background colors works nice with every theme. Previously the bot hardcoded the colors. If we don't use standard vscode colors we would need to hardcode custom colors for light/dark themes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, but did you test it makes sense in several ones? can you add screenshots?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did test! It looks fine in every theme.

this.seedSessionStatusMap(),
])
this.sendNotificationSettings()
this.sendTimelineSetting()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Timeline setting changes are not broadcast after initialization

showTaskTimeline is only sent here and when the webview explicitly requests it. handleUpdateSetting() and the reset-all-settings flow never call sendTimelineSetting(), so other open webviews — and the current webview after a reset — can keep showing a stale expanded/collapsed state even though the persisted VS Code setting changed.

Port the legacy KiloTaskHeader graph visualization to the new SolidJS
extension. Includes colored timeline bars (per-part type), context
window progress bar, token breakdown display, drag/wheel scroll,
active bar pulse animation, and persistent expand/collapse toggle.
@marius-kilocode marius-kilocode merged commit 50ba275 into main Apr 7, 2026
14 checks passed
@marius-kilocode marius-kilocode deleted the closed-shift branch April 7, 2026 11:42
@marius-kilocode marius-kilocode linked an issue Apr 7, 2026 that may be closed by this pull request
ScuttleBot pushed a commit to ScuttleBot/kilocode that referenced this pull request Apr 7, 2026
- Update whats-new.md to reflect task timeline graph is now available (PR Kilo-Org#8480)
- Add PR status badge documentation to agent-manager.md (PR Kilo-Org#8524)
Varuu-0 added a commit to Varuu-0/kilocode that referenced this pull request Apr 8, 2026
* feat(vscode): add pre-release publishing support to marketplace workflow

Add a pre_release checkbox to the publish workflow that passes
--pre-release to vsce package, vsce publish, and ovsx publish.
This enables publishing to the VS Code Marketplace pre-release
channel without requiring a separate versioning scheme.

Closes Kilo-Org#8156

* docs(kilo-docs): add workspace migration section to KiloClaw dashboard reference

* docs(kilo-docs): move workspace migration section from dashboard to FAQ page

Move the 'Migrating Your Workspace' content from dashboard.md to
faq/general.md where it better fits as a frequently asked question.
The FAQ version is expanded with a clear what-migrates/what-doesn't
breakdown, workspace memory/context note, and step-by-step
integration reconfiguration instructions.

* fix: stabilize worktree branch selector popovers

Render the worktree branch dropdowns inline so the dialog focus trap can keep the filter input keyboard-accessible. Autofocus the search field on open and disable placement flipping so filtering does not make the popup jump.

* fix(ui): ignore dialog escape while popover is open

Keep nested popovers from dismissing their parent dialog when users press Escape. This preserves the branch picker close behavior in the new worktree flow without closing the whole modal.

* docs(kilo-docs): document limit.context and limit.output model settings

Add a dedicated 'Token Limits' subsection to the custom models page
explaining the limit object fields, resolution order, and the behavioral
consequences of leaving them unset (compaction disabled, output fallback
to 32k, no usage tracking). Also expands the troubleshooting section
with compaction-specific guidance.

* docs(kilo-docs): revise workspace migration FAQ to cover all migration scenarios

Rewrite the migration section to explicitly cover three use cases:
- Migrating from another OpenClaw provider to KiloClaw
- Moving between KiloClaw instances (individual to org or vice versa)
- Leaving KiloClaw for another OpenClaw provider

Clarify that the process is the same for all three, and distinguish
what migrates via backup/restore (workspace files, memory, context)
from what needs manual reconfiguration (integrations).

* Revise migration instructions for OpenClaw

Updated migration instructions for OpenClaw to clarify workspace migration process and reconfiguration of integrations.

* fix(cli): plan mode asks for edits outside plan files; sub-agents inherit caller edit restrictions

* fix(cli): apply read-only bash and MCP to plan mode; propagate bash restrictions to sub-agents

* Apply suggestions from code review

Co-authored-by: Joshua Lambert <25085430+lambertjosh@users.noreply.github.com>

* fix(cli): cache diffFull and ignore legacy local storage to prevent redundant git processes (Kilo-Org#8400)

* fix(cli): preserve inherited restrictions across multi-hop sub-agent chains

* fix(cli): propagate MCP restrictions to sub-agents alongside edit and bash

* fix(vscode): recover missed child-session prompts and improve delegation status text

When plan mode delegates to a subagent the child session can block on a
permission or question before the UI starts tracking it, leaving the parent
stuck on 'Delegating work' with no visible prompt.

- Auto-adopt child sessions in KiloProvider.handleEvent as soon as the task
  tool part reveals metadata.sessionId — eliminates the race where the child
  emits a prompt before the webview renderer calls syncSession
- Add fetchAndSendPendingQuestions mirroring the existing permission recovery;
  call both after handleSyncSession so missed prompts are recovered for child
  sessions
- Extend questionCtx with trackedSessionIds + sessionDirectories needed for
  the recovery path
- Improve statusText: when delegating and the session family has pending
  permissions/questions, show 'Subagent waiting for permission' or
  'Subagent waiting for response' instead of generic 'Delegating work'
- Add i18n keys for the two new status strings across all 19 locales

* Improve FAQ 

Updated the 'whats-new.md' file to reflect upcoming features and improvements regarding the context progress graph and agent management.

* Fix typo

* fix(vscode): sync mode picker with agent mode changes from backend

When the agent switched modes automatically (e.g. plan → code via plan
follow-up), the VS Code mode picker stayed stuck on the previous value.
The root cause was that agentSelections was only written on explicit
user picker actions, not updated from incoming message events.

- Add resolveSessionAgent() helper that derives the active agent from
  the latest valid user message, ignoring assistant messages and unknown
  agent names
- Wire handleMessagesLoaded() to reconcile agentSelections from history
  so the picker is correct when reopening or switching sessions
- Wire handleMessageCreated() to update agentSelections whenever a user
  message arrives with a changed agent field (covers live plan→code,
  shell commands, command execution, and synthetic mode-switch messages)
- Add mode?: string to QuestionOption so the VS Code webview preserves
  the same question option metadata the backend and shared app already
  support
- Wire QuestionDock.pick() to call session.selectAgent() immediately
  when a predefined single-choice option carries a mode field, giving
  instant feedback before the next user message arrives

* release: v7.1.22

* fix(cli): preserve specific MCP tool rules when propagating permissions to sub-agents

* fix(vscode): backfill agent selections when agentsLoaded arrives after messagesLoaded

* fix(vscode): roll back optimistic agent change when question reply fails

* fix(vscode): recover pending questions on SSE reconnect

* fix(vscode): clear stale optimistic question mode

* feat(vscode): add exponential backoff retry with cancel button for rate limiting

Implement retry with exponential backoff when the extension encounters rate
limiting (HTTP 429) or server errors. Retries on: 5s -> 10s -> 30s ->
60s -> 300s, with a maximum of 5 attempts.

- Add retry utility module (retry.ts) with backoff calculation
- Add withRetry() wrapper for SDK calls in KiloProvider
- Add Cancel button to WorkingIndicator during retry status
- Clear error messages when model changes (issue Kilo-Org#8203)
- Add i18n translations for cancel button (18 languages)

Users can manually cancel via the cancel button or the retry loop
automatically stops after 5 failed attempts.

Issues: Kilo-Org#8333, Kilo-Org#8203

* docs(kilo-docs): fix custom models page headings and tab order

- Remove backticks from headings that broke sidebar ToC rendering
  ('Token Limits (' and 'Using the' were truncated)
- Reorder tabs to show VSCode before CLI
- Fix minor table alignment in token limits section

* docs(kilo-docs): add model cost and custom model FAQ entries to whats-new page

* docs(kilo-docs): add FAQ entry about custom profiles in whats-new page

* fix(cli): update simple-git to fix critical RCE (Kilo-Org#8464)

Update simple-git from 3.31.1 to 3.35.2 in both packages/opencode and
packages/kilo-vscode to fix GHSA-r275-fr43-pm7q (blockUnsafeOperationsPlugin
bypass via case-insensitive protocol.allow config key enables RCE).

* fix(cli): update hono to fix auth bypass and server vulnerabilities (Kilo-Org#8465)

Update hono catalog version from 4.10.7 to 4.12.12 to fix 14 advisories
including JWT algorithm confusion (GHSA-f67f-6cw9-8mq4, GHSA-3vhc-576x-3qv4),
CORS bypass, body limit bypass, XSS, cookie injection, SSE injection,
path traversal, and prototype pollution.

Add null guard for ptyID param in pty.ts to satisfy hono 4.12's stricter
return type for c.req.param().

* fix: add safe overrides for transitive dependency vulnerabilities (Kilo-Org#8467)

Add semver-verified compatible overrides for 8 transitive dependencies:
- path-to-regexp >=8.4.0 (2 ReDoS: GHSA-j3q9-mxjg-w52f, GHSA-37ch-88jc-xwx2)
- picomatch >=2.3.2 (ReDoS + method injection: GHSA-c2c7-rcm5-vvqj, GHSA-3v7f-55p6-f55p)
- defu 6.1.6 (prototype pollution: GHSA-737v-mqg7-c878)
- lodash 4.18.1 (code injection + prototype pollution: GHSA-r5fr-rjxr-66jc, GHSA-f23m-r3pf-42rh)
- @xmldom/xmldom >=0.8.12 (XML injection: GHSA-wh4c-j3r5-mjhp)
- smol-toml >=1.6.1 (DoS: GHSA-v3rj-xjv7-4jmq)
- fastify >=5.8.3 (protocol spoofing: GHSA-444r-cwp2-x5xf)
- happy-dom >=20.8.9 (cookie leak + RCE: GHSA-w4gp-fjgq-3q4g, GHSA-6q6h-j7hj-3r64)

All override versions fall within their parent's declared semver range.

* fix(cli): update minimatch, @modelcontextprotocol/sdk, and @aws-sdk (Kilo-Org#8466)

- minimatch 10.0.3 → 10.2.5 (fixes 3 ReDoS: GHSA-3ppc-4f35-3m26,
  GHSA-7r86-cg39-jmmj, GHSA-23c5-xmqv-rm74)
- @modelcontextprotocol/sdk 1.25.2 → 1.29.0 (fixes ReDoS, data leak,
  DNS rebinding: GHSA-8r9q-7v3j-jr4g, GHSA-345p-7cg4-v4c7,
  GHSA-w48q-cv73-mx4w)
- @aws-sdk/credential-providers 3.993.0 → 3.1025.0 (resolves critical
  fast-xml-parser transitively)
- @aws-sdk/client-s3 3.933.0 → 3.1025.0 (same fast-xml-parser fix)

* feat(ui): add docs link to migration whats-new and adjust layout

add docsLink i18n key and render docs link in MigrationWizard
update migration.css to center blog/docs links using a vertical flex layout

* feat(i18n): add migration.whatsNew.docsLink translations across locales

add migration.whatsNew.docsLink key to all i18n files

provide label for docs link in the migration whats-new screen

* chore: regenerate source-links.md with new docs URL

* docs(kilo-docs): update Mistral autocomplete guide with VS Code/Legacy tabs

Use the tab system to present the new BYOK Gateway workflow (VS Code tab)
alongside the legacy provider-profile setup (VS Code Legacy tab).
Updates credits-and-billing.md and using-kilo-for-free.md with consistent BYOK language.

* chore: update nix node_modules hashes

* fix(agent-manager): suppress interactive prompts during background git fetch (Kilo-Org#8190)

* fix(agent-manager): suppress interactive prompts during background git fetch

Background git fetch operations (GitStatsPoller, worktree start point
resolution) now pass GIT_TERMINAL_PROMPT=0 and ssh -o BatchMode=yes to
prevent SSH passphrase/credential popups. Fetches silently fail when
interactive auth is required; ahead/behind counts stay stale until the
user performs an explicit git operation.

Closes Kilo-Org#8179

* fix(agent-manager): remove background git fetch from stats poller

Background git fetch every ~120s caused SSH/credential popup dialogs for
users with interactive auth (SSH agent confirm, 1Password, YubiKey, etc.).
Remove refreshRemote entirely — ahead/behind counts now use stale local
tracking refs only, matching how other tools handle this. nonInteractiveEnv
kept for WorktreeManager.resolveStartPoint() which is user-initiated.

Closes Kilo-Org#8179

* chore: update nix node_modules hashes

* chore: update nix node_modules hashes

* fix: update diff, dompurify, yaml, and solid-js for security patches

- diff: catalog 8.0.2 → 8.0.4, kilo-vscode ^7.0.0 → 8.0.4
  (DoS in parsePatch/applyPatch: GHSA-73rr-hh4g-fpgx)
- dompurify: catalog + packages/ui 3.3.1 → 3.3.3
  (mutation-XSS, XSS, URI bypass: GHSA-h8r8-wccr-v5f2, GHSA-v2wj-7wpq-c8vv,
  GHSA-cjmm-f4jc-qw8r, GHSA-cj63-jhhr-wcxv)
- yaml: kilo-vscode 2.8.2 → 2.8.3
  (stack overflow via nested collections: GHSA-48c2-rrv3-qjmp)
- solid-js: catalog 1.9.10 → 1.9.12
  (fixes seroval transitively: DoS, RCE, prototype pollution)

* chore: update kilo-vscode visual regression baselines

* chore: update nix node_modules hashes

* fix: resolve remaining dompurify and seroval vulnerabilities

- Add dompurify override (3.3.3) to force mermaid's transitive dep away from 3.3.1
- Switch kilo-gateway solid-js from pinned 1.9.10 to catalog (1.9.12) to eliminate seroval@1.3.2

* docs(kilo-docs): use same Mistral screenshots in VS Code tab as legacy

* fix(core): make follow-up execution aware of the saved plan file

Users launching a follow-up implementation session now get an explicit plan-file path and instruction to read it first, so execution stays aligned with the canonical plan even when copied plan text drifts.

* fix: add diff override to eliminate transitive diff@8.0.2 from @opentui/core

* feat(provider): add glm/kimi/qwen reasoning support (issue Kilo-Org#8201)

* chore: update nix node_modules hashes

* Modify id check to comment out specific conditions

Commented out conditions for 'glm' and 'kimi' in the id check.

* docs(kilo-docs): remove Vercel AI Gateway from autocomplete flow and drop unnecessary sentence

* fix(mcp): inject --rm flag for Docker MCP containers to prevent accumulation

Docker containers spawned by MCP servers configured with `docker run`
were not cleaned up after being stopped, causing exited containers to
accumulate and fill up Docker storage over time.

Closes Kilo-Org#8103

* fix: update vite and electron for dev tooling security

- vite: catalog 7.1.4 → 7.3.1 (already used in kilo-vscode/kilo-ui;
  fixes path traversal, fs.deny bypass, WebSocket read:
  GHSA-4w7w-66w2-5vf9, GHSA-v2wj-q39q-566r, GHSA-p9ff-h696-f583)
- electron: 40.4.1 → 40.8.5 in desktop-electron (fixes context
  isolation bypass, use-after-free, command injection)

* chore: update nix node_modules hashes

* fix(cli): add scope context and better git commands to review prompt

* fix(cli): guard against prompt injection in commits

* feat(vscode): reimplement task timeline graph header (Kilo-Org#8480)

Port the legacy KiloTaskHeader graph visualization to the new SolidJS
extension. Includes colored timeline bars (per-part type), context
window progress bar, token breakdown display, drag/wheel scroll,
active bar pulse animation, and persistent expand/collapse toggle.

* fix(vscode): scope cycleAgentMode keybinding to Kilo Code panels (Kilo-Org#8508)

* fix(vscode): scope cycleAgentMode keybinding to Kilo Code panels

cmd+. and cmd+shift+. for cycleAgentMode were globally active, overriding
VS Code's built-in Quick Fix menu. Add when clauses so the keybindings
only activate when a Kilo Code view is focused (sidebar, Agent Manager,
or open-in-tab panel).

* fix(vscode): fix cycleAgentMode when clause and tab panel dispatch

Replace unreliable focusedView with sideBarFocus + custom sidebarVisible
context key for sidebar detection. Also dispatch cycleAgentMode actions
to active tab panels, which were previously missed.

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: marius-kilocode <marius@kilocode.ai>

* release: v7.1.23

* perf(snapshot): add mutex lock, incremental add, and batched revert

Port snapshot optimizations from upstream OpenCode to reduce git process
spawning and prevent concurrent corruption:

- Per-gitdir mutex lock (upstream #17878, v1.3.0): serializes concurrent
  snapshot operations to prevent race conditions
- Incremental git add (upstream #17878, v1.3.0): replaces naive `git add .`
  with diff-files + ls-files + size filtering, skipping files >2MB
- Batched revert (upstream #20564, v1.3.14): groups up to 100 files per
  git checkout call with path-conflict detection, falling back to
  single-file revert on failure

Benchmarks (200 files):
- revert: 2,851ms → 191ms (15x faster, 8x fewer git processes)
- concurrent track: 2/5 succeed → 5/5 succeed (corruption fixed)

* fix: remove local storage from ignored folder (Kilo-Org#8431)

* fix(vscode): retry transient fetch failures in session.command and promptAsync (Kilo-Org#8525)

Recovered from PR Kilo-Org#7948 which was lost when kilo-maintainer[bot] force-pushed release v7.1.23 on a stale base.

* feat(agent-manager): add GitHub PR status badge to worktree sidebar (Kilo-Org#8524)

* feat(agent-manager): add GitHub PR status badge to worktree sidebar

Recovered from PR Kilo-Org#8515 which was lost when kilo-maintainer[bot] force-pushed release v7.1.23 on a stale base.

Co-authored-by: LLRHook <131478441+LLRHook@users.noreply.github.com>

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: LLRHook <131478441+LLRHook@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* release: v7.2.0

* fix(cli): use bun ./script path to fix module resolution in CI

* feat(agent-manager): show branch name as subtitle in worktree sidebar items (Kilo-Org#8529)

Display the git branch name beneath the worktree label when it differs
from the display name. Aligns the local card branch style to match
(10px, --text-weaker).

* feat(cli): add annotation check script and AGENTS.md docs

* revert: restore bun run script/ invocation (consistent with source-check-links)

* feat(vscode): add open-in-editor icon to instruction files in Rules tab

Add a go-to-file icon button next to each instruction file entry in the
Agent Behaviour > Rules subtab, allowing users to open the file directly
in the editor. Uses the established go-to-file icon pattern consistent
with DiffPanel and PromptInput components.

* feat(agent-manager): sync worktree branch from git worktree list (Kilo-Org#8534)

Piggyback on the existing `git worktree list --porcelain` call in
probeWorktreePresence to detect branch changes (e.g. after checking
out a PR branch). Zero additional git calls — the branch info was
already returned but discarded.

* fix(vscode): use pencil-line icon for edit action in Rules tab

The pencil icon more clearly conveys "edit this file" compared to the
go-to-file icon.

* fix(i18n): clarify built-in mode banner to avoid read-only confusion

Re-apply PR Kilo-Org#7720 which was reverted by a force push during the publish
workflow. Also update uk, tr, and nl translations which were missed by
the original translation update in PR Kilo-Org#8086.

Closes Kilo-Org#8558 (partial)

* fix(vscode): fall back to generic "Try Model" for long model names

Recover PR Kilo-Org#7981 (force-pushed by publish workflow on April 1, 2026).

When the suggested model name exceeds 30 characters (after stripping
sub-provider prefix), fall back to the generic "Try Model" label
to prevent an oversized notification button.

Adds tryModelGeneric i18n key for the fallback label across all 18
locales.

See Kilo-Org#8558

* fix(vscode): add missing uk translation for tryModelGeneric

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: kirillk <kirillk@kilocode.ai>
Co-authored-by: Joshua Lambert <joshua.lambert@gmail.com>
Co-authored-by: Alex Gold <alex.gold@kilocode.ai>
Co-authored-by: Joshua Lambert <25085430+lambertjosh@users.noreply.github.com>
Co-authored-by: Varuu <83986448+Varuu-0@users.noreply.github.com>
Co-authored-by: kilo-maintainer[bot] <kilo-maintainer[bot]@users.noreply.github.com>
Co-authored-by: Catriel Müller <catrielmuller@gmail.com>
Co-authored-by: Josh Lambert <josh@kilocode.ai>
Co-authored-by: Mark IJbema <mark@kilocode.ai>
Co-authored-by: Jean du Plessis <jean@upbound.io>
Co-authored-by: Marius <marius@kilocode.ai>
Co-authored-by: Jean du Plessis <jeandp@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jean du Plessis <jean@kilocode.ai>
Co-authored-by: Josh Holmer <jholmer.in@gmail.com>
Co-authored-by: Christiaan Arnoldus <christiaan.arnoldus@outlook.com>
Co-authored-by: Johnny Amancio <johnnyeric@gmail.com>
Co-authored-by: Alex Alecu <a.marian.alexandru@gmail.com>
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
Co-authored-by: LLRHook <131478441+LLRHook@users.noreply.github.com>
marius-kilocode added a commit that referenced this pull request Apr 8, 2026
* docs: update for task timeline graph and Agent Manager PR badges

- Update whats-new.md to reflect task timeline graph is now available (PR #8480)
- Add PR status badge documentation to agent-manager.md (PR #8524)

* Update packages/kilo-docs/pages/code-with-ai/platforms/vscode/whats-new.md

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>

* Update packages/kilo-docs/pages/automate/agent-manager.md

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>

* Update packages/kilo-docs/pages/code-with-ai/platforms/vscode/whats-new.md

Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>

---------

Co-authored-by: scuttlebot <scuttlebot@olearycrew.com>
Co-authored-by: Marius <marius@kilocode.ai>
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
jliounis pushed a commit to jliounis/kilocode that referenced this pull request May 18, 2026
Port the legacy KiloTaskHeader graph visualization to the new SolidJS
extension. Includes colored timeline bars (per-part type), context
window progress bar, token breakdown display, drag/wheel scroll,
active bar pulse animation, and persistent expand/collapse toggle.
jliounis pushed a commit to jliounis/kilocode that referenced this pull request May 18, 2026
…o-Org#8532)

* docs: update for task timeline graph and Agent Manager PR badges

- Update whats-new.md to reflect task timeline graph is now available (PR Kilo-Org#8480)
- Add PR status badge documentation to agent-manager.md (PR Kilo-Org#8524)

* Update packages/kilo-docs/pages/code-with-ai/platforms/vscode/whats-new.md


* Update packages/kilo-docs/pages/automate/agent-manager.md


* Update packages/kilo-docs/pages/code-with-ai/platforms/vscode/whats-new.md


---------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

graph in taskheader

2 participants