Commit 479f28a
committed
feat: calibrate every head, unify the chip language, fix the modal layout
Closes #265, #266, #267, #268.
CALIBRATION EVERYWHERE (#265). Taste and Tox21 still ran on a flat 0.5 with only AUROC shown —
the exact reporting gap #261 closed for aroma and mouthfeel. Both now use the same out-of-fold
calibration with a 50% precision floor, and /api/heads publishes threshold, precision, recall and
confident_capable for all four modalities.
The taste heads were mildly shy, as expected with hundreds of positives each (sweet 0.33, umami
0.33, bitter 0.51), and all six clear the floor at 0.50-0.87. The Tox21 result is the one that
matters: every one of the twelve calibrated UPWARD — NR-AR to 0.69, NR-AR-LBD 0.65, NR-ER 0.63 —
which means a flat 0.5 had them OVER-flagging. That is the opposite direction from the thin aroma
heads and the more dangerous one, because a caution flag that cries wolf teaches people to ignore
the flags that matter.
CHIP LANGUAGE (#266). Flavor, note, taste and mouthfeel chips had each been given a different
border STYLE at a different time — dashed, dotted, thicker, plus per-taste text recolouring — so
they read as four accidents rather than one system. They now share a pill, a size and a border
weight, and carry identity in a leading dot in the family's own hue. Each studio section also
gained a plain-language paragraph on what that dimension IS and why it matters: a flavor is the
whole percept, a note is what the nose reads, taste is the basics the tongue reads, mouthfeel is
touch reported by the trigeminal nerve. Menthol is cold without a temperature change; that
distinction is load-bearing and nothing in the UI had ever said it.
ALL MODALITIES ON CARDS (#267). Substitute and neighbor cards showed taste and aroma but not
mouthfeel. Read straight off the profile matrix, whose mouthfeel columns were already there, so
it costs no extra inference — and each sensation must clear its own calibrated threshold, so a
card never shows something the modal would call indicative.
MODAL LAYOUT (#268). Two real bugs, both measured rather than guessed:
- Mobile: the swap grid used `1fr`, which is minmax(auto,1fr), and `auto` will not shrink below
min-content — so the substitutes and neighbors cards rendered 468px wide inside a 358px modal.
minmax(0,1fr) fixes it; .modal-top already had this and .swap-grid did not.
- Desktop: #results is a flex column whose 14px gap separates the cards, but the render path set
an inline display:block on it, and block boxes ignore `gap`. The Heads card had been sitting
flush against the Substitutes card below it. Clearing the inline style lets the stylesheet win.
Verified with a Playwright probe at 390px and 1440px: no card overflows its container at either
size, and no two cards are within 8px of each other on desktop.
Signed-off-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>1 parent 2bc9540 commit 479f28a
4 files changed
Lines changed: 121 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1218 | 1218 | | |
1219 | 1219 | | |
1220 | 1220 | | |
1221 | | - | |
| 1221 | + | |
1222 | 1222 | | |
1223 | | - | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
1224 | 1231 | | |
1225 | 1232 | | |
1226 | 1233 | | |
1227 | 1234 | | |
1228 | 1235 | | |
1229 | 1236 | | |
1230 | 1237 | | |
| 1238 | + | |
1231 | 1239 | | |
| 1240 | + | |
| 1241 | + | |
1232 | 1242 | | |
1233 | | - | |
| 1243 | + | |
1234 | 1244 | | |
1235 | 1245 | | |
1236 | 1246 | | |
| |||
1310 | 1320 | | |
1311 | 1321 | | |
1312 | 1322 | | |
1313 | | - | |
1314 | | - | |
1315 | | - | |
| 1323 | + | |
| 1324 | + | |
1316 | 1325 | | |
1317 | 1326 | | |
1318 | 1327 | | |
1319 | | - | |
| 1328 | + | |
| 1329 | + | |
1320 | 1330 | | |
1321 | 1331 | | |
1322 | 1332 | | |
| |||
1473 | 1483 | | |
1474 | 1484 | | |
1475 | 1485 | | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
1476 | 1506 | | |
1477 | 1507 | | |
1478 | 1508 | | |
| |||
1504 | 1534 | | |
1505 | 1535 | | |
1506 | 1536 | | |
| 1537 | + | |
1507 | 1538 | | |
1508 | 1539 | | |
1509 | 1540 | | |
| |||
1545 | 1576 | | |
1546 | 1577 | | |
1547 | 1578 | | |
| 1579 | + | |
1548 | 1580 | | |
1549 | 1581 | | |
1550 | 1582 | | |
| |||
1584 | 1616 | | |
1585 | 1617 | | |
1586 | 1618 | | |
| 1619 | + | |
1587 | 1620 | | |
1588 | 1621 | | |
1589 | 1622 | | |
| |||
1733 | 1766 | | |
1734 | 1767 | | |
1735 | 1768 | | |
1736 | | - | |
| 1769 | + | |
| 1770 | + | |
1737 | 1771 | | |
1738 | 1772 | | |
1739 | 1773 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
32 | 35 | | |
33 | 36 | | |
34 | 37 | | |
| |||
102 | 105 | | |
103 | 106 | | |
104 | 107 | | |
105 | | - | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
106 | 117 | | |
107 | | - | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
108 | 121 | | |
109 | 122 | | |
110 | 123 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
22 | 25 | | |
23 | 26 | | |
24 | 27 | | |
| |||
62 | 65 | | |
63 | 66 | | |
64 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
65 | 74 | | |
66 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
67 | 78 | | |
68 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
69 | 82 | | |
70 | 83 | | |
0 commit comments