From 3f59021555b6f9246fa5fb0f67d3d0d239092746 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sun, 7 Dec 2025 20:39:43 +0200 Subject: [PATCH] fix: enhance onboarding screen functionality --- packages/desktop/src-tauri/Cargo.lock | 2 +- .../onboarding/OnboardingScreen.tsx | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/desktop/src-tauri/Cargo.lock b/packages/desktop/src-tauri/Cargo.lock index c7f34c7a..3ebc0e49 100644 --- a/packages/desktop/src-tauri/Cargo.lock +++ b/packages/desktop/src-tauri/Cargo.lock @@ -2847,7 +2847,7 @@ dependencies = [ [[package]] name = "openchamber-desktop" -version = "1.0.1" +version = "1.0.2" dependencies = [ "anyhow", "axum", diff --git a/packages/ui/src/components/onboarding/OnboardingScreen.tsx b/packages/ui/src/components/onboarding/OnboardingScreen.tsx index 50b0c61e..5f5a7fcc 100644 --- a/packages/ui/src/components/onboarding/OnboardingScreen.tsx +++ b/packages/ui/src/components/onboarding/OnboardingScreen.tsx @@ -34,12 +34,33 @@ const HINT_DELAY_MS = 30000; export function OnboardingScreen({ onCliAvailable }: OnboardingScreenProps) { const [copied, setCopied] = React.useState(false); const [showHint, setShowHint] = React.useState(false); + const [isDesktopApp, setIsDesktopApp] = React.useState(false); React.useEffect(() => { const timer = setTimeout(() => setShowHint(true), HINT_DELAY_MS); return () => clearTimeout(timer); }, []); + React.useEffect(() => { + setIsDesktopApp(typeof (window as typeof window & { opencodeDesktop?: unknown }).opencodeDesktop !== 'undefined'); + }, []); + + const handleDragStart = React.useCallback(async (e: React.MouseEvent) => { + if ((e.target as HTMLElement).closest('button, a, input, select, textarea, code')) { + return; + } + if (e.button !== 0) return; + if (isDesktopApp) { + try { + const { getCurrentWindow } = await import('@tauri-apps/api/window'); + const window = getCurrentWindow(); + await window.startDragging(); + } catch (error) { + console.error('Failed to start window dragging:', error); + } + } + }, [isDesktopApp]); + const checkCliAvailability = React.useCallback(async (): Promise => { try { const response = await fetch('/health'); @@ -76,7 +97,10 @@ export function OnboardingScreen({ onCliAvailable }: OnboardingScreenProps) { }, [checkCliAvailability, onCliAvailable]); return ( -
+