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.
Replace before/after content fields with unified patch field across
the diff pipeline. WorktreeDiff now generates patch strings via
createTwoFilesPatch, and all consumers (summary stripping, size
checks, content hashing, TUI sync, ingest queue) operate on the
patch field instead of before/after.
Consolidate model variant into the model object, removing the
separate variant field from MessageV2.User, PlanFollowup inject,
and resolveCodeModel interfaces.
Additional changes:
- Add session-diff module export to kilo-ui package
- Remove batch tool (batch.ts deleted)
- Fix WebSocket proxy to convert Uint8Array to ArrayBuffer
- Switch VscodeSessionTurn from useDiffComponent to useFileComponent
- Update SnapshotFileDiff type references in vscode extension
Extend WorktreeDiffItem with `before` and `after` string properties
across the OpenAPI spec, generated TypeScript types, and the Zod
schema in worktree-diff.ts. Both fields are marked as required in
the JSON schema definition.
- Update google.md and end-to-end.md to recommend dedicated/Workspace bot accounts
- Remove suggested-configuration.md (duplicate of end-to-end.md)
- Add redirect from /docs/kiloclaw/suggested-configuration to /docs/kiloclaw/end-to-end
* fix(tui): show progress indicators while subagent is initializing
Show '↳ Starting...' in the parent session's Task entry when the
subagent is running but has not yet made any tool calls, and show
'↳ Initializing...' in the subagent session view when it has no
messages yet. Prevents the UI from appearing frozen during the
LLM thinking phase on startup.
Closes#8422
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(tui): annotate kilocode changes for CI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(webview): show progress indicators while subagent is initializing
Mirror the TUI fix for the VS Code extension webview:
- TaskToolExpanded: show "Starting..." when the task tool is running
but the child session has no tool calls yet (previously the expanded
body was empty/blank).
- MessageList/ChatView: propagate the readonly flag so the subagent
viewer shows "Initializing..." instead of the generic welcome screen
when the session has no messages yet.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: add i18n translations for Initializing and Starting strings
Replace hardcoded 'Initializing...' and 'Starting...' strings in
webview components with language.t() calls. Add
session.messages.initializing and session.messages.taskStarting keys
to all 19 locale files.
Note: The TUI (packages/opencode) has no i18n framework — all strings
are hardcoded throughout the codebase, so the 'Initializing...' string
in the TUI session view remains as-is.
* fix: localize Initializing/Starting strings in all locale files
Replace English placeholder strings with proper translations in all
19 non-English locale files.
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(agent-manager): jump to changed line when clicking line number in diff
When clicking a line number in the diff review panel (DiffPanel or
FullScreenDiffView), open the file in the editor at that exact line
instead of always landing on line 1.
Closes#6076
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* style: fix prettier formatting in AgentManagerApp
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(vscode): strip Electron env vars in dev launch script
When bun run extension is invoked from a VS Code task (e.g. the Agent
Manager run button), ELECTRON_* and VSCODE_* env vars leak into the
spawned process, causing VS Code to reuse the existing instance instead
of opening a new window. Strip these vars before spawning.
* fix(vscode): also strip Electron env vars in blocking launch path
* fix(cli): invalidate provider state after auth changes
After the Effect migration in #8870, provider state is cached via
InstanceState/ScopedCache. The hasKey check that determines which
models are available ran once at init and was never re-evaluated.
When auth changed (login, logout, org switch), only ModelCache was
cleared but the provider state retained the stale hasKey decision,
causing authenticated users to be stuck on the free model.
* chore: add changeset
* fix(gateway): scope disposeAll to KiloRoutesDeps, not ImportDeps
* perf: reduce git process load via adaptive polling and caching
Optimize GitStatsPoller and GitOps to mitigate heavy system load caused
by frequent git process spawns (~200+ processes/min).
- Implement adaptive backoff in GitStatsPoller: The polling interval
now scales (5s -> 10s -> 30s -> 60s) based on consecutive polls with
no detected changes.
- Add visibility awareness: The poller now switches to a 60s interval
immediately when the Agent Manager or Kilo sidebar is hidden.
- Introduce resolution caching in GitOps: Added a 60s TTL cache for
expensive operations (resolveRemote, resolveTrackingBranch,
resolveDefaultBranch) to prevent redundant sub-process execution
within a single polling cycle.
- Reset activity counters: Polling frequency returns to 5s immediately
upon detecting local changes or when the UI becomes visible.
These changes significantly reduce the baseline CPU footprint of the
extension while maintaining responsiveness during active development.
* fix: resolve review issues for PR #8703 - adaptive polling
- Centralize consecutiveNoChanges tracking in fetch() to fix double increment
- Add onChanged callback to reset backoff when worktree stats change
- Restore stop() call in setEnabled(false) to reset cached state on disable
* perf(agent-manager): remove adaptive backoff, keep visibility + cache
Drop the consecutiveNoChanges-based interval scaling that degraded
stats freshness to 10-60s during normal agent use. The visibility
check (5s visible, 60s hidden) and resolution cache already provide
the bulk of the optimization (192 → 156/min visible, 13/min hidden)
without any UX regression in stats update latency.
* chore: add changeset for git stats polling optimization
---------
Co-authored-by: marius-kilocode <marius@kilocode.ai>
* feat(vscode): support @terminal context mention in chat and agent manager
* docs: add @terminal to new extension docs tabs
* fix(vscode): revert toggleRemote extraction, remove plan file, extract terminal handler method
* chore: add changeset for @terminal feature and document changeset process in AGENTS.md
Align test fixtures with the agent naming convention change
where the "build" agent identifier was replaced by "code"
across all prompt and session interactions.
- Update `@kilocode/sdk` imports to use `@kilocode/sdk/v2` path
- Replace `@opencode-ai/sdk/v2` import with `@kilocode/sdk/v2`
- Change theme color types from `string` to `RGBA` in renderApiDescription
- Fix `build` return type in KiloToolRegistry to `Effect.Effect<T, never, any>`