Download packages/desktop/src/renderer/onboarding.tsx from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.89 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/desktop/src/renderer/onboarding.tsx
- Command line
-
hf download hf://SaylorTwift/opencode/packages/desktop/src/renderer/onboarding.tsx
-
curl -L -o onboarding.tsx https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/desktop/src/renderer/onboarding.tsx
1.89 kB
| import { ServerConnection, useServer, useSettings, useTabs } from "@opencode-ai/app" | |
| import { onMount } from "solid-js" | |
| export function DesktopFirstLaunchOnboarding(props: { initialUrl: string; onLoaded: () => void }) { | |
| const server = useServer() | |
| const settings = useSettings() | |
| const tabs = useTabs() | |
| onMount(() => { | |
| void runFirstLaunchOnboarding().finally(props.onLoaded) | |
| }) | |
| async function runFirstLaunchOnboarding() { | |
| try { | |
| await Promise.all( | |
| [server.ready.promise, tabs.ready.promise, tabs.recentReady.promise].map((p) => p ?? Promise.resolve()), | |
| ) | |
| const existingInstall = await window.api.isOldLayoutEligible() | |
| settings.general.setOldLayoutEligible(existingInstall) | |
| settings.general.initializeAgentVisibility(existingInstall) | |
| if (!server.isLocal()) return | |
| const pending = await window.api.isFirstLaunchOnboardingPending() | |
| if (!pending) return | |
| const shouldTrigger = | |
| !existingInstall && | |
| props.initialUrl === "/" && | |
| tabs.store.length === 0 && | |
| server.list.every(ServerConnection.builtin) | |
| console.info("[desktop-onboarding] first launch onboarding evaluated", { | |
| pending, | |
| shouldTrigger, | |
| existingInstall, | |
| initialUrl: props.initialUrl, | |
| tabs: tabs.store.length, | |
| servers: server.list.map(ServerConnection.key), | |
| }) | |
| const directory = await window.api.finishFirstLaunchOnboarding(shouldTrigger) | |
| if (!shouldTrigger || !directory) return | |
| console.info("[desktop-onboarding] starting first launch draft", { directory }) | |
| server.projects.open(directory) | |
| server.projects.touch(directory) | |
| tabs.select(await tabs.newDraft({ server: server.key, directory })) | |
| } catch (error) { | |
| console.error("[desktop-onboarding] first launch onboarding failed", error) | |
| } | |
| } | |
| return null | |
| } | |