@@ -341,18 +341,18 @@ export function refreshFreebuffLandingMetadata(): Promise<void> {
341341}
342342
343343/**
344- * Join (or re-queue for) `model`. Dual-purpose:
345- * - First join : called from the pre-chat landing picker. The session starts
344+ * Start a session on `model` (admitted immediately server-side) . Dual-purpose:
345+ * - First start : called from the pre-chat landing picker. The session starts
346346 * at `none` (GET-only); this is the user's explicit commitment to enter.
347- * - Switch: called when the user picks a different model from within the
348- * waiting room. Server moves them to the back of the new model's queue .
347+ * - Switch: called when the user picks a different model from the landing
348+ * screen. The server admits them on the new model right away .
349349 *
350350 * If the server has already admitted them on a different model, it responds
351351 * with `model_locked`; the tick loop silently reverts the local selection to
352352 * the locked model so the active session stays intact. Users who really want
353353 * to switch can /end-session deliberately.
354354 */
355- export function joinFreebuffQueue ( model : string ) : Promise < void > {
355+ export function startFreebuffSession ( model : string ) : Promise < void > {
356356 if ( ! IS_FREEBUFF ) return Promise . resolve ( )
357357 // This is the only explicit user-pick path (called from the picker on
358358 // click / Enter), so persistence belongs here — and ONLY here. Server-
@@ -395,7 +395,7 @@ export function markFreebuffSessionSuperseded(): void {
395395 * Used when the chat-completions gate rejects on country even though the
396396 * session-level country check did not catch the request first.
397397 * Transitioning the session state here unmounts the Chat surface in favor of
398- * the waiting-room 's country_blocked message, so the user can't keep typing
398+ * the landing screen 's country_blocked message, so the user can't keep typing
399399 * and sending doomed requests. */
400400export function markFreebuffSessionCountryBlocked ( params : {
401401 countryCode : string
@@ -405,8 +405,8 @@ export function markFreebuffSessionCountryBlocked(params: {
405405 if ( ! IS_FREEBUFF ) return
406406 controller ?. abort ( )
407407 controller ?. apply ( { status : 'country_blocked' , ...params } )
408- // Best-effort DELETE so we don't hold a waiting-room seat on a session the
409- // server is already refusing to serve at chat time.
408+ // Best-effort DELETE so we don't hold a session row the server is already
409+ // refusing to serve at chat time.
410410 releaseFreebuffSlot ( ) . catch ( ( ) => { } )
411411}
412412
@@ -435,7 +435,7 @@ interface UseFreebuffSessionResult {
435435/**
436436 * Manages the freebuff session lifecycle:
437437 * - GET on mount to probe state (no auto-join; the user picks a model in
438- * the landing screen, which calls joinFreebuffQueue )
438+ * the landing screen, which calls startFreebuffSession )
439439 * - if the probe sees an existing seat, auto-takes-over when the prior
440440 * local owner process is gone; otherwise asks before POSTing to rotate
441441 * the instance id so any other CLI on the same account is superseded
@@ -525,7 +525,7 @@ export function useFreebuffSession(): UseFreebuffSessionResult {
525525 // need another POST.
526526 nextMethod = 'GET'
527527
528- // Race recovery: user picked a different model in the waiting room at
528+ // Race recovery: user picked a different model on the landing screen at
529529 // the exact moment the server admitted them with the original model.
530530 // Silently revert the local selection and re-tick so the next call
531531 // (a GET) lands the actual active session. Users who really want to
@@ -579,15 +579,15 @@ export function useFreebuffSession(): UseFreebuffSessionResult {
579579
580580 // Bell on admission: the user committed to a model on the landing
581581 // screen (status 'none'), which POSTs and lands them straight on an
582- // active session now that there's no waiting room .
582+ // active session (admission is immediate) .
583583 if ( previousStatus === 'none' && next . status === 'active' ) {
584584 playAdmissionSound ( )
585585 }
586586
587587 // active|ended → none means we've passed the server's hard cutoff.
588588 // Synthesize a no-instanceId ended state so the chat surface stays
589589 // mounted with the Enter-to-rejoin banner instead of looping back
590- // through the waiting room . Carry forward whichever rate-limit
590+ // through the landing screen . Carry forward whichever rate-limit
591591 // snapshot we have — preferring the fresh `none` snapshot, falling
592592 // back to whatever was on the prior active/ended row — so the
593593 // banner's "N of M used today" line stays populated.
@@ -642,7 +642,7 @@ export function useFreebuffSession(): UseFreebuffSessionResult {
642642 // prevent. But the picker still needs live quota snapshots, so kick
643643 // off a fire-and-forget GET and extract only picker metadata from
644644 // the response, ignoring whatever status it claims. Polling resumes
645- // when the user commits to a model via joinFreebuffQueue .
645+ // when the user commits to a model via startFreebuffSession .
646646 const landingSession = toLandingSession (
647647 useFreebuffSessionStore . getState ( ) . session ,
648648 )
0 commit comments