mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-15 17:25:26 -04:00
Long model names are truncated with ellipsis in two places with no way to see the full name: the model-picker dropdown items and the chat-header model indicator. Add a native title tooltip carrying the full name to both — the dropdown item's name span (nameSpan.title = m.display) and the header label (label.title = the full model id; empty for the 'Select model' placeholder). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -328,6 +328,9 @@ function _initModelPickerDropdown() {
|
||||
const nameSpan = document.createElement('span');
|
||||
nameSpan.className = 'mp-model-name';
|
||||
nameSpan.textContent = m.display;
|
||||
// Long model names are clipped with ellipsis — expose the full name on
|
||||
// hover so the suffix/variant tag is still discoverable (#1982).
|
||||
nameSpan.title = m.display;
|
||||
row.appendChild(nameSpan);
|
||||
if (m.stale) {
|
||||
const badge = document.createElement('span');
|
||||
@@ -735,6 +738,9 @@ export function updateModelPicker() {
|
||||
}
|
||||
|
||||
const displayName = modelId ? modelId.split('/').pop() : 'Select model';
|
||||
// The header indicator clips long names with ellipsis; show the full model
|
||||
// identifier on hover (#1982). No tooltip on the "Select model" placeholder.
|
||||
label.title = modelId || '';
|
||||
const logo = modelId ? providerLogo(modelId) : null;
|
||||
if (logo) {
|
||||
label.innerHTML = '<span class="model-picker-logo">' + logo + '</span> ' + displayName;
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
"""Regression for issue #1982 — long model names are clipped with ellipsis in
|
||||
two surfaces (the model-picker dropdown items and the chat-header model
|
||||
indicator) with no tooltip, so the suffix/variant tag is undiscoverable.
|
||||
|
||||
The fix adds a `title` (native hover tooltip) carrying the full name to both
|
||||
render sites in static/js/modelPicker.js. The module pulls in browser globals so
|
||||
it can't be imported under node; this guards the two title assignments at source.
|
||||
"""
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
SRC = (Path(__file__).resolve().parent.parent / "static/js/modelPicker.js").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_dropdown_item_has_title_tooltip():
|
||||
# The dropdown item name span must carry a title with the full display name.
|
||||
assert re.search(r"nameSpan\.title\s*=\s*m\.display", SRC), \
|
||||
"dropdown model-name span needs a title tooltip (#1982)"
|
||||
|
||||
|
||||
def test_header_indicator_has_title_tooltip():
|
||||
# updateModelPicker must set the header label's title to the full model id
|
||||
# (empty for the 'Select model' placeholder).
|
||||
body = SRC[SRC.index("export function updateModelPicker()"):]
|
||||
assert re.search(r"label\.title\s*=\s*modelId\b", body), \
|
||||
"header model indicator needs a title tooltip (#1982)"
|
||||
Reference in New Issue
Block a user