Improve Ollama setup and model endpoint handling

This commit is contained in:
pewdiepie-archdaemon
2026-06-01 10:00:15 +09:00
parent 051751adcd
commit fc7f107b22
22 changed files with 982 additions and 131 deletions

View File

@@ -2578,6 +2578,26 @@ body.bg-pattern-sparkles {
animation: picker-roll-down 0.15s ease-in forwards;
}
.model-picker-menu.hidden { display: none; }
.model-picker-search-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 30px;
gap: 4px;
align-items: center;
margin-bottom: 4px;
transition: grid-template-columns 0.18s ease, gap 0.18s ease;
}
.model-picker-menu.no-models .model-picker-search-row {
margin-bottom: 0;
}
.model-picker-search-row.searching {
grid-template-columns: minmax(0, 1fr) 0px;
gap: 0;
}
.model-picker-search-row.searching .model-picker-action-btn {
opacity: 0;
transform: translateX(10px) scale(0.88);
pointer-events: none;
}
.model-picker-menu input[type="text"] {
width: 100%;
box-sizing: border-box;
@@ -2589,8 +2609,8 @@ body.bg-pattern-sparkles {
color: var(--fg);
font-family: inherit;
outline: none;
margin-bottom: 4px;
transition: border-color 0.15s;
min-width: 0;
transition: border-color 0.15s, padding 0.18s ease, background 0.18s ease;
}
.model-picker-menu input[type="text"]:focus {
border-color: var(--red);
@@ -2598,10 +2618,51 @@ body.bg-pattern-sparkles {
.model-picker-menu input[type="text"]::placeholder {
color: color-mix(in srgb, var(--fg) 30%, transparent);
}
.model-picker-action-btn {
appearance: none;
display: inline-flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
border: 1px solid var(--border);
border-radius: 4px;
background: color-mix(in srgb, var(--fg) 4%, transparent);
color: color-mix(in srgb, var(--fg) 66%, transparent);
cursor: pointer;
padding: 0;
overflow: hidden;
transform: translateX(0) scale(1);
transition: opacity 0.16s ease, transform 0.18s ease, border-color 0.15s, color 0.15s, background 0.15s;
}
.model-picker-action-btn:hover,
.model-picker-action-btn:focus-visible {
border-color: var(--red);
color: var(--fg);
background: color-mix(in srgb, var(--red) 10%, var(--panel));
outline: none;
}
.model-picker-action-btn.primary {
color: var(--red);
background: color-mix(in srgb, var(--red) 8%, transparent);
}
.model-picker-action-btn svg {
width: 14px;
height: 14px;
transition: transform 0.28s ease;
}
.model-picker-action-btn:hover svg,
.model-picker-action-btn:focus-visible svg {
transform: rotate(90deg);
}
.model-picker-list {
max-height: min(280px, 50dvh);
overflow-y: auto;
}
.model-picker-list.is-empty {
max-height: 0;
overflow: hidden;
}
.model-picker-list .model-switch-item {
display: flex;
align-items: center;
@@ -2615,6 +2676,14 @@ body.bg-pattern-sparkles {
.model-picker-list .model-switch-item:hover {
background: color-mix(in srgb, var(--red) 8%, transparent);
}
.model-picker-list .model-switch-empty {
display: flex;
align-items: center;
justify-content: center;
padding: 5px 8px;
color: color-mix(in srgb, var(--fg) 50%, transparent);
font-size: 0.82em;
}
.model-picker-list .mp-section-label {
font-size: 0.72em;
text-transform: uppercase;
@@ -13102,9 +13171,54 @@ body:has(.doc-version-panel:not(.hidden)) .hamburger-btn {
/* Collapsed: hide the form body and point the caret right. */
.adm-add-section.collapsed .admin-model-form { display: none; }
.adm-add-section.collapsed .adm-section-caret { transform: rotate(-90deg); }
.adm-quickstart-section {
margin-top: 7px;
}
.adm-quickstart-toggle {
display: flex;
align-items: center;
gap: 6px;
cursor: pointer;
user-select: none;
opacity: 0.72;
border: 1px solid var(--border);
border-radius: 6px;
padding: 4px 8px;
font-size: 11px;
background: color-mix(in srgb, var(--fg) 3%, transparent);
}
.adm-quickstart-toggle:hover {
opacity: 1;
border-color: var(--red);
}
.adm-quickstart-section:not(.collapsed) .adm-quickstart-toggle {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.adm-quickstart-body {
display: flex;
align-items: center;
gap: 6px;
border: 1px solid var(--border);
border-top: 0;
border-radius: 0 0 6px 6px;
padding: 6px 8px;
}
.adm-quickstart-section.collapsed .adm-quickstart-body { display: none; }
.adm-quickstart-section.collapsed .adm-section-caret { transform: rotate(-90deg); }
/* Custom provider picker (logo + name) replacing the native <select> */
.adm-provider-picker { position: relative; margin-bottom: 6px; }
.adm-provider-combo {
display: flex;
align-items: stretch;
}
.adm-provider-combo input {
flex: 1;
min-width: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.adm-provider-btn {
width: 100%;
display: flex; align-items: center; gap: 8px;
@@ -13113,6 +13227,14 @@ body:has(.doc-version-panel:not(.hidden)) .hamburger-btn {
padding: 5px 8px; font-family: inherit; font-size: 12px;
cursor: pointer; text-align: left;
}
.adm-provider-combo .adm-provider-btn {
width: 128px;
flex-shrink: 0;
border-left: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
justify-content: space-between;
}
.adm-provider-btn:hover { border-color: color-mix(in srgb, var(--fg) 30%, var(--border)); }
.adm-provider-current { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; }
.adm-provider-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@@ -13343,6 +13465,11 @@ body:has(.doc-version-panel:not(.hidden)) .hamburger-btn {
gap: 6px;
}
.admin-model-form-row input { flex: 1; }
.adm-ep-inline-msg {
min-height: 16px;
margin-top: 5px;
font-size: 11px;
}
/* Endpoint items */
.admin-ep-item {