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
11 changes: 9 additions & 2 deletions webviews/src/pages/settings/components/AgentHarnesses.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import { useCallback, useEffect, useRef, useState } from "react";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import { Tabs } from "@base-ui/react/tabs";
import { StableLabel } from "../../../ui/StableLabel";
import { AgentMark } from "../../../agent-session/shared/AgentMark";
import { parseHarnessIconSpec, rememberHarnessIcons } from "../../../agent-session/shared/harnessIcons";
import { useStore } from "../context";
Expand Down Expand Up @@ -205,7 +206,10 @@ function HarnessRow({
disabled={doctor?.running}
onClick={() => void run({ action: "doctor", id: row.id })}
>
{doctor?.running ? t("settingsPage.agents.checking") : t("settingsPage.agents.check")}
<StableLabel
label={doctor?.running ? t("settingsPage.agents.checking") : t("settingsPage.agents.check")}
alternatives={[t("settingsPage.agents.check"), t("settingsPage.agents.checking")]}
/>
</button>
)}
{manages && row.removable && (
Expand Down Expand Up @@ -485,7 +489,10 @@ function RegistryRow({ agent, run }: { agent: AgentRegistryAgent; run: (gesture:
setBusy(false);
}}
>
{added ? t("settingsPage.agents.added") : t("settingsPage.agents.addButton")}
<StableLabel
label={added ? t("settingsPage.agents.added") : t("settingsPage.agents.addButton")}
alternatives={[t("settingsPage.agents.addButton"), t("settingsPage.agents.added")]}
/>
</button>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion webviews/src/pages/settings/editors/NumberListEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export function NumberListEditor({ row, value, disabled, labelId }: EditorProps)
if (!numbers.includes(parsed)) write([...numbers, parsed]);
};
return (
<span className="host-list">
<span className="host-list number-list">
<span className="tokens">
{numbers.map((number) => {
const label = displayNumber(number, row.range);
Expand Down
1 change: 1 addition & 0 deletions webviews/src/pages/settings/layout.css
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,7 @@
}

.theme-count {
font-variant-numeric: tabular-nums;
padding: 6px 6px 2px;
border-top: 1px solid var(--border);
margin-top: 4px;
Expand Down
13 changes: 13 additions & 0 deletions webviews/src/pages/settings/settings.gallery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1081,6 +1081,19 @@ Object.assign(variants, {
steps: [wait("[data-registry-agent]")],
note: "Add Agent from ACP Registry…: one click per agent; Added when it is a harness, disabled when it cannot start here.",
}),
"agents-stable-check-idle": variant("agents", {
note: "Check actions at rest, reserving their translated Checking label width.",
agents: { doctor: {} },
}),
"agents-stable-check-busy": variant("agents", {
note: "The same Check actions while diagnostics run; button widths stay fixed.",
agents: { doctor: { "acme-agent": { running: true } } },
}),
"agents-stable-added": variant("agents", {
focus: "agents.registry",
steps: [wait('[data-registry-agent="goose"]'), click('[data-registry-agent="goose"] button')],
note: "The registry action after Add becomes Added, with its original width preserved.",
}),
"agents-doctor": variant("agents", {
steps: [click('[data-agent-harness="acme-agent"] button'), wait("[data-agent-doctor]")],
note: "Check: the doctor's steps inline, a failed step with its fix, later steps skipped.",
Expand Down
8 changes: 8 additions & 0 deletions webviews/src/pages/settings/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -2119,3 +2119,11 @@ button.menu-disclosure {
color: var(--danger);
font-size: var(--text-detail);
}

/* Live storage and phone totals, plus editable numeric tokens, keep equal-width digits. */
.backdrop-own-bar > .row-help,
[data-card="mobile"] > .rows:first-of-type > [data-action-row]:first-child .row-help,
.number-list .token,
.number-list .token-input {
font-variant-numeric: tabular-nums;
}
Loading