Address review feedback from #8582:
- Key prCache by branch name instead of worktreeId so a branch switch
in the same worktree naturally cache-misses instead of returning the
previous branch's PR for up to the full TTL.
- Drop PR_LOOKUP_TTL from 60s to 10s to match the polling behavior of
comparable tools — since only the active worktree polls, this adds
at most 1 extra lookup per cycle.
Poll only the active worktree on each 15s timer tick instead of all
worktrees. Inactive worktrees refresh when selected or on manual
refresh. On first poll and visibility resume, all worktrees are fetched
once to populate badges.
Add a 60s TTL cache on PR lookup results so repeated polls skip the
expensive multi-strategy gh pr view cascade and only re-fetch checks
and comments (the fast-changing data).
With 10 worktrees this reduces API calls from ~5,000-9,800/hr to
~480-720/hr, staying well within GitHub's 5,000/hr rate limit.
The kilo-ui TextPartDisplay was missing a copy button for assistant
responses. Add one that mirrors the existing user message copy button,
shown left-aligned with minimal margin on the last text part of a
completed turn.
Implement collapsible, color-coded sections in the Agent Manager sidebar.
Sections can be created, renamed, colored, deleted, and reordered via
Move Up/Down context menu. Worktrees are assigned via context menu or
drag-and-drop onto section headers.
- Section CRUD in WorktreeStateManager with JSON persistence
- worktreeOrder normalization on load (backfills missing section IDs)
- setWorktreeOrder filters to top-level only (sections + ungrouped worktrees)
- moveSection operates on visible top-level model, not raw array
- createDroppable sections as worktree drop targets
- sectionAwareDetector skips home section for within-section reorder
- Multi-version worktree groups move together
- Auto-rename on creation with double-rAF focus
- 76 tests (26 state manager + 15 helpers + 35 arch)
The /local-review command used git diff base...HEAD (triple-dot) which only
captured committed changes. The diff viewer uses merge-base + two-dot diff
against the working tree. This mismatch caused /local-review to show
'nothing to review' when changes were uncommitted.
Now computes merge-base explicitly and diffs the working tree against it,
matching WorktreeDiff behavior. Also includes untracked files.
Add AbortController to GitOps that kills in-flight child processes when
dispose() is called. Thread the abort signal through both simple-git and
child_process.spawn so spawned git processes are terminated immediately
on Windows (TerminateProcess) and Unix (SIGTERM).
Wire gitOps.dispose() into all three owners: DiffViewerProvider,
AgentManagerProvider, and KiloProvider.
Move word-boundary matching logic from ModelSelector.tsx into
webview-ui/src/utils/search-match.ts with 37 unit tests ported from
the legacy word-boundary-fzf.ts test suite.
Port the word-boundary matching algorithm from the legacy word-boundary-fzf.ts.
This splits text at camelCase transitions and delimiters, so 'clso' matches
'Claude Sonnet' (Cl+So) and multi-word queries like 'gpt 5' require each
fragment to match independently.
- Add subsequence fuzzy matching for model search
- Support searching by provider name
- Normalize spaces to dashes for better matching (e.g., 'gpt 5.4' matches 'gpt-5.4')
Fixes#8404
The .help('help', ...) method registers yargs' built-in help command
which shadows the custom HelpCommand registered on the same 'help' path.
This means 'kilo help --all' never reaches the custom handler.
Fix by:
- Replacing .help('help', ...) with .help(false) + .option('help', ...)
to disable the built-in command while keeping --help/-h flags
- Adding early-exit handlers in middleware for --help and --version
to skip expensive initialization (telemetry, DB migration)
The PromptInput isBusy() check only matched 'busy' status, hiding the
stop button and disabling Escape-to-abort when the session was in 'retry'
state (e.g. rate limited). Changed to match any non-idle status so users
can always abort.
Recover PR #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 #8558
Re-apply PR #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 #8086.
Closes#8558 (partial)
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.
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.