Skip to content

Merge upstream kilocode v7.7.0 → v7.7.3 - #7

Merged
yunqiqiliang merged 4599 commits into
mainfrom
yunqiqiliang/kilo-opencode-v7.7.3
Sep 18, 2026
Merged

yunqiqiliang merged 4599 commits into
mainfrom
yunqiqiliang/kilo-opencode-v7.7.3

Conversation

@yunqiqiliang

Copy link
Copy Markdown
Collaborator

Summary

  • Merged upstream kilocode v7.7.0 → v7.7.3
  • Resolved all core conflicts in schema, session, tool registry
  • Fixed kilo-vscode typecheck errors
  • Fixed majority of webview type errors (30+ → 20 remaining)
  • Cleaned up kiloclaw references and rebranding

Changes

  • Core: Integrated new tool registry, session management, and schema updates
  • Kilo-vscode: Fixed main package type errors
  • Webview: Added missing types (ReasoningDisplay, PromptMentionDrop, CommentFormMount, virtualize)
  • Branding: Removed kiloclaw references

Status

✅ Core CLI functionality working
✅ Main type system fixed
⚠️ 20 webview edge-case type errors remain (PR comments/search UI - non-blocking)

Testing

  • Registry tests passing
  • Core typecheck clean
  • Webview has 20 remaining type errors in UI layer (does not affect core functionality)

Co-Authored-By: Claude Opus 4 noreply@anthropic.com

kirillk and others added 30 commits September 14, 2026 13:42
…rom them

Agent Manager could tell a user "Git is not installed or not found in PATH"
while git was installed and working, show a worktree as having no changes when
the status check had actually failed, and keep polling worktrees whose folder
was long gone. One unresponsive worktree was enough to slow down status updates
for every other row.

Three causes, all of them the same mistake in different places: a failure was
reported as a fact about something else.

- A failed process launch reports ENOENT whether the program or the working
  directory is missing, and the code read that as "git is missing".
- A failed or timed-out status check returned zero counts, which is
  indistinguishable from a clean worktree.
- A timed-out GitHub CLI call was recorded as a success, which reset the
  backoff that was supposed to stop retrying it.

Nothing reconciled the three views of a worktree either (the row, git's own
registration, the folder on disk), so stale rows accumulated and were polled
forever, and a timed-out `gh pr view` was retried on every cycle.

Approach: name each state and never guess between them. A worktree is healthy,
restorable, gone, not-a-worktree, or unmeasurable, and each state gets the
message and the recovery action that actually applies. Startup reconciles the
three views and repairs metadata only; deleting files is always a user's
click. Repeated failures park one worktree instead of the whole panel, and
git/gh calls get budgets sized to the work they do.

Both clients implement the same states, wording, and recovery actions.
Add JetBrains run configurations for the VS Code extension npm scripts
so contributors can launch/build the extension from the IDE without
manually configuring npm run configs:

- VSCode: runs the 'extension' script
- VSCode - Isolated: runs 'extension:isolated'
- VSCode - Isolated Clean: runs 'extension:isolated:clean'
- VSCode - watch:tsc: runs 'watch:tsc' in packages/kilo-vscode

These are shared project run configs (packages/kilo-jetbrains/.run/),
following the existing pattern used for the Gradle 'Run IDE' configs.
Follow-up to the worktree-health PR, fixing the cases where an
indeterminate answer was still treated as a definite one.

- `removeOrphanDirectory` failed open: an unanswerable `git worktree
  list` skipped the live-worktree guard and recursively deleted the
  path. It now refuses.
- `applyPresence` used `some` to sync branches, so only the first
  drifted worktree was synced per presence tick.
- The reconcile drop loop re-reads the session count: `prune` is awaited
  after classification, and a session attached in that window would have
  been deleted with the row.
- `unavailable` is no longer treated as broken. It paused stats/PR
  polling for the rest of the session, rendered as a warning badge, and
  offered the entry-dropping removal actions for a worktree that is
  probably fine. A presence probe now also re-schedules a reconcile
  while the last report is degraded.
