From 99f2effc5a37c627e89e3505d2b02d22e1c00e52 Mon Sep 17 00:00:00 2001 From: kate bonner Date: Mon, 27 Jul 2026 16:42:39 -0400 Subject: [PATCH 1/3] polish(amicode): design-system + a11y audit sweep across the UI surfaces Multi-agent audit (48 findings, adversarially triaged) against the amicode design system and ui-ux-pro-max critical checklists. Fixes: Tokens: update pill off the grey-on-light icon-accent color-mix fills onto --accent-fill-soft/--accent-edge; connections project rows off banned v1 vars (--border-weak-base/--surface-base); ask-card selected edge onto --accent-edge; new --accent-fill-hover token replaces two hand-rolled accent mixes; titlebar tabs onto the radius scale; channel badge raw hex dropped; run-gallery scrim into the 40-60% band. Type scale: off-scale weights (450/530/550/640/750/800) and sizes (9/11.5/12.5/15px) across solver-toggle, defaults-capsule, amicode.css, home-cards onto the sanctioned scales; off-grid paddings/gaps onto the 4px grid. Interaction: bounds-moving press/hover transforms (translateY) replaced with elevation/fill feedback; hover+focus-visible states added to yellow CTA, action cards, rail inspect/retry, starter chips, suggestion rows; busy save button gets wait cursor + reduced emphasis; sub-150ms transitions raised; MeetAmico shine + lift gated on reduced motion. A11y: onboarding-wizard inputs no longer strip the focus outline; action cards and MeetAmico are keyboard-operable (role, tabIndex, Enter/Space); profile inputs get real labels; edit-profile toggle gets aria-label/expanded; vault-panel text-glyph arrows replaced with the icon family; context-tree legend unhidden from AT; vault mount chips join the accent selected pattern. Co-Authored-By: Claude Fable 5 --- .../src/components/amicode-default-model.tsx | 4 +- .../components/amicode-defaults-capsule.tsx | 20 ++--- packages/app/src/components/titlebar.tsx | 8 +- packages/app/src/components/vault-panel.tsx | 12 ++- packages/app/src/design-polish.css | 4 + .../src/pages/session/context-tree-panel.tsx | 2 +- packages/ui/src/amicode/amicode.css | 83 +++++++++++++++---- packages/ui/src/amicode/ask-card.tsx | 6 +- packages/ui/src/amicode/connections-tab.tsx | 4 +- packages/ui/src/amicode/entity-rail.tsx | 2 +- packages/ui/src/amicode/getting-started.tsx | 5 +- packages/ui/src/amicode/home-cards.tsx | 52 +++++++++--- packages/ui/src/amicode/onboarding-wizard.tsx | 3 +- packages/ui/src/amicode/run-gallery.tsx | 2 +- packages/ui/src/amicode/solver-toggle.tsx | 12 +-- 15 files changed, 152 insertions(+), 67 deletions(-) diff --git a/packages/app/src/components/amicode-default-model.tsx b/packages/app/src/components/amicode-default-model.tsx index 4bebebaf1..2e7cd6c38 100644 --- a/packages/app/src/components/amicode-default-model.tsx +++ b/packages/app/src/components/amicode-default-model.tsx @@ -85,8 +85,8 @@ export function AmicodeDefaultModel() { color: "var(--v2-text-text-base)", background: "var(--v2-background-bg-layer-01)", border: "1px solid var(--v2-border-border-base)", - "border-radius": "6px", - padding: "3px 6px", + "border-radius": "var(--radius-md)", + padding: "4px 8px", "max-width": "220px", cursor: "pointer", }} diff --git a/packages/app/src/components/amicode-defaults-capsule.tsx b/packages/app/src/components/amicode-defaults-capsule.tsx index 019ad9309..cf18d3f54 100644 --- a/packages/app/src/components/amicode-defaults-capsule.tsx +++ b/packages/app/src/components/amicode-defaults-capsule.tsx @@ -184,11 +184,11 @@ export function AmicodeDefaultsCapsule(props: { compute?: AmicodeComputeControl const radio = (active: boolean): Record => ({ display: "flex", "align-items": "center", - gap: "7px", + gap: "8px", width: "100%", padding: "6px 10px", "font-size": "12px", - "font-weight": active ? "650" : "450", + "font-weight": active ? "650" : "400", "text-align": "left", border: active ? "1px solid var(--accent-edge)" : "1px solid var(--v2-border-border-base)", "border-radius": "var(--radius-md)", @@ -208,7 +208,7 @@ export function AmicodeDefaultsCapsule(props: { compute?: AmicodeComputeControl style={{ display: "inline-flex", "align-items": "center", - gap: "7px", + gap: "8px", "max-width": "100%", "min-width": "0", border: hp() @@ -227,7 +227,7 @@ export function AmicodeDefaultsCapsule(props: { compute?: AmicodeComputeControl {modelName()} · {hp() ? "Piccolissimo+Altissimo" : "Piccolo"} -