Skip to content

fix(desktop): deep-review round over the settings convergence + shell seam - #1997

Merged
jackwener merged 1 commit into
mainfrom
fix/deep-review-round
Aug 3, 2026
Merged

fix(desktop): deep-review round over the settings convergence + shell seam#1997
jackwener merged 1 commit into
mainfrom
fix/deep-review-round

Conversation

@jackwener

Copy link
Copy Markdown
Member

Deep adversarial review of #1984 / #1991 / #1993 (two independent review lenses; every finding verified against the tree before fixing), plus the user-reported doubled-border shell defect.

Shell seam (user report)

The content column is a rounded floating plate flush to the sidebar — its edge is the one boundary on that seam. The theme's full-height sidenav hairline (.astryx-app-shell-sidenav.elevated in the built maka.css) ran on the same seam, reading as a doubled border beside the plate's top-left corner radius. The collapsed rail already dropped this edge; it's dropped expanded too. Override lives in product CSS (maka.css is a generated artifact).

Confirmed regressions from #1993, fixed

  • bot-chat-detail had zero inter-section rhythm: its wrapper pair kept gap on a display:block section (inert) and a class with no CSS rule at all. Now a SettingsPage like the overview next door.
  • bot.css selector corruption: the file-header comment got replace-all'd into the middle of .settingsBotDetailHeader > .settingsBotLogo. Parsed by luck; removed.
  • MetadataList silently drops aria-label (closed prop destructuring, no ...rest): the runtime grid's group name now rides a real role="group" wrapper.
  • Kit section header now wraps — at the 480px window floor a multi-button action cluster drops under the title instead of crushing it (replaces the deleted bot-runtime media query, benefits every section).
  • Overview rows flush-inline (10px inset was old card-grid residue); WeChat QR dialog height floor restored (224px) so state swaps stop resizing the modal.
  • .settingsPage .settingsPageStack rename slip → .settingsPageStack .settingsPageStack; quota formatValueLabel rounds.

Convergence completions the review surfaced

  • claude-subscription-card: dropped its SectionHeader + full-width Card + repeated title — it renders under ProvidersPanel's RouteHeader exactly like its sibling OAuth panels (bare VStack), with the shared StatusDot + text status idiom. Removes the last old SectionHeader in settings.
  • ProvidersPanel connection status Badge → StatusDot + text; health deletes its hand-rolled five-arm dot mapping for the shared statusDotVariant.
  • subagent-presets panel: Card-wrapped .settingsRows + a lead Item posing as a header → SettingsSection; the settings-surface fallback drops its Card wrap.
  • About hero pills referenced two classNames with no CSS rule anywhere — they're now the Badges about.css's comment always described.

Known items deliberately deferred (copy/product decisions)

usage page kit conversion (L), bot-detail header dialect (guarded by the e2e focus-order contract), voice statusAria reused as a visible title, memory quiet-warning boxes vs Banner (depends on the #1972 "un-blue" direction), icon-plate unification.

Verification

typecheck ✅ · check-dead-css ✅ · check-a11y/copy/console ✅ · format:check ✅ · product Storybook smoke 71 renders × 3 viewports ✅

… seam

Adversarial review of #1984/#1991/#1993 (two independent lenses,
findings verified before fixing) plus one user-reported shell defect.

Shell:
- The content column is a rounded floating plate flush to the sidebar;
  the theme's full-height sidenav hairline ran on the same seam and
  read as a doubled border beside the plate's corner radius. Dropped
  in the expanded state too (collapsed already did) — separation is
  tonal, per DESIGN.md's One Working Plane rule.

Regressions from #1993, confirmed and fixed:
- bot-chat-detail lost all inter-section rhythm: its wrapper pair kept
  a gap on a display:block section (inert) and a class with no CSS
  rule. The page is a SettingsPage now, like the overview next door;
  the back button keeps only its optical inline outdent.
- bot.css had the file-header comment replace-all'd into the middle of
  `.settingsBotDetailHeader > .settingsBotLogo`. Parsed by luck;
  removed.
- MetadataList destructures a closed prop list, so the runtime grid's
  aria-label was silently dropped — the group name rides a real
  role="group" wrapper now.
- The kit section header now wraps: at the 480px window floor a
  multi-button action cluster drops under the title instead of
  crushing it (replaces the deleted bot-runtime media query).
- Overview rows go flush-inline (the 10px inset was old card-grid
  residue); the WeChat QR dialog gets its height floor back (224px)
  so state swaps stop resizing the modal.

Convergence completions the review surfaced:
- claude-subscription-card drops its SectionHeader + full-width Card
  and repeated title: it renders under ProvidersPanel's RouteHeader
  like its sibling OAuth panels, as a bare VStack with the shared
  StatusDot + text status idiom.
- ProvidersPanel connection status Badge -> StatusDot + text; health's
  hand-rolled five-arm dot mapping -> the shared statusDotVariant.
- subagent-presets panel: Card-wrapped .settingsRows + a lead Item
  posing as a header -> SettingsSection; settings-surface fallback
  drops its Card wrap.
- About hero pills referenced two classNames with no CSS rule —
  they are the Badges about.css's comment always described.
- `.settingsPage .settingsPageStack` (rename slip) -> nested
  `.settingsPageStack .settingsPageStack`; quota labels round.

Verified: typecheck, check-dead-css, check-a11y/copy/console,
format:check, product Storybook smoke (71 renders x 3 viewports).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant