feat: improve model scan cache override, combo UX, and filename handling

- Add force_rescan end-to-end so callers can bypass the short-lived local model scan cache: backend entry in __init__.py and core/resolver.py, lifecycle_graph_methods forwards it through the workflow analysis body, and download_target_methods passes ?force=1 from the refresh flow.
- Rewrite combo dropdown lifecycle in missing_browser_methods with show/hide helpers, pointer-capture tracking, and a capture-phase outside-click listener so the list stays open during drag/hover and closes reliably otherwise.
- Animate refresh buttons (CSS keyframes + JS Web Animations) with reduced-motion fallback.
- Encode selected model path into the selected-bar data-model attribute and wire contextmenu so users can open the containing folder from the selection.
- Fix XSS risk in selected-bar label by escaping label HTML; change queue/selected Remove buttons to danger style.
- Increase max missing-browser model column width clamp from 430 to 820 and stop truncating missing-filename display; show full filename with tooltip instead.
- Update huggingface-author-index.json metadata timestamp/counts (1 file changed, 1 line).
This commit is contained in:
Dariusz L
2026-06-19 03:57:40 +02:00
parent 5f1e814751
commit 4f91accbab
8 changed files with 217 additions and 34 deletions
+45
View File
@@ -1011,6 +1011,7 @@
font-weight: 700;
color: var(--mr-text);
margin: 0;
min-width: 0;
word-break: break-word;
letter-spacing: -0.01em;
}
@@ -1024,7 +1025,10 @@
}
.mr-card-title-primary {
display: block;
min-width: 0;
color: var(--mr-text-soft);
overflow-wrap: anywhere;
word-break: normal;
}
.mr-card-title-secondary {
display: block;
@@ -1577,6 +1581,33 @@
border-color: var(--mr-missing-control-focus-border, rgba(114,211,138,0.30));
box-shadow: 0 0 0 2px var(--mr-missing-control-focus-ring, rgba(114,211,138,0.08));
}
@keyframes mr-refresh-spin {
to {
transform: rotate(360deg);
}
}
.mr-refresh-spin-target,
#model-resolver-modal .mr-refresh-spin-target {
display: inline-flex;
align-items: center;
justify-content: center;
line-height: 0;
}
.mr-btn.mr-is-refreshing > svg,
#model-resolver-modal .mr-btn.mr-is-refreshing > svg,
.mr-btn.mr-is-refreshing .mr-refresh-spin-target,
#model-resolver-modal .mr-btn.mr-is-refreshing .mr-refresh-spin-target {
animation: mr-refresh-spin 0.62s linear infinite;
transform-origin: center;
}
@media (prefers-reduced-motion: reduce) {
.mr-btn.mr-is-refreshing > svg,
#model-resolver-modal .mr-btn.mr-is-refreshing > svg,
.mr-btn.mr-is-refreshing .mr-refresh-spin-target,
#model-resolver-modal .mr-btn.mr-is-refreshing .mr-refresh-spin-target {
animation: mr-refresh-spin 0.9s linear 1;
}
}
.mr-btn-primary,
#model-resolver-modal .mr-btn-primary {
background: var(--mr-accent);
@@ -4591,6 +4622,10 @@
width: 14px;
height: 14px;
}
#model-resolver-modal .mr-options-shell .mr-btn.mr-btn-primary,
#model-resolver-modal .mr-options-shell .mr-btn.mr-btn-primary:hover:not(:disabled) {
color: #101010;
}
.mr-options-field {
display: flex;
flex-direction: column;
@@ -5690,6 +5725,16 @@
border-color: rgba(47, 128, 237, 0.48);
color: #ffffff;
}
#model-resolver-modal .mr-missing-detail-pane .model-resolver-selected .mr-btn-danger {
background: rgba(239, 68, 68, 0.16);
border-color: rgba(239, 68, 68, 0.34);
color: #fee2e2;
}
#model-resolver-modal .mr-missing-detail-pane .model-resolver-selected .mr-btn-danger:hover:not(:disabled) {
background: rgba(239, 68, 68, 0.24);
border-color: rgba(239, 68, 68, 0.48);
color: #ffffff;
}
#model-resolver-modal .mr-missing-detail-pane .mr-search-progress-list-compact {
gap: 7px;
margin: 10px 0 8px;