jpmschweitzer and Claude
d36d458b74
fix(client): Global drew at half size — request and fit disagreed about the legend
...
Jeroen: 'that does not fit the viewport'. Correct — Global rendered a real map
into roughly a quarter of the available area.
_letterbox_scale_for() reserves LEGEND_COLUMN_PX before computing the Global
fit, but _request_extent() sized the request against the FULL Control width.
Because that fit is an INTEGER pixels-per-gridunit ratio, the disagreement
does not degrade gracefully: at a 1920-wide window we asked for 960 gridunits
but could only fit floor(1628/960) = 1 px each, so the canvas drew at HALF the
intended scale with room to spare on every side.
The request is now sized to the drawable area, so both sides agree: 814
gridunits at 2 px = 1628 px, plus the 292 px legend column = exactly 1920.
Verified through the capture harness — canvas_scale went 0.5 -> 1.0.
Only Global reserves the column, so only Global adjusts; the fixed rungs are
untouched.
Also corrects the regression test I wrote yesterday, which computed its
expectation from the full viewport and so encoded the bug.
Client suite 1830 / 1804 passed / 0 failed / 26 skipped.
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-27 21:13:04 +02:00
..
2026-07-25 18:51:45 +02:00
2026-07-26 15:13:11 +02:00
2026-07-06 21:53:35 +02:00
2026-07-27 00:32:42 +02:00
2026-07-25 19:30:29 +02: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-25 19:14:02 +02:00
2026-07-25 19:14:02 +02:00
2026-07-25 16:10:27 +02:00
2026-07-22 19:51:12 +02:00
2026-07-25 16:10:27 +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-07-27 00:57:15 +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-26 15:17:51 +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-25 16:10:27 +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-27 00:12:26 +02:00
2026-07-27 20:52:54 +02:00
2026-07-25 08:53:48 +02:00
2026-07-27 20:52:54 +02:00
2026-07-26 15:13:11 +02:00
2026-07-25 09:32:52 +02:00
2026-07-25 11:08:48 +02:00
2026-07-26 22:45:40 +02:00
2026-07-27 21:13:04 +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-27 20:52:54 +02:00
2026-03-05 08:41:09 +01:00
2026-07-27 20:52:54 +02:00
2026-03-05 08:41:09 +01:00