- Enrich BRouter response with per-point 3D coordinates and segment boundary tracking (EnrichedRoute interface) - ColoredRoute component: plain, elevation gradient (green→yellow→red), and surface color modes with invisible wide polyline for click targeting - Click-to-split: click on route polyline inserts waypoint at nearest point, mapped to correct segment via boundary indices - MidpointHandles: draggable CircleMarkers at route segment midpoints for reshaping, hidden below zoom 12, opaque on hover - Color mode toggle (select) synced via Yjs routeData - i18n keys for color mode labels (en + de) - Unit tests for segment boundary tracking (13 tests) - E2E tests for enriched route response and color mode toggle Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.8 KiB
1.8 KiB
Why
The Planner's core editing works but is missing features from the architecture doc: no-go areas for route avoidance, session notes for collaborative planning communication, localStorage crash recovery for unsaved work, and rate limiting to protect the BRouter API from abuse on the public instance.
What Changes
- No-go areas: Draw polygons on the map that BRouter avoids when computing routes. Stored as Y.Array in the Yjs doc, synced across participants.
- Session notes: Shared text area (Y.Text) for participants to leave notes, discuss the route, or plan logistics. Visible in the sidebar.
- Crash recovery: Periodically save Yjs state to localStorage. On reconnect, merge local state with server state to recover unsaved changes.
- Rate limiting: Limit session creation per IP and BRouter API calls per session to prevent abuse on the public instance.
Capabilities
New Capabilities
no-go-areas: Draw avoidance polygons on the Planner map, passed to BRouter as routing constraintssession-notes: Shared collaborative text in Planner sessions via Yjs Y.Textcrash-recovery: localStorage backup of Yjs state for reconnection after browser crashrate-limiting: IP-based limits on session creation and route computation
Modified Capabilities
planner-session: Session data model gains noGoAreas and notes fieldsbrouter-integration: Routing requests include no-go area polygonsmap-display: Map gains polygon drawing tools for no-go areas
Impact
- Planner Yjs doc: New fields (noGoAreas: Y.Array, notes: Y.Text)
- BRouter API: No-go areas passed as
nogoparameter - Map: Leaflet.draw or custom polygon tool for no-go areas
- Dependencies: May need
leaflet-drawfor polygon editing - Server: Rate limiting middleware (in-memory store)