fix: backend toggle not sent to server; add per-message model tag
Fixes:
- app.js was tracking primaryBackend locally but never included
model: primaryBackend in the /chat POST body, so the server always
used settings.primary_backend regardless of what the user clicked.
Now model: primaryBackend is sent on every chat request.
- Responses were only annotated when fallback occurred. Now every
assistant message shows a small model tag at the bottom right.
chat.py:
- _backend_label() resolves human-readable name:
claude → "Claude", gemini → "Gemini",
local → registry label (e.g. "Gemma 4 E4B") or model_name
- SSE payload now includes backend_label field
app.js:
- model: primaryBackend added to /chat fetch body
- After every response, appends .model-tag div with backend_label
- Fallback shows "⚡ fallback → <label>" in amber; normal is muted
- Removed separate system message for fallback (tag covers it)
style.css:
- .model-tag: small muted text, right-aligned, separated by thin line
- .model-tag.fallback: amber (#f59e0b)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -949,6 +949,7 @@
|
||||
include_mid: memMid,
|
||||
include_short: memShort,
|
||||
off_record: current_mode === 'otr',
|
||||
model: primaryBackend,
|
||||
user: CORTEX_USER,
|
||||
persona: CORTEX_PERSONA,
|
||||
}),
|
||||
@@ -984,10 +985,15 @@
|
||||
const assistHistIdx = currentHistory.length;
|
||||
currentHistory.push({ role: 'assistant', content: data.response });
|
||||
attachHistoryControls(thinkingDiv, assistHistIdx);
|
||||
if (data.fallback_used) {
|
||||
addMessage('system',
|
||||
`⚡ ${primaryBackend} unavailable — answered by ${data.backend}`);
|
||||
}
|
||||
|
||||
// Model tag — always shown, amber if fallback was used
|
||||
const modelTag = document.createElement('div');
|
||||
modelTag.className = 'model-tag' + (data.fallback_used ? ' fallback' : '');
|
||||
const label = data.backend_label || data.backend || '';
|
||||
modelTag.textContent = data.fallback_used
|
||||
? `⚡ fallback → ${label}`
|
||||
: label;
|
||||
thinkingDiv.appendChild(modelTag);
|
||||
} else if (data.type === 'error') {
|
||||
throw new Error(data.message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user