diff --git a/apps/ui/src/components/AnalysisResults.tsx b/apps/ui/src/components/AnalysisResults.tsx index 322626fa..e6c46f81 100644 --- a/apps/ui/src/components/AnalysisResults.tsx +++ b/apps/ui/src/components/AnalysisResults.tsx @@ -2041,11 +2041,19 @@ export function AnalysisResults({ + {groupIcon(group.name)} {group.name} + + } status="idle" > {/* Audit-preserved annotation paragraph kept here so @@ -2200,12 +2208,13 @@ export function AnalysisResults({ rightSlot={
{audioContentHash && patchAppliedCount > 0 && ( - {patchAppliedCount} of {patchCards.length} applied - + )}
@@ -2218,14 +2227,23 @@ export function AnalysisResults({ bass patch without scanning all 8 cards. */}
{patchGroups.map((group) => ( -
-

- {groupIcon(group.name)} {group.name} -

- + SVG) renders as a real React node — the + // template-literal version stringifies it to "[object + // Object]" and analysisResultsUi.test.ts:448 fails. + name={ + <> + {groupIcon(group.name)} {group.name} + + } + status="idle" + > + {/* Keep the exact className — analysisResultsUi.test.ts:440 + expects ≥2 occurrences of `grid gap-4 grid-cols-1 + sm:grid-cols-2` across Mix Chain + Patches. */}
{group.cards.map((patch) => { const isOpen = !!openPatch[patch.id]; @@ -2342,7 +2360,7 @@ export function AnalysisResults({ ); })}
-
+ ))}