jpmschweitzer and Claude Fable 5
686021bee8
fix(ui): PR #207 review round — crop-gated taper, true mitres, hybrid AA (T-1175)
...
Five findings from the araminta+hoshe round. Tapering now fires only on
a TRUE upstream source: the course's first raw world point is tested
against the canvas's own world bounds (conservative 1m epsilon) —
exact detection because the server crop keeps one point beyond the
window (layer_proxy crop_course_to_window lo = first_in-1, contract
documented), so crop passthroughs draw the old flat full-width cut and
never a false headwater. The averaged-normal joint is replaced by a
real mitre (half_w/cos(theta/2) recovered trig-free via the bisector
normal), clamped by a 2x mitre limit AND 0.45x the shorter adjacent
segment — restoring true perpendicular width at bends (the 29% pinch at
confluences is gone) and preventing the hairpin bowtie; the winding doc
now states the actual bounded guarantee. Antialiasing restored via the
hybrid: only the varying-width taper head draws as a ribbon; the
constant-width ~85% of every course keeps the original antialiased
draw_polyline (byte-identical for untapered courses), split at an
interpolated arc-length point sharing position and width — junction
capture evidence in .cache/screenshots/t1175-fix-round/. Flat-fill
single-element color array. Suite 24 -> 48 tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-25 16:05:17 +02:00
..
2026-07-22 10:35:37 +02:00
2026-07-16 20:29:53 +02:00
2026-07-06 21:53:35 +02:00
2026-02-28 12:20:02 +01:00
2026-04-05 09:59:56 +02:00
2026-02-18 11:51:41 +01:00
2026-02-25 11:45:34 +01:00
2026-02-28 12:20:02 +01:00
2026-06-12 16:22:01 +02:00
2026-04-22 09:06:51 +02:00
2026-02-18 11:51:41 +01:00
2026-07-22 11:41:37 +02:00
2026-07-22 19:51:12 +02:00
2026-07-22 11:41:37 +02:00
2026-07-25 09:32:52 +02:00
2026-04-05 09:59:56 +02:00
2026-02-21 13:43:43 +01:00
2026-06-12 16:22:01 +02:00
2026-02-21 13:43:43 +01:00
2026-07-17 10:24:39 +02:00
2026-04-21 17:29:49 +02:00
2026-02-21 13:43:43 +01:00
2026-04-05 09:59:56 +02:00
2026-02-18 11:51:41 +01:00
2026-04-21 14:30:38 +02:00
2026-03-20 07:48:47 +01:00
2026-04-21 09:48:26 +02:00
2026-04-05 09:59:56 +02:00
2026-02-21 13:43:43 +01:00
2026-05-02 10:19:11 +02:00
2026-02-18 11:51:41 +01:00
2026-06-12 16:22:01 +02:00
2026-02-18 11:51:41 +01:00
2026-04-19 21:58:24 +02:00
2026-02-18 11:51:41 +01:00
2026-02-23 21:01:30 +01:00
2026-02-21 13:43:43 +01:00
2026-02-19 12:05:36 +01:00
2026-02-18 11:51:41 +01:00
2026-03-04 09:50:02 +01:00
2026-06-12 16:22:01 +02:00
2026-02-28 12:20:02 +01:00
2026-06-12 16:22:01 +02:00
2026-02-28 12:20:02 +01:00
2026-06-12 16:22:01 +02:00
2026-02-12 23:43:37 +01:00
2026-06-12 16:22:01 +02:00
2026-02-28 12:20:02 +01:00
2026-05-02 22:50:17 +02:00
2026-02-28 12:20:02 +01:00
2026-07-06 20:18:01 +02:00
2026-02-18 11:51:41 +01:00
2026-05-02 22:50:17 +02:00
2026-05-02 18:03:06 +02:00
2026-05-02 22:50:17 +02:00
2026-02-28 12:20:02 +01:00
2026-04-05 09:59:34 +02:00
2026-02-28 12:20:02 +01:00
2026-07-07 00:35:20 +02:00
2026-04-21 17:29:49 +02:00
2026-02-21 13:43:43 +01:00
2026-07-14 15:44:56 +02:00
2026-04-19 15:36:04 +02:00
2026-04-19 15:36:04 +02:00
2026-04-19 15:36:04 +02:00
2026-07-21 20:00:18 +02:00
2026-02-18 18:28:37 +01:00
2026-02-21 13:43:43 +01:00
2026-07-21 20:00:18 +02:00
2026-07-16 21:30:52 +02:00
2026-02-14 09:49:41 +01:00
2026-04-05 09:59:56 +02:00
2026-02-21 13:43:43 +01:00
2026-04-21 17:29:49 +02:00
2026-02-18 11:51:41 +01:00
2026-04-21 17:29:49 +02:00
2026-02-12 23:43:37 +01:00
2026-04-21 17:29:49 +02:00
2026-02-28 12:20:02 +01:00
2026-04-21 17:29:49 +02:00
2026-02-11 20:59:46 +01:00
2026-04-05 09:59:34 +02:00
2026-02-11 16:52:27 +01:00
2026-04-22 10:06:39 +02:00
2026-06-12 16:22:01 +02:00
2026-02-21 13:43:43 +01:00
2026-02-18 02:14:29 +01:00
2026-02-18 11:51:41 +01:00
2026-04-22 10:06:39 +02:00
2026-02-18 11:51:41 +01:00
2026-04-22 10:06:39 +02:00
2026-02-18 11:51:41 +01:00
2026-04-21 17:29:49 +02:00
2026-02-18 11:51:41 +01:00
2026-07-22 00:47:53 +02:00
2026-02-11 19:16:56 +01:00
2026-05-02 10:19:11 +02:00
2026-02-12 23:43:37 +01:00
2026-02-27 18:06:16 +01:00
2026-02-28 12:20:02 +01:00
2026-05-02 10:19:11 +02:00
2026-03-05 11:44:12 +01:00
2026-04-05 09:59:56 +02:00
2026-02-21 14:10:06 +01:00
2026-02-25 21:59:56 +01:00
2026-02-28 12:20:02 +01:00
2026-02-13 02:07:43 +01:00
2026-02-11 19:16:56 +01:00
2026-02-23 21:01:22 +01:00
2026-02-28 12:20:02 +01:00
2026-02-19 14:59:50 +01:00
2026-02-21 13:43:43 +01:00
2026-07-06 21:15:32 +02:00
2026-02-12 23:43:37 +01:00
2026-07-25 16:05:17 +02:00
2026-07-25 08:53:48 +02:00
2026-07-25 08:53:48 +02:00
2026-07-25 11:36:21 +02:00
2026-07-25 13:14:12 +02:00
2026-07-25 09:32:52 +02:00
2026-07-25 11:08:48 +02:00
2026-07-25 13:14:12 +02:00
2026-07-25 13:14:12 +02:00
2026-07-14 17:31:15 +02:00
2026-05-02 10:19:11 +02:00
2026-02-28 12:20:02 +01:00
2026-04-19 21:58:24 +02:00
2026-02-21 14:10:06 +01:00
2026-02-13 18:07:15 +01:00
2026-02-14 09:49:41 +01:00
2026-04-05 09:59:56 +02:00
2026-02-28 12:20:02 +01:00
2026-07-16 21:40:03 +02:00
2026-03-05 08:41:09 +01:00
2026-07-16 20:29:14 +02:00
2026-03-05 08:41:09 +01:00