From 50407eb2ce7702f22698f9d48d4e7cfc62623060 Mon Sep 17 00:00:00 2001 From: functionstackx <47992694+functionstackx@users.noreply.github.com> Date: Sat, 30 May 2026 21:30:16 -0400 Subject: [PATCH] fix: resolve react-doctor accessibility & correctness errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Run of `npx react-doctor@latest` flagged 616 issues (score 45/100). This commit clears all blocking errors in the Accessibility and Correctness categories plus the mechanical `button-has-type` warnings, raising the score to 57/100 (591 issues). Behavior-preserving only — the State & Effects errors and perf/architecture warnings are left for follow-up PRs since they require deeper, behavior-sensitive review. Fixes: - no-nested-component-definition: hoist `SortHeader` out of `SubmissionsTable` to module scope and pass sort state via props, so it keeps a stable identity instead of remounting every render. - alt-text (×2): add `alt` to the OG-image circuit tiles (decorative, `alt=""`) and the logo (`alt="SemiAnalysis"`). - role-has-required-aria-props (×2): add `aria-controls` to the `role="combobox"` triggers in multi-select / searchable-select, wired to a `useId()`-generated listbox id on the popup. - button-has-type (×20): add explicit `type="button"` to chart/UI buttons (none are form submits). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/app/blog/[slug]/og-image-render.tsx | 3 +- packages/app/src/app/error.tsx | 1 + .../inference/replay/ReplayPanel.tsx | 1 + .../components/inference/ui/ChartDisplay.tsx | 3 + .../submissions/SubmissionsTable.tsx | 69 +++++++++++++------ .../app/src/components/ui/bottom-toast.tsx | 2 + .../components/ui/calendar-picker-utils.tsx | 1 + .../app/src/components/ui/chart-buttons.tsx | 3 + .../app/src/components/ui/chart-legend.tsx | 3 + packages/app/src/components/ui/data-table.tsx | 3 + .../src/components/ui/multi-date-picker.tsx | 1 + .../app/src/components/ui/multi-select.tsx | 3 + .../src/components/ui/searchable-select.tsx | 8 ++- .../src/components/ui/unofficial-banner.tsx | 2 + 14 files changed, 80 insertions(+), 23 deletions(-) diff --git a/packages/app/src/app/blog/[slug]/og-image-render.tsx b/packages/app/src/app/blog/[slug]/og-image-render.tsx index 04a3b1ef..4d1e0732 100644 --- a/packages/app/src/app/blog/[slug]/og-image-render.tsx +++ b/packages/app/src/app/blog/[slug]/og-image-render.tsx @@ -102,6 +102,7 @@ export async function renderOgImage(meta: BlogPostMeta) { - + SemiAnalysis , diff --git a/packages/app/src/app/error.tsx b/packages/app/src/app/error.tsx index a03d268a..ad16ef93 100644 --- a/packages/app/src/app/error.tsx +++ b/packages/app/src/app/error.tsx @@ -21,6 +21,7 @@ export default function Error({

An unexpected error has occurred.

{error.message}