From d531dff8d3f5c60df2e5c08e8bd04bf9a234dbc3 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Mon, 8 Dec 2025 13:43:36 +0800 Subject: Export DesktopInterface from desktop and add PlatformContext --- packages/desktop/src/DesktopInterface.tsx | 67 +++++++++++++++++++++++++++ packages/desktop/src/PlatformContext.tsx | 14 ++++++ packages/desktop/src/entry.tsx | 22 +++++++++ packages/desktop/src/index.ts | 2 + packages/desktop/src/index.tsx | 77 ------------------------------- 5 files changed, 105 insertions(+), 77 deletions(-) create mode 100644 packages/desktop/src/DesktopInterface.tsx create mode 100644 packages/desktop/src/PlatformContext.tsx create mode 100644 packages/desktop/src/entry.tsx create mode 100644 packages/desktop/src/index.ts delete mode 100644 packages/desktop/src/index.tsx (limited to 'packages/desktop/src') diff --git a/packages/desktop/src/DesktopInterface.tsx b/packages/desktop/src/DesktopInterface.tsx new file mode 100644 index 000000000..c4de3e089 --- /dev/null +++ b/packages/desktop/src/DesktopInterface.tsx @@ -0,0 +1,67 @@ +import "@/index.css" +import { Router, Route, Navigate } from "@solidjs/router" +import { MetaProvider } from "@solidjs/meta" +import { Font } from "@opencode-ai/ui/font" +import { Favicon } from "@opencode-ai/ui/favicon" +import { MarkedProvider } from "@opencode-ai/ui/context/marked" +import { DiffComponentProvider } from "@opencode-ai/ui/context/diff" +import { Diff } from "@opencode-ai/ui/diff" +import { GlobalSyncProvider, useGlobalSync } from "./context/global-sync" +import Layout from "@/pages/layout" +import DirectoryLayout from "@/pages/directory-layout" +import Session from "@/pages/session" +import { LayoutProvider } from "./context/layout" +import { GlobalSDKProvider } from "./context/global-sdk" +import { SessionProvider } from "./context/session" +import { base64Encode } from "./utils" +import { createMemo, Show } from "solid-js" + +const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1" +const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096" + +const url = + new URLSearchParams(document.location.search).get("url") || + (location.hostname.includes("opencode.ai") || location.hostname.includes("localhost") + ? `http://${host}:${port}` + : "/") + +export function DesktopInterface() { + return ( + + + + + + + + + { + const globalSync = useGlobalSync() + const slug = createMemo(() => base64Encode(globalSync.data.defaultProject!.worktree)) + return + }} + /> + + } /> + ( + + + + + + )} + /> + + + + + + + + + ) +} diff --git a/packages/desktop/src/PlatformContext.tsx b/packages/desktop/src/PlatformContext.tsx new file mode 100644 index 000000000..5b510a8d4 --- /dev/null +++ b/packages/desktop/src/PlatformContext.tsx @@ -0,0 +1,14 @@ +import { createContext } from "solid-js" +import { useContext } from "solid-js" + +export interface Platform {} + +const PlatformContext = createContext() + +export const PlatformProvider = PlatformContext.Provider + +export function usePlatform() { + const ctx = useContext(PlatformContext) + if (!ctx) throw new Error("usePlatform must be used within a PlatformProvider") + return ctx +} diff --git a/packages/desktop/src/entry.tsx b/packages/desktop/src/entry.tsx new file mode 100644 index 000000000..82c5dd331 --- /dev/null +++ b/packages/desktop/src/entry.tsx @@ -0,0 +1,22 @@ +// @refresh reload +import { render } from "solid-js/web" +import { DesktopInterface } from "@/DesktopInterface" +import { Platform, PlatformProvider } from "@/PlatformContext" + +const root = document.getElementById("root") +if (import.meta.env.DEV && !(root instanceof HTMLElement)) { + throw new Error( + "Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?", + ) +} + +const platform: Platform = {} + +render( + () => ( + + + + ), + root!, +) diff --git a/packages/desktop/src/index.ts b/packages/desktop/src/index.ts new file mode 100644 index 000000000..2142e4886 --- /dev/null +++ b/packages/desktop/src/index.ts @@ -0,0 +1,2 @@ +export { PlatformProvider, type Platform } from "./PlatformContext" +export { DesktopInterface } from "./DesktopInterface" diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx deleted file mode 100644 index 3c21b9a37..000000000 --- a/packages/desktop/src/index.tsx +++ /dev/null @@ -1,77 +0,0 @@ -/* @refresh reload */ -import "@/index.css" -import { render } from "solid-js/web" -import { Router, Route, Navigate } from "@solidjs/router" -import { MetaProvider } from "@solidjs/meta" -import { Font } from "@opencode-ai/ui/font" -import { Favicon } from "@opencode-ai/ui/favicon" -import { MarkedProvider } from "@opencode-ai/ui/context/marked" -import { DiffComponentProvider } from "@opencode-ai/ui/context/diff" -import { Diff } from "@opencode-ai/ui/diff" -import { GlobalSyncProvider, useGlobalSync } from "./context/global-sync" -import Layout from "@/pages/layout" -import DirectoryLayout from "@/pages/directory-layout" -import Session from "@/pages/session" -import { LayoutProvider } from "./context/layout" -import { GlobalSDKProvider } from "./context/global-sdk" -import { SessionProvider } from "./context/session" -import { base64Encode } from "./utils" -import { createMemo, Show } from "solid-js" - -const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1" -const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096" - -const url = - new URLSearchParams(document.location.search).get("url") || - (location.hostname.includes("opencode.ai") || location.hostname.includes("localhost") - ? `http://${host}:${port}` - : "/") - -const root = document.getElementById("root") -if (import.meta.env.DEV && !(root instanceof HTMLElement)) { - throw new Error( - "Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?", - ) -} - -render( - () => ( - - - - - - - - - { - const globalSync = useGlobalSync() - const slug = createMemo(() => base64Encode(globalSync.data.defaultProject!.worktree)) - return - }} - /> - - } /> - ( - - - - - - )} - /> - - - - - - - - - ), - root!, -) -- cgit v1.2.3