Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion messages/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "البوابة: Mission Control مسجل",
"gatewayRegistrationPending": "تسجيل البوابة معلق",
"skipSetup": "تخطي الإعداد",
"getStarted": "ابدأ الآن"
"getStarted": "ابدأ الآن",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "اختر تخطيط محطتك",
Expand Down
12 changes: 11 additions & 1 deletion messages/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "Gateway: Mission Control registriert",
"gatewayRegistrationPending": "Gateway-Registrierung ausstehend",
"skipSetup": "Einrichtung überspringen",
"getStarted": "Loslegen"
"getStarted": "Loslegen",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "Wählen Sie Ihr Stationslayout",
Expand Down
12 changes: 11 additions & 1 deletion messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "Gateway: Mission Control registered",
"gatewayRegistrationPending": "Gateway registration pending",
"skipSetup": "Skip setup",
"getStarted": "Get started"
"getStarted": "Get started",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "Choose Your Station Layout",
Expand Down
12 changes: 11 additions & 1 deletion messages/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "Gateway: Mission Control registrado",
"gatewayRegistrationPending": "Registro del gateway pendiente",
"skipSetup": "Omitir configuración",
"getStarted": "Comenzar"
"getStarted": "Comenzar",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "Elige el diseño de tu estación",
Expand Down
12 changes: 11 additions & 1 deletion messages/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "Passerelle : Mission Control enregistré",
"gatewayRegistrationPending": "Enregistrement de la passerelle en attente",
"skipSetup": "Passer la configuration",
"getStarted": "Commencer"
"getStarted": "Commencer",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "Choisissez la disposition de votre station",
Expand Down
12 changes: 11 additions & 1 deletion messages/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "ゲートウェイ:Mission Control 登録済み",
"gatewayRegistrationPending": "ゲートウェイ登録保留中",
"skipSetup": "セットアップをスキップ",
"getStarted": "始めましょう"
"getStarted": "始めましょう",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "ステーションレイアウトを選択",
Expand Down
12 changes: 11 additions & 1 deletion messages/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "게이트웨이: Mission Control 등록됨",
"gatewayRegistrationPending": "게이트웨이 등록 대기 중",
"skipSetup": "설정 건너뛰기",
"getStarted": "시작하기"
"getStarted": "시작하기",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "스테이션 레이아웃 선택",
Expand Down
12 changes: 11 additions & 1 deletion messages/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "Gateway: Mission Control registrado",
"gatewayRegistrationPending": "Registro do gateway pendente",
"skipSetup": "Pular configuração",
"getStarted": "Começar"
"getStarted": "Começar",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "Escolha o layout da sua estação",
Expand Down
12 changes: 11 additions & 1 deletion messages/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "Шлюз: Mission Control зарегистрирован",
"gatewayRegistrationPending": "Регистрация шлюза ожидается",
"skipSetup": "Пропустить настройку",
"getStarted": "Начать"
"getStarted": "Начать",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "Выберите раскладку станции",
Expand Down
12 changes: 11 additions & 1 deletion messages/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,17 @@
"gatewayRegistered": "网关:Mission Control 已注册",
"gatewayRegistrationPending": "网关注册待处理",
"skipSetup": "跳过设置",
"getStarted": "开始使用"
"getStarted": "开始使用",
"runtimesReady": "{installed} of {total} runtimes ready",
"noRuntimesDetected": "No agent runtimes detected",
"installAtLeastOne": "Install at least one to get started.",
"goToSettings": "Go to Settings",
"runtimeAuthenticated": "Authenticated",
"runtimeConfigured": "Configured",
"runtimeNotAuthenticated": "Not authenticated",
"runtimeNotInstalled": "Not installed",
"runtimesLoading": "Detecting runtimes...",
"yourFleetIsReady": "Your agent fleet is ready."
},
"interfaceMode": {
"title": "选择您的站点布局",
Expand Down
9 changes: 2 additions & 7 deletions src/app/api/onboarding/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,9 @@ import { requireRole } from '@/lib/auth'
import { getDatabase } from '@/lib/db'
import { logger } from '@/lib/logger'
import { nextIncompleteStepIndex, parseCompletedSteps, shouldShowOnboarding, markStepCompleted } from '@/lib/onboarding-state'
import { ALL_KNOWN_STEPS } from '@/lib/onboarding-flow'

const ONBOARDING_STEPS = [
{ id: 'welcome', title: 'Welcome' },
{ id: 'interface-mode', title: 'Interface' },
{ id: 'gateway-link', title: 'Gateway' },
{ id: 'agent-runtimes', title: 'Runtimes' },
{ id: 'credentials', title: 'Credentials' },
] as const
const ONBOARDING_STEPS = ALL_KNOWN_STEPS

const ONBOARDING_SETTING_KEYS = {
completed: 'onboarding.completed',
Expand Down
22 changes: 18 additions & 4 deletions src/components/dashboard/empty-state-launchpad.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ interface RuntimeStatus {
id: string
name: string
installed: boolean
version?: string | null
authRequired?: boolean
authHint?: string
authenticated?: boolean
}

interface Props {
Expand Down Expand Up @@ -74,12 +78,22 @@ export function EmptyStateLaunchpad({ agentCount, taskCount, onNavigate }: Props
doneContent={
<div className="space-y-1">
{installed.map(r => (
<div key={r.id} className="flex items-center gap-1.5 text-xs text-emerald-400/80">
<span className="w-1.5 h-1.5 rounded-full bg-emerald-400 shrink-0" />
{r.name}
<div key={r.id} className="flex items-center justify-between text-xs">
<div className="flex items-center gap-1.5 text-emerald-400/80">
<span className="w-1.5 h-1.5 rounded-full bg-emerald-400 shrink-0" />
{r.name}
{r.version && <span className="text-muted-foreground/40 text-2xs">v{r.version}</span>}
</div>
{r.authRequired && !r.authenticated && (
<span className="text-2xs text-amber-400">{r.authHint || 'Not authenticated'}</span>
)}
</div>
))}
<p className="text-2xs text-muted-foreground/50 mt-1">Installed and ready</p>
{installed.length < runtimes.length && (
<button onClick={() => onNavigate('settings')} className="text-2xs text-primary/70 hover:text-primary mt-1.5 underline">
+ Install more runtimes
</button>
)}
</div>
}
pendingContent={
Expand Down
Loading
Loading