@@ -410,7 +410,7 @@ const createSettingsWindow = (
410410 return settingsWindow ;
411411} ;
412412
413- const createSwitcherWindow = ( ) : BrowserWindow => {
413+ const createSwitcherWindow = ( initialMode ?: string ) : BrowserWindow => {
414414 // Create the browser window.
415415 const window = new BrowserWindow ( {
416416 // maximizable: false,
@@ -431,7 +431,9 @@ const createSwitcherWindow = (): BrowserWindow => {
431431 } ) ;
432432
433433 // and load the index.html of the app.
434- window . loadURL ( SWITCHER_WINDOW_WEBPACK_ENTRY ) ;
434+ // Pass initial mode via hash so renderer can use it synchronously (no async IPC)
435+ const hash = initialMode ? `#mode=${ initialMode } ` : '' ;
436+ window . loadURL ( SWITCHER_WINDOW_WEBPACK_ENTRY + hash ) ;
435437
436438 // Open external links in default browser
437439 const { shell } = require ( 'electron' ) ;
@@ -619,6 +621,10 @@ ipcMain.on('search-working-folder', (event, path: string) => {
619621 }
620622} ) ;
621623
624+ ipcMain . handle ( 'get-home-dir' , ( ) => {
625+ return require ( 'os' ) . homedir ( ) ;
626+ } ) ;
627+
622628ipcMain . on ( 'hide-app' , ( event ) => {
623629 hideSwitcherWindow ( ) ;
624630} ) ;
@@ -1094,7 +1100,8 @@ const trayToggleEvtHandler = async () => {
10941100 }
10951101 }
10961102
1097- switcherWindow = createSwitcherWindow ( ) ;
1103+ const defaultSwitcherMode = ( ( await settings . get ( 'default-switcher-mode' ) ) as string ) || 'projects' ;
1104+ switcherWindow = createSwitcherWindow ( defaultSwitcherMode ) ;
10981105 if ( isDebug ) {
10991106 console . log ( 'when ready' ) ;
11001107 }
@@ -1980,6 +1987,10 @@ ipcMain.handle('get-session-statuses', async () => {
19801987 // Scan active sessions that don't have status files yet + cleanup stale ones
19811988 try {
19821989 const { activeMap, vscodeSessions } = await detectActiveSessions ( ) ;
1990+ if ( isDebug ) {
1991+ console . log ( '[session-status] activeMap keys:' , Array . from ( activeMap . keys ( ) ) ) ;
1992+ console . log ( '[session-status] status files:' , Object . keys ( obj ) ) ;
1993+ }
19831994 cleanupStaleStatuses ( new Set ( activeMap . keys ( ) ) ) ;
19841995 const allSessions = readClaudeSessions ( 500 ) ; // hoisted out of loop
19851996 // Merge VS Code sessions for status scanning
@@ -1988,19 +1999,30 @@ ipcMain.handle('get-session-statuses', async () => {
19881999 . filter ( ( [ sessionId ] ) => ! obj [ sessionId ] )
19892000 . map ( ( [ sessionId ] ) => {
19902001 const session = allKnown . find ( ( s : any ) => s . sessionId === sessionId ) ;
2002+ if ( ! session && isDebug ) {
2003+ console . log ( `[session-status] active session ${ sessionId } not found in allKnown (${ allKnown . length } sessions)` ) ;
2004+ }
19912005 return session ? { sessionId, project : session . project } : null ;
19922006 } )
19932007 . filter ( Boolean ) as { sessionId : string ; project : string } [ ] ;
19942008
19952009 if ( sessionsWithoutStatus . length > 0 ) {
2010+ if ( isDebug ) {
2011+ console . log ( '[session-status] scanning' , sessionsWithoutStatus . length , 'sessions without status:' , sessionsWithoutStatus . map ( s => s . sessionId ) ) ;
2012+ }
19962013 const scanned = await scanInitialStatuses ( sessionsWithoutStatus ) ;
2014+ if ( isDebug ) {
2015+ console . log ( '[session-status] scan results:' , Array . from ( scanned . entries ( ) ) ) ;
2016+ }
19972017 scanned . forEach ( ( v , k ) => {
19982018 obj [ k ] = { status : v , timestamp : Math . floor ( Date . now ( ) / 1000 ) } ;
19992019 // Persist scanned status to file so fs.watch treats all statuses uniformly
20002020 writeStatusFile ( k , v as string ) ;
20012021 } ) ;
20022022 }
2003- } catch { }
2023+ } catch ( err ) {
2024+ console . error ( '[session-status] Error during status scan:' , err ) ;
2025+ }
20042026
20052027 return obj ;
20062028} ) ;
@@ -2009,6 +2031,14 @@ ipcMain.handle('get-app-mode', async () => {
20092031 return appMode ;
20102032} ) ;
20112033
2034+ ipcMain . handle ( 'get-banner-seen' , async ( ) => {
2035+ return await settings . get ( 'normal-mode-banner-seen' ) ;
2036+ } ) ;
2037+
2038+ ipcMain . on ( 'set-banner-seen' , async ( ) => {
2039+ await settings . set ( 'normal-mode-banner-seen' , true ) ;
2040+ } ) ;
2041+
20122042ipcMain . on ( 'set-app-mode' , async ( _event , mode : string ) => {
20132043 const newMode = mode === 'menubar' ? 'menubar' : 'normal' ;
20142044 await settings . set ( 'app-mode' , newMode ) ;
0 commit comments