feat(vscode): reimplement task timeline graph header#8480
Conversation
a28bdd8 to
2a7fbfe
Compare
Code Review SummaryStatus: 3 Issues Found | Recommendation: Address before merge Fix these issues in Kilo Cloud Overview
Issue Details (click to expand)WARNING
Other Observations (not in diff)Issues found in unchanged code that cannot receive inline comments:
Files Reviewed (26 files)
Reviewed by gpt-5.4-20260305 · 1,090,980 tokens |
There was a problem hiding this comment.
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:
-
allParts()(line 68–74 ofTaskTimeline.tsx) — iterates all messages and callssession.getParts()per message. This is O(messages) and builds aRecord<string, Part[]>. Not memoized itself, but it's called within thebarsmemo. -
collect()+sizes()— runs insidecreateMemoviabars.collect()iterates all assistant parts, filteringstep-start.sizes()does one pass to compute content lengths, then oneMath.maxspread over the array, then onemapto produce final widths/heights. Total: ~3 linear passes over the parts array. -
JSON.stringify(tp.state.input ?? {})insizes.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. -
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.
06b3d86 to
726b419
Compare
| 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))", |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
ok, but did you test it makes sense in several ones? can you add screenshots?
There was a problem hiding this comment.
I did test! It looks fine in every theme.
5832765 to
9b752b7
Compare
| this.seedSessionStatusMap(), | ||
| ]) | ||
| this.sendNotificationSettings() | ||
| this.sendTimelineSetting() |
There was a problem hiding this comment.
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.
9fea557 to
b179356
Compare
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.
1b2d1cd to
eef4d23
Compare
- 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)
* 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>
* 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>
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.
…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 ---------
Summary
Reimplements the legacy
KiloTaskHeadergraph visualization in the new SolidJS-based VS Code extension.Deferred (follow-up)