Update specs: session-notes, route-coloring, gpx-import

session-notes: Reflect CodeMirror 6 editor with character-level sync,
remote cursor awareness, dedicated undo manager, awareness isolation.

route-coloring: Added grade color mode, moved toggle to chart, added
surface/grade chart coloring, legends for all modes, contextual hover.

gpx-import: Added day break preservation (overnight waypoints survive
GPX roundtrip).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-04-11 03:24:54 +02:00
parent 9752eb77e8
commit d6982db868
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
3 changed files with 81 additions and 11 deletions

View file

@ -1,16 +1,36 @@
## Purpose
Collaborative text notes in Planner sessions, synced in real-time via Yjs.
Collaborative rich text notes in Planner sessions, powered by CodeMirror 6 with Yjs CRDT sync and real-time cursor awareness.
## Requirements
### Requirement: Collaborative session notes
Planner sessions SHALL have a shared text area for participants to write notes.
Planner sessions SHALL have a shared text editor for participants to write notes, with character-level real-time sync.
#### Scenario: Write notes
- **WHEN** a user types in the notes area
- **THEN** the text syncs in real-time to all other participants via Yjs
- **WHEN** a user types in the notes editor
- **THEN** the text syncs character-by-character to all other participants via Yjs Y.Text
#### Scenario: Notes persist
#### Scenario: Remote cursor awareness
- **WHEN** multiple participants are editing notes
- **THEN** each participant sees the others' cursor positions and selections highlighted in their assigned color with their name label
#### Scenario: Notes persist across reload
- **WHEN** a participant reloads the session page
- **THEN** the notes content is restored from the Yjs document
- **AND** the editor displays the existing text immediately
#### Scenario: Notes persist across reconnect
- **WHEN** a user leaves and rejoins a session
- **THEN** the notes are still there (stored in Yjs doc)
- **THEN** the notes are still there (stored in Yjs doc and crash recovery)
### Requirement: Editor implementation
The notes editor SHALL use CodeMirror 6 with y-codemirror.next for Yjs binding.
#### Scenario: Undo/redo
- **WHEN** a user presses Ctrl+Z / Ctrl+Shift+Z in the notes editor
- **THEN** undo/redo applies to notes only (separate Y.UndoManager from waypoint undo)
#### Scenario: Awareness field isolation
- **WHEN** the notes editor sets cursor awareness state
- **THEN** it does not conflict with map cursor awareness (uses separate awareness fields)