@@ -244,6 +244,41 @@ <h2>How to</h2>
244244 fileName : null ,
245245 lastFileName : null ,
246246 onDisconnect : null ,
247+ autoUpload : false ,
248+ autoUploadTriggered : false ,
249+ } ;
250+
251+ const applyQueryParams = ( ) => {
252+ const params = new URLSearchParams ( window . location . search ) ;
253+ const branch = params . get ( "branch" ) ;
254+ if ( branch ) {
255+ const normalized = branch . trim ( ) . toLowerCase ( ) ;
256+ if ( normalized === "dev" ) {
257+ ui . branchSelect . value = "development" ;
258+ } else if ( normalized === "main" ) {
259+ ui . branchSelect . value = "main" ;
260+ } else if ( normalized === "development" ) {
261+ ui . branchSelect . value = "development" ;
262+ }
263+ }
264+
265+ const fapParam = params . get ( "FapOS" ) || params . get ( "fapos" ) || params . get ( "track" ) ;
266+ if ( fapParam ) {
267+ const normalized = fapParam . trim ( ) . toLowerCase ( ) ;
268+ if ( normalized === "momentum" ) {
269+ ui . trackSelect . value = "momentum" ;
270+ } else if ( normalized === "momentumdev" || normalized === "momentum dev" || normalized === "momentum-dev" ) {
271+ ui . trackSelect . value = "momentum dev" ;
272+ } else if ( normalized === "unleashed" ) {
273+ ui . trackSelect . value = "unleashed" ;
274+ }
275+ }
276+
277+ const auto = params . get ( "auto" ) || params . get ( "autoupload" ) ;
278+ if ( auto ) {
279+ const normalized = auto . trim ( ) . toLowerCase ( ) ;
280+ state . autoUpload = normalized === "1" || normalized === "true" || normalized === "yes" ;
281+ }
247282 } ;
248283
249284 const encoder = new TextEncoder ( ) ;
@@ -380,6 +415,9 @@ <h2>How to</h2>
380415
381416 if ( ! state . fileData ) {
382417 fetchLatest ( ) . catch ( ( err ) => log ( `Fetch after connect failed: ${ err . message || err } ` ) ) ;
418+ } else if ( state . autoUpload && ! state . autoUploadTriggered ) {
419+ state . autoUploadTriggered = true ;
420+ upload ( ) . catch ( ( err ) => log ( `Auto upload failed: ${ err . message || err } ` ) ) ;
383421 }
384422 } catch ( err ) {
385423 await disconnect ( ) ;
@@ -402,6 +440,10 @@ <h2>How to</h2>
402440 if ( ! current || current === "/ext/apps/lab_c5.fap" || ( prevPath && current === prevPath ) ) {
403441 ui . destPath . value = `/ext/apps/${ name } ` ;
404442 }
443+ if ( state . autoUpload && state . connected && ! state . autoUploadTriggered ) {
444+ state . autoUploadTriggered = true ;
445+ upload ( ) . catch ( ( err ) => log ( `Auto upload failed: ${ err . message || err } ` ) ) ;
446+ }
405447 } ;
406448
407449 const fetchFirstAvailable = async ( urls ) => {
@@ -566,6 +608,7 @@ <h2>How to</h2>
566608 setStatus ( "Connect first." , true ) ;
567609 return ;
568610 }
611+ state . autoUploadTriggered = true ;
569612 const dest = ui . destPath . value . trim ( ) . replace ( / \\ \\ / g, "/" ) . replace ( / \\ / g, "/" ) || `/ext/apps/${ state . fileName } ` ;
570613 const data = state . fileData ;
571614 const chunkSize = 8192 ;
@@ -622,6 +665,7 @@ <h2>How to</h2>
622665 } catch ( err ) {
623666 setStatus ( err . message || "Upload failed" , true ) ;
624667 log ( `Error: ${ err . message || err } ` ) ;
668+ state . autoUploadTriggered = false ;
625669 } finally {
626670 ui . uploadBtn . disabled = false ;
627671 }
@@ -644,6 +688,7 @@ <h2>How to</h2>
644688 fetchLatest ( ) . catch ( ( ) => { } ) ;
645689 } ) ;
646690 // auto-fetch latest on load to reduce clicks
691+ applyQueryParams ( ) ;
647692 fetchLatest ( ) . catch ( ( ) => { } ) ;
648693 </ script >
649694</ body >
0 commit comments