Skip to content

Commit 2f044e9

Browse files
committed
Merge branch 'dev' into feat/sinister-quotes
2 parents 5c83cbe + d3d379f commit 2f044e9

File tree

96 files changed

+40554
-400
lines changed

Some content is hidden

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

96 files changed

+40554
-400
lines changed

STATS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,3 +193,4 @@
193193
| 2026-01-04 | 1,672,656 (+39,702) | 1,339,883 (+7,969) | 3,012,539 (+62,560) |
194194
| 2026-01-05 | 1,738,171 (+65,515) | 1,353,043 (+13,160) | 3,091,214 (+78,675) |
195195
| 2026-01-06 | 1,960,988 (+222,817) | 1,377,377 (+24,334) | 3,338,365 (+247,151) |
196+
| 2026-01-07 | 2,123,239 (+162,251) | 1,398,648 (+21,271) | 3,521,887 (+183,522) |

bun.lock

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

infra/console.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export const stripeWebhook = new stripe.WebhookEndpoint("StripeWebhookEndpoint",
7676
"checkout.session.completed",
7777
"checkout.session.expired",
7878
"charge.refunded",
79+
"invoice.payment_succeeded",
7980
"customer.created",
8081
"customer.deleted",
8182
"customer.updated",
@@ -119,6 +120,7 @@ const ZEN_MODELS = [
119120
new sst.Secret("ZEN_MODELS6"),
120121
new sst.Secret("ZEN_MODELS7"),
121122
]
123+
const ZEN_BLACK = new sst.Secret("ZEN_BLACK")
122124
const STRIPE_SECRET_KEY = new sst.Secret("STRIPE_SECRET_KEY")
123125
const AUTH_API_URL = new sst.Linkable("AUTH_API_URL", {
124126
properties: { value: auth.url.apply((url) => url!) },
@@ -160,6 +162,7 @@ new sst.cloudflare.x.SolidStart("Console", {
160162
EMAILOCTOPUS_API_KEY,
161163
AWS_SES_ACCESS_KEY_ID,
162164
AWS_SES_SECRET_ACCESS_KEY,
165+
ZEN_BLACK,
163166
...ZEN_MODELS,
164167
...($dev
165168
? [

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-Vi6auFnjZ6Ko7yGy73kyjE3gToreuhD81mZgcnxxxww="
2+
"nodeModules": "sha256-WHqX159BYPSHBFmxxkTrWPytBzTSTcWkoEywAxP58kI="
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.1.4",
3+
"version": "1.1.5",
44
"description": "",
55
"type": "module",
66
"exports": {

packages/app/src/app.tsx

Lines changed: 69 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import "@/index.css"
2-
import { ErrorBoundary, Show, Suspense, lazy, type ParentProps } from "solid-js"
2+
import { ErrorBoundary, Show, lazy, 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"
@@ -20,18 +20,20 @@ import { FileProvider } from "@/context/file"
2020
import { NotificationProvider } from "@/context/notification"
2121
import { DialogProvider } from "@opencode-ai/ui/context/dialog"
2222
import { CommandProvider } from "@/context/command"
23+
import { Logo } from "@opencode-ai/ui/logo"
2324
import Layout from "@/pages/layout"
2425
import DirectoryLayout from "@/pages/directory-layout"
2526
import { ErrorPage } from "./pages/error"
2627
import { iife } from "@opencode-ai/util/iife"
28+
import { Suspense } from "solid-js"
2729

2830
const Home = lazy(() => import("@/pages/home"))
2931
const Session = lazy(() => import("@/pages/session"))
3032
const Loading = () => <div class="size-full flex items-center justify-center text-text-weak">Loading...</div>
3133

3234
declare global {
3335
interface Window {
34-
__OPENCODE__?: { updaterEnabled?: boolean; port?: number }
36+
__OPENCODE__?: { updaterEnabled?: boolean; port?: number; serverReady?: boolean }
3537
}
3638
}
3739

@@ -47,16 +49,7 @@ const defaultServerUrl = iife(() => {
4749
return window.location.origin
4850
})
4951

50-
function ServerKey(props: ParentProps) {
51-
const server = useServer()
52-
return (
53-
<Show when={server.url} keyed>
54-
{props.children}
55-
</Show>
56-
)
57-
}
58-
59-
export function App() {
52+
export function AppBaseProviders(props: ParentProps) {
6053
return (
6154
<MetaProvider>
6255
<Font />
@@ -65,57 +58,7 @@ export function App() {
6558
<DialogProvider>
6659
<MarkedProvider>
6760
<DiffComponentProvider component={Diff}>
68-
<CodeComponentProvider component={Code}>
69-
<ServerProvider defaultUrl={defaultServerUrl}>
70-
<ServerKey>
71-
<GlobalSDKProvider>
72-
<GlobalSyncProvider>
73-
<Router
74-
root={(props) => (
75-
<PermissionProvider>
76-
<LayoutProvider>
77-
<NotificationProvider>
78-
<CommandProvider>
79-
<Layout>{props.children}</Layout>
80-
</CommandProvider>
81-
</NotificationProvider>
82-
</LayoutProvider>
83-
</PermissionProvider>
84-
)}
85-
>
86-
<Route
87-
path="/"
88-
component={() => (
89-
<Suspense fallback={<Loading />}>
90-
<Home />
91-
</Suspense>
92-
)}
93-
/>
94-
<Route path="/:dir" component={DirectoryLayout}>
95-
<Route path="/" component={() => <Navigate href="session" />} />
96-
<Route
97-
path="/session/:id?"
98-
component={(p) => (
99-
<Show when={p.params.id ?? "new"} keyed>
100-
<TerminalProvider>
101-
<FileProvider>
102-
<PromptProvider>
103-
<Suspense fallback={<Loading />}>
104-
<Session />
105-
</Suspense>
106-
</PromptProvider>
107-
</FileProvider>
108-
</TerminalProvider>
109-
</Show>
110-
)}
111-
/>
112-
</Route>
113-
</Router>
114-
</GlobalSyncProvider>
115-
</GlobalSDKProvider>
116-
</ServerKey>
117-
</ServerProvider>
118-
</CodeComponentProvider>
61+
<CodeComponentProvider component={Code}>{props.children}</CodeComponentProvider>
11962
</DiffComponentProvider>
12063
</MarkedProvider>
12164
</DialogProvider>
@@ -124,3 +67,66 @@ export function App() {
12467
</MetaProvider>
12568
)
12669
}
70+
71+
function ServerKey(props: ParentProps) {
72+
const server = useServer()
73+
return (
74+
<Show when={server.url} keyed>
75+
{props.children}
76+
</Show>
77+
)
78+
}
79+
80+
export function AppInterface() {
81+
return (
82+
<ServerProvider defaultUrl={defaultServerUrl}>
83+
<ServerKey>
84+
<GlobalSDKProvider>
85+
<GlobalSyncProvider>
86+
<Router
87+
root={(props) => (
88+
<PermissionProvider>
89+
<LayoutProvider>
90+
<NotificationProvider>
91+
<CommandProvider>
92+
<Layout>{props.children}</Layout>
93+
</CommandProvider>
94+
</NotificationProvider>
95+
</LayoutProvider>
96+
</PermissionProvider>
97+
)}
98+
>
99+
<Route
100+
path="/"
101+
component={() => (
102+
<Suspense fallback={<Loading />}>
103+
<Home />
104+
</Suspense>
105+
)}
106+
/>
107+
<Route path="/:dir" component={DirectoryLayout}>
108+
<Route path="/" component={() => <Navigate href="session" />} />
109+
<Route
110+
path="/session/:id?"
111+
component={(p) => (
112+
<Show when={p.params.id ?? "new"} keyed>
113+
<TerminalProvider>
114+
<FileProvider>
115+
<PromptProvider>
116+
<Suspense fallback={<Loading />}>
117+
<Session />
118+
</Suspense>
119+
</PromptProvider>
120+
</FileProvider>
121+
</TerminalProvider>
122+
</Show>
123+
)}
124+
/>
125+
</Route>
126+
</Router>
127+
</GlobalSyncProvider>
128+
</GlobalSDKProvider>
129+
</ServerKey>
130+
</ServerProvider>
131+
)
132+
}

0 commit comments

Comments
 (0)