@@ -27,6 +27,14 @@ function loadScript(src: string): Promise<void> {
2727 } ) ;
2828}
2929
30+ function hidePageLoader ( ) {
31+ const loader = document . getElementById ( 'page-loader' ) ;
32+ if ( loader ) {
33+ loader . classList . add ( 'hidden' ) ;
34+ setTimeout ( ( ) => loader . remove ( ) , 300 ) ;
35+ }
36+ }
37+
3038const initTerminal = ( authToken : string = '' ) => {
3139 const elem = document . getElementById ( "terminal" ) ;
3240
@@ -88,6 +96,7 @@ if (shareMatch) {
8896 h ( SharePage , { token : shareToken , basePath } ) ,
8997 shareContainer
9098 ) ;
99+ hidePageLoader ( ) ;
91100} else {
92101 // Normal page: load config scripts then initialize
93102 Promise . all ( [ loadScript ( './auth_token.js' ) , loadScript ( './config.js' ) ] ) . then ( ( ) => {
@@ -98,6 +107,7 @@ if (shareMatch) {
98107 const loginContainer = document . createElement ( "div" ) ;
99108 loginContainer . id = "login-container" ;
100109 document . body . appendChild ( loginContainer ) ;
110+ hidePageLoader ( ) ;
101111
102112 render (
103113 h ( Login , {
@@ -113,19 +123,24 @@ if (shareMatch) {
113123 } else {
114124 initTerminal ( storedAuth || '' ) ;
115125 initFileManager ( ) ;
126+ hidePageLoader ( ) ;
116127 }
117128 } ) . catch ( ( err ) => {
118129 console . error ( 'Failed to load config scripts:' , err ) ;
119130 // Fallback: try to initialize anyway
120131 initTerminal ( '' ) ;
121132 initFileManager ( ) ;
133+ hidePageLoader ( ) ;
122134 } ) ;
123135}
124136
125137function initFileManager ( ) {
126138 const fileManagerBtn = document . getElementById ( "file-manager-btn" ) as HTMLElement | null ;
127139 if ( ! fileManagerBtn ) return ;
128140
141+ // Show the button now that initialization is complete
142+ fileManagerBtn . classList . add ( 'ready' ) ;
143+
129144 let fileManagerContainer : HTMLDivElement | null = null ;
130145
131146 // Draggable functionality
0 commit comments