From 15b6b465d78a7aab0c369b122dcc994f073f82ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Tue, 24 Feb 2026 15:25:35 +0100 Subject: [PATCH 1/5] fix(kilo-ui): use border-color for text-field focus instead of box-shadow --- packages/kilo-ui/src/components/text-field.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kilo-ui/src/components/text-field.css b/packages/kilo-ui/src/components/text-field.css index 4b9d18e4321..12be2757517 100644 --- a/packages/kilo-ui/src/components/text-field.css +++ b/packages/kilo-ui/src/components/text-field.css @@ -6,7 +6,8 @@ border-radius: 2px; &:focus-within:not(:has([data-readonly])) { - box-shadow: 0 0 0 1px var(--border-focus); + border-color: var(--border-focus); + box-shadow: none; } } From 2c89e60701b16902a5f5c436df21258c97eefc61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Tue, 24 Feb 2026 16:08:21 +0100 Subject: [PATCH 2/5] feat(vscode): add URI handler for session import via vscode://kilocode.kilo-code/s/{sessionId} --- packages/kilo-vscode/src/KiloProvider.ts | 4 ++++ packages/kilo-vscode/src/extension.ts | 14 ++++++++++++++ packages/kilo-vscode/webview-ui/src/App.tsx | 5 +++++ .../kilo-vscode/webview-ui/src/types/messages.ts | 6 ++++++ 4 files changed, 29 insertions(+) diff --git a/packages/kilo-vscode/src/KiloProvider.ts b/packages/kilo-vscode/src/KiloProvider.ts index a7be3ed06ab..1b28f8eeea4 100644 --- a/packages/kilo-vscode/src/KiloProvider.ts +++ b/packages/kilo-vscode/src/KiloProvider.ts @@ -233,6 +233,10 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper void this.handleLoadSessions() } + public openCloudSession(sessionId: string): void { + this.postMessage({ type: "openCloudSession", sessionId }) + } + /** * Attach to a webview that already has its own HTML set. * Sets up message handling and connection without overriding HTML content. diff --git a/packages/kilo-vscode/src/extension.ts b/packages/kilo-vscode/src/extension.ts index 866e495f503..51feb62d0cb 100644 --- a/packages/kilo-vscode/src/extension.ts +++ b/packages/kilo-vscode/src/extension.ts @@ -108,6 +108,20 @@ export function activate(context: vscode.ExtensionContext) { }), ) + // Register URI handler for session imports (vscode://kilocode.kilo-code/s/{sessionId}) + context.subscriptions.push( + vscode.window.registerUriHandler({ + handleUri(uri: vscode.Uri) { + const match = uri.path.match(/^\/s\/(.+)$/) + if (!match) return + const sessionId = match[1] + console.log("[Kilo New] URI handler: opening cloud session:", sessionId) + vscode.commands.executeCommand(`${KiloProvider.viewType}.focus`) + provider.openCloudSession(sessionId) + }, + }), + ) + // Register autocomplete provider registerAutocompleteProvider(context, connectionService) diff --git a/packages/kilo-vscode/webview-ui/src/App.tsx b/packages/kilo-vscode/webview-ui/src/App.tsx index fdbc3c5e71f..ba258500593 100644 --- a/packages/kilo-vscode/webview-ui/src/App.tsx +++ b/packages/kilo-vscode/webview-ui/src/App.tsx @@ -145,6 +145,11 @@ const AppContent: Component = () => { console.log("[Kilo New] App: 🧭 navigate:", message.view) setCurrentView(message.view as ViewType) } + if (message?.type === "openCloudSession" && message.sessionId) { + console.log("[Kilo New] App: ☁️ openCloudSession:", message.sessionId) + session.selectCloudSession(message.sessionId) + setCurrentView("newTask") + } } window.addEventListener("message", handler) onCleanup(() => window.removeEventListener("message", handler)) diff --git a/packages/kilo-vscode/webview-ui/src/types/messages.ts b/packages/kilo-vscode/webview-ui/src/types/messages.ts index 795d8e2a19c..4550b9a7e13 100644 --- a/packages/kilo-vscode/webview-ui/src/types/messages.ts +++ b/packages/kilo-vscode/webview-ui/src/types/messages.ts @@ -437,6 +437,11 @@ export interface CloudSessionImportFailedMessage { error: string } +export interface OpenCloudSessionMessage { + type: "openCloudSession" + sessionId: string +} + export interface ActionMessage { type: "action" action: string @@ -749,6 +754,7 @@ export type ExtensionMessage = | CloudSessionDataLoadedMessage | CloudSessionImportedMessage | CloudSessionImportFailedMessage + | OpenCloudSessionMessage | AgentManagerBranchesMessage | AgentManagerExternalWorktreesMessage | AgentManagerImportResultMessage From 4a86bf8664c9fac116d3c4b71488c1281d73c55b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Tue, 24 Feb 2026 16:28:41 +0100 Subject: [PATCH 3/5] fix(vscode): await focus command before opening cloud session to avoid race condition --- packages/kilo-vscode/src/extension.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kilo-vscode/src/extension.ts b/packages/kilo-vscode/src/extension.ts index 51feb62d0cb..eb6c678e5dd 100644 --- a/packages/kilo-vscode/src/extension.ts +++ b/packages/kilo-vscode/src/extension.ts @@ -111,12 +111,12 @@ export function activate(context: vscode.ExtensionContext) { // Register URI handler for session imports (vscode://kilocode.kilo-code/s/{sessionId}) context.subscriptions.push( vscode.window.registerUriHandler({ - handleUri(uri: vscode.Uri) { + async handleUri(uri: vscode.Uri) { const match = uri.path.match(/^\/s\/(.+)$/) if (!match) return const sessionId = match[1] console.log("[Kilo New] URI handler: opening cloud session:", sessionId) - vscode.commands.executeCommand(`${KiloProvider.viewType}.focus`) + await vscode.commands.executeCommand(`${KiloProvider.viewType}.focus`) provider.openCloudSession(sessionId) }, }), From 6efd4b1d5eca73b6469f701d43de308b7ea47d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Tue, 24 Feb 2026 16:35:40 +0100 Subject: [PATCH 4/5] fix(vscode): tighten session ID regex to alphanumeric chars only --- packages/kilo-vscode/src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kilo-vscode/src/extension.ts b/packages/kilo-vscode/src/extension.ts index eb6c678e5dd..f7f770074c0 100644 --- a/packages/kilo-vscode/src/extension.ts +++ b/packages/kilo-vscode/src/extension.ts @@ -112,7 +112,7 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.window.registerUriHandler({ async handleUri(uri: vscode.Uri) { - const match = uri.path.match(/^\/s\/(.+)$/) + const match = uri.path.match(/^\/s\/([a-zA-Z0-9_-]+)$/) if (!match) return const sessionId = match[1] console.log("[Kilo New] URI handler: opening cloud session:", sessionId) From c5ab4a8a2acad8553ed86ca9294c668ef0665de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Tue, 24 Feb 2026 16:54:33 +0100 Subject: [PATCH 5/5] fix(vscode): update URI path to /kilocode/s/{id} --- packages/kilo-vscode/src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kilo-vscode/src/extension.ts b/packages/kilo-vscode/src/extension.ts index f7f770074c0..def50b5c415 100644 --- a/packages/kilo-vscode/src/extension.ts +++ b/packages/kilo-vscode/src/extension.ts @@ -112,7 +112,7 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.window.registerUriHandler({ async handleUri(uri: vscode.Uri) { - const match = uri.path.match(/^\/s\/([a-zA-Z0-9_-]+)$/) + const match = uri.path.match(/^\/kilocode\/s\/([a-zA-Z0-9_-]+)$/) if (!match) return const sessionId = match[1] console.log("[Kilo New] URI handler: opening cloud session:", sessionId)