feat(agent): model quick-picker in overflow menu

Adds three one-click model shortcuts (haiku / sonnet / opus) at the
bottom of the agent overflow menu (⋯), below a separator and a small
'model' section label.

- The active model alias is highlighted with .active (purple border +
  tint) so the operator can see at a glance which model is current.
  Matching tolerates both short aliases (haiku) and full API names
  (claude-3-5-haiku-20241022) via an endsWith check.
- Clicking the active model is a no-op (closes menu, no POST).
- Clicking a different alias calls postModel() and closes the menu.
- renderModelChip() keeps the picker buttons in sync on every
  /api/state refresh without rebuilding the menu.

Before this change the operator had to type /model <name> in the
compose box. The overflow menu provides a discoverability path for
operators who don't remember slash commands.
This commit is contained in:
iris 2026-06-05 11:56:47 +02:00 committed by mara
commit 6c74c6dafa
2 changed files with 81 additions and 4 deletions

View file

@ -263,6 +263,32 @@ h2, h3 {
opacity: 0.4;
cursor: progress;
}
.overflow-sep {
height: 1px;
background: var(--border);
margin: 0.3em 0.4em;
}
.overflow-section-label {
font-size: 0.72em;
letter-spacing: 0.1em;
color: var(--muted);
padding: 0 0.7em 0.1em;
text-transform: uppercase;
}
.overflow-item-model {
color: var(--muted);
font-variant-numeric: tabular-nums;
}
.overflow-item-model:hover {
color: var(--fg);
background: rgba(203, 166, 247, 0.08);
border-color: var(--purple-dim);
}
.overflow-item-model.active {
color: var(--purple);
border-color: var(--purple-dim);
background: rgba(203, 166, 247, 0.06);
}
/* Header pill — inbox / loose-ends triggers. Compact, count-prominent. */
.header-pill {