@@ -15,6 +15,7 @@ const MAX_RETRY_DURATION_MS = 60000;
1515const RETRY_INTERVAL_MS = 5000 ;
1616const SESSION_KEY_INIT = "server_initialized" ;
1717const SESSION_KEY_NAVIGATING = "navigating_to_dashboard" ;
18+ const SESSION_KEY_STOPPED = "server_stopped_by_user" ;
1819
1920export default function Home ( ) {
2021 const [ connectionState , setConnectionState ] = useState < ConnectionState > ( "loading" ) ;
@@ -78,7 +79,14 @@ export default function Home() {
7879 const success = await tryInit ( ) ;
7980 if ( success ) {
8081 sessionStorage . setItem ( SESSION_KEY_INIT , "true" ) ;
81- setConnectionState ( "ready" ) ;
82+ const stoppedByUser = sessionStorage . getItem ( SESSION_KEY_STOPPED ) === "true" ;
83+ if ( stoppedByUser ) {
84+ sessionStorage . removeItem ( SESSION_KEY_STOPPED ) ;
85+ setConnectionState ( "ready" ) ;
86+ } else {
87+ // Auto-start server on initial startup
88+ await startServer ( ) ;
89+ }
8290 return ;
8391 }
8492
@@ -105,12 +113,19 @@ export default function Home() {
105113 // Check if already initialized
106114 const wasInitialized = sessionStorage . getItem ( SESSION_KEY_INIT ) === "true" ;
107115
116+ const stoppedByUser = sessionStorage . getItem ( SESSION_KEY_STOPPED ) === "true" ;
117+
108118 if ( wasInitialized ) {
109119 try {
110120 const isInit = await invoke < boolean > ( "is_server_initialized" , { } ) ;
111121 console . log ( "[Home] sessionStorage says init, backend says:" , isInit ) ;
112122 if ( isInit && ! cancelled ) {
113- setConnectionState ( "ready" ) ;
123+ if ( stoppedByUser ) {
124+ sessionStorage . removeItem ( SESSION_KEY_STOPPED ) ;
125+ setConnectionState ( "ready" ) ;
126+ } else {
127+ await startServer ( ) ;
128+ }
114129 return ;
115130 }
116131 } catch ( e ) {
@@ -126,7 +141,12 @@ export default function Home() {
126141
127142 if ( isInit && ! cancelled ) {
128143 sessionStorage . setItem ( SESSION_KEY_INIT , "true" ) ;
129- setConnectionState ( "ready" ) ;
144+ if ( stoppedByUser ) {
145+ sessionStorage . removeItem ( SESSION_KEY_STOPPED ) ;
146+ setConnectionState ( "ready" ) ;
147+ } else {
148+ await startServer ( ) ;
149+ }
130150 return ;
131151 }
132152 } catch ( e ) {
0 commit comments