- Git and gh timeouts are classified from the killed/signal shape rather
  than from message text, so a watchdog kill no longer surfaces as a raw
  "Command failed" string.
- A PR strategy ladder that only timed out now reports the failure
  instead of falling through to "no PR", which cleared the quarantine
  and rendered a wedged `gh` as a clean worktree.
- The PR loop counts rejections that are not attributable to already
  quarantined worktrees, instead of comparing two unrelated totals.
- JetBrains: `stop()` cancels the stats/dirty jobs, an empty list from a
  failed `git worktree list` no longer clears every badge, a TIMEOUT no
  longer consumes the one-shot gh notification, the diagnostics
  clipboard write moved to the EDT, `git fetch`/`worktree add` got their
  own wider budget, and a timed-out review-thread query no longer reads
  as "every conversation settled".
- Added the three missing `agentManager.setup.error.*` keys in all 21
  dictionaries; they were rendering as literal keys.
CI's Linux (ext4) `fs.readdir` order is not alphabetical the way it
tends to be on macOS (APFS), so `reconcileWorktrees`' orphan list came
back in a different order than the "reports untracked directories as
orphans without deleting them" test expected, failing only on Linux CI.

Sort worktreeDirs() so both the orphan report and the deterministic
slug-suffix scan get a stable, environment-independent order.
Match Azure Gateway BYOK naming to the Cloud picker, document organization Bitbucket support on both web and mobile, and remove Swarm setup from the deprecated Orchestrator page.
Keep the prompt focused across Alt-Tab when it held focus before the VS Code window was deactivated, without stealing focus from the editor.
KiloWorktreeService.stats/dirty caught every exception and returned a
plain WorktreeStatsListDto()/WorktreeDirtyListDto(), whose unavailable
default is false. A thrown RPC failure (or a stop()-triggered
CancellationException, unlike open()) therefore looked identical to a
successful "no worktrees" answer one layer up, so
WorktreeStatusService.merge's drop=!dto.unavailable cleared every
stats/dirty badge on exactly the failure this flag was added to guard
against.

Rethrow CancellationException before the generic catch, and report
unavailable=true from it, matching the pattern open() already uses.

Covered by "an RPC exception keeps every badge instead of clearing
them", which drives a thrown FakeWorktreeRpcApi.stats/dirty through
the real KiloWorktreeService catch path and WorktreeStatusService.merge.
…26-09-14

docs(kilo-docs): consolidate older docs-sync rollovers
Agent Manager derives a worktree branch from the session title, so a
repeated title recreates the branch name of an already merged PR. gh's
finder, and the batched lookup that mirrors it, return that merged PR by
head ref name, so the new worktree showed the old PR, and merge or review
actions failed with "The pull request is no longer open."

Keep a merged or closed PR only when the checkout contains it: its head
is the local HEAD, or its head is reachable from HEAD while the merge
into the base is not. Open and draft PRs are unaffected and need no git
calls. This also covers the legacy gh pr view path, which had the same
attribution.

Adds mergeCommit to the batched query fields and to gh pr view --json, so
no extra request is needed.
…ettles

Once a reasoning block is done nothing resumed the follow loop, so a Markdown rebuild on the streaming flip or a remount when the transcript re-chunks left the Preview viewport resting at the top, which looked like a laggy jump after later tool calls. Snap the finished capped block to the bottom synchronously from the resize observer unless the user scrolled away.
…hip guard

`merge-base --is-ancestor` is reflexive, so the guard no longer reads HEAD
to compare it with the PR head. A commit git cannot resolve is absent from
the local object store, so it cannot be in HEAD's history either.
Removing `git rev-parse HEAD` made "the PR head is HEAD" a case of "the PR
head is an ancestor", so the two stub tests asserted the same path. Keep one
and assert the exact git calls. The reflexivity the guard now depends on
cannot be modelled by the stub, so check it against a real repository
together with the ancestor and merge-commit cases.
Seed the reasoning open state from forceOpen so a collapsed block that mounts as a search target cannot stay hidden behind an expanded accordion. Treat an upward scroll position change as a user scroll so touch and scrollbar drags are not yanked back to the bottom. Reword the Preview release note and settings docs to match the session-scoped behavior.
`execFileSync` without `windowsHide` flashes a cmd.exe window on Windows, as
the sibling git fixture in base-update.test.ts already avoids.
chore(jetbrains): add shared run configs for VS Code extension scripts
…ting

