diff --git a/static/js/cookbookServe.js b/static/js/cookbookServe.js
index 5da7d81c4..33274dc19 100644
--- a/static/js/cookbookServe.js
+++ b/static/js/cookbookServe.js
@@ -700,11 +700,21 @@ function _rerenderCachedModels() {
panelHtml += ``;
panelHtml += ``;
// Row 3: Checkboxes (vLLM)
+ // Order: Trust Remote → Auto Tool → Reasoning Parser (when the
+ // model has one) → Enforce Eager → Prefix Caching. Reasoning
+ // Parser was previously in a separate row below; the user wanted
+ // it inline with the other vLLM toggles between Auto Tool and
+ // Enforce Eager so the "what the model needs" decisions sit
+ // together at the top.
+ const _opts2_row3 = _detectModelOptimizations(repo);
+ const _rp_flag = _opts2_row3.flags.find(f => f.includes('--reasoning-parser'));
+ const _rp_name = _rp_flag ? _rp_flag.split(' ')[1] : '';
panelHtml += `
`;
// Row 2c: llama.cpp fit/perf flags (set by Auto profiles, editable by hand)
const _kvOpts = ['', 'q4_0', 'q8_0', 'f16'].map(k => ``).join('');
@@ -760,7 +770,9 @@ function _rerenderCachedModels() {
const _opts2 = _detectModelOptimizations(repo);
panelHtml += `
`;
if (_opts2.flags.includes('--enable-expert-parallel')) panelHtml += ``;
- if (_opts2.flags.some(f => f.includes('--reasoning-parser'))) { const rp = _opts2.flags.find(f => f.includes('--reasoning-parser')).split(' ')[1]; panelHtml += ``; }
+ // Reasoning Parser moved to Row 3 (inline with Trust Remote / Auto
+ // Tool) so the per-model toggles sit together — the duplicate that
+ // lived here previously left two copies of the same checkbox.
{
// Speculative decoding (vLLM --speculative-config). Default OFF; the
// method/token defaults come from auto-detection when available,
@@ -773,7 +785,7 @@ function _rerenderCachedModels() {
if (!_specMethods.includes(_specMethod)) _specMethods.unshift(_specMethod);
const _specOpts = _specMethods.map(m =>
``).join('');
- panelHtml += ``;
+ panelHtml += ``;
}
if (_opts2.envVars.length) panelHtml += ``;
panelHtml += `