Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 16 additions & 13 deletions gui/src/pages/Models.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2018,19 +2018,22 @@ export default function Models({ apiBase, restartEpoch = 0, connected = false, c
</SettingsRow>
)}
{v2 && v2.multiAgentMode === "v2" && (
<SettingsRow label={t("models.keepNativeOnV1")} muted={false} caption>
<Switch
on={v2.keepNativeChatGptOnV1 === true}
onClick={() => void setKeepNativeChatGptOnV1(!v2.keepNativeChatGptOnV1)}
disabled={v2Busy}
label={t("models.keepNativeOnV1")}
/>
<Tooltip content={t("models.keepNativeOnV1Hint")} side="top" maxWidth={360}>
<span className="models-v2-keep-native-info" aria-label={t("models.keepNativeOnV1Hint")}>
<IconInfo width={13} height={13} aria-hidden="true" />
</span>
</Tooltip>
</SettingsRow>
<div className="models-v2-keep-native-row">
<div className="models-v2-keep-native">
<span className="models-v2-keep-native-label text-caption">{t("models.keepNativeOnV1")}</span>
<Switch
on={v2.keepNativeChatGptOnV1 === true}
onClick={() => void setKeepNativeChatGptOnV1(!v2.keepNativeChatGptOnV1)}
disabled={v2Busy}
label={t("models.keepNativeOnV1")}
/>
<Tooltip content={t("models.keepNativeOnV1Hint")} side="top" maxWidth={360}>
<span className="models-v2-keep-native-info" aria-label={t("models.keepNativeOnV1Hint")}>
<IconInfo width={13} height={13} aria-hidden="true" />
</span>
</Tooltip>
</div>
</div>
)}
{pendingSurface && (
<SubagentSurfaceWarningModal
Expand Down
42 changes: 41 additions & 1 deletion gui/src/styles-models-workspace.css
Original file line number Diff line number Diff line change
Expand Up @@ -170,14 +170,15 @@
*/
.models-control-top-row {
display: grid;
grid-template-columns: minmax(0, 1fr);
grid-template-columns: minmax(0, 1fr) auto;
row-gap: var(--space-1);
margin-bottom: var(--space-3);
min-width: 0;
}

/* One labelled control: label group left, action group right, both vertically centered. */
.models-control-row {
grid-column: 1 / -1;
display: flex;
align-items: center;
justify-content: space-between;
Expand Down Expand Up @@ -241,6 +242,31 @@
align-items: center;
}

/* The v2 qualifier stays under the Sub-agent controls; the other settings rows
still span the panel so their labels and controls retain the shared edges. */
.models-v2-keep-native-row {
grid-column: 2;
justify-self: end;
display: flex;
justify-content: flex-end;
min-width: 0;
}

.models-v2-keep-native {
display: inline-flex;
align-items: center;
gap: var(--space-2);
min-width: 0;
}

.models-v2-keep-native-label {
color: var(--muted);
white-space: nowrap;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}

/* Sits in the same 24px gutter as the Sub-agent help button directly above it,
so both rows end on one right edge. */
.models-v2-keep-native-info {
Expand Down Expand Up @@ -548,6 +574,20 @@
/* ── Responsive ───────────────────────────────────────── */

@media (max-width: 1160px) {
.models-control-top-row {
grid-template-columns: 1fr;
}

.models-v2-keep-native-row {
grid-column: 1;
justify-self: start;
justify-content: flex-start;
}

.models-v2-keep-native-label {
white-space: normal;
}

.models-shadow-model-slot {
flex: 1 1 12rem;
width: auto;
Expand Down
Loading