@@ -227,8 +227,9 @@ <h1>Moss <span>Playground</span></h1>
227227 const name = select . value ;
228228 if ( ! name ) return ;
229229
230- ++ requestId ;
230+ const loadReqId = ++ requestId ;
231231 if ( searchTimeout ) clearTimeout ( searchTimeout ) ;
232+ select . disabled = true ;
232233
233234 loadBtn . disabled = true ;
234235 loadBtn . innerHTML = '<span class="spinner">◠</span> Loading...' ;
@@ -246,6 +247,7 @@ <h1>Moss <span>Playground</span></h1>
246247 const err = await res . json ( ) ;
247248 throw new Error ( err . error || 'Failed to load index' ) ;
248249 }
250+ if ( loadReqId !== requestId || select . value !== name ) return ;
249251 currentIndex = name ;
250252 loadBtn . innerHTML = '✓ Loaded' ;
251253 loadBtn . className = 'btn btn-success' ;
@@ -257,13 +259,16 @@ <h1>Moss <span>Playground</span></h1>
257259 topkInput . disabled = false ;
258260 alphaSlider . disabled = false ;
259261 } catch ( e ) {
262+ if ( loadReqId !== requestId ) return ;
260263 console . error ( 'loadIndex failed:' , e ) ;
261264 currentIndex = null ;
262265 loadBtn . innerHTML = 'Load Index' ;
263266 loadBtn . className = 'btn btn-primary' ;
264267 loadBtn . disabled = false ;
265268 loadStatus . className = 'status-box status-error' ;
266269 loadStatus . textContent = `Failed: ${ e . message || e } ` ;
270+ } finally {
271+ select . disabled = false ;
267272 }
268273}
269274
0 commit comments