When the CLI backend is temporarily unhealthy, session.list() for worktree
directories throws and the catch returns []. The webview reconciliation then
deletes those sessions from the store, making them disappear. Track failed
directories and pass preserveSessionIds so the webview skips deletion for
sessions whose absence is transient.
Closes#7466
Sync GitStatsPoller skip set with collapsed section state via pushState(),
saving 1 aheadBehind subprocess + 1 diffSummary HTTP call per hidden
worktree per poll cycle.
Closes#8900
The trailing / in directory paths was visually disappearing in diff
viewer headers because CSS direction:rtl interacted poorly with the
weaker LRE/PDF bidi embedding characters (\u202A/\u202C). Replace with
LRI/PDI isolate characters (\u2066/\u2069) which fully prevent the
surrounding RTL context from reordering boundary characters like /.
* fix(agent-manager): fix tab header tooltip-trigger breaking height chain
The Tooltip component wraps its trigger in a div with display:flex but
no explicit height, breaking the height chain from .am-tab-bar (36px)
through to .am-tab. This caused tabs to collapse to content height
instead of stretching to the full tab bar, clipping the 2px active
indicator border.
Add scoped CSS rules targeting only the outer tooltip-trigger inside
.am-tab-sortable (via direct child and context-menu-trigger selectors)
to restore height:100% without affecting inner tooltip triggers like the
close button.
Add three TabBar visual regression stories that reproduce the real DOM
structure (ContextMenu.Trigger with display:contents, nested
TooltipKeybind wrappers) to catch future regressions.
* chore: update kilo-vscode visual regression baselines
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix(cli): re-apply dead-stream detection to SSE endpoints to prevent memory leak on Windows
The upstream OpenCode v1.3.0 merge rewrote SSE routes with AsyncQueue but
dropped our dead-stream detection. On Windows, stream.onAbort() may never
fire after client disconnect (IOCP delays TCP RST detection), leaking a
GlobalBus listener, heartbeat interval, and AsyncQueue per dead connection.
Wrap writeSSE in try/catch to clean up eagerly on write failure.
* fix(cli): log dead-stream cleanup in SSE endpoints
These files are already in .gitignore but were committed before the
rule was added. Remove them from tracking so the gitignore takes
effect and build-generated changes stop appearing in diffs.
Adjust boolean expression alignment in isCompletionResult to use
consistent indentation, and reformat PopupSelectorProps generic type
constraint to break the extends clause across multiple lines.
Update DiffVirtualApp and PermissionDiff to reconstruct before/after
content from the patch field when explicit before/after values are not
provided. Export the `text` helper from kilo-ui session-diff and add
`patch` to the PermissionFileDiff type.
In message-v2, refine stripMessageMetadata to only strip oversized
patches (exceeding MAX_DIFF_SIZE) rather than all patches, preserving
small patches so the UI can render inline diffs without additional
fetches.