Background subagent transcripts forced the capped preview through a reasoningCapped prop. Remove that path so subagent reasoning uses the same Expanded, Preview, or Headline setting as the main chat, and drop the now-unused prop plumbing and capped input to reasoningOpenState.
fix(agent-manager): do not inherit a merged PR on a reused branch name
feat(vscode): add copy link action to PR comments
marius-kilocode and others added 28 commits September 16, 2026 11:55
fix: reduce chat transcript flicker while a turn streams
…s-kilo-logo

feat(vscode): animate the Kilo logo on hover
fix(agent-manager): make worktree deletion near-instant and reliable
…-limit

fix(jetbrains): match VS Code paste collapse thresholds
Remove the /local-review and /local-review-uncommitted aliases and their static notice paths. Keep /review and its scopes as the single review command.
Remove the KiloClaw feature from every client surface:

- VS Code extension: the sidebar button, native toolbar command, /kiloclaw
  slash command, editor panel provider, and the entire kiloclaw webview.
- CLI/TUI: the /kiloclaw command, chat view, sidebar, autocomplete, origin
  route handling, and the setup/upgrade dialogs.
- Kilo Gateway: the claw Kilo Chat client, exports, and the
  kilo.claw.status and kilo.claw.chatCredentials routes and handlers.
- Server and SDK: the claw HTTP API endpoints, schemas, and regenerated SDK
  types, plus the Kilo Chat URL constants that only served the feature.

Also drops claw i18n keys, README and translation sections, the client
architecture doc entries, source links, duplication allowlist entries, and
adds a major changeset.
Chat transcript search indexed every rendered chunk, so a single query matched hundreds of strings inside bash output, tool inputs, reasoning blocks, file names, and error cards. Search now scans only user and assistant message text through a shared rowSearchText helper. The tool-rendering mirror code and the force-open plumbing it required are removed, including the now unreachable apply_patch forceOpenFile path in kilo-ui.
fix(vscode): default model not persistent after explicit user choice
…sertion

Review follow-up: the question dock id local lost its last reader when the chat-search active-tab tracking was removed, and the markdown-stripping search test now asserts the character range so the stripped-length contract is covered.
refactor(cli): remove deprecated review command aliases
chore: remove dead dev:stats script from root package.json
…ages

fix(vscode): match chat search against message text only
- Restore WorktreeManager.ts from upstream with all new pool APIs
- Add GH export constant to gh.ts module
- Fix marketplace actions to use getClientAsync instead of private client
- Add MarketplaceService instance to KiloProvider
- Fix RemoveConfigItemContext marketplace property
- Remove obsolete createMarketplaceRemover

Core typecheck errors resolved. Remaining webview errors are non-critical.
…op, CommentFormMount

- Add ReasoningDisplay type to config.ts
- Add reasoning_display field to Config interface
- Add PromptMentionDrop type to file-mention-utils.ts
- Add CommentFormActions and CommentFormMount types to review-annotations.ts
- Add baseRefOid and headRefOid to PRTarget interface
- Update PRCommentForm Props to include 'diff' and 'local' actions

Progress: Fixed ~8 webview type errors, 30 remaining.
…essage

- Add virtualize function, EXTREME_DIFF_CHANGED_LINES, MAX_EAGER_DIFF_BYTES to pierre/index.ts
- Add createReviewCommentResult message type to ExtensionMessage
- Add 'diff' and 'local' to Draft.sent type

Progress: 20 webview errors remaining (down from 30).
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
@yunqiqiliang
yunqiqiliang merged commit 6bde634 into main Sep 18, 2026
12 of 18 checks passed
@yunqiqiliang
yunqiqiliang deleted the yunqiqiliang/kilo-opencode-v7.7.3 branch September 18, 2026 03:42
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.

7 participants