feat: reasoning token budget + session name in header

- reasoning_budget_tokens: optional int field on local_openai models;
  when set, injects {"reasoning": {"budget_tokens": N}} via extra_body
  into every OpenRouter API call (both tool-loop and confirmation-gate
  rounds). Field exposed in the model edit form in Settings.

- session name moved from standalone full-row div between #messages
  and #input-area into the persona-switcher block in the header, as a
  third dim line under "Cortex · Local". Collapses when empty via
  :empty CSS. No JS changes required.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-05-09 21:35:23 -04:00
parent 85792a7bcf
commit a66c5a7f84
5 changed files with 80 additions and 57 deletions

View File

@@ -41,6 +41,7 @@
<div class="persona-switcher" id="persona-switcher">
<div class="name" id="persona-name">Inara</div>
<div class="subtitle">Cortex · Local</div>
<div id="session-id"></div>
<div class="persona-dropdown" id="persona-dropdown"></div>
</div>
@@ -164,7 +165,6 @@
</div>
<div id="messages"></div>
<div id="session-id"></div>
<div id="input-area">
<!-- Mode select — compact dropdown, opens upward, MRU sorted -->

View File

@@ -897,11 +897,14 @@
#stop:hover { background: #5c1a1a; }
#session-id {
font-size: 0.7rem;
font-size: 0.68rem;
color: var(--border);
padding: 0 20px 6px;
background: var(--surface);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 220px;
}
#session-id:empty { display: none; }
/* ── Message wrappers (edit/delete controls) ──────────────── */
.msg-wrapper {