diff --git a/static/js/cookbookServe.js b/static/js/cookbookServe.js index 981e70f4c..dcb7cc854 100644 --- a/static/js/cookbookServe.js +++ b/static/js/cookbookServe.js @@ -1233,11 +1233,13 @@ function _rerenderCachedModels() { if (_replaceTaskId) { panelHtml += ``; } - // Runtime-readiness note pinned at the top of the serve area so the - // user sees "vLLM ready on …" before scrolling into the configure - // form. Hidden until the readiness probe returns. The × button - // dismisses it for this panel only (re-shows on re-expand). - panelHtml += ``; + // Runtime-readiness note shares the top line with the preset controls + // so "vLLM ready on …" reads as panel status instead of a separate + // block pushing the form down. Hidden until the readiness probe returns. + panelHtml += `
`; + panelHtml += ``; + panelHtml += `
${_slotsHtml}
`; + panelHtml += `
`; // Warn when serving a model whose download hasn't fully completed — // the user CAN still hit Launch (vLLM/llama-server will start, then // crash trying to read missing shards), but they should know. @@ -1247,7 +1249,6 @@ function _rerenderCachedModels() { : `This model's download isn't complete yet (${esc(m.size || 'partial')}). The serve will start but is likely to crash on a missing shard. Wait for the download to finish, or relaunch after it's done.`; panelHtml += `
${_warnText}
`; } - panelHtml += `
${_slotsHtml}
`; // Row 1: Engine + Server + Env panelHtml += `
`; const backendOpts = _backendChoices.map(([v,l]) => ``).join(''); diff --git a/static/style.css b/static/style.css index f433016fd..eb5ab47fb 100644 --- a/static/style.css +++ b/static/style.css @@ -20066,10 +20066,28 @@ body.gallery-selecting .gallery-dl-btn, position: relative; left: -33px; } +.hwfit-serve-topline { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 8px; + margin: 0 0 6px; +} +.hwfit-serve-topline .hwfit-serve-runtime-note { + flex: 1 1 auto; + min-width: 0; +} +.hwfit-serve-topline .hwfit-serve-runtime-text { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .hwfit-serve-preset-row { display: flex; justify-content: flex-end; - margin: 0 0 6px; + margin: 0; + flex: 0 0 auto; } /* Expanded serve panel — make sure it can be scrolled past when it grows taller than the visible viewport. Caps panel height to viewport @@ -20086,7 +20104,16 @@ body.gallery-selecting .gallery-dl-btn, } .hwfit-serve-preset-row { justify-content: flex-end; - margin: -2px 0 6px; + margin: -2px 0 0; + } + .hwfit-serve-topline { + flex-wrap: wrap; + } + .hwfit-serve-topline .hwfit-serve-runtime-note { + flex-basis: 100%; + } + .hwfit-serve-topline .hwfit-serve-runtime-text { + white-space: normal; } } .hwfit-serve-row label {