loop-benchmarking

Controlled experiments across agentic coding configurations. Same task, one variable, what actually works.
git clone https://git.shiptheloop.com/loop-benchmarking.git
Log | Files | Refs | README

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:
Mdashboard/src/components/Calibrate.tsx | 7++++---
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)} />

Impressum · Datenschutz