@@ -40,6 +40,7 @@ import { useRenderer } from "@opentui/solid"
4040import { createStore , produce } from "solid-js/store"
4141import { Global } from "@/global"
4242import { Filesystem } from "@/util/filesystem"
43+ import { useSDK } from "./sdk"
4344
4445type ThemeColors = {
4546 primary : RGBA
@@ -310,32 +311,42 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
310311 } )
311312 } )
312313
313- const renderer = useRenderer ( )
314- renderer
315- . getPalette ( {
316- size : 16 ,
317- } )
318- . then ( ( colors ) => {
319- if ( ! colors . palette [ 0 ] ) {
320- if ( store . active === "system" ) {
321- setStore (
322- produce ( ( draft ) => {
323- draft . active = "opencode"
324- draft . ready = true
325- } ) ,
326- )
327- }
328- return
329- }
330- setStore (
331- produce ( ( draft ) => {
332- draft . themes . system = generateSystem ( colors , store . mode )
314+ function resolveSystemTheme ( ) {
315+ console . log ( "resolved system theme" )
316+ renderer
317+ . getPalette ( {
318+ size : 16 ,
319+ } )
320+ . then ( ( colors ) => {
321+ if ( ! colors . palette [ 0 ] ) {
333322 if ( store . active === "system" ) {
334- draft . ready = true
323+ setStore (
324+ produce ( ( draft ) => {
325+ draft . active = "opencode"
326+ draft . ready = true
327+ } ) ,
328+ )
335329 }
336- } ) ,
337- )
338- } )
330+ return
331+ }
332+ setStore (
333+ produce ( ( draft ) => {
334+ draft . themes . system = generateSystem ( colors , store . mode )
335+ if ( store . active === "system" ) {
336+ draft . ready = true
337+ }
338+ } ) ,
339+ )
340+ } )
341+ }
342+
343+ const renderer = useRenderer ( )
344+ resolveSystemTheme ( )
345+
346+ const sdk = useSDK ( )
347+ sdk . event . on ( "server.instance.disposed" , ( ) => {
348+ resolveSystemTheme ( )
349+ } )
339350
340351 const values = createMemo ( ( ) => {
341352 return resolveTheme ( store . themes [ store . active ] ?? store . themes . opencode , store . mode )
0 commit comments