summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/desktop/index.html2
-rw-r--r--packages/desktop/package.json2
-rw-r--r--packages/desktop/src/DesktopInterface.tsx (renamed from packages/desktop/src/index.tsx)18
-rw-r--r--packages/desktop/src/PlatformContext.tsx14
-rw-r--r--packages/desktop/src/entry.tsx22
-rw-r--r--packages/desktop/src/index.ts2
-rw-r--r--packages/tauri/index.html2
-rw-r--r--packages/tauri/src-tauri/src/lib.rs2
-rw-r--r--packages/tauri/src/index.ts1
-rw-r--r--packages/tauri/src/index.tsx21
-rw-r--r--packages/tauri/tsconfig.json5
11 files changed, 71 insertions, 20 deletions
diff --git a/packages/desktop/index.html b/packages/desktop/index.html
index 0ac3d566d..b9d3e5351 100644
--- a/packages/desktop/index.html
+++ b/packages/desktop/index.html
@@ -23,6 +23,6 @@
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
- <script src="/src/index.tsx" type="module"></script>
+ <script src="/src/entry.tsx" type="module"></script>
</body>
</html>
diff --git a/packages/desktop/package.json b/packages/desktop/package.json
index a71a33fe8..f71f33eda 100644
--- a/packages/desktop/package.json
+++ b/packages/desktop/package.json
@@ -4,7 +4,7 @@
"description": "",
"type": "module",
"exports": {
- ".": "./src/index.tsx",
+ ".": "./src/index.ts",
"./vite": "./vite.js"
},
"scripts": {
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/DesktopInterface.tsx
index 3c21b9a37..c4de3e089 100644
--- a/packages/desktop/src/index.tsx
+++ b/packages/desktop/src/DesktopInterface.tsx
@@ -1,6 +1,4 @@
-/* @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"
@@ -27,15 +25,8 @@ const url =
? `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(
- () => (
+export function DesktopInterface() {
+ return (
<MarkedProvider>
<DiffComponentProvider component={Diff}>
<GlobalSDKProvider url={url}>
@@ -72,6 +63,5 @@ render(
</GlobalSDKProvider>
</DiffComponentProvider>
</MarkedProvider>
- ),
- root!,
-)
+ )
+}
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<Platform>()
+
+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(
+ () => (
+ <PlatformProvider value={platform}>
+ <DesktopInterface />
+ </PlatformProvider>
+ ),
+ 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/tauri/index.html b/packages/tauri/index.html
index 898aec67a..0ac3d566d 100644
--- a/packages/tauri/index.html
+++ b/packages/tauri/index.html
@@ -23,6 +23,6 @@
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
- <script src="/src/index.ts" type="module"></script>
+ <script src="/src/index.tsx" type="module"></script>
</body>
</html>
diff --git a/packages/tauri/src-tauri/src/lib.rs b/packages/tauri/src-tauri/src/lib.rs
index bada4dee2..1809d2f8b 100644
--- a/packages/tauri/src-tauri/src/lib.rs
+++ b/packages/tauri/src-tauri/src/lib.rs
@@ -4,7 +4,7 @@ use std::{
sync::{Arc, Mutex},
time::{Duration, Instant},
};
-use tauri::{App, AppHandle, Manager, RunEvent, WebviewUrl, WebviewWindow};
+use tauri::{AppHandle, Manager, RunEvent, WebviewUrl, WebviewWindow};
use tauri_plugin_dialog::{DialogExt, MessageDialogButtons, MessageDialogResult};
use tauri_plugin_shell::process::{CommandChild, CommandEvent};
use tauri_plugin_shell::ShellExt;
diff --git a/packages/tauri/src/index.ts b/packages/tauri/src/index.ts
deleted file mode 100644
index b9060d628..000000000
--- a/packages/tauri/src/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-import "@opencode-ai/desktop"
diff --git a/packages/tauri/src/index.tsx b/packages/tauri/src/index.tsx
new file mode 100644
index 000000000..9371b4826
--- /dev/null
+++ b/packages/tauri/src/index.tsx
@@ -0,0 +1,21 @@
+// @refresh reload
+import { render } from "solid-js/web"
+import { DesktopInterface, PlatformProvider, Platform } from "@opencode-ai/desktop"
+
+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(
+ () => (
+ <PlatformProvider value={platform}>
+ <DesktopInterface />
+ </PlatformProvider>
+ ),
+ root!,
+)
diff --git a/packages/tauri/tsconfig.json b/packages/tauri/tsconfig.json
index 75abdef26..cf73096e5 100644
--- a/packages/tauri/tsconfig.json
+++ b/packages/tauri/tsconfig.json
@@ -17,7 +17,10 @@
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+
+ "jsx": "preserve",
+ "jsxImportSource": "solid-js"
},
"include": ["src"]
}