Fix wave chunk A: no Default option, composer = strong slot, catalog revalidation
Item 1 — no Default in the slot selectors (owner, fix wave): a "default" model is not a thing in this app. Picking Default used to delete the slot and re-arm the first-run gate — incoherent. Now the model menus carry NO clear row at all (a slot holds a pick or reads "—"), the thinking menus carry a "—" row (menu-none) that clears only the thinking pin, and the hint line is the roster only — the resolved factory pin is never named. Master's amendment confirmed: the factory-pin hint is SUPERSEDED entirely (Platform removes the pins). Item 2 — the composer control IS the strong slot (owner: "one and the same"): ModelControl (model-picker.tsx) reads the raw models section (GET /api/settings) and the federated catalog, and writes PUT /api/settings/models via composeSlotModel — the same seam the settings Agent section and SetupDialog use. Props retired: chatId, settings, onSaved, fallbackModelId, noDefaultModel — the control is self-sufficient and identical on every surface (composer, home dock, /chat/new). The per-chat model PUT is gone from the UI; legacy per-chat overrides keep resolving server-side. StatsBar/DockOverlay plumbing slimmed accordingly; chat.tsx drops its per-chat settings state and initialSettings prop. Item 3 — the composer catalog cache no longer freezes per page load: fetchCatalog(force) invalidates, and every model-menu open revalidates in the background (stale-while-revalidate — cached list shows instantly, the fresh federation swaps in). Owner's repro verified live: a key saved mid-session widens the menu without a reload. Item 4 — stale doc comments fixed: model-catalog.ts's "OpenRouter catalog"/"multi-provider future" (Platform's file — mechanical, flagged for review) and model-picker's retired "config-pinned"/ per-chat-PUT narrative. Live-verified on 3001: unpicked slots read "—" everywhere; model menus have no clear row; the "—" thinking row clears the pin but keeps the model; composer pick writes strong and preserves cheap/ vision siblings; thinking pill writes strong.thinkingLevel; groq key added mid-session appears in the open menu without reload. Caught in live verification: the record fetch was mapping the WHOLE settings record into the models section (picks never wrote) — fixed to read body.settings.models. Gates: typecheck, lint, 807/807, build.
This commit is contained in:
@@ -125,10 +125,6 @@ export function DraftShell({
|
||||
<StatsBar
|
||||
dictationSlot={<DictationBar dictation={dictation} />}
|
||||
turns={[]}
|
||||
chatId=""
|
||||
noDefaultModel
|
||||
settings={settings}
|
||||
onSettingsSaved={onSettingsSaved}
|
||||
// The session-data slot (owner, 2026-09-15): pre-chat the left
|
||||
// side is free — the knowledge-context budget lives exactly
|
||||
// where session data will sit once a session exists.
|
||||
@@ -161,11 +157,10 @@ export function NewSession({
|
||||
const [text, setText] = useState("");
|
||||
const [busy, setBusy] = useState(false);
|
||||
// THE default settings (owner, 2026-09-18): this surface and the home
|
||||
// topic dock ARE the settings page for the default model — no baked-in
|
||||
// default exists; the user's last choice (server-rendered in via
|
||||
// initialSettings, shared with home through data/default-settings.json)
|
||||
// IS the default. ModelControl with an empty chatId never PUTs — it
|
||||
// hands the choice up; it still rides the session POST then PUT-on-create.
|
||||
// topic dock carries only the knowledge-context budget now (fix
|
||||
// wave): the model pills ARE the strong slot (PUT /api/settings/models,
|
||||
// app-wide) — the per-chat model pick is retired. saveDraft still
|
||||
// lifts the context budget so it rides the session POST.
|
||||
const { settings, save: saveDraft } = useDefaultSettings(initialSettings);
|
||||
|
||||
// First-run gate (model-slots wave, owner 2026-09-20): the send
|
||||
|
||||
Reference in New Issue
Block a user