From 293362baa100acfbadf9c96a54e17b6d35da9d0b Mon Sep 17 00:00:00 2001 From: Developer Date: Wed, 8 Apr 2026 09:17:06 -0700 Subject: [PATCH] Cloud sidecar auto-detects variant and guides user to configure On first launch, the cloud sidecar now: 1. Detects it's the cloud variant (DeviceManager import fails) 2. Auto-switches config from "local" to "byok" mode 3. Shows "Setup needed: Open Settings > Remote Transcription > enter your Deepgram API key" as a friendly status message 4. Stays in READY state so the UI is fully accessible The user can then open Settings, enter their Deepgram API key, save, and start transcribing without needing to know about modes. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app_controller.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/app_controller.py b/backend/app_controller.py index 84ee02f..d45d1bc 100644 --- a/backend/app_controller.py +++ b/backend/app_controller.py @@ -106,6 +106,12 @@ class AppController: DeviceManager = None self.device_manager = DeviceManager() if DeviceManager else None + self.is_cloud_only = DeviceManager is None + + # If this is the cloud-only sidecar and mode is still "local", + # auto-switch to "byok" so the engine doesn't try to load Whisper. + if self.is_cloud_only and self.config.get('remote.mode', 'local') == 'local': + self.config.set('remote.mode', 'byok') # State self._state = AppState.INITIALIZING @@ -367,7 +373,15 @@ class AppController: self._set_state(AppState.READY, f"Ready | Device: {device_display}") else: - self._set_state(AppState.ERROR, message) + # Cloud sidecar with no API key -- show helpful setup message + # instead of a scary error. The user needs to enter their key. + if self.is_cloud_only: + self._set_state( + AppState.READY, + "Setup needed: Open Settings > Remote Transcription > enter your Deepgram API key" + ) + else: + self._set_state(AppState.ERROR, message) # ── Transcription Control ──────────────────────────────────────