Claude and claude[bot]
e4b4b0e6cd
fix(radar): show the room contour in the on-plan setup ( #774 )
...
The on-plan radar setup multiplied SpaceModel room contours by 1000 a
second time. They are render units already, so the outline was drawn at
40000… far outside the fixed "0 0 1000 1000" viewBox, and the
administrator placed mount, heading and references on an empty field.
Dropping the multiplier alone is not enough: the fixed board also cut
every room drawn outside the historical square, and the pointer mapping
ignored the letterbox and clamped presses to [0,1].
The setup now frames the plan with the main card's content frame
(docs/CANVAS.md §4, the same items through the editor host port). It
opens on core and switches to all when core would cut the configured
room; the stored view_box remains the empty-content fallback. The frame
is computed once per session. One pure projection serves every layer:
the contour is drawn as is, mount, heading, pending/reference marks and
the live trail go through plan units x NORM_W, and a press maps back
through xMidYMid meet to unclamped plan units, a press in the letterbox
placing nothing. Stored radar data, the calibration solve, Apply/Save
and View are unchanged.
Tests: a unit table for the projection and the frame (offset frame,
letterbox, negative and >1 plan units, outlier core -> all, empty-content
fallback) and an extended smoke_radar_setup (a room outside [0,1] with
view_box [0,0,1,1], vertices and bbox, known presses -> draft and DOM,
frame stability across presses, live trail and resize, Apply, Cancel,
Escape and reopen, a room without contour, an unknown room). Five
unit-guarded mutants are registered.
Issue: #774
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-10-06 23:16:55 +00:00
..
2026-09-20 13:51:05 +03:00
2026-10-02 20:54:50 +03:00
2026-10-06 23:49:06 +03:00
2026-10-06 14:06:44 +00:00
2026-10-06 14:43:19 +03:00
2026-10-04 15:54:34 +03:00
2026-10-06 14:43:19 +03:00
2026-10-02 20:54:50 +03:00
2026-09-02 21:25:30 +03:00
2026-08-24 06:19:13 +03:00
2026-08-30 00:45:31 +03:00
2026-08-28 03:07:44 +03:00
2026-10-02 00:56:04 +03:00
2026-10-04 15:54:34 +03:00
2026-08-22 16:29:33 +03:00
2026-08-24 07:56:49 +03:00
2026-08-24 07:03:24 +03:00
2026-09-06 17:52:05 +00:00
2026-08-24 08:48:37 +03:00
2026-10-05 14:57:23 +03:00
2026-09-08 00:31:25 +03:00
2026-09-27 21:27:57 +03:00
2026-08-20 14:56:21 +03:00
2026-09-27 07:51:54 +00:00
2026-08-17 16:45:41 +03:00
2026-08-30 00:45:31 +03:00
2026-09-02 00:08:02 +03:00
2026-09-25 18:55:14 +03:00
2026-09-14 22:28:09 +03:00
2026-10-06 14:06:44 +00:00
2026-09-27 18:07:37 +00:00
2026-09-06 17:38:47 +03:00
2026-09-10 23:25:46 +03:00
2026-09-01 15:08:22 +00:00
2026-09-25 01:25:20 +00:00
2026-09-24 19:57:41 +03:00
2026-10-01 12:24:59 +00:00
2026-09-20 11:04:39 +03:00
2026-09-27 18:07:37 +00:00
2026-08-31 01:18:00 +03:00
2026-09-20 12:18:12 +03:00
2026-08-30 16:11:35 +00:00
2026-09-09 10:19:04 +03:00
2026-08-22 11:40:11 +03:00
2026-09-20 23:06:43 +03:00
2026-08-28 21:02:19 +03:00
2026-08-28 21:49:50 +03:00
2026-09-20 12:18:12 +03:00
2026-09-24 14:51:18 +03:00
2026-09-12 22:29:16 +03:00
2026-08-23 08:08:17 +03:00
2026-08-20 15:30:57 +03:00
2026-09-27 18:07:37 +00:00
2026-08-23 08:08:34 +03:00
2026-08-19 22:37:25 +03:00
2026-09-11 10:12:13 +03:00
2026-09-08 19:30:18 +03:00
2026-09-24 14:51:19 +03:00
2026-10-01 05:25:21 +00:00
2026-09-28 17:51:06 +03:00
2026-09-28 17:51:06 +03:00
2026-08-29 21:39:09 +03:00
2026-09-03 15:23:40 +03:00
2026-09-02 21:56:04 +00:00
2026-09-27 18:07:37 +00:00
2026-09-27 18:07:37 +00:00
2026-09-01 19:08:07 +03:00
2026-10-06 18:59:09 +03:00
2026-10-06 23:49:06 +03:00
2026-10-06 20:59:11 +03:00
2026-09-23 05:35:41 +03:00
2026-08-20 14:56:21 +03:00
2026-08-20 11:00:22 +03:00
2026-09-24 22:50:30 +03:00
2026-08-29 12:47:03 +03:00
2026-09-10 11:41:16 +00:00
2026-09-20 12:18:12 +03:00
2026-10-06 18:59:09 +03:00
2026-09-23 15:49:45 +00:00
2026-10-01 14:12:57 +03:00
2026-09-20 16:37:31 +03:00
2026-09-23 02:00:48 +03:00
2026-09-30 18:21:21 +00:00
2026-09-25 02:13:32 +03:00
2026-09-24 14:51:18 +03:00
2026-09-23 06:36:39 +00:00
2026-08-31 10:16:46 +03:00
2026-09-04 22:04:17 +03:00
2026-09-06 17:38:47 +03:00
2026-09-25 08:35:57 +00:00
2026-08-27 20:30:07 +03:00
2026-09-23 05:35:41 +03:00
2026-10-02 20:54:50 +03:00
2026-08-20 18:48:01 +00:00
2026-09-08 00:31:25 +03:00
2026-08-24 23:27:12 +03:00
2026-09-28 09:38:26 +03:00
2026-08-28 05:40:28 +00:00
2026-10-02 00:56:04 +03:00
2026-09-24 14:51:18 +03:00
2026-08-29 13:39:21 +03:00
2026-09-19 13:38:49 +03:00
2026-08-31 07:56:27 +03:00
2026-09-21 15:01:18 +03:00
2026-09-25 14:22:36 +03:00
2026-10-06 20:59:11 +03:00
2026-09-30 12:25:46 +03:00
2026-09-13 21:05:28 +03:00
2026-09-30 21:08:23 +00:00
2026-09-01 19:08:07 +03:00
2026-08-19 04:09:13 +03:00
2026-08-20 14:05:22 +03:00
2026-09-25 01:25:20 +00:00
2026-09-25 18:55:14 +03:00
2026-09-25 01:25:20 +00:00
2026-09-20 12:18:12 +03:00
2026-09-23 03:18:37 +03:00
2026-09-24 14:51:18 +03:00
2026-09-25 08:35:57 +00:00
2026-09-20 10:28:51 +03:00
2026-09-25 18:55:14 +03:00
2026-09-27 16:23:39 +00:00
2026-09-25 13:11:44 +00:00
2026-09-01 19:08:07 +03:00
2026-08-19 22:58:01 +03:00
2026-09-04 22:04:17 +03:00
2026-09-06 17:38:47 +03:00
2026-09-26 09:05:20 +03:00
2026-09-30 15:18:00 +03:00
2026-10-01 10:06:38 +00:00
2026-09-26 15:23:52 +03:00
2026-09-25 18:55:28 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 23:33:07 +03:00
2026-09-30 15:18:00 +03:00
2026-09-30 15:18:00 +03:00
2026-08-25 17:34:19 +03:00
2026-09-13 17:06:24 +03:00
2026-09-25 18:55:14 +03:00
2026-09-28 16:27:45 +03:00
2026-10-07 00:49:47 +03:00
2026-09-28 16:27:45 +03:00
2026-08-24 19:13:21 +03:00
2026-10-02 20:54:50 +03:00
2026-10-07 00:49:47 +03:00
2026-10-02 20:54:50 +03:00
2026-10-03 10:47:28 +03:00
2026-10-04 15:54:34 +03:00
2026-10-05 11:09:15 +03:00
2026-10-03 23:54:21 +03:00
2026-10-04 15:54:34 +03:00
2026-09-14 02:57:50 +03:00
2026-09-28 17:51:06 +03:00
2026-09-11 14:23:48 +03:00
2026-09-27 18:07:37 +00:00
2026-08-31 00:49:56 +03:00
2026-08-31 00:49:56 +03:00
2026-09-01 19:08:07 +03:00
2026-09-11 08:28:49 +03:00
2026-08-31 10:16:46 +03:00
2026-09-03 21:42:57 +00:00
2026-08-26 13:39:52 +03:00
2026-09-26 08:51:15 +00:00
2026-09-28 12:04:48 +03:00
2026-10-01 05:25:21 +00:00
2026-10-01 06:47:05 +00:00
2026-09-30 12:25:46 +03:00
2026-08-19 22:58:01 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 18:55:14 +03:00
2026-10-01 21:00:48 +00:00
2026-09-24 08:00:58 +00:00
2026-08-24 10:27:13 +03:00
2026-08-26 02:53:19 +03:00
2026-08-20 15:30:57 +03:00
2026-08-26 13:39:52 +03:00
2026-08-24 11:04:17 +03:00
2026-09-04 22:04:17 +03:00
2026-08-26 13:39:52 +03:00
2026-09-24 08:00:58 +00:00
2026-09-24 08:00:58 +00:00
2026-09-24 14:51:18 +03:00
2026-09-24 08:00:58 +00:00
2026-09-06 17:38:47 +03:00
2026-09-24 08:00:58 +00:00
2026-09-28 17:17:08 +03:00
2026-09-04 22:04:17 +03:00
2026-09-07 21:05:57 +03:00
2026-09-28 09:59:52 +03:00
2026-09-06 17:38:47 +03:00
2026-09-06 17:38:47 +03:00
2026-09-24 19:57:41 +03:00
2026-09-24 19:57:41 +03:00
2026-09-24 19:57:41 +03:00
2026-09-10 15:16:12 +03:00
2026-09-24 08:00:58 +00:00
2026-08-28 05:40:28 +00:00
2026-09-09 15:05:46 +03:00
2026-09-09 03:51:25 +03:00
2026-10-06 23:16:55 +00:00
2026-09-23 07:37:30 +03:00
2026-09-23 10:34:09 +03:00
2026-08-24 15:57:25 +03:00
2026-08-31 01:18:00 +03:00
2026-09-04 23:45:57 +03:00
2026-10-01 03:17:40 +00:00
2026-08-27 20:30:07 +03:00
2026-08-27 20:30:07 +03:00
2026-09-25 10:15:34 +03:00
2026-09-24 08:00:58 +00:00
2026-09-06 17:38:47 +03:00
2026-08-27 20:30:07 +03:00
2026-09-06 17:38:47 +03:00
2026-08-28 16:48:10 +03:00
2026-10-01 14:55:10 +00:00
2026-09-30 15:18:00 +03:00
2026-09-25 08:36:21 +03:00
2026-08-19 17:12:02 +03:00
2026-09-26 23:17:48 +03:00
2026-09-23 06:36:39 +00:00
2026-09-21 08:53:05 +03:00
2026-09-20 11:39:46 +03:00
2026-10-05 22:00:23 +03:00
2026-08-31 00:49:56 +03:00
2026-09-25 13:11:44 +00:00
2026-10-06 21:15:01 +03:00
2026-09-20 12:18:12 +03:00
2026-09-25 18:55:14 +03:00
2026-09-03 16:50:54 +03:00
2026-10-01 12:30:45 +00:00
2026-09-05 09:25:08 +03:00
2026-09-20 10:28:51 +03:00
2026-09-24 14:51:18 +03:00
2026-09-23 15:27:51 +03:00
2026-09-20 10:28:51 +03:00
2026-10-01 10:13:50 +00:00
2026-08-28 05:40:28 +00:00
2026-09-25 18:55:14 +03:00
2026-10-01 18:27:53 +00:00
2026-09-20 12:18:12 +03:00
2026-09-28 17:51:06 +03:00
2026-09-08 21:26:29 +03:00
2026-08-31 10:16:46 +03:00
2026-09-09 19:49:18 +00:00
2026-09-10 11:48:30 +03:00
2026-09-09 09:32:36 +03:00
2026-09-24 14:51:18 +03:00
2026-09-09 13:57:53 +03:00
2026-08-20 09:42:24 +03:00
2026-09-20 11:04:39 +03:00
2026-09-25 14:22:36 +03:00
2026-09-01 19:08:07 +03:00
2026-08-30 07:48:16 +00:00
2026-09-20 12:18:12 +03:00
2026-09-20 10:28:51 +03:00
2026-09-25 01:25:20 +00:00
2026-09-24 14:51:18 +03:00
2026-08-18 21:31:04 +03:00
2026-09-26 14:36:14 +03:00
2026-08-20 08:42:34 +03:00
2026-09-24 08:00:58 +00:00
2026-09-24 14:51:18 +03:00
2026-09-06 17:38:47 +03:00
2026-09-03 21:42:57 +00:00
2026-09-03 21:42:57 +00:00
2026-09-03 23:24:08 +03:00
2026-09-03 21:42:57 +00:00
2026-09-20 12:18:12 +03:00
2026-09-27 18:07:37 +00:00
2026-09-05 16:04:54 +03:00
2026-08-14 03:32:53 +03:00
2026-08-14 04:29:21 +03:00
2026-10-06 22:53:06 +03:00
2026-09-06 17:52:05 +00:00
2026-09-06 17:38:47 +03:00
2026-09-06 18:46:50 +03:00
2026-10-06 12:52:59 +03:00
2026-09-06 17:38:47 +03:00
2026-09-28 17:51:06 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 18:55:14 +03:00
2026-09-25 18:55:14 +03:00
2026-08-26 13:39:52 +03:00
2026-09-25 18:55:14 +03:00
2026-08-25 12:49:41 +03:00
2026-09-06 17:38:47 +03:00
2026-10-01 21:00:48 +00:00
2026-10-01 21:00:48 +00:00
2026-08-28 05:40:28 +00:00
2026-09-09 06:43:16 +03:00
2026-08-28 13:07:58 +00:00
2026-09-24 08:00:58 +00:00
2026-09-25 18:55:14 +03:00
2026-09-06 17:38:47 +03:00
2026-09-06 17:38:47 +03:00
2026-10-05 22:05:04 +03:00
2026-10-06 23:49:06 +03:00
2026-10-05 20:12:25 +03:00
2026-09-01 19:08:07 +03:00
2026-09-23 02:00:48 +03:00
2026-09-27 21:27:57 +03:00
2026-09-24 08:00:58 +00:00