From b7f44fbe98b31e8428aeb4efeb46d421943a5fca Mon Sep 17 00:00:00 2001
From: Bernardo Ferrari
Date: Tue, 17 Feb 2026 00:51:15 -0300
Subject: [PATCH 1/4] feat(webview): redesign profile tab
---
.../webview-ui/src/components/ProfileView.tsx | 452 ++++++++++++++----
.../kilo-vscode/webview-ui/src/i18n/en.ts | 17 +
2 files changed, 374 insertions(+), 95 deletions(-)
diff --git a/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx b/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
index 18a1d1325e..7393e3e6e7 100644
--- a/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
+++ b/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
@@ -1,4 +1,4 @@
-import { Component, Show, createSignal, createMemo, createEffect, onMount } from "solid-js"
+import { Component, Show, For, createSignal, createMemo, createEffect, onMount } from "solid-js"
import { Button } from "@kilocode/kilo-ui/button"
import { Card } from "@kilocode/kilo-ui/card"
import { Select } from "@kilocode/kilo-ui/select"
@@ -14,6 +14,7 @@ export interface ProfileViewProps {
profileData: ProfileData | null | undefined
deviceAuth: DeviceAuthState
onLogin: () => void
+ onDone?: () => void
}
const formatBalance = (amount: number): string => {
@@ -21,6 +22,13 @@ const formatBalance = (amount: number): string => {
}
const PERSONAL = "personal"
+const APP_BASE_URL = "https://app.kilo.ai"
+const CREDIT_PACKAGES = [
+ { credits: 20, popular: false },
+ { credits: 50, popular: true },
+ { credits: 100, popular: false },
+ { credits: 200, popular: false },
+]
interface OrgOption {
value: string
@@ -28,6 +36,30 @@ interface OrgOption {
description?: string
}
+const getInitial = (value: string): string => {
+ const trimmed = value.trim()
+ if (!trimmed) {
+ return "?"
+ }
+ return trimmed.charAt(0).toUpperCase()
+}
+
+const KiloBrandLogo: Component = () => (
+
+)
+
const ProfileView: Component = (props) => {
const vscode = useVSCode()
const language = useLanguage()
@@ -40,29 +72,29 @@ const ProfileView: Component = (props) => {
// Reset pending target whenever profileData changes (success or failure both send a fresh profile)
createEffect(() => {
- props.profileData // track
+ props.profileData
setTarget(null)
})
const switching = createMemo(() => {
- const t = target()
- if (t === null) return false
+ const nextTarget = target()
+ if (nextTarget === null) return false
const current = props.profileData?.currentOrgId ?? PERSONAL
- return current !== t
+ return current !== nextTarget
})
const orgOptions = createMemo(() => {
const orgs = props.profileData?.profile.organizations ?? []
if (orgs.length === 0) return []
return [
- { value: PERSONAL, label: "Personal Account" },
+ { value: PERSONAL, label: language.t("profile.account.personal") },
...orgs.map((org) => ({ value: org.id, label: org.name, description: org.role })),
]
})
const currentOrg = createMemo(() => {
const id = props.profileData?.currentOrgId ?? PERSONAL
- return orgOptions().find((o) => o.value === id)
+ return orgOptions().find((option) => option.value === id)
})
const selectOrg = (option: OrgOption | undefined) => {
@@ -89,7 +121,29 @@ const ProfileView: Component = (props) => {
}
const handleDashboard = () => {
- vscode.postMessage({ type: "openExternal", url: "https://app.kilo.ai/profile" })
+ vscode.postMessage({ type: "openExternal", url: `${APP_BASE_URL}/profile` })
+ }
+
+ const handleUsageDetails = () => {
+ const orgId = props.profileData?.currentOrgId
+ if (!orgId) {
+ return
+ }
+ vscode.postMessage({
+ type: "openExternal",
+ url: `${APP_BASE_URL}/organizations/${orgId}/usage-details`,
+ })
+ }
+
+ const handleCreateOrganization = () => {
+ vscode.postMessage({ type: "openExternal", url: `${APP_BASE_URL}/organizations/new` })
+ }
+
+ const handleBuyCredits = (credits: number) => {
+ vscode.postMessage({
+ type: "openExternal",
+ url: `${APP_BASE_URL}/profile?buyCredits=${credits}`,
+ })
}
const handleCancelLogin = () => {
@@ -98,25 +152,31 @@ const ProfileView: Component = (props) => {
return (
-
- {language.t("profile.title")}
-
-
-
+
+ {language.t("profile.title")}
+
+
+
+
+
+
= (props) => {
+
+
+
+ {language.t("profile.welcome.greeting")}
+
- {language.t("profile.notLoggedIn")}
+ {language.t("profile.welcome.introText1")}
-
}
>
= (props) => {
>
{(data) => (
- {/* User header */}
-
-
- {data().profile.name || data().profile.email}
-
-
+
+ {getInitial(data().profile.name || data().profile.email)}
+
+ }
>
- {data().profile.email}
-
+ {(avatar) => (
+
+ )}
+
+
+
+ {data().profile.name || data().profile.email}
+
+
+ {data().profile.email}
+
+
- {/* Organization selector */}
0}>
= (props) => {
margin: "0 0 8px 0",
}}
>
- Account
+ {language.t("profile.account.label")}
- {/* Balance */}
+
+
+ {language.t("profile.action.dashboard")}
+
+
+ {language.t("profile.action.logout")}
+
+
+
+
+
+ {language.t("profile.action.usageDetails")}
+
+
+
+
+ {language.t("profile.action.createOrganization")}
+
+
+
+
+
{(balance) => (
-
-
- {language.t("profile.balance.title")}
-
-
- {formatBalance(balance().balance)}
-
-
+
+ {language.t("profile.balance.title")}
+
+
+ {formatBalance(balance().balance)}
+
-
- ↻ {language.t("common.refresh")}
+
+ ↻
)}
- {/* Action buttons */}
-
-
- {language.t("profile.action.dashboard")}
-
-
- {language.t("profile.action.logout")}
-
-
+
+
+
+ {language.t("profile.shop.title")}
+
+
+
+ {(pkg) => (
+
+
+
+ {language.t("profile.shop.popular")}
+
+
+
+ ${pkg.credits}
+
+
+ {language.t("profile.shop.credits")}
+
+
handleBuyCredits(pkg.credits)}
+ >
+ {language.t("profile.shop.action")}
+
+
+ )}
+
+
+
+
+ {language.t("profile.shop.viewAll")}
+
+
+
+
)}
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/en.ts b/packages/kilo-vscode/webview-ui/src/i18n/en.ts
index c3d9d44ace..4f0df6393a 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/en.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/en.ts
@@ -772,14 +772,31 @@ export const dict = {
"common.retry": "Retry",
"common.refresh": "Refresh",
+ "common.done": "Done",
"profile.title": "Profile",
"profile.notLoggedIn": "Not logged in",
"profile.action.login": "Login with Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2":
+ "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3":
+ "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Balance",
"profile.balance.refresh": "Refresh balance",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
"profile.action.dashboard": "Dashboard",
"profile.action.logout": "Log Out",
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Configuration",
"settings.agentBehaviour.title": "Agent Behaviour",
From c654d52301a3c944c89b6b56c644f046267e9cde Mon Sep 17 00:00:00 2001
From: Bernardo Ferrari
Date: Tue, 17 Feb 2026 01:24:26 -0300
Subject: [PATCH 2/4] chore: sync profile i18n keys and preserve profile view
behavior
---
.../webview-ui/src/components/ProfileView.tsx | 1 +
.../kilo-vscode/webview-ui/src/i18n/ar.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/br.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/bs.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/da.ts | 19 ++++++++++++++++++-
.../kilo-vscode/webview-ui/src/i18n/de.ts | 17 +++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/es.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/fr.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/ja.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/ko.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/no.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/pl.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/ru.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/th.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/zh.ts | 16 ++++++++++++++++
.../kilo-vscode/webview-ui/src/i18n/zht.ts | 16 ++++++++++++++++
16 files changed, 244 insertions(+), 1 deletion(-)
diff --git a/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx b/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
index 7393e3e6e7..969921958a 100644
--- a/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
+++ b/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
@@ -136,6 +136,7 @@ const ProfileView: Component = (props) => {
}
const handleCreateOrganization = () => {
+ // TODO(telemetry): capture CREATE_ORGANIZATION_LINK_CLICKED analytics event when telemetry pipeline is implemented.
vscode.postMessage({ type: "openExternal", url: `${APP_BASE_URL}/organizations/new` })
}
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ar.ts b/packages/kilo-vscode/webview-ui/src/i18n/ar.ts
index a78a1118b4..4a06342994 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/ar.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/ar.ts
@@ -733,14 +733,30 @@ export const dict = {
"common.retry": "إعادة المحاولة",
"common.refresh": "تحديث",
+ "common.done": "Done",
"profile.title": "الملف الشخصي",
"profile.notLoggedIn": "لم يتم تسجيل الدخول",
"profile.action.login": "تسجيل الدخول باستخدام Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "الرصيد",
"profile.balance.refresh": "تحديث الرصيد",
"profile.action.dashboard": "لوحة التحكم",
"profile.action.logout": "تسجيل الخروج",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "الإعدادات",
"settings.agentBehaviour.title": "سلوك الوكيل",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/br.ts b/packages/kilo-vscode/webview-ui/src/i18n/br.ts
index 420637eeac..476e587db8 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/br.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/br.ts
@@ -740,14 +740,30 @@ export const dict = {
"common.retry": "Tentar novamente",
"common.refresh": "Atualizar",
+ "common.done": "Done",
"profile.title": "Perfil",
"profile.notLoggedIn": "Não conectado",
"profile.action.login": "Entrar com Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Saldo",
"profile.balance.refresh": "Atualizar saldo",
"profile.action.dashboard": "Painel",
"profile.action.logout": "Sair",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Configuração",
"settings.agentBehaviour.title": "Comportamento do Agente",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/bs.ts b/packages/kilo-vscode/webview-ui/src/i18n/bs.ts
index d479ab6940..23c9e36f38 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/bs.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/bs.ts
@@ -767,14 +767,30 @@ export const dict = {
"common.retry": "Pokušaj ponovo",
"common.refresh": "Osvježi",
+ "common.done": "Done",
"profile.title": "Profil",
"profile.notLoggedIn": "Niste prijavljeni",
"profile.action.login": "Prijavite se putem Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Stanje",
"profile.balance.refresh": "Osvježi stanje",
"profile.action.dashboard": "Kontrolna ploča",
"profile.action.logout": "Odjava",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Konfiguracija",
"settings.agentBehaviour.title": "Ponašanje agenta",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/da.ts b/packages/kilo-vscode/webview-ui/src/i18n/da.ts
index 2f14f23cbb..73c8a186f7 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/da.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/da.ts
@@ -739,14 +739,31 @@ export const dict = {
"common.retry": "Prøv igen",
"common.refresh": "Opdatér",
+ "common.done": "Done",
"profile.title": "Profil",
"profile.notLoggedIn": "Ikke logget ind",
"profile.action.login": "Log ind med Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Saldo",
"profile.balance.refresh": "Opdatér saldo",
- "profile.action.dashboard": "Dashboard",
+
+ "profile.action.dashboard": "Kontrolpanel",
"profile.action.logout": "Log ud",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Konfiguration",
"settings.agentBehaviour.title": "Agentadfærd",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/de.ts b/packages/kilo-vscode/webview-ui/src/i18n/de.ts
index 32c07c1ddf..b1218889f9 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/de.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/de.ts
@@ -745,14 +745,31 @@ export const dict = {
"common.retry": "Erneut versuchen",
"common.refresh": "Aktualisieren",
+ "common.done": "Done",
"profile.title": "Profil",
"profile.notLoggedIn": "Nicht angemeldet",
"profile.action.login": "Mit Kilo Code anmelden",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Guthaben",
"profile.balance.refresh": "Guthaben aktualisieren",
+
"profile.action.dashboard": "Dashboard",
"profile.action.logout": "Abmelden",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Konfiguration",
"settings.agentBehaviour.title": "Agentenverhalten",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/es.ts b/packages/kilo-vscode/webview-ui/src/i18n/es.ts
index d7273f75b3..0ef0f76e11 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/es.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/es.ts
@@ -745,14 +745,30 @@ export const dict = {
"common.retry": "Reintentar",
"common.refresh": "Actualizar",
+ "common.done": "Done",
"profile.title": "Perfil",
"profile.notLoggedIn": "No conectado",
"profile.action.login": "Iniciar sesión con Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Saldo",
"profile.balance.refresh": "Actualizar saldo",
"profile.action.dashboard": "Panel",
"profile.action.logout": "Cerrar sesión",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Configuración",
"settings.agentBehaviour.title": "Comportamiento del agente",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/fr.ts b/packages/kilo-vscode/webview-ui/src/i18n/fr.ts
index d8d84f764b..520585e3b3 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/fr.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/fr.ts
@@ -749,14 +749,30 @@ export const dict = {
"common.retry": "Réessayer",
"common.refresh": "Actualiser",
+ "common.done": "Done",
"profile.title": "Profil",
"profile.notLoggedIn": "Non connecté",
"profile.action.login": "Se connecter avec Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Solde",
"profile.balance.refresh": "Actualiser le solde",
"profile.action.dashboard": "Tableau de bord",
"profile.action.logout": "Déconnexion",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Configuration",
"settings.agentBehaviour.title": "Comportement de l'agent",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ja.ts b/packages/kilo-vscode/webview-ui/src/i18n/ja.ts
index 4716db3c90..e37b7f1e66 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/ja.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/ja.ts
@@ -733,14 +733,30 @@ export const dict = {
"common.retry": "再試行",
"common.refresh": "更新",
+ "common.done": "Done",
"profile.title": "プロフィール",
"profile.notLoggedIn": "ログインしていません",
"profile.action.login": "Kilo Codeでログイン",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "残高",
"profile.balance.refresh": "残高を更新",
"profile.action.dashboard": "ダッシュボード",
"profile.action.logout": "ログアウト",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "設定",
"settings.agentBehaviour.title": "エージェントの動作",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ko.ts b/packages/kilo-vscode/webview-ui/src/i18n/ko.ts
index 9a94e00b3a..a5ed031657 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/ko.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/ko.ts
@@ -738,14 +738,30 @@ export const dict = {
"common.retry": "재시도",
"common.refresh": "새로고침",
+ "common.done": "Done",
"profile.title": "프로필",
"profile.notLoggedIn": "로그인하지 않음",
"profile.action.login": "Kilo Code로 로그인",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "잔액",
"profile.balance.refresh": "잔액 새로고침",
"profile.action.dashboard": "대시보드",
"profile.action.logout": "로그아웃",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "구성",
"settings.agentBehaviour.title": "에이전트 동작",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/no.ts b/packages/kilo-vscode/webview-ui/src/i18n/no.ts
index 1907d457c8..837dafbbcf 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/no.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/no.ts
@@ -742,14 +742,30 @@ export const dict = {
"common.retry": "Prøv igjen",
"common.refresh": "Oppdater",
+ "common.done": "Done",
"profile.title": "Profil",
"profile.notLoggedIn": "Ikke pålogget",
"profile.action.login": "Logg inn med Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Saldo",
"profile.balance.refresh": "Oppdater saldo",
"profile.action.dashboard": "Kontrollpanel",
"profile.action.logout": "Logg ut",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Konfigurasjon",
"settings.agentBehaviour.title": "Agentoppførsel",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/pl.ts b/packages/kilo-vscode/webview-ui/src/i18n/pl.ts
index b33abf7147..2ddaa9ab45 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/pl.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/pl.ts
@@ -741,14 +741,30 @@ export const dict = {
"common.retry": "Ponów",
"common.refresh": "Odśwież",
+ "common.done": "Done",
"profile.title": "Profil",
"profile.notLoggedIn": "Nie zalogowano",
"profile.action.login": "Zaloguj się przez Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Saldo",
"profile.balance.refresh": "Odśwież saldo",
"profile.action.dashboard": "Panel",
"profile.action.logout": "Wyloguj się",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Konfiguracja",
"settings.agentBehaviour.title": "Zachowanie agenta",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/ru.ts b/packages/kilo-vscode/webview-ui/src/i18n/ru.ts
index 243791c110..9af2e067c3 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/ru.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/ru.ts
@@ -745,14 +745,30 @@ export const dict = {
"common.retry": "Повторить",
"common.refresh": "Обновить",
+ "common.done": "Done",
"profile.title": "Профиль",
"profile.notLoggedIn": "Не авторизован",
"profile.action.login": "Войти через Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "Баланс",
"profile.balance.refresh": "Обновить баланс",
"profile.action.dashboard": "Панель управления",
"profile.action.logout": "Выйти",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "Конфигурация",
"settings.agentBehaviour.title": "Поведение агента",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/th.ts b/packages/kilo-vscode/webview-ui/src/i18n/th.ts
index 129fb38b4f..c1b63e4371 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/th.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/th.ts
@@ -731,14 +731,30 @@ export const dict = {
"common.retry": "ลองอีกครั้ง",
"common.refresh": "รีเฟรช",
+ "common.done": "Done",
"profile.title": "โปรไฟล์",
"profile.notLoggedIn": "ยังไม่ได้เข้าสู่ระบบ",
"profile.action.login": "เข้าสู่ระบบด้วย Kilo Code",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "ยอดคงเหลือ",
"profile.balance.refresh": "รีเฟรชยอดคงเหลือ",
"profile.action.dashboard": "แดชบอร์ด",
"profile.action.logout": "ออกจากระบบ",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "การกำหนดค่า",
"settings.agentBehaviour.title": "พฤติกรรมของเอเจนต์",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/zh.ts b/packages/kilo-vscode/webview-ui/src/i18n/zh.ts
index c0d82397e5..da16117c44 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/zh.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/zh.ts
@@ -734,14 +734,30 @@ export const dict = {
"common.retry": "重试",
"common.refresh": "刷新",
+ "common.done": "Done",
"profile.title": "个人资料",
"profile.notLoggedIn": "未登录",
"profile.action.login": "使用 Kilo Code 登录",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "余额",
"profile.balance.refresh": "刷新余额",
"profile.action.dashboard": "控制面板",
"profile.action.logout": "退出登录",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "配置",
"settings.agentBehaviour.title": "智能体行为",
diff --git a/packages/kilo-vscode/webview-ui/src/i18n/zht.ts b/packages/kilo-vscode/webview-ui/src/i18n/zht.ts
index 7ec16345b4..888aaf9328 100644
--- a/packages/kilo-vscode/webview-ui/src/i18n/zht.ts
+++ b/packages/kilo-vscode/webview-ui/src/i18n/zht.ts
@@ -731,14 +731,30 @@ export const dict = {
"common.retry": "重試",
"common.refresh": "重新整理",
+ "common.done": "Done",
"profile.title": "個人資料",
"profile.notLoggedIn": "尚未登入",
"profile.action.login": "使用 Kilo Code 登入",
+ "profile.welcome.greeting": "Welcome to Kilo Code!",
+ "profile.welcome.introText1": "Kilo Code is a free, open source AI coding agent.",
+ "profile.welcome.introText2": "It works with the latest AI models like Claude Opus 4.5, Gemini 3 Pro, GPT-5.2, and 450+ more.",
+ "profile.welcome.introText3": "Create a free account and get $20 in bonus credits when you top-up for the first time.",
+ "profile.welcome.ctaButton": "Get Started",
"profile.balance.title": "餘額",
"profile.balance.refresh": "重新整理餘額",
"profile.action.dashboard": "控制面板",
"profile.action.logout": "登出",
+ "profile.account.label": "Account",
+ "profile.account.personal": "Personal Account",
+
+ "profile.action.usageDetails": "Usage Details",
+ "profile.action.createOrganization": "Create Organization",
+ "profile.shop.title": "Buy Credits",
+ "profile.shop.popular": "Popular",
+ "profile.shop.credits": "credits",
+ "profile.shop.action": "Buy",
+ "profile.shop.viewAll": "View all options",
"settings.section.configuration": "設定",
"settings.agentBehaviour.title": "代理行為",
From 2baf0d1b1d8eeaf4929cad5355482ea1f6f6ea6c Mon Sep 17 00:00:00 2001
From: Bernardo Ferrari
Date: Tue, 17 Feb 2026 01:42:50 -0300
Subject: [PATCH 3/4] small tweaks
---
packages/kilo-vscode/webview-ui/src/App.tsx | 1 +
.../webview-ui/src/components/ProfileView.tsx | 304 ++++++++++--------
2 files changed, 163 insertions(+), 142 deletions(-)
diff --git a/packages/kilo-vscode/webview-ui/src/App.tsx b/packages/kilo-vscode/webview-ui/src/App.tsx
index bdbc1ec859..3a6a568f46 100644
--- a/packages/kilo-vscode/webview-ui/src/App.tsx
+++ b/packages/kilo-vscode/webview-ui/src/App.tsx
@@ -156,6 +156,7 @@ const AppContent: Component = () => {
profileData={server.profileData()}
deviceAuth={server.deviceAuth()}
onLogin={server.startLogin}
+ onDone={() => setCurrentView("newTask")}
/>
diff --git a/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx b/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
index 969921958a..bf3619d1ca 100644
--- a/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
+++ b/packages/kilo-vscode/webview-ui/src/components/ProfileView.tsx
@@ -1,6 +1,5 @@
import { Component, Show, For, createSignal, createMemo, createEffect, onMount } from "solid-js"
import { Button } from "@kilocode/kilo-ui/button"
-import { Card } from "@kilocode/kilo-ui/card"
import { Select } from "@kilocode/kilo-ui/select"
import { Tooltip } from "@kilocode/kilo-ui/tooltip"
import { useVSCode } from "../context/vscode"
@@ -14,7 +13,7 @@ export interface ProfileViewProps {
profileData: ProfileData | null | undefined
deviceAuth: DeviceAuthState
onLogin: () => void
- onDone?: () => void
+ onDone: () => void
}
const formatBalance = (amount: number): string => {
@@ -48,10 +47,10 @@ const KiloBrandLogo: Component = () => (