commit 9fab5af2106b43a76d5ec6827903ccd666eb3945
parent cce938f0ee50da98113502ccbc5e5d066efc5137
Author: Brian Graham <brian@buildingbetterteams.de>
Date: Thu, 9 Apr 2026 07:56:41 +0200
Fix calibration UI: connect Human Testing toggle to all cards
The editing state from the parent "Human Testing" button now flows
down to each CalibrationCard, showing tri-state test controls, editable
notes, and copyable JSON export on all cards simultaneously.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Diffstat:
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dashboard/src/components/Calibrate.tsx b/dashboard/src/components/Calibrate.tsx
@@ -56,11 +56,11 @@ function TriState({ value, onChange }: { value: boolean | null; onChange: (v: bo
);
}
-function CalibrationCard({ data, onUpdate }: { data: ComparisonData; onUpdate: (tests: Record<string, boolean | null>, notes: string) => void }) {
+function CalibrationCard({ data, editing, onUpdate }: { data: ComparisonData; editing: boolean; onUpdate: (tests: Record<string, boolean | null>, notes: string) => void }) {
const { entry, botScore, botTests, artifactUrl } = data;
const [humanTests, setHumanTests] = useState<Record<string, boolean | null>>({ ...entry.human_tests });
const [notes, setNotes] = useState(entry.notes);
- const [showEditor, setShowEditor] = useState(false);
+ const showEditor = editing;
const botByName = new Map(botTests.map(t => [t.name, t]));
@@ -139,7 +139,7 @@ function CalibrationCard({ data, onUpdate }: { data: ComparisonData; onUpdate: (
style={{ width: "100%", minHeight: "40px", background: "transparent", border: "1px solid var(--border)", color: "var(--text)", fontSize: "0.75rem", padding: "4px", fontFamily: "inherit", resize: "vertical" }}
/>
) : (
- <span onClick={() => setShowEditor(true)} style={{ cursor: "pointer" }}>{notes || "(click to add notes)"}</span>
+ <span>{notes || "(no notes)"}</span>
)}
</div>
@@ -267,6 +267,7 @@ export default function Calibrate({ comparisons }: { comparisons: ComparisonData
{comparisons.map(data => (
<CalibrationCard
key={data.entry.short_id}
+ editing={showEditor}
data={{ ...data, entry: { ...data.entry, notes: updates.get(data.entry.short_id)?.notes ?? data.entry.notes, human_tests: updates.get(data.entry.short_id)?.tests ?? data.entry.human_tests } }}
onUpdate={(tests, notes) => handleUpdate(data.entry.short_id, tests, notes)}
/>