feat: auto-detect OpenCode CLI on onboarding screen

Polls every 2.5s and transitions automatically once the CLI is reachable
Advanced settings and troubleshooting moved into collapsible accordions
New i18n keys added for status indicator and section titles across 6 locales
This commit is contained in:
Bohdan Triapitsyn
2026-05-05 00:41:30 +03:00
parent 581f7c34dc
commit 7fc22bc69b
7 changed files with 298 additions and 240 deletions
+9 -3
View File
@@ -1951,12 +1951,18 @@ export const dict = {
'onboarding.localSetup.windows.stepInstallWslSuffix': 'in PowerShell.',
'onboarding.localSetup.windows.stepRunInstallInWsl': 'Run the install command below inside your WSL terminal.',
'onboarding.localSetup.windows.stepSetBinaryPath': 'If OpenChamber does not detect OpenCode automatically, set the binary path below.',
'onboarding.localSetup.docs.windows': 'View Windows + WSL documentation',
'onboarding.localSetup.docs.default': 'View documentation',
'onboarding.localSetup.actions.checking': 'Checking...',
'onboarding.localSetup.intro': 'OpenCode is the heart of OpenChamber — install it to get started.',
'onboarding.localSetup.docs.windows': 'OpenCode Windows + WSL docs',
'onboarding.localSetup.docs.default': 'OpenCode docs',
'onboarding.localSetup.actions.checking': 'Checking…',
'onboarding.localSetup.actions.checkAndContinue': "I've completed installation, check and continue",
'onboarding.localSetup.actions.checkNow': 'Check now',
'onboarding.localSetup.helper.checkAndContinue': 'Click to check if OpenCode CLI is available. If successful, you\'ll automatically enter the main screen.',
'onboarding.localSetup.status.watching': 'Waiting for OpenCode',
'onboarding.localSetup.status.autoContinue': "We'll continue automatically once it's detected.",
'onboarding.localSetup.field.alreadyInstalled': 'Already installed? Set the OpenCode CLI path:',
'onboarding.localSetup.advanced.title': 'Set a custom binary path',
'onboarding.localSetup.troubleshoot.title': 'Having trouble?',
'onboarding.localSetup.actions.browse': 'Browse',
'onboarding.localSetup.actions.apply': 'Apply',
'onboarding.localSetup.helper.saveAndReload': 'Saves to OpenChamber settings and reloads OpenCode configuration.',
+8 -2
View File
@@ -1917,12 +1917,18 @@ export const dict: Record<I18nKey, string> = {
"onboarding.localSetup.windows.stepInstallWslSuffix": "en PowerShell.",
"onboarding.localSetup.windows.stepRunInstallInWsl": "Ejecuta el comando de instalación a continuación dentro de tu terminal de WSL.",
"onboarding.localSetup.windows.stepSetBinaryPath": "Si OpenChamber no detecta OpenCode automáticamente, establece la ruta del ejecutable a continuación.",
"onboarding.localSetup.docs.windows": "Ver documentación de Windows + WSL",
"onboarding.localSetup.docs.default": "Ver documentación",
"onboarding.localSetup.intro": "OpenCode es el corazón de OpenChamber. Instálalo para empezar.",
"onboarding.localSetup.docs.windows": "Documentación de OpenCode para Windows + WSL",
"onboarding.localSetup.docs.default": "Documentación de OpenCode",
"onboarding.localSetup.actions.checking": "Verificando...",
"onboarding.localSetup.actions.checkAndContinue": "He completado la instalación, verificar y continuar",
"onboarding.localSetup.actions.checkNow": "Verificar ahora",
"onboarding.localSetup.helper.checkAndContinue": "Haz clic para verificar si la CLI de OpenCode está disponible. Si la verificación funciona, entrarás automáticamente en la pantalla principal.",
"onboarding.localSetup.status.watching": "Esperando OpenCode",
"onboarding.localSetup.status.autoContinue": "Continuaremos automáticamente al detectarlo.",
"onboarding.localSetup.field.alreadyInstalled": "¿Ya está instalado? Establece la ruta de la CLI de OpenCode:",
"onboarding.localSetup.advanced.title": "Establecer una ruta personalizada del binario",
"onboarding.localSetup.troubleshoot.title": "¿Tienes problemas?",
"onboarding.localSetup.actions.browse": "Explorar",
"onboarding.localSetup.actions.apply": "Aplicar",
"onboarding.localSetup.helper.saveAndReload": "Guarda en la configuración de OpenChamber y recarga la configuración de OpenCode.",
+8 -2
View File
@@ -1951,12 +1951,18 @@ export const dict: Record<I18nKey, string> = {
'onboarding.localSetup.windows.stepInstallWslSuffix': 'PowerShell에서 실행하세요.',
'onboarding.localSetup.windows.stepRunInstallInWsl': '아래 설치 명령을 WSL 터미널에서 실행하세요.',
'onboarding.localSetup.windows.stepSetBinaryPath': 'OpenChamber가 OpenCode를 자동으로 찾지 못하면 아래에 바이너리 경로를 설정하세요.',
'onboarding.localSetup.docs.windows': 'Windows + WSL 문서 보기',
'onboarding.localSetup.docs.default': '문서 보기',
'onboarding.localSetup.intro': 'OpenCode는 OpenChamber의 심장입니다. 먼저 설치하고 시작하세요.',
'onboarding.localSetup.docs.windows': 'OpenCode Windows + WSL 문서',
'onboarding.localSetup.docs.default': 'OpenCode 문서',
'onboarding.localSetup.actions.checking': '확인 중…',
'onboarding.localSetup.actions.checkAndContinue': '설치를 마쳤습니다. 확인 후 계속',
'onboarding.localSetup.actions.checkNow': '지금 확인',
'onboarding.localSetup.helper.checkAndContinue': 'OpenCode CLI를 사용할 수 있으면 확인을 누르세요. 성공하면 자동으로 메인 화면으로 이동합니다.',
'onboarding.localSetup.status.watching': 'OpenCode 대기 중',
'onboarding.localSetup.status.autoContinue': '감지되면 자동으로 계속됩니다.',
'onboarding.localSetup.field.alreadyInstalled': '이미 설치되어 있나요? OpenCode CLI 경로 설정:',
'onboarding.localSetup.advanced.title': '사용자 지정 바이너리 경로 설정',
'onboarding.localSetup.troubleshoot.title': '문제가 있나요?',
'onboarding.localSetup.actions.browse': '찾아보기',
'onboarding.localSetup.actions.apply': '적용',
'onboarding.localSetup.helper.saveAndReload': 'OpenChamber 설정에 저장하고 OpenCode 구성을 다시 로드합니다.',
+8 -2
View File
@@ -1917,12 +1917,18 @@ export const dict: Record<I18nKey, string> = {
"onboarding.localSetup.windows.stepInstallWslSuffix": "no PowerShell.",
"onboarding.localSetup.windows.stepRunInstallInWsl": "Execute o comando de instalação a seguir dentro de seu terminal de WSL.",
"onboarding.localSetup.windows.stepSetBinaryPath": "Se o OpenChamber não detectar o OpenCode automaticamente, defina o caminho do executável a seguir.",
"onboarding.localSetup.docs.windows": "Ver documentação de Windows + WSL",
"onboarding.localSetup.docs.default": "Ver documentação",
"onboarding.localSetup.intro": "OpenCode é o coração do OpenChamber. Instale-o para começar.",
"onboarding.localSetup.docs.windows": "Documentação do OpenCode para Windows + WSL",
"onboarding.localSetup.docs.default": "Documentação do OpenCode",
"onboarding.localSetup.actions.checking": "Verificando...",
"onboarding.localSetup.actions.checkAndContinue": "Concluí a instalação, verificar e continuar",
"onboarding.localSetup.actions.checkNow": "Verificar agora",
"onboarding.localSetup.helper.checkAndContinue": "Clique para verificar se a CLI do OpenCode está disponível. Se a verificação funcionar, você entrará automaticamente na tela principal.",
"onboarding.localSetup.status.watching": "Aguardando OpenCode",
"onboarding.localSetup.status.autoContinue": "Continuaremos automaticamente assim que detectado.",
"onboarding.localSetup.field.alreadyInstalled": "Já está instalado? Defina o caminho da CLI do OpenCode:",
"onboarding.localSetup.advanced.title": "Definir um caminho personalizado do binário",
"onboarding.localSetup.troubleshoot.title": "Está com problemas?",
"onboarding.localSetup.actions.browse": "Explorar",
"onboarding.localSetup.actions.apply": "Aplicar",
"onboarding.localSetup.helper.saveAndReload": "Salve nas configurações do OpenChamber e recarregue configurações do OpenCode.",
+8 -2
View File
@@ -1917,12 +1917,18 @@ export const dict: Record<I18nKey, string> = {
"onboarding.localSetup.windows.stepInstallWslSuffix": "в PowerShell.",
"onboarding.localSetup.windows.stepRunInstallInWsl": "Виконайте наведену нижче команду встановлення всередині терміналу WSL.",
"onboarding.localSetup.windows.stepSetBinaryPath": "Якщо OpenChamber не визначає OpenCode автоматично, укажіть шлях до виконуваного файла нижче.",
"onboarding.localSetup.docs.windows": "Перегляньте документацію Windows + WSL",
"onboarding.localSetup.docs.default": "Переглянути документацію",
"onboarding.localSetup.intro": "OpenCode — серце OpenChamber. Встановіть його, щоб почати.",
"onboarding.localSetup.docs.windows": "Документація OpenCode для Windows + WSL",
"onboarding.localSetup.docs.default": "Документація OpenCode",
"onboarding.localSetup.actions.checking": "Перевірка...",
"onboarding.localSetup.actions.checkAndContinue": "Я завершив встановлення, перевірте та продовжуйте",
"onboarding.localSetup.actions.checkNow": "Перевірити зараз",
"onboarding.localSetup.helper.checkAndContinue": "Натисніть, щоб перевірити, чи доступний OpenCode CLI. У разі успіху ви автоматично перейдете на головний екран.",
"onboarding.localSetup.status.watching": "Очікування OpenCode",
"onboarding.localSetup.status.autoContinue": "Ми автоматично продовжимо після виявлення.",
"onboarding.localSetup.field.alreadyInstalled": "Вже встановлено? Встановіть шлях OpenCode CLI:",
"onboarding.localSetup.advanced.title": "Вказати власний шлях до бінарного файлу",
"onboarding.localSetup.troubleshoot.title": "Виникли проблеми?",
"onboarding.localSetup.actions.browse": "Огляд",
"onboarding.localSetup.actions.apply": "Застосувати",
"onboarding.localSetup.helper.saveAndReload": "Зберігає налаштування в OpenChamber і перезавантажує конфігурацію OpenCode.",
+8 -2
View File
@@ -1917,12 +1917,18 @@ export const dict: Record<I18nKey, string> = {
'onboarding.localSetup.windows.stepInstallWslSuffix': '安装 WSL。',
'onboarding.localSetup.windows.stepRunInstallInWsl': '在 WSL 终端中运行下方安装命令。',
'onboarding.localSetup.windows.stepSetBinaryPath': '如果 OpenChamber 未自动检测到 OpenCode,请在下方设置可执行文件路径。',
'onboarding.localSetup.docs.windows': '查看 Windows + WSL 文档',
'onboarding.localSetup.docs.default': '查看文档',
'onboarding.localSetup.intro': 'OpenCode 是 OpenChamber 的核心,先安装它即可开始。',
'onboarding.localSetup.docs.windows': 'OpenCode Windows + WSL 文档',
'onboarding.localSetup.docs.default': 'OpenCode 文档',
'onboarding.localSetup.actions.checking': '检测中...',
'onboarding.localSetup.actions.checkAndContinue': '我已完成安装,检测并继续',
'onboarding.localSetup.actions.checkNow': '立即检测',
'onboarding.localSetup.helper.checkAndContinue': '点击检测 OpenCode CLI 是否可用。成功后将自动进入主界面。',
'onboarding.localSetup.status.watching': '正在等待 OpenCode',
'onboarding.localSetup.status.autoContinue': '检测到后将自动继续。',
'onboarding.localSetup.field.alreadyInstalled': '已安装?设置 OpenCode CLI 路径:',
'onboarding.localSetup.advanced.title': '设置自定义二进制路径',
'onboarding.localSetup.troubleshoot.title': '遇到问题?',
'onboarding.localSetup.actions.browse': '浏览',
'onboarding.localSetup.actions.apply': '应用',
'onboarding.localSetup.helper.saveAndReload': '将保存到 OpenChamber 设置并重新加载 OpenCode 配置。',