Preserve the completed teach-and-repeat laboratory stage: reference preparation, cascaded acquisition, local tracking and recovery, recording lifecycle, replay qualification, and persistent Rerun scene controls. Document the open grid-picking regression and Rerun upgrade contract. No autonomous driving or loop-closure optimization is claimed.
4.5 KiB
Spatial scene: camera ownership and modeless tools
Follow-up, 2026-09-21: the owner reported native hover/picking of world/grid.
The data-geometry grid introduced here is selectable; this is an open
presentation regression, not covered by the acceptance below. The complete
planning upgrade inventory and pending grid check are recorded in
2026-09-21-rerun-planning-customizations.md. No fix is claimed in this report.
Scope
Presentation-only change for the planning profile in the shared spatial scene. No registration, tracking thresholds, recording, source data or device commands were changed. Existing unrelated working-tree changes were retained.
Reproduced cause
PlanningLiveScene already kept its native viewer/channel mounted. The reset
was server-side: any changed presentation option requested a full geometry
refresh, and log_base sent a new blueprint with a generated view and initial
EyeControls3D. Clipping, layers, point size and grid therefore replaced the
operator's native camera. Discarded responses and transport failures also
discarded the cursor, conflating a geometry repair with first admission.
Implementation
- Separate
log_base(data entities) fromlog_view(camera blueprint). - Cursor carries
[mode, reset]as the admitted camera intent. Only first admission or a changed explicit view/reset intent sends a camera blueprint. - Preserve the last admitted cursor on errors and superseded responses;
needsBaseindependently requests a complete geometry repair. Expired live evidence is still rejected. No stale response gains localization authority. - Send reset generation through the HTTP API instead of dropping it in the client. Explicit reset and top/3D presets remain functional.
- Grid visibility is now an ordinary Rerun
LineStrips3Ddisplay entity, so it needs no blueprint activation or approximate camera-input journal. It is a reference-bound XY guide with 80 m padding; guide spacing adapts to large reference extents. This is display geometry, not inferred ground, clearance or a source-distance limit. Native grid is disabled in the initial blueprint. - Remove duplicate planning navigation and engine action from the spatial toolbar. Preserve the optional source action for separate existing consumers.
- Use the canonical
WorkspaceWindow, like planner settings, for layers and display controls. It is inline, draggable/resizable, modeless, bounded by the scene and supports maximize/restore and Escape. Switching tools retains the open window's position. Its lifecycle is independent from the renderer. - Height clipping still defaults to the full 80 m range and has no outline.
Acceptance
- Application architecture tests: 4 passed.
- Full frontend typecheck: passed.
- Full frontend suite, serialized: 875 passed, 0 failures.
- Production build: passed. Existing large-chunk warning remains.
- Focused backend display/API tests: 8 passed. New tests cover all presentation toggles, geometry repair, display epoch changes and explicit camera intents.
- Frontend stream tests cover stale responses and recovery retaining the last admitted camera cursor; reset intent reaches the server.
- Unit tests verify modeless bounded tools and removal of duplicate actions.
- Full-suite output contained a Vite dependency-scanner teardown warning; all test assertions and process exit passed. No watcher was retained.
Browser QA on canonical 8000
Used the existing in-app tab and real saved ja-sun-018-80m-offset-back scene.
No synthetic viewer, new application server, scan or device action was used.
Rotated and zoomed the cloud away from its preset, dragged the tools window, changed height from 80 to 3 m, hid trajectories, switched tools, increased point size and hid the grid. The cloud changed without returning the native camera to its preset. Tested top/3D and explicit reset separately.
Verified cloud expansion, clipping while expanded, Escape restoration, ordinary
and expanded application-panel layouts, tool maximize/restore and close/Escape.
DOM measurement of maximized tool and its scene matched exactly (504 × 376.03125
CSS px); aria-modal=false. Browser checking verifies visible behavior, not a
numerical measurement of native camera coordinates.
Returned the scene to 3D, 80 m clip, visible grid/trajectories and closed tools. The canonical service was updated through its hash-fenced LaunchAgent workflow after proving acquisition absent and control idle. Health accepted; one backend on 8000 remains running. K1 live-stream behavior was not physically retested.