11import { randomUUID } from "node:crypto"
2- import { EventEmitter } from "node:events"
3- import { existsSync , mkdirSync , rmSync } from "node:fs"
2+ import { mkdirSync , rmSync } from "node:fs"
43import * as http from "node:http"
54import { createServer } from "node:net"
65import { homedir , tmpdir } from "node:os"
@@ -11,10 +10,10 @@ import { app, BrowserWindow } from "electron"
1110
1211import contextMenu from "electron-context-menu"
1312
14- import type { InitStep , ServerReadyData , SqliteMigrationProgress , WslConfig } from "../preload/types"
13+ import type { ServerReadyData , WslConfig } from "../preload/types"
1514import { checkAppExists , resolveAppPath , wslPath } from "./apps"
1615import { CHANNEL , UPDATER_ENABLED } from "./constants"
17- import { registerIpcHandlers , sendDeepLinks , sendMenuCommand , sendSqliteMigrationProgress } from "./ipc"
16+ import { registerIpcHandlers , sendDeepLinks , sendMenuCommand } from "./ipc"
1817import { exportDebugLogs , initCrashReporter , initLogging , startNetLog , write as writeLog } from "./logging"
1918import { parseMarkdown } from "./markdown"
2019import { createMenu } from "./menu"
@@ -28,7 +27,6 @@ import {
2827 type SidecarListener ,
2928} from "./server"
3029import {
31- createLoadingWindow ,
3230 createMainWindow ,
3331 registerRendererProtocol ,
3432 setRelaunchHandler ,
@@ -56,9 +54,6 @@ let logger: ReturnType<typeof initLogging>
5654let mainWindow : BrowserWindow | null = null
5755let server : SidecarListener | null = null
5856
59- const initEmitter = new EventEmitter ( )
60- let initStep : InitStep = { phase : "server_waiting" }
61-
6257const pendingDeepLinks : string [ ] = [ ]
6358
6459function useEnvProxy ( ) {
@@ -76,12 +71,6 @@ function emitDeepLinks(urls: string[]) {
7671 if ( mainWindow ) sendDeepLinks ( mainWindow , urls )
7772}
7873
79- function setInitStep ( step : InitStep ) {
80- initStep = step
81- logger . log ( "init step" , { step } )
82- initEmitter . emit ( "step" , step )
83- }
84-
8574async function killSidecar ( ) {
8675 if ( ! server ) return
8776 const current = server
@@ -219,23 +208,15 @@ const main = Effect.gen(function* () {
219208 }
220209
221210 const serverReady = Deferred . makeUnsafe < ServerReadyData > ( )
222- const loadingComplete = Deferred . makeUnsafe < void > ( )
223211
224212 registerIpcHandlers ( {
225213 killSidecar : ( ) => killSidecar ( ) ,
226214 awaitInitialization : Effect . fnUntraced (
227- function * ( sendStep ) {
228- sendStep ( initStep )
229- const listener = ( step : InitStep ) => sendStep ( step )
230- initEmitter . on ( "step" , listener )
231- try {
232- logger . log ( "awaiting server ready" )
233- const res = yield * Deferred . await ( serverReady )
234- logger . log ( "server ready" , { url : res . url } )
235- return res
236- } finally {
237- initEmitter . off ( "step" , listener )
238- }
215+ function * ( ) {
216+ logger . log ( "awaiting server ready" )
217+ const res = yield * Deferred . await ( serverReady )
218+ logger . log ( "server ready" , { url : res . url } )
219+ return res
239220 } ,
240221 ( e ) => Effect . runPromise ( e ) ,
241222 ) ,
@@ -251,7 +232,6 @@ const main = Effect.gen(function* () {
251232 checkAppExists : ( appName ) => checkAppExists ( appName ) ,
252233 wslPath : async ( path , mode ) => wslPath ( path , mode ) ,
253234 resolveAppPath : async ( appName ) => resolveAppPath ( appName ) ,
254- loadingWindowComplete : ( ) => Deferred . doneUnsafe ( loadingComplete , Effect . void ) ,
255235 runUpdater : async ( alertOnFail ) => checkForUpdates ( alertOnFail , killSidecar ) ,
256236 checkUpdate : async ( ) => checkUpdate ( ) ,
257237 installUpdate : async ( ) => installUpdate ( killSidecar ) ,
@@ -275,15 +255,6 @@ const main = Effect.gen(function* () {
275255 ) ,
276256 )
277257
278- const needsMigration = ( ( ) : boolean => {
279- if ( process . env . OPENCODE_DB === ":memory:" ) return false
280-
281- const xdg = process . env . XDG_DATA_HOME
282- const base = xdg && xdg . length > 0 ? xdg : join ( homedir ( ) , ".local" , "share" )
283- return ! existsSync ( join ( base , "opencode" , "opencode.db" ) )
284- } ) ( )
285- let overlay : BrowserWindow | null = null
286-
287258 const port = yield * Effect . gen ( function * ( ) {
288259 const fromEnv = process . env . OPENCODE_PORT
289260 if ( fromEnv ) {
@@ -314,21 +285,13 @@ const main = Effect.gen(function* () {
314285 const loadingTask = yield * Effect . gen ( function * ( ) {
315286 logger . log ( "sidecar connection started" , { url } )
316287
317- initEmitter . on ( "sqlite" , ( progress : SqliteMigrationProgress ) => {
318- setInitStep ( { phase : "sqlite_waiting" } )
319- if ( overlay ) sendSqliteMigrationProgress ( overlay , progress )
320- if ( mainWindow ) sendSqliteMigrationProgress ( mainWindow , progress )
321- } )
322-
323288 ensureLoopbackNoProxy ( )
324289 useEnvProxy ( )
325290
326291 logger . log ( "spawning sidecar" , { url } )
327292 const { listener, health } = yield * Effect . promise ( ( ) =>
328293 spawnLocalServer ( hostname , port , password , {
329- needsMigration,
330294 userDataPath : app . getPath ( "userData" ) ,
331- onSqliteProgress : ( progress ) => initEmitter . emit ( "sqlite" , progress ) ,
332295 onStdout : ( message ) => writeLog ( "server" , "stdout" , { message } ) ,
333296 onStderr : ( message ) => writeLog ( "server" , "stderr" , { message } , "warn" ) ,
334297 onExit : ( code ) => writeLog ( "utility" , "sidecar exited" , { code } , "warn" ) ,
@@ -353,23 +316,7 @@ const main = Effect.gen(function* () {
353316 logger . log ( "loading task finished" )
354317 } ) . pipe ( Effect . forkChild )
355318
356- if ( needsMigration ) {
357- const show = yield * loadingTask . pipe (
358- Fiber . await ,
359- Effect . timeout ( "1 second" ) ,
360- Effect . as ( false ) ,
361- Effect . catch ( ( ) => Effect . succeed ( true ) ) ,
362- )
363- if ( show ) {
364- overlay = createLoadingWindow ( )
365- yield * Effect . sleep ( "1 second" )
366- }
367- }
368-
369319 yield * Fiber . await ( loadingTask )
370- setInitStep ( { phase : "done" } )
371-
372- if ( overlay ) yield * Deferred . await ( loadingComplete )
373320
374321 mainWindow = createMainWindow ( )
375322 if ( mainWindow ) {
@@ -389,8 +336,6 @@ const main = Effect.gen(function* () {
389336 } ,
390337 } )
391338 }
392-
393- overlay ?. close ( )
394339} )
395340
396341Effect . runFork ( main )
0 commit comments