From fb5edcacf355492ba4c931e281b2e4f0eb45a527 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 18 May 2026 22:44:36 +0000 Subject: [PATCH 1/4] feat(ui): D.4 migrate FileUpload + Input Source to ui/ primitives MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR 5 of 16 in the UI consistency overhaul. The Input Source panel becomes a ; the analysis-option toggles become Radix Checkboxes; the Run Analysis CTA becomes a )} )} - +
diff --git a/apps/ui/src/components/FileUpload.tsx b/apps/ui/src/components/FileUpload.tsx index 8b8fc26a..da9e3a1a 100644 --- a/apps/ui/src/components/FileUpload.tsx +++ b/apps/ui/src/components/FileUpload.tsx @@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; import { UploadCloud, FileAudio, X, AlertTriangle } from 'lucide-react'; import { isSupportedAudioFile } from '../services/audioFile'; +import { Button, Panel, Pill } from './ui'; interface FileUploadProps { onFileSelect: (file: File) => void; @@ -139,24 +140,26 @@ export function FileUpload({

Drop Audio Here

or click to browse

-
- {['MP3', 'WAV', 'FLAC', 'AIFF'].map(fmt => ( - - {fmt} - - ))} +
+ {['MP3', 'WAV', 'FLAC', 'AIFF'].map((fmt) => ( + + {fmt} + + ))} +
+
+
- {fileError && (
@@ -165,36 +168,45 @@ export function FileUpload({ )}
) : ( -
-
-
-
- -
-
-

{selectedFile.name}

-

- - Ready • {(selectedFile.size / (1024 * 1024)).toFixed(2)} MB -

- {fileSizeWarning && ( -

- - {fileSizeWarning} + + {/* Accent stripe down the left edge — the same Live device-on + affordance used elsewhere. */} +

+
+
+
+ +
+
+

+ {selectedFile.name}

- )} +

+ + Ready • {(selectedFile.size / (1024 * 1024)).toFixed(2)} MB +

+ {fileSizeWarning && ( +

+ + {fileSizeWarning} +

+ )} +
+ {!isLoading && ( + + )}
- {!isLoading && ( - - )} -
+ )}
); From a3f2500677b9f08aeb8ea2e54cb1bf24c1e80b81 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 18 May 2026 22:50:17 +0000 Subject: [PATCH 2/4] fix(ui): drop unused Panel import from App.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #69 review flagged App.tsx:9 imports Panel but never uses it (Panel is only consumed in FileUpload.tsx). Drop it. This is also a low-cost iteration to get CI logs against a fresh commit — the Frontend job failed on the previous push but the auth-gated logs prevented diagnosis from this sandbox. Pushing this clean fix to re-trigger the smoke suite. https://claude.ai/code/session_01WNtYcWXwn4mVnnjxqT7uAe --- apps/ui/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ui/src/App.tsx b/apps/ui/src/App.tsx index fa553aaf..d76db130 100644 --- a/apps/ui/src/App.tsx +++ b/apps/ui/src/App.tsx @@ -6,7 +6,7 @@ import { AnalysisStatusPanel } from './components/AnalysisStatusPanel'; import { DiagnosticLog } from './components/DiagnosticLog'; import { FileUpload } from './components/FileUpload'; import { WaveformPlayer } from './components/WaveformPlayer'; -import { Button, Checkbox, DeviceRack, Panel } from './components/ui'; +import { Button, Checkbox, DeviceRack } from './components/ui'; // Audit Finding #5: IdleValuePropPanel now occupies the Signal Monitor area // when no file is selected. It tells the producer what ASA does and what to // expect in 30s / 5min. From 19632513d47ae85c1adead432f2b1fdae6b9cd65 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 18 May 2026 22:53:57 +0000 Subject: [PATCH 3/4] fix(ui): revert App.tsx analysis-option toggles to native PR #69's Frontend CI failed twice on smoke tests without accessible logs from this sandbox. Best hypothesis: the smoke spec at tests/smoke/upload-estimate-phase1.spec.ts:242-246 uses page.getByLabel("PITCH/NOTE TRANSLATION") plus .toBeChecked() and .uncheck(). Playwright's getByLabel documents itself for "input elements", and .uncheck() expects native checkboxes (or, in some versions, also role=checkbox). The Radix Checkbox renders as a