Add 8 proposed changes and old trails analysis
Proposed changes (all with proposal, design, specs, tasks): - app-navigation (9 tasks) — nav bars for both apps - planner-landing-page (7 tasks) — standalone landing page - planner-multiplayer-awareness (13 tasks) — participants, cursors, names - changelog (13 tasks) — public changelog with "what's new" - transactional-emails (15 tasks) — magic link + welcome emails - planner-features (18 tasks) — no-go areas, notes, recovery, rate limits - komoot-import (23 tasks) — Komoot tour import - route-features (37 tasks) — sharing, multi-day, spatial, photos Also adds docs/old-trails-analysis.md with feature analysis from the older trails project. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
57141cdfab
commit
c7c1c275df
55 changed files with 1704 additions and 0 deletions
|
|
@ -0,0 +1,8 @@
|
|||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: BRouter routing with constraints
|
||||
Route computation SHALL include no-go area polygons as avoidance constraints.
|
||||
|
||||
#### Scenario: Route with no-go areas
|
||||
- **WHEN** the routing host computes a route and no-go areas exist
|
||||
- **THEN** the BRouter request includes nogo parameters for each polygon
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
## ADDED Requirements
|
||||
|
||||
### Requirement: localStorage crash recovery
|
||||
The Planner SHALL periodically save Yjs state to localStorage and recover it on reconnect.
|
||||
|
||||
#### Scenario: Browser crash recovery
|
||||
- **WHEN** a user's browser crashes and they reopen the session
|
||||
- **THEN** unsaved changes from localStorage are merged with the server state
|
||||
|
||||
#### Scenario: Clean exit
|
||||
- **WHEN** a session syncs successfully
|
||||
- **THEN** the localStorage backup is cleared
|
||||
12
openspec/changes/planner-features/specs/map-display/spec.md
Normal file
12
openspec/changes/planner-features/specs/map-display/spec.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Map polygon drawing
|
||||
The Planner map SHALL support drawing and displaying no-go area polygons.
|
||||
|
||||
#### Scenario: Polygon tool
|
||||
- **WHEN** a user activates the no-go area tool
|
||||
- **THEN** they can draw a polygon by clicking points on the map
|
||||
|
||||
#### Scenario: Polygon display
|
||||
- **WHEN** no-go areas exist in the session
|
||||
- **THEN** they are rendered as semi-transparent red polygons on the map
|
||||
16
openspec/changes/planner-features/specs/no-go-areas/spec.md
Normal file
16
openspec/changes/planner-features/specs/no-go-areas/spec.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
## ADDED Requirements
|
||||
|
||||
### Requirement: Draw no-go areas
|
||||
Users SHALL be able to draw polygons on the map that BRouter avoids when computing routes.
|
||||
|
||||
#### Scenario: Draw polygon
|
||||
- **WHEN** a user activates the no-go area tool and draws a polygon on the map
|
||||
- **THEN** the polygon is added to the Yjs doc and visible to all participants
|
||||
|
||||
#### Scenario: Route avoids no-go area
|
||||
- **WHEN** a route is computed and a no-go area intersects the direct path
|
||||
- **THEN** BRouter routes around the no-go area
|
||||
|
||||
#### Scenario: Delete no-go area
|
||||
- **WHEN** a user deletes a no-go area polygon
|
||||
- **THEN** it is removed from the Yjs doc and the route is recomputed
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Planner session data model
|
||||
The Yjs document SHALL include noGoAreas and notes fields alongside waypoints and routeData.
|
||||
|
||||
#### Scenario: Session with all fields
|
||||
- **WHEN** a Planner session is active
|
||||
- **THEN** the Yjs doc contains: waypoints (Y.Array), routeData (Y.Map), noGoAreas (Y.Array), notes (Y.Text)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
## ADDED Requirements
|
||||
|
||||
### Requirement: Session creation rate limit
|
||||
The Planner SHALL limit session creation to 10 per IP per hour.
|
||||
|
||||
#### Scenario: Rate limit exceeded
|
||||
- **WHEN** an IP creates more than 10 sessions in one hour
|
||||
- **THEN** the server responds with 429 Too Many Requests
|
||||
|
||||
### Requirement: BRouter call rate limit
|
||||
The Planner SHALL limit route computations to 60 per session per hour.
|
||||
|
||||
#### Scenario: Routing rate limit exceeded
|
||||
- **WHEN** a session exceeds 60 BRouter calls in one hour
|
||||
- **THEN** the server responds with 429 and the client shows a "slow down" message
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
## ADDED Requirements
|
||||
|
||||
### Requirement: Collaborative session notes
|
||||
Planner sessions SHALL have a shared text area for participants to write notes.
|
||||
|
||||
#### Scenario: Write notes
|
||||
- **WHEN** a user types in the notes area
|
||||
- **THEN** the text syncs in real-time to all other participants via Yjs
|
||||
|
||||
#### Scenario: Notes persist
|
||||
- **WHEN** a user leaves and rejoins a session
|
||||
- **THEN** the notes are still there (stored in Yjs doc)
|
||||
Loading…
Add table
Add a link
Reference in a new issue