Skip to content

Commit a854562

Browse files
committed
Merge branch 'dev' into feat/configurable-sidebar-overlay-behaviour
2 parents e3c5173 + 9115fac commit a854562

File tree

115 files changed

+1567
-307
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+1567
-307
lines changed

STATS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,4 @@
185185
| 2025-12-27 | 1,371,771 (+19,360) | 1,238,236 (+10,621) | 2,610,007 (+29,981) |
186186
| 2025-12-28 | 1,390,388 (+18,617) | 1,245,690 (+7,454) | 2,636,078 (+26,071) |
187187
| 2025-12-29 | 1,415,560 (+25,172) | 1,257,101 (+11,411) | 2,672,661 (+36,583) |
188+
| 2025-12-30 | 1,445,450 (+29,890) | 1,272,689 (+15,588) | 2,718,139 (+45,478) |

bun.lock

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"packages/app": {
2424
"name": "@opencode-ai/app",
25-
"version": "1.0.209",
25+
"version": "1.0.212",
2626
"dependencies": {
2727
"@kobalte/core": "catalog:",
2828
"@opencode-ai/sdk": "workspace:*",
@@ -70,7 +70,7 @@
7070
},
7171
"packages/console/app": {
7272
"name": "@opencode-ai/console-app",
73-
"version": "1.0.209",
73+
"version": "1.0.212",
7474
"dependencies": {
7575
"@cloudflare/vite-plugin": "1.15.2",
7676
"@ibm/plex": "6.4.1",
@@ -98,7 +98,7 @@
9898
},
9999
"packages/console/core": {
100100
"name": "@opencode-ai/console-core",
101-
"version": "1.0.209",
101+
"version": "1.0.212",
102102
"dependencies": {
103103
"@aws-sdk/client-sts": "3.782.0",
104104
"@jsx-email/render": "1.1.1",
@@ -125,7 +125,7 @@
125125
},
126126
"packages/console/function": {
127127
"name": "@opencode-ai/console-function",
128-
"version": "1.0.209",
128+
"version": "1.0.212",
129129
"dependencies": {
130130
"@ai-sdk/anthropic": "2.0.0",
131131
"@ai-sdk/openai": "2.0.2",
@@ -149,7 +149,7 @@
149149
},
150150
"packages/console/mail": {
151151
"name": "@opencode-ai/console-mail",
152-
"version": "1.0.209",
152+
"version": "1.0.212",
153153
"dependencies": {
154154
"@jsx-email/all": "2.2.3",
155155
"@jsx-email/cli": "1.4.3",
@@ -173,13 +173,14 @@
173173
},
174174
"packages/desktop": {
175175
"name": "@opencode-ai/desktop",
176-
"version": "1.0.209",
176+
"version": "1.0.212",
177177
"dependencies": {
178178
"@opencode-ai/app": "workspace:*",
179179
"@solid-primitives/storage": "catalog:",
180180
"@tauri-apps/api": "^2",
181181
"@tauri-apps/plugin-dialog": "~2",
182182
"@tauri-apps/plugin-http": "~2",
183+
"@tauri-apps/plugin-notification": "~2",
183184
"@tauri-apps/plugin-opener": "^2",
184185
"@tauri-apps/plugin-os": "~2",
185186
"@tauri-apps/plugin-process": "~2",
@@ -200,7 +201,7 @@
200201
},
201202
"packages/enterprise": {
202203
"name": "@opencode-ai/enterprise",
203-
"version": "1.0.209",
204+
"version": "1.0.212",
204205
"dependencies": {
205206
"@opencode-ai/ui": "workspace:*",
206207
"@opencode-ai/util": "workspace:*",
@@ -229,7 +230,7 @@
229230
},
230231
"packages/function": {
231232
"name": "@opencode-ai/function",
232-
"version": "1.0.209",
233+
"version": "1.0.212",
233234
"dependencies": {
234235
"@octokit/auth-app": "8.0.1",
235236
"@octokit/rest": "catalog:",
@@ -245,7 +246,7 @@
245246
},
246247
"packages/opencode": {
247248
"name": "opencode",
248-
"version": "1.0.209",
249+
"version": "1.0.212",
249250
"bin": {
250251
"opencode": "./bin/opencode",
251252
},
@@ -283,8 +284,8 @@
283284
"@opencode-ai/sdk": "workspace:*",
284285
"@opencode-ai/util": "workspace:*",
285286
"@openrouter/ai-sdk-provider": "1.5.2",
286-
"@opentui/core": "0.1.66",
287-
"@opentui/solid": "0.1.66",
287+
"@opentui/core": "0.1.67",
288+
"@opentui/solid": "0.1.67",
288289
"@parcel/watcher": "2.5.1",
289290
"@pierre/diffs": "catalog:",
290291
"@solid-primitives/event-bus": "1.1.2",
@@ -346,7 +347,7 @@
346347
},
347348
"packages/plugin": {
348349
"name": "@opencode-ai/plugin",
349-
"version": "1.0.209",
350+
"version": "1.0.212",
350351
"dependencies": {
351352
"@opencode-ai/sdk": "workspace:*",
352353
"zod": "catalog:",
@@ -366,7 +367,7 @@
366367
},
367368
"packages/sdk/js": {
368369
"name": "@opencode-ai/sdk",
369-
"version": "1.0.209",
370+
"version": "1.0.212",
370371
"devDependencies": {
371372
"@hey-api/openapi-ts": "0.88.1",
372373
"@tsconfig/node22": "catalog:",
@@ -377,7 +378,7 @@
377378
},
378379
"packages/slack": {
379380
"name": "@opencode-ai/slack",
380-
"version": "1.0.209",
381+
"version": "1.0.212",
381382
"dependencies": {
382383
"@opencode-ai/sdk": "workspace:*",
383384
"@slack/bolt": "^3.17.1",
@@ -390,7 +391,7 @@
390391
},
391392
"packages/ui": {
392393
"name": "@opencode-ai/ui",
393-
"version": "1.0.209",
394+
"version": "1.0.212",
394395
"dependencies": {
395396
"@kobalte/core": "catalog:",
396397
"@opencode-ai/sdk": "workspace:*",
@@ -428,7 +429,7 @@
428429
},
429430
"packages/util": {
430431
"name": "@opencode-ai/util",
431-
"version": "1.0.209",
432+
"version": "1.0.212",
432433
"dependencies": {
433434
"zod": "catalog:",
434435
},
@@ -439,7 +440,7 @@
439440
},
440441
"packages/web": {
441442
"name": "@opencode-ai/web",
442-
"version": "1.0.209",
443+
"version": "1.0.212",
443444
"dependencies": {
444445
"@astrojs/cloudflare": "12.6.3",
445446
"@astrojs/markdown-remark": "6.3.1",
@@ -1192,21 +1193,21 @@
11921193

11931194
"@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
11941195

1195-
"@opentui/core": ["@opentui/core@0.1.66", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.66", "@opentui/core-darwin-x64": "0.1.66", "@opentui/core-linux-arm64": "0.1.66", "@opentui/core-linux-x64": "0.1.66", "@opentui/core-win32-arm64": "0.1.66", "@opentui/core-win32-x64": "0.1.66", "bun-webgpu": "0.1.4", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-clmYc9Aj4Ec6pqklplPFfhjF0Fs5hFyuNVOtzRe2lUZLM9hZMsBG0PwHun03HRsDLrx/iCk1P1++FO8IrmaZGg=="],
1196+
"@opentui/core": ["@opentui/core@0.1.67", "", { "dependencies": { "bun-ffi-structs": "0.1.2", "diff": "8.0.2", "jimp": "1.6.0", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@dimforge/rapier2d-simd-compat": "^0.17.3", "@opentui/core-darwin-arm64": "0.1.67", "@opentui/core-darwin-x64": "0.1.67", "@opentui/core-linux-arm64": "0.1.67", "@opentui/core-linux-x64": "0.1.67", "@opentui/core-win32-arm64": "0.1.67", "@opentui/core-win32-x64": "0.1.67", "bun-webgpu": "0.1.4", "planck": "^1.4.2", "three": "0.177.0" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-zmfyA10QUbzT6ohacPoHmGiYzuJrDSCfQWRWrKtao0BrHj9bii73qWy3V/eR4ibVueoRREwxJs5GlBOSvK6IoA=="],
11961197

1197-
"@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.1.66", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sf+ywTM9brOKq+p9yXgOYZ6w2RH73y+0gpwi59b6fh+BDFFUVEq+HyAA8wSJBo9x3F4qUO/y5TKCwl1Z/rSWaw=="],
1198+
"@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.1.67", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LtOcTlFD+kO7neItmkiF77H8cnjTYzBOZe8JQGwRSt9aaCke3UzMvLxmQnj4BP/kPC3hi9V6NRnFdptz0sJZIQ=="],
11981199

1199-
"@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.1.66", "", { "os": "darwin", "cpu": "x64" }, "sha512-3m7QzyWOzTN0jbH+pZIAVKBCfDHqaNHcav1RvVOGkNdqWarUSIRViFOUhe1Y98MCG2Aq4vLAA0TreqaMi30otg=="],
1200+
"@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.1.67", "", { "os": "darwin", "cpu": "x64" }, "sha512-9i+awVWgpEVqZhFLaLq8usNGyCiyT5QxMLy6eH7JmRic79S34u23HfxiniGRtdYh3aqpm9SbLzo60v0nRIUkCA=="],
12001201

1201-
"@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.1.66", "", { "os": "linux", "cpu": "arm64" }, "sha512-pBaFBvTb0Zd6yX6LP7T4sno4Tcof5nqv6jhRUOyFr2rtb1i8bK30ttMUzgQ1uOydKZPJ6rBdWZyyiQC1Iqn0aQ=="],
1202+
"@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.1.67", "", { "os": "linux", "cpu": "arm64" }, "sha512-WLjnTM3Ig//SRo0FUZYZJ5TITVbR6dKDVg6axU2D+sMoUzJMBP/Xo04q/TvZ3wP764Yca9l7oVMKWDxHlygyjQ=="],
12021203

1203-
"@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.1.66", "", { "os": "linux", "cpu": "x64" }, "sha512-oLU+yDW4trpve6xEAR7ihgozPU4sDJd7U4+Ndx8TXVkPZMzCv1KeJv3DLq5kUGr8F9LxJWjppROo74LUKzOkIQ=="],
1204+
"@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.1.67", "", { "os": "linux", "cpu": "x64" }, "sha512-5UbZ/TqWi/DAmHIZL4NvhdpgTwglszRiddkRiQ8cT0IbnE4lutd4XxWUWcLKwsNT1YJv32TtcGWkuthluLiriQ=="],
12041205

1205-
"@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.1.66", "", { "os": "win32", "cpu": "arm64" }, "sha512-zSPd5HXb5oqt/m6Sp9nHkaCHWYV5mBO7ilWe3K5QLDaVR+rayofzhiDEIwCpmA6IsPvp8FL4d5sv8SlcMWnqdg=="],
1206+
"@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.1.67", "", { "os": "win32", "cpu": "arm64" }, "sha512-KNam5rObhN8/U9+GVVuvtAlGXp3MfdMHnw4W2P6YH7xp8HTsLvABUT91SJEyJ/ktVe9e1itLDG2fDHSoA5NbUg=="],
12061207

1207-
"@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.1.66", "", { "os": "win32", "cpu": "x64" }, "sha512-MhF6g3Sr1aKUmRWGX1TbdukZk9nKRFxgddJnNz1PhIFlGwq10/6FE97ZtnxYhfgXN3trgb4haTZGpdkjFZ9Mfg=="],
1208+
"@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.1.67", "", { "os": "win32", "cpu": "x64" }, "sha512-740lkOw42zLNh9YfahXjCwV2DS/amH2uMDh3tCADDCLckrMhemIhqArXDiMlalDxDqYspoaZCpBsFVsG9dMS6A=="],
12081209

1209-
"@opentui/solid": ["@opentui/solid@0.1.66", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.66", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.9", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-xt+H15210j+HZY5qAdfd5oPKHRA0NW8iK9/WUne4Rj6YKjliqNV2ZgpOD7i3U2UDnrLSUq0RS6CphdXYALi/Cw=="],
1210+
"@opentui/solid": ["@opentui/solid@0.1.67", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.1.67", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.9", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.9" } }, "sha512-dVNq0+PJIdNb63D0T7vcbyVF/ZvLCihGvivTU50zDOzd0Sk5prbrIfpG8+DjMErFubXfdZQvdy/PqFdtw0rjtQ=="],
12101211

12111212
"@oslojs/asn1": ["@oslojs/asn1@1.0.0", "", { "dependencies": { "@oslojs/binary": "1.0.0" } }, "sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA=="],
12121213

@@ -1706,6 +1707,8 @@
17061707

17071708
"@tauri-apps/plugin-http": ["@tauri-apps/plugin-http@2.5.4", "", { "dependencies": { "@tauri-apps/api": "^2.8.0" } }, "sha512-/i4U/9za3mrytTgfRn5RHneKubZE/dwRmshYwyMvNRlkWjvu1m4Ma72kcbVJMZFGXpkbl+qLyWMGrihtWB76Zg=="],
17081709

1710+
"@tauri-apps/plugin-notification": ["@tauri-apps/plugin-notification@2.3.3", "", { "dependencies": { "@tauri-apps/api": "^2.8.0" } }, "sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg=="],
1711+
17091712
"@tauri-apps/plugin-opener": ["@tauri-apps/plugin-opener@2.5.2", "", { "dependencies": { "@tauri-apps/api": "^2.8.0" } }, "sha512-ei/yRRoCklWHImwpCcDK3VhNXx+QXM9793aQ64YxpqVF0BDuuIlXhZgiAkc15wnPVav+IbkYhmDJIv5R326Mew=="],
17101713

17111714
"@tauri-apps/plugin-os": ["@tauri-apps/plugin-os@2.3.2", "", { "dependencies": { "@tauri-apps/api": "^2.8.0" } }, "sha512-n+nXWeuSeF9wcEsSPmRnBEGrRgOy6jjkSU+UVCOV8YUGKb2erhDOxis7IqRXiRVHhY8XMKks00BJ0OAdkpf6+A=="],

flake.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nix/hashes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"nodeModules": "sha256-kgJKAqccRJOQcJ8+/j+lGe7T6WZuQqYv6UGl3jvI9wQ="
2+
"nodeModules": "sha256-2Wbnxy9SPcZkO03Sis3uiypPXa87jc5TzKbo6PvMlxY="
33
}

packages/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@opencode-ai/app",
3-
"version": "1.0.209",
3+
"version": "1.0.212",
44
"description": "",
55
"type": "module",
66
"exports": {

packages/app/src/app.tsx

Lines changed: 55 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import "@/index.css"
2-
import { ErrorBoundary, Show } from "solid-js"
2+
import { ErrorBoundary, Show, type ParentProps } from "solid-js"
33
import { Router, Route, Navigate } from "@solidjs/router"
44
import { MetaProvider } from "@solidjs/meta"
55
import { Font } from "@opencode-ai/ui/font"
@@ -12,6 +12,7 @@ import { ThemeProvider } from "@opencode-ai/ui/theme"
1212
import { GlobalSyncProvider } from "@/context/global-sync"
1313
import { LayoutProvider } from "@/context/layout"
1414
import { GlobalSDKProvider } from "@/context/global-sdk"
15+
import { ServerProvider, useServer } from "@/context/server"
1516
import { TerminalProvider } from "@/context/terminal"
1617
import { PromptProvider } from "@/context/prompt"
1718
import { NotificationProvider } from "@/context/notification"
@@ -30,18 +31,30 @@ declare global {
3031
}
3132
}
3233

33-
const url = iife(() => {
34+
const serverDefaults = iife(() => {
3435
const param = new URLSearchParams(document.location.search).get("url")
35-
if (param) return param
36+
if (param) return { url: param, forced: true }
3637

37-
if (location.hostname.includes("opencode.ai")) return "http://localhost:4096"
38-
if (window.__OPENCODE__) return `http://127.0.0.1:${window.__OPENCODE__.port}`
38+
if (location.hostname.includes("opencode.ai")) return { url: "http://localhost:4096", forced: false }
39+
if (window.__OPENCODE__) return { url: `http://127.0.0.1:${window.__OPENCODE__.port}`, forced: false }
3940
if (import.meta.env.DEV)
40-
return `http://${import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "localhost"}:${import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"}`
41+
return {
42+
url: `http://${import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "localhost"}:${import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"}`,
43+
forced: false,
44+
}
4145

42-
return window.location.origin
46+
return { url: window.location.origin, forced: false }
4347
})
4448

49+
function ServerKey(props: ParentProps) {
50+
const server = useServer()
51+
return (
52+
<Show when={server.url} keyed>
53+
{props.children}
54+
</Show>
55+
)
56+
}
57+
4558
export function App() {
4659
return (
4760
<MetaProvider>
@@ -52,38 +65,42 @@ export function App() {
5265
<MarkedProvider>
5366
<DiffComponentProvider component={Diff}>
5467
<CodeComponentProvider component={Code}>
55-
<GlobalSDKProvider url={url}>
56-
<GlobalSyncProvider>
57-
<LayoutProvider>
58-
<NotificationProvider>
59-
<Router
60-
root={(props) => (
61-
<CommandProvider>
62-
<Layout>{props.children}</Layout>
63-
</CommandProvider>
64-
)}
65-
>
66-
<Route path="/" component={Home} />
67-
<Route path="/:dir" component={DirectoryLayout}>
68-
<Route path="/" component={() => <Navigate href="session" />} />
69-
<Route
70-
path="/session/:id?"
71-
component={(p) => (
72-
<Show when={p.params.id ?? "new"} keyed>
73-
<TerminalProvider>
74-
<PromptProvider>
75-
<Session />
76-
</PromptProvider>
77-
</TerminalProvider>
78-
</Show>
68+
<ServerProvider defaultUrl={serverDefaults.url} forceUrl={serverDefaults.forced}>
69+
<ServerKey>
70+
<GlobalSDKProvider>
71+
<GlobalSyncProvider>
72+
<LayoutProvider>
73+
<NotificationProvider>
74+
<Router
75+
root={(props) => (
76+
<CommandProvider>
77+
<Layout>{props.children}</Layout>
78+
</CommandProvider>
7979
)}
80-
/>
81-
</Route>
82-
</Router>
83-
</NotificationProvider>
84-
</LayoutProvider>
85-
</GlobalSyncProvider>
86-
</GlobalSDKProvider>
80+
>
81+
<Route path="/" component={Home} />
82+
<Route path="/:dir" component={DirectoryLayout}>
83+
<Route path="/" component={() => <Navigate href="session" />} />
84+
<Route
85+
path="/session/:id?"
86+
component={(p) => (
87+
<Show when={p.params.id ?? "new"} keyed>
88+
<TerminalProvider>
89+
<PromptProvider>
90+
<Session />
91+
</PromptProvider>
92+
</TerminalProvider>
93+
</Show>
94+
)}
95+
/>
96+
</Route>
97+
</Router>
98+
</NotificationProvider>
99+
</LayoutProvider>
100+
</GlobalSyncProvider>
101+
</GlobalSDKProvider>
102+
</ServerKey>
103+
</ServerProvider>
87104
</CodeComponentProvider>
88105
</DiffComponentProvider>
89106
</MarkedProvider>

0 commit comments

Comments
 (0)