/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { Box, Text } from 'ink'; import { Colors } from '../colors.js'; import { type ProjectSummaryInfo } from '@qwen-code/qwen-code-core'; import { RadioButtonSelect, type RadioSelectItem, } from './shared/RadioButtonSelect.js'; import { useKeypress } from '../hooks/useKeypress.js'; import { t } from '../../i18n/index.js'; interface WelcomeBackDialogProps { welcomeBackInfo: ProjectSummaryInfo; onSelect: (choice: 'restart' | 'continue') => void; onClose: () => void; } export function WelcomeBackDialog({ welcomeBackInfo, onSelect, onClose, }: WelcomeBackDialogProps) { useKeypress( (key) => { if (key.name === 'escape') { onClose(); } }, { isActive: true }, ); const options: Array> = [ { key: 'restart', label: t('Start new chat session'), value: 'restart', }, { key: 'continue', label: t('Continue previous conversation'), value: 'continue', }, ]; // Extract data from welcomeBackInfo const { timeAgo, goalContent, totalTasks = 0, doneCount = 0, inProgressCount = 0, pendingTasks = [], } = welcomeBackInfo; return ( {t('👋 Welcome back! (Last updated: {{timeAgo}})', { timeAgo: timeAgo || '', })} {/* Overall Goal Section */} {goalContent && ( {t('🎯 Overall Goal:')} {goalContent} )} {/* Current Plan Section */} {totalTasks > 0 && ( 📋 {t('Current Plan:')} {t('Progress: {{done}}/{{total}} tasks completed', { done: String(doneCount), total: String(totalTasks), })} {inProgressCount > 0 && t(', {{inProgress}} in progress', { inProgress: String(inProgressCount), })} {pendingTasks.length > 0 && ( {t('Pending Tasks:')} {pendingTasks.map((task: string, index: number) => ( • {task} ))} )} )} {/* Action Selection */} {t('What would you like to do?')} {t('Choose how to proceed with your session:')} ); }