From 41995929cd9d0bb33726dca4875cc16cef162630 Mon Sep 17 00:00:00 2001 From: Marius Date: Wed, 25 Feb 2026 19:07:42 +0100 Subject: [PATCH 1/6] fix: resolve diff viewer race condition and add diagnostics for Agent Manager (#6352) * fix: resolve diff viewer race condition and add diagnostics for Agent Manager onRequestWorktreeDiff now awaits stateReady before resolving the diff target, preventing a race where startDiffWatch fires before state loads from disk. Added diagnostic logging to resolveDiffTarget, diff polling, and the server-side /experimental/worktree/diff endpoint so silent failures become visible in the output channel. * fix: guard stateReady await so rejection doesn't break diff polling * docs: clarify why .catch() is required on stateReady await --- .../src/agent-manager/AgentManagerProvider.ts | 33 +++++++++++++++++-- .../src/server/routes/experimental.ts | 26 +++++++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts index 598c0584d43..779ad492cd6 100644 --- a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts +++ b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts @@ -1274,23 +1274,49 @@ export class AgentManagerProvider implements vscode.Disposable { /** Resolve worktree path + parentBranch for a session, or undefined if not applicable. */ private resolveDiffTarget(sessionId: string): { directory: string; baseBranch: string } | undefined { const state = this.getStateManager() - if (!state) return undefined + if (!state) { + this.log(`resolveDiffTarget: no state manager for session ${sessionId}`) + return undefined + } const session = state.getSession(sessionId) - if (!session?.worktreeId) return undefined + if (!session) { + this.log( + `resolveDiffTarget: session ${sessionId} not found in state (${state.getSessions().length} total sessions)`, + ) + return undefined + } + if (!session.worktreeId) { + this.log(`resolveDiffTarget: session ${sessionId} has no worktreeId (local session)`) + return undefined + } const worktree = state.getWorktree(session.worktreeId) - if (!worktree) return undefined + if (!worktree) { + this.log(`resolveDiffTarget: worktree ${session.worktreeId} not found for session ${sessionId}`) + return undefined + } return { directory: worktree.path, baseBranch: worktree.parentBranch } } /** One-shot diff fetch with loading indicators. Used by requestWorktreeDiff. */ private async onRequestWorktreeDiff(sessionId: string): Promise { + // Ensure state is loaded before resolving diff target — avoids race where + // startDiffWatch arrives before initializeState() finishes loading state from disk. + // The .catch() is required: this method is called via `void` (fire-and-forget), + // so an uncaught rejection would become an unhandled promise rejection. On failure + // we log and fall through to resolveDiffTarget which logs the specific reason. + if (this.stateReady) { + await this.stateReady.catch((err) => this.log("stateReady rejected, continuing diff resolve:", err)) + } + const target = this.resolveDiffTarget(sessionId) if (!target) return this.postToWebview({ type: "agentManager.worktreeDiffLoading", sessionId, loading: true }) try { const client = this.connectionService.getHttpClient() + this.log(`Fetching worktree diff for session ${sessionId}: dir=${target.directory}, base=${target.baseBranch}`) const diffs = await client.getWorktreeDiff(target.directory, target.baseBranch) + this.log(`Worktree diff returned ${diffs.length} file(s) for session ${sessionId}`) const hash = diffs.map((d) => `${d.file}:${d.status}:${d.additions}:${d.deletions}:${d.after.length}`).join("|") this.lastDiffHash = hash @@ -1328,6 +1354,7 @@ export class AgentManagerProvider implements vscode.Disposable { this.stopDiffPolling() this.diffSessionId = sessionId this.lastDiffHash = undefined + this.log(`Starting diff polling for session ${sessionId}`) // Initial fetch with loading state void this.onRequestWorktreeDiff(sessionId) diff --git a/packages/opencode/src/server/routes/experimental.ts b/packages/opencode/src/server/routes/experimental.ts index cb4a0a3d7ec..6560ff62ea0 100644 --- a/packages/opencode/src/server/routes/experimental.ts +++ b/packages/opencode/src/server/routes/experimental.ts @@ -13,6 +13,7 @@ import { $ } from "bun" // kilocode_change import path from "path" // kilocode_change import { Snapshot } from "../../snapshot" // kilocode_change import { Review } from "../../kilocode/review/review" // kilocode_change +import { Log } from "../../util/log" // kilocode_change export const ExperimentalRoutes = lazy(() => new Hono() @@ -208,12 +209,23 @@ export const ExperimentalRoutes = lazy(() => }, }), async (c) => { + const log = Log.create({ service: "worktree-diff" }) const base = c.req.query("base") || (await Review.getBaseBranch()) const dir = Instance.directory + log.info("computing diff", { dir, base }) const mergeBaseResult = await $`git merge-base HEAD ${base}`.cwd(dir).quiet().nothrow() - if (mergeBaseResult.exitCode !== 0) return c.json([]) + if (mergeBaseResult.exitCode !== 0) { + log.warn("git merge-base failed", { + exitCode: mergeBaseResult.exitCode, + stderr: mergeBaseResult.stderr.toString().trim(), + dir, + base, + }) + return c.json([]) + } const ancestor = mergeBaseResult.stdout.toString().trim() + log.info("merge-base resolved", { ancestor: ancestor.slice(0, 12) }) const nameStatus = await $`git -c core.quotepath=false diff --name-status --no-renames ${ancestor}` .cwd(dir) @@ -285,7 +297,11 @@ export const ExperimentalRoutes = lazy(() => // viewer shows all working-tree changes, not just tracked ones. const untrackedResult = await $`git ls-files --others --exclude-standard`.cwd(dir).quiet().nothrow() if (untrackedResult.exitCode === 0) { - for (const file of untrackedResult.stdout.toString().trim().split("\n")) { + const untrackedFiles = untrackedResult.stdout.toString().trim() + if (untrackedFiles) { + log.info("untracked files found", { count: untrackedFiles.split("\n").length }) + } + for (const file of untrackedFiles.split("\n")) { if (!file || seen.has(file)) continue const f = Bun.file(path.join(dir, file)) if (!(await f.exists())) continue @@ -300,8 +316,14 @@ export const ExperimentalRoutes = lazy(() => status: "added", }) } + } else { + log.warn("git ls-files failed", { + exitCode: untrackedResult.exitCode, + stderr: untrackedResult.stderr.toString().trim(), + }) } + log.info("diff complete", { totalFiles: diffs.length }) return c.json(diffs) }, ) From 510f864436c2fb8bf17fb708afeb2909d86df88a Mon Sep 17 00:00:00 2001 From: Marius Date: Wed, 25 Feb 2026 19:35:36 +0100 Subject: [PATCH 2/6] fix: use consistent worktree terminology in agent manager dialog (#6357) Rename 'Open Worktree' to 'New Worktree' (dialog title) and 'Create Workspace' to 'Create Worktree' (submit button) across all 16 locales for consistent naming throughout the UI flow. --- packages/kilo-vscode/webview-ui/src/i18n/ar.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/br.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/bs.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/da.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/de.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/en.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/es.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/fr.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/ja.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/ko.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/no.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/pl.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/ru.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/th.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/zh.ts | 4 ++-- packages/kilo-vscode/webview-ui/src/i18n/zht.ts | 4 ++-- 16 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ar.ts b/packages/kilo-vscode/webview-ui/src/i18n/ar.ts index c12f5dc1e75..c0d17765a49 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ar.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ar.ts @@ -987,7 +987,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "؟ سيؤدي هذا إلى إزالة Worktree من القرص وفصل جميع الجلسات.", "agentManager.dialog.deleteWorktree.cancel": "إلغاء", "agentManager.dialog.deleteWorktree.confirm": "حذف", - "agentManager.dialog.openWorktree": "فتح شجرة العمل", + "agentManager.dialog.openWorktree": "شجرة عمل جديدة", "agentManager.dialog.tab.new": "جديد", "agentManager.dialog.tab.import": "استيراد", "agentManager.dialog.namePlaceholder": "اسم Worktree (اختياري)", @@ -1005,7 +1005,7 @@ export const dict = { "agentManager.dialog.compareModels": "مقارنة النماذج", "agentManager.dialog.compareModels.searchModels": "البحث عن النماذج...", "agentManager.dialog.creating": "جارٍ الإنشاء...", - "agentManager.dialog.createWorkspace": "إنشاء مساحة عمل", + "agentManager.dialog.createWorkspace": "إنشاء شجرة العمل", "agentManager.dialog.removeImage": "إزالة الصورة", "agentManager.dialog.advanced": "متقدم...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/br.ts b/packages/kilo-vscode/webview-ui/src/i18n/br.ts index 549f0f222c9..467c2c8ee4d 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/br.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/br.ts @@ -1001,7 +1001,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "? Isso remove o Worktree do disco e desassocia todas as sessões.", "agentManager.dialog.deleteWorktree.cancel": "Cancelar", "agentManager.dialog.deleteWorktree.confirm": "Excluir", - "agentManager.dialog.openWorktree": "Abrir Worktree", + "agentManager.dialog.openWorktree": "Novo Worktree", "agentManager.dialog.tab.new": "Novo", "agentManager.dialog.tab.import": "Importar", "agentManager.dialog.namePlaceholder": "Nome do Worktree (opcional)", @@ -1019,7 +1019,7 @@ export const dict = { "agentManager.dialog.compareModels": "Comparar Modelos", "agentManager.dialog.compareModels.searchModels": "Pesquisar modelos...", "agentManager.dialog.creating": "Criando...", - "agentManager.dialog.createWorkspace": "Criar Workspace", + "agentManager.dialog.createWorkspace": "Criar Worktree", "agentManager.dialog.removeImage": "Remover imagem", "agentManager.dialog.advanced": "Avançado...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/bs.ts b/packages/kilo-vscode/webview-ui/src/i18n/bs.ts index 9c7cbd3c743..2dab04d031d 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/bs.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/bs.ts @@ -1023,7 +1023,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "? Ovo uklanja Worktree sa diska i odvezuje sve sesije.", "agentManager.dialog.deleteWorktree.cancel": "Otkaži", "agentManager.dialog.deleteWorktree.confirm": "Obriši", - "agentManager.dialog.openWorktree": "Otvori worktree", + "agentManager.dialog.openWorktree": "Novi worktree", "agentManager.dialog.tab.new": "Novo", "agentManager.dialog.tab.import": "Uvezi", "agentManager.dialog.namePlaceholder": "Naziv Worktree-a (opcionalno)", @@ -1041,7 +1041,7 @@ export const dict = { "agentManager.dialog.compareModels": "Uporedi modele", "agentManager.dialog.compareModels.searchModels": "Pretraži modele...", "agentManager.dialog.creating": "Kreiranje...", - "agentManager.dialog.createWorkspace": "Kreiraj radni prostor", + "agentManager.dialog.createWorkspace": "Kreiraj worktree", "agentManager.dialog.removeImage": "Ukloni sliku", "agentManager.dialog.advanced": "Napredno...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/da.ts b/packages/kilo-vscode/webview-ui/src/i18n/da.ts index 70de55842cf..21a034f6553 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/da.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/da.ts @@ -996,7 +996,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "? Dette fjerner Worktree fra disken og afkobler alle sessioner.", "agentManager.dialog.deleteWorktree.cancel": "Annuller", "agentManager.dialog.deleteWorktree.confirm": "Slet", - "agentManager.dialog.openWorktree": "Åbn Worktree", + "agentManager.dialog.openWorktree": "Ny Worktree", "agentManager.dialog.tab.new": "Ny", "agentManager.dialog.tab.import": "Importér", "agentManager.dialog.namePlaceholder": "Worktree-navn (valgfrit)", @@ -1014,7 +1014,7 @@ export const dict = { "agentManager.dialog.compareModels": "Sammenlign modeller", "agentManager.dialog.compareModels.searchModels": "Søg modeller...", "agentManager.dialog.creating": "Opretter...", - "agentManager.dialog.createWorkspace": "Opret Workspace", + "agentManager.dialog.createWorkspace": "Opret Worktree", "agentManager.dialog.removeImage": "Fjern billede", "agentManager.dialog.advanced": "Avanceret...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/de.ts b/packages/kilo-vscode/webview-ui/src/i18n/de.ts index 1e7c3561ec1..cb5087ae30e 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/de.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/de.ts @@ -1010,7 +1010,7 @@ export const dict = { "? Dies entfernt den Worktree von der Festplatte und trennt alle Sitzungen.", "agentManager.dialog.deleteWorktree.cancel": "Abbrechen", "agentManager.dialog.deleteWorktree.confirm": "Löschen", - "agentManager.dialog.openWorktree": "Worktree öffnen", + "agentManager.dialog.openWorktree": "Neuer Worktree", "agentManager.dialog.tab.new": "Neu", "agentManager.dialog.tab.import": "Importieren", "agentManager.dialog.namePlaceholder": "Worktree-Name (optional)", @@ -1028,7 +1028,7 @@ export const dict = { "agentManager.dialog.compareModels": "Modelle vergleichen", "agentManager.dialog.compareModels.searchModels": "Modelle suchen...", "agentManager.dialog.creating": "Wird erstellt...", - "agentManager.dialog.createWorkspace": "Arbeitsbereich erstellen", + "agentManager.dialog.createWorkspace": "Worktree erstellen", "agentManager.dialog.removeImage": "Bild entfernen", "agentManager.dialog.advanced": "Erweitert...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/en.ts b/packages/kilo-vscode/webview-ui/src/i18n/en.ts index 18973b47b1d..e0bd15afc4d 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/en.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/en.ts @@ -1052,7 +1052,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.cancel": "Cancel", "agentManager.dialog.deleteWorktree.confirm": "Delete", - "agentManager.dialog.openWorktree": "Open Worktree", + "agentManager.dialog.openWorktree": "New Worktree", "agentManager.dialog.tab.new": "New", "agentManager.dialog.tab.import": "Import", "agentManager.dialog.namePlaceholder": "Worktree name (optional)", @@ -1070,7 +1070,7 @@ export const dict = { "agentManager.dialog.compareModels": "Compare Models", "agentManager.dialog.compareModels.searchModels": "Search models...", "agentManager.dialog.creating": "Creating...", - "agentManager.dialog.createWorkspace": "Create Workspace", + "agentManager.dialog.createWorkspace": "Create Worktree", "agentManager.dialog.removeImage": "Remove image", "agentManager.dialog.advanced": "Advanced...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/es.ts b/packages/kilo-vscode/webview-ui/src/i18n/es.ts index 5aa2a8d1f52..73dd796a968 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/es.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/es.ts @@ -1004,7 +1004,7 @@ export const dict = { "? Esto elimina el Worktree del disco y desasocia todas las sesiones.", "agentManager.dialog.deleteWorktree.cancel": "Cancelar", "agentManager.dialog.deleteWorktree.confirm": "Eliminar", - "agentManager.dialog.openWorktree": "Abrir Worktree", + "agentManager.dialog.openWorktree": "Nuevo Worktree", "agentManager.dialog.tab.new": "Nuevo", "agentManager.dialog.tab.import": "Importar", "agentManager.dialog.namePlaceholder": "Nombre del Worktree (opcional)", @@ -1022,7 +1022,7 @@ export const dict = { "agentManager.dialog.compareModels": "Comparar modelos", "agentManager.dialog.compareModels.searchModels": "Buscar modelos...", "agentManager.dialog.creating": "Creando...", - "agentManager.dialog.createWorkspace": "Crear Workspace", + "agentManager.dialog.createWorkspace": "Crear Worktree", "agentManager.dialog.removeImage": "Eliminar imagen", "agentManager.dialog.advanced": "Avanzado...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/fr.ts b/packages/kilo-vscode/webview-ui/src/i18n/fr.ts index ab8d2d368b8..6a811ba301f 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/fr.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/fr.ts @@ -1012,7 +1012,7 @@ export const dict = { " ? Cela supprime le Worktree du disque et dissocie toutes les sessions.", "agentManager.dialog.deleteWorktree.cancel": "Annuler", "agentManager.dialog.deleteWorktree.confirm": "Supprimer", - "agentManager.dialog.openWorktree": "Ouvrir le worktree", + "agentManager.dialog.openWorktree": "Nouveau worktree", "agentManager.dialog.tab.new": "Nouveau", "agentManager.dialog.tab.import": "Importer", "agentManager.dialog.namePlaceholder": "Nom du Worktree (optionnel)", @@ -1030,7 +1030,7 @@ export const dict = { "agentManager.dialog.compareModels": "Comparer les modèles", "agentManager.dialog.compareModels.searchModels": "Rechercher des modèles...", "agentManager.dialog.creating": "Création...", - "agentManager.dialog.createWorkspace": "Créer un espace de travail", + "agentManager.dialog.createWorkspace": "Créer un worktree", "agentManager.dialog.removeImage": "Supprimer l'image", "agentManager.dialog.advanced": "Avancé...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ja.ts b/packages/kilo-vscode/webview-ui/src/i18n/ja.ts index 71b4f50f465..94adf6d17f0 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ja.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ja.ts @@ -992,7 +992,7 @@ export const dict = { "? ディスクからWorktreeを削除し、すべてのセッションの関連付けを解除します。", "agentManager.dialog.deleteWorktree.cancel": "キャンセル", "agentManager.dialog.deleteWorktree.confirm": "削除", - "agentManager.dialog.openWorktree": "ワークツリーを開く", + "agentManager.dialog.openWorktree": "新規ワークツリー", "agentManager.dialog.tab.new": "新規", "agentManager.dialog.tab.import": "インポート", "agentManager.dialog.namePlaceholder": "Worktree名(任意)", @@ -1010,7 +1010,7 @@ export const dict = { "agentManager.dialog.compareModels": "モデルを比較", "agentManager.dialog.compareModels.searchModels": "モデルを検索...", "agentManager.dialog.creating": "作成中...", - "agentManager.dialog.createWorkspace": "ワークスペースを作成", + "agentManager.dialog.createWorkspace": "ワークツリーを作成", "agentManager.dialog.removeImage": "画像を削除", "agentManager.dialog.advanced": "詳細...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ko.ts b/packages/kilo-vscode/webview-ui/src/i18n/ko.ts index aa50d554cc7..64cb750d981 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ko.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ko.ts @@ -992,7 +992,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "? 디스크에서 Worktree를 제거하고 모든 세션의 연결을 해제합니다.", "agentManager.dialog.deleteWorktree.cancel": "취소", "agentManager.dialog.deleteWorktree.confirm": "삭제", - "agentManager.dialog.openWorktree": "워크트리 열기", + "agentManager.dialog.openWorktree": "새 워크트리", "agentManager.dialog.tab.new": "새로 만들기", "agentManager.dialog.tab.import": "가져오기", "agentManager.dialog.namePlaceholder": "Worktree 이름 (선택사항)", @@ -1010,7 +1010,7 @@ export const dict = { "agentManager.dialog.compareModels": "모델 비교", "agentManager.dialog.compareModels.searchModels": "모델 검색...", "agentManager.dialog.creating": "생성 중...", - "agentManager.dialog.createWorkspace": "워크스페이스 생성", + "agentManager.dialog.createWorkspace": "워크트리 생성", "agentManager.dialog.removeImage": "이미지 제거", "agentManager.dialog.advanced": "고급...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/no.ts b/packages/kilo-vscode/webview-ui/src/i18n/no.ts index a115bf3069a..18b9b50365e 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/no.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/no.ts @@ -997,7 +997,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "? Dette fjerner Worktree fra disken og kobler fra alle økter.", "agentManager.dialog.deleteWorktree.cancel": "Avbryt", "agentManager.dialog.deleteWorktree.confirm": "Slett", - "agentManager.dialog.openWorktree": "Åpne worktree", + "agentManager.dialog.openWorktree": "Ny worktree", "agentManager.dialog.tab.new": "Ny", "agentManager.dialog.tab.import": "Importer", "agentManager.dialog.namePlaceholder": "Worktree-navn (valgfritt)", @@ -1015,7 +1015,7 @@ export const dict = { "agentManager.dialog.compareModels": "Sammenlign modeller", "agentManager.dialog.compareModels.searchModels": "Søk modeller...", "agentManager.dialog.creating": "Oppretter...", - "agentManager.dialog.createWorkspace": "Opprett arbeidsområde", + "agentManager.dialog.createWorkspace": "Opprett worktree", "agentManager.dialog.removeImage": "Fjern bilde", "agentManager.dialog.advanced": "Avansert...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/pl.ts b/packages/kilo-vscode/webview-ui/src/i18n/pl.ts index 4f8a3b0d908..d36918d5651 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/pl.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/pl.ts @@ -999,7 +999,7 @@ export const dict = { "? Spowoduje to usunięcie Worktree z dysku i odłączenie wszystkich sesji.", "agentManager.dialog.deleteWorktree.cancel": "Anuluj", "agentManager.dialog.deleteWorktree.confirm": "Usuń", - "agentManager.dialog.openWorktree": "Otwórz Worktree", + "agentManager.dialog.openWorktree": "Nowy Worktree", "agentManager.dialog.tab.new": "Nowy", "agentManager.dialog.tab.import": "Importuj", "agentManager.dialog.namePlaceholder": "Nazwa Worktree (opcjonalnie)", @@ -1017,7 +1017,7 @@ export const dict = { "agentManager.dialog.compareModels": "Porównaj modele", "agentManager.dialog.compareModels.searchModels": "Szukaj modeli...", "agentManager.dialog.creating": "Tworzenie...", - "agentManager.dialog.createWorkspace": "Utwórz Workspace", + "agentManager.dialog.createWorkspace": "Utwórz Worktree", "agentManager.dialog.removeImage": "Usuń obraz", "agentManager.dialog.advanced": "Zaawansowane...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ru.ts b/packages/kilo-vscode/webview-ui/src/i18n/ru.ts index 980defa3567..fc59be2360c 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/ru.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/ru.ts @@ -1000,7 +1000,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "? Это удалит Worktree с диска и отключит все сессии.", "agentManager.dialog.deleteWorktree.cancel": "Отмена", "agentManager.dialog.deleteWorktree.confirm": "Удалить", - "agentManager.dialog.openWorktree": "Открыть worktree", + "agentManager.dialog.openWorktree": "Новый worktree", "agentManager.dialog.tab.new": "Новый", "agentManager.dialog.tab.import": "Импорт", "agentManager.dialog.namePlaceholder": "Имя Worktree (необязательно)", @@ -1018,7 +1018,7 @@ export const dict = { "agentManager.dialog.compareModels": "Сравнить модели", "agentManager.dialog.compareModels.searchModels": "Поиск моделей...", "agentManager.dialog.creating": "Создание...", - "agentManager.dialog.createWorkspace": "Создать рабочее пространство", + "agentManager.dialog.createWorkspace": "Создать worktree", "agentManager.dialog.removeImage": "Удалить изображение", "agentManager.dialog.advanced": "Дополнительно...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/th.ts b/packages/kilo-vscode/webview-ui/src/i18n/th.ts index b07e0200470..55c29e2b002 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/th.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/th.ts @@ -985,7 +985,7 @@ export const dict = { "? การดำเนินการนี้จะลบ Worktree ออกจากดิสก์และยกเลิกการเชื่อมโยงเซสชันทั้งหมด", "agentManager.dialog.deleteWorktree.cancel": "ยกเลิก", "agentManager.dialog.deleteWorktree.confirm": "ลบ", - "agentManager.dialog.openWorktree": "เปิด Worktree", + "agentManager.dialog.openWorktree": "Worktree ใหม่", "agentManager.dialog.tab.new": "ใหม่", "agentManager.dialog.tab.import": "นำเข้า", "agentManager.dialog.namePlaceholder": "ชื่อ Worktree (ไม่บังคับ)", @@ -1003,7 +1003,7 @@ export const dict = { "agentManager.dialog.compareModels": "เปรียบเทียบโมเดล", "agentManager.dialog.compareModels.searchModels": "ค้นหาโมเดล...", "agentManager.dialog.creating": "กำลังสร้าง...", - "agentManager.dialog.createWorkspace": "สร้าง Workspace", + "agentManager.dialog.createWorkspace": "สร้าง Worktree", "agentManager.dialog.removeImage": "ลบรูปภาพ", "agentManager.dialog.advanced": "ขั้นสูง...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/zh.ts b/packages/kilo-vscode/webview-ui/src/i18n/zh.ts index e86839c6b2a..2809f807591 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/zh.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/zh.ts @@ -987,7 +987,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "?这将从磁盘中移除 Worktree 并取消所有会话的关联。", "agentManager.dialog.deleteWorktree.cancel": "取消", "agentManager.dialog.deleteWorktree.confirm": "删除", - "agentManager.dialog.openWorktree": "打开工作树", + "agentManager.dialog.openWorktree": "新建工作树", "agentManager.dialog.tab.new": "新建", "agentManager.dialog.tab.import": "导入", "agentManager.dialog.namePlaceholder": "Worktree 名称(可选)", @@ -1005,7 +1005,7 @@ export const dict = { "agentManager.dialog.compareModels": "比较模型", "agentManager.dialog.compareModels.searchModels": "搜索模型...", "agentManager.dialog.creating": "创建中...", - "agentManager.dialog.createWorkspace": "创建工作区", + "agentManager.dialog.createWorkspace": "创建工作树", "agentManager.dialog.removeImage": "移除图片", "agentManager.dialog.advanced": "高级...", diff --git a/packages/kilo-vscode/webview-ui/src/i18n/zht.ts b/packages/kilo-vscode/webview-ui/src/i18n/zht.ts index ecf49dc545c..6dc2fa9077e 100644 --- a/packages/kilo-vscode/webview-ui/src/i18n/zht.ts +++ b/packages/kilo-vscode/webview-ui/src/i18n/zht.ts @@ -983,7 +983,7 @@ export const dict = { "agentManager.dialog.deleteWorktree.messagePost": "?這將從磁碟中移除 Worktree 並取消所有工作階段的關聯。", "agentManager.dialog.deleteWorktree.cancel": "取消", "agentManager.dialog.deleteWorktree.confirm": "刪除", - "agentManager.dialog.openWorktree": "開啟工作樹", + "agentManager.dialog.openWorktree": "新建工作樹", "agentManager.dialog.tab.new": "新建", "agentManager.dialog.tab.import": "匯入", "agentManager.dialog.namePlaceholder": "Worktree 名稱(選填)", @@ -1001,7 +1001,7 @@ export const dict = { "agentManager.dialog.compareModels": "比較模型", "agentManager.dialog.compareModels.searchModels": "搜尋模型...", "agentManager.dialog.creating": "建立中...", - "agentManager.dialog.createWorkspace": "建立工作區", + "agentManager.dialog.createWorkspace": "建立工作樹", "agentManager.dialog.removeImage": "移除圖片", "agentManager.dialog.advanced": "進階...", From 24c9ac42cd4270bb8299bd9f704c604e194dcc98 Mon Sep 17 00:00:00 2001 From: Marius Date: Wed, 25 Feb 2026 19:35:43 +0100 Subject: [PATCH 3/6] fix: preserve scroll position in agent-manager diff viewer when comments change (#6358) Pierre destroys and rebuilds the DOM on annotation changes, resetting scrollTop. Wrap all comment mutations (add, update, delete, cancel draft, send all) with a preserveScroll helper that captures and restores the scroll position across animation frames. --- .../webview-ui/agent-manager/DiffPanel.tsx | 60 ++++++++++++++----- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/packages/kilo-vscode/webview-ui/agent-manager/DiffPanel.tsx b/packages/kilo-vscode/webview-ui/agent-manager/DiffPanel.tsx index 2a8a8120191..58d3b7ded91 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/DiffPanel.tsx +++ b/packages/kilo-vscode/webview-ui/agent-manager/DiffPanel.tsx @@ -65,6 +65,34 @@ export const DiffPanel: Component = (props) => { // so pierre's annotation cache doesn't invalidate and destroy the textarea let draftMeta: AnnotationMeta | null = null + // Ref to the scrollable container — used to preserve scroll position when + // annotation changes cause pierre to fully re-render diffs + let scroller: HTMLDivElement | undefined + + // Run a callback while preserving the scroll position of the diff container. + // Pierre destroys and rebuilds the DOM on annotation changes (via innerHTML = ""), + // which resets scrollTop. We capture it before the update and restore it across + // two animation frames to account for the async shadow-DOM render of . + const preserveScroll = (fn: () => void) => { + const el = scroller + if (!el) return fn() + const top = el.scrollTop + fn() + requestAnimationFrame(() => { + el.scrollTop = top + requestAnimationFrame(() => { + el.scrollTop = top + }) + }) + } + + const cancelDraft = () => { + preserveScroll(() => { + setDraft(null) + draftMeta = null + }) + } + // Auto-open files when diffs arrive createEffect( on( @@ -78,20 +106,26 @@ export const DiffPanel: Component = (props) => { // --- CRUD --- const addComment = (file: string, side: AnnotationSide, line: number, text: string, selectedText: string) => { - const id = `c-${++nextId}-${Date.now()}` - setComments((prev) => [...prev, { id, file, side, line, comment: text, selectedText }]) - setDraft(null) - draftMeta = null + preserveScroll(() => { + const id = `c-${++nextId}-${Date.now()}` + setComments((prev) => [...prev, { id, file, side, line, comment: text, selectedText }]) + setDraft(null) + draftMeta = null + }) } const updateComment = (id: string, text: string) => { - setComments((prev) => prev.map((c) => (c.id === id ? { ...c, comment: text } : c))) - setEditing(null) + preserveScroll(() => { + setComments((prev) => prev.map((c) => (c.id === id ? { ...c, comment: text } : c))) + setEditing(null) + }) } const deleteComment = (id: string) => { - setComments((prev) => prev.filter((c) => c.id !== id)) - if (editing() === id) setEditing(null) + preserveScroll(() => { + setComments((prev) => prev.filter((c) => c.id !== id)) + if (editing() === id) setEditing(null) + }) } // --- Per-file memoized annotations --- @@ -192,8 +226,7 @@ export const DiffPanel: Component = (props) => { } cancelBtn.addEventListener("click", (e) => { e.stopPropagation() - setDraft(null) - draftMeta = null + cancelDraft() }) submitBtn.addEventListener("click", (e) => { e.stopPropagation() @@ -202,8 +235,7 @@ export const DiffPanel: Component = (props) => { textarea.addEventListener("keydown", (e) => { if (e.key === "Escape") { e.preventDefault() - setDraft(null) - draftMeta = null + cancelDraft() } if (e.key === "Enter" && !e.shiftKey) { e.preventDefault() @@ -347,7 +379,7 @@ export const DiffPanel: Component = (props) => { } const text = lines.join("\n") window.dispatchEvent(new MessageEvent("message", { data: { type: "appendChatBoxMessage", text } })) - setComments([]) + preserveScroll(() => setComments([])) } return ( @@ -371,7 +403,7 @@ export const DiffPanel: Component = (props) => { 0}> -
+
{(diff) => { From c9e4a8295723ef5a95203e11aac029cb99e214c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Catriel=20M=C3=BCller?= Date: Wed, 25 Feb 2026 15:59:59 -0300 Subject: [PATCH 4/6] refactor: publish vscode marketplace --- packages/kilo-vscode/script/publish.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kilo-vscode/script/publish.ts b/packages/kilo-vscode/script/publish.ts index e975feb6037..f4d20b1bfc6 100755 --- a/packages/kilo-vscode/script/publish.ts +++ b/packages/kilo-vscode/script/publish.ts @@ -29,9 +29,9 @@ console.log(`\nFound ${vsixFiles.length} VSIX files`) for (const target of targets) { const vsixPath = join(outDir, `kilo-vscode-${target}.vsix`) - // console.log(`\n🚀 Publishing ${target} to VS Code Marketplace...`) - // await $`vsce publish --pre-release --packagePath ${vsixPath}` - // console.log(` ✅ Published ${target} to VS Code Marketplace`) + console.log(`\n🚀 Publishing ${target} to VS Code Marketplace...`) + await $`vsce publish --pre-release --packagePath ${vsixPath}` + console.log(` ✅ Published ${target} to VS Code Marketplace`) // Note: Open VSX publishing is commented out as it doesn't support prereleases // console.log(`\n📤 Publishing ${target} to Open VSX...`) From 57b88d4d0b7125f429a778e361eef0e6953a27e8 Mon Sep 17 00:00:00 2001 From: Kevin van Dijk Date: Wed, 25 Feb 2026 20:22:58 +0100 Subject: [PATCH 5/6] Add missing marketplace metadata --- packages/kilo-vscode/package.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/kilo-vscode/package.json b/packages/kilo-vscode/package.json index c0c52620288..bb416040520 100644 --- a/packages/kilo-vscode/package.json +++ b/packages/kilo-vscode/package.json @@ -4,6 +4,10 @@ "description": "Open Source AI coding agent that generates code from natural language, automates tasks, and runs terminal commands. Features inline autocomplete, browser automation, automated refactoring, and custom modes for planning, coding, and debugging. Supports 500+ AI models including Claude (Anthropic), Gemini, Grok, GPT, Codex and GLM.", "version": "7.0.29", "icon": "assets/icons/logo-outline-black.png", + "galleryBanner": { + "color": "#FFFFFF", + "theme": "light" + }, "publisher": "kilocode", "repository": { "type": "git", @@ -13,8 +17,32 @@ "engines": { "vscode": "^1.108.0" }, + "author": { + "name": "Kilo Code" + }, "categories": [ - "Other" + "AI", + "Chat", + "Programming Languages", + "Education", + "Snippets", + "Testing" + ], + "keywords": [ + "kilo", + "claude", + "dev", + "mcp", + "openrouter", + "coding", + "agent", + "autonomous", + "chatgpt", + "sonnet", + "ai", + "llama", + "Kilo Code", + "kilocode" ], "activationEvents": [], "main": "./dist/extension.js", From e44534e28e4eebd0f1ff88bdd175f1560e4d5e40 Mon Sep 17 00:00:00 2001 From: "kilo-maintainer[bot]" Date: Wed, 25 Feb 2026 19:52:06 +0000 Subject: [PATCH 6/6] release: v7.0.30 --- bun.lock | 28 +++++++++++++------------- package.json | 2 +- packages/app/package.json | 2 +- packages/desktop/package.json | 2 +- packages/extensions/zed/extension.toml | 12 +++++------ packages/kilo-docs/package.json | 2 +- packages/kilo-gateway/package.json | 2 +- packages/kilo-i18n/package.json | 2 +- packages/kilo-telemetry/package.json | 2 +- packages/kilo-ui/package.json | 2 +- packages/kilo-vscode/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/script/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/ui/package.json | 2 +- packages/util/package.json | 2 +- script/upstream/package.json | 2 +- sdks/vscode/package.json | 2 +- 19 files changed, 37 insertions(+), 37 deletions(-) diff --git a/bun.lock b/bun.lock index 6cbd6461acb..2735961c508 100644 --- a/bun.lock +++ b/bun.lock @@ -25,7 +25,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@kilocode/kilo-i18n": "workspace:*", "@kilocode/kilo-ui": "workspace:*", @@ -77,7 +77,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@opencode-ai/app": "workspace:*", "@opencode-ai/ui": "workspace:*", @@ -110,7 +110,7 @@ }, "packages/kilo-docs": { "name": "@kilocode/kilo-docs", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@docsearch/css": "^4", "@docsearch/js": "^4", @@ -138,7 +138,7 @@ }, "packages/kilo-gateway": { "name": "@kilocode/kilo-gateway", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@clack/prompts": "1.0.0-alpha.1", "@kilocode/plugin": "workspace:*", @@ -170,7 +170,7 @@ }, "packages/kilo-i18n": { "name": "@kilocode/kilo-i18n", - "version": "7.0.29", + "version": "7.0.30", "devDependencies": { "@tsconfig/node22": "catalog:", "@types/bun": "catalog:", @@ -180,7 +180,7 @@ }, "packages/kilo-telemetry": { "name": "@kilocode/kilo-telemetry", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@kilocode/kilo-gateway": "workspace:*", "@opentelemetry/api": "1.9.0", @@ -200,7 +200,7 @@ }, "packages/kilo-ui": { "name": "@kilocode/kilo-ui", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@kobalte/core": "0.13.11", }, @@ -223,7 +223,7 @@ }, "packages/kilo-vscode": { "name": "kilo-code", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@anthropic-ai/sdk": "^0.39.0", "@kilocode/kilo-i18n": "workspace:*", @@ -267,7 +267,7 @@ }, "packages/opencode": { "name": "@kilocode/cli", - "version": "7.0.29", + "version": "7.0.30", "bin": { "opencode": "./bin/opencode", }, @@ -384,7 +384,7 @@ }, "packages/plugin": { "name": "@kilocode/plugin", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@kilocode/sdk": "workspace:*", "zod": "catalog:", @@ -398,14 +398,14 @@ }, "packages/script": { "name": "@opencode-ai/script", - "version": "7.0.29", + "version": "7.0.30", "devDependencies": { "@types/bun": "catalog:", }, }, "packages/sdk/js": { "name": "@kilocode/sdk", - "version": "7.0.29", + "version": "7.0.30", "devDependencies": { "@hey-api/openapi-ts": "0.90.10", "@tsconfig/node22": "catalog:", @@ -416,7 +416,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "@kilocode/sdk": "workspace:*", "@kobalte/core": "catalog:", @@ -458,7 +458,7 @@ }, "packages/util": { "name": "@opencode-ai/util", - "version": "7.0.29", + "version": "7.0.30", "dependencies": { "zod": "catalog:", }, diff --git a/package.json b/package.json index d259f0a5196..004e5986b32 100644 --- a/package.json +++ b/package.json @@ -107,6 +107,6 @@ "@openrouter/ai-sdk-provider@1.5.4": "patches/@openrouter%2Fai-sdk-provider@1.5.4.patch", "ghostty-web@0.3.0": "patches/ghostty-web@0.3.0.patch" }, - "version": "7.0.29", + "version": "7.0.30", "peerDependencies": {} } diff --git a/packages/app/package.json b/packages/app/package.json index f12d18e0155..98807f6fb0a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "7.0.29", + "version": "7.0.30", "description": "", "type": "module", "exports": { diff --git a/packages/desktop/package.json b/packages/desktop/package.json index b74d0385913..c572ae131f1 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/extensions/zed/extension.toml b/packages/extensions/zed/extension.toml index 0d3ba1f4696..32cd51182a2 100644 --- a/packages/extensions/zed/extension.toml +++ b/packages/extensions/zed/extension.toml @@ -1,7 +1,7 @@ id = "kilo" name = "Kilo" description = "The open source coding agent." -version = "7.0.29" +version = "7.0.30" schema_version = 1 authors = ["Anomaly"] repository = "https://github.com/Kilo-Org/kilocode" @@ -11,26 +11,26 @@ name = "Kilo" icon = "./icons/opencode.svg" [agent_servers.opencode.targets.darwin-aarch64] -archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.29/opencode-darwin-arm64.zip" +archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.30/opencode-darwin-arm64.zip" cmd = "./opencode" args = ["acp"] [agent_servers.opencode.targets.darwin-x86_64] -archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.29/opencode-darwin-x64.zip" +archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.30/opencode-darwin-x64.zip" cmd = "./opencode" args = ["acp"] [agent_servers.opencode.targets.linux-aarch64] -archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.29/opencode-linux-arm64.tar.gz" +archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.30/opencode-linux-arm64.tar.gz" cmd = "./opencode" args = ["acp"] [agent_servers.opencode.targets.linux-x86_64] -archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.29/opencode-linux-x64.tar.gz" +archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.30/opencode-linux-x64.tar.gz" cmd = "./opencode" args = ["acp"] [agent_servers.opencode.targets.windows-x86_64] -archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.29/opencode-windows-x64.zip" +archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.30/opencode-windows-x64.zip" cmd = "./opencode.exe" args = ["acp"] diff --git a/packages/kilo-docs/package.json b/packages/kilo-docs/package.json index c7f1b8e1558..527772d97e7 100644 --- a/packages/kilo-docs/package.json +++ b/packages/kilo-docs/package.json @@ -1,6 +1,6 @@ { "name": "@kilocode/kilo-docs", - "version": "7.0.29", + "version": "7.0.30", "private": true, "scripts": { "dev": "next dev --webpack --port 3002", diff --git a/packages/kilo-gateway/package.json b/packages/kilo-gateway/package.json index 6acff3425c8..60affaacc0a 100644 --- a/packages/kilo-gateway/package.json +++ b/packages/kilo-gateway/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@kilocode/kilo-gateway", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "description": "Unified Kilo Gateway package for OpenCode - authentication, provider, and API integration", diff --git a/packages/kilo-i18n/package.json b/packages/kilo-i18n/package.json index 17644b18437..b49a0a93cdd 100644 --- a/packages/kilo-i18n/package.json +++ b/packages/kilo-i18n/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@kilocode/kilo-i18n", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "description": "Kilo-specific i18n translations and overrides", diff --git a/packages/kilo-telemetry/package.json b/packages/kilo-telemetry/package.json index de0c9990454..14b58732ec0 100644 --- a/packages/kilo-telemetry/package.json +++ b/packages/kilo-telemetry/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@kilocode/kilo-telemetry", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "description": "Telemetry for Kilo CLI - PostHog analytics integration", diff --git a/packages/kilo-ui/package.json b/packages/kilo-ui/package.json index e6bcce25cb1..54af28c6733 100644 --- a/packages/kilo-ui/package.json +++ b/packages/kilo-ui/package.json @@ -1,6 +1,6 @@ { "name": "@kilocode/kilo-ui", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "exports": { diff --git a/packages/kilo-vscode/package.json b/packages/kilo-vscode/package.json index bb416040520..d86c37db96d 100644 --- a/packages/kilo-vscode/package.json +++ b/packages/kilo-vscode/package.json @@ -2,7 +2,7 @@ "name": "kilo-code", "displayName": "Kilo Code: AI Coding Agent, Copilot, and Autocomplete", "description": "Open Source AI coding agent that generates code from natural language, automates tasks, and runs terminal commands. Features inline autocomplete, browser automation, automated refactoring, and custom modes for planning, coding, and debugging. Supports 500+ AI models including Claude (Anthropic), Gemini, Grok, GPT, Codex and GLM.", - "version": "7.0.29", + "version": "7.0.30", "icon": "assets/icons/logo-outline-black.png", "galleryBanner": { "color": "#FFFFFF", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index d782b254e6e..2d20affcda9 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "7.0.29", + "version": "7.0.30", "name": "@kilocode/cli", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 8ab6a52e0f0..a793f75c997 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@kilocode/plugin", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "repository": { diff --git a/packages/script/package.json b/packages/script/package.json index 9eab9e09506..9484f1ba285 100644 --- a/packages/script/package.json +++ b/packages/script/package.json @@ -8,7 +8,7 @@ "exports": { ".": "./src/index.ts" }, - "version": "7.0.29", + "version": "7.0.30", "dependencies": {}, "peerDependencies": {} } diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 390b35570f1..9f9fbe965f5 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@kilocode/sdk", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "repository": { diff --git a/packages/ui/package.json b/packages/ui/package.json index e7a286c6a1c..5a01106586d 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "7.0.29", + "version": "7.0.30", "type": "module", "license": "MIT", "exports": { diff --git a/packages/util/package.json b/packages/util/package.json index b8624267a1f..7fdb52470b0 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/util", - "version": "7.0.29", + "version": "7.0.30", "private": true, "type": "module", "license": "MIT", diff --git a/script/upstream/package.json b/script/upstream/package.json index d5f11acf731..5dbd387703f 100644 --- a/script/upstream/package.json +++ b/script/upstream/package.json @@ -1,6 +1,6 @@ { "name": "@kilocode/upstream-merge", - "version": "7.0.29", + "version": "7.0.30", "private": true, "type": "module", "description": "Scripts for automating upstream opencode merges into Kilo", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index db6ed8f1dc7..9046d130e0b 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "7.0.29", + "version": "7.0.30", "publisher": "sst-dev", "repository": { "type": "git",