From 471ecb2309539a32386e2660f8f4320d40997bce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 12 Apr 2026 19:43:03 +0200 Subject: [PATCH] Archive elevation-map-interaction, sync spec to main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Synced new spec (chart ↔ map interaction, mobile touch, iOS safe area, responsive header) to openspec/specs/elevation-map-interaction/. All 4 artifacts complete. All 14 tasks complete. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../.openspec.yaml | 0 .../design.md | 0 .../proposal.md | 0 .../specs/elevation-map-interaction/spec.md | 0 .../tasks.md | 0 .../specs/elevation-map-interaction/spec.md | 79 +++++++++++++++++++ 6 files changed, 79 insertions(+) rename openspec/changes/{elevation-map-interaction => archive/2026-04-12-elevation-map-interaction}/.openspec.yaml (100%) rename openspec/changes/{elevation-map-interaction => archive/2026-04-12-elevation-map-interaction}/design.md (100%) rename openspec/changes/{elevation-map-interaction => archive/2026-04-12-elevation-map-interaction}/proposal.md (100%) rename openspec/changes/{elevation-map-interaction => archive/2026-04-12-elevation-map-interaction}/specs/elevation-map-interaction/spec.md (100%) rename openspec/changes/{elevation-map-interaction => archive/2026-04-12-elevation-map-interaction}/tasks.md (100%) create mode 100644 openspec/specs/elevation-map-interaction/spec.md diff --git a/openspec/changes/elevation-map-interaction/.openspec.yaml b/openspec/changes/archive/2026-04-12-elevation-map-interaction/.openspec.yaml similarity index 100% rename from openspec/changes/elevation-map-interaction/.openspec.yaml rename to openspec/changes/archive/2026-04-12-elevation-map-interaction/.openspec.yaml diff --git a/openspec/changes/elevation-map-interaction/design.md b/openspec/changes/archive/2026-04-12-elevation-map-interaction/design.md similarity index 100% rename from openspec/changes/elevation-map-interaction/design.md rename to openspec/changes/archive/2026-04-12-elevation-map-interaction/design.md diff --git a/openspec/changes/elevation-map-interaction/proposal.md b/openspec/changes/archive/2026-04-12-elevation-map-interaction/proposal.md similarity index 100% rename from openspec/changes/elevation-map-interaction/proposal.md rename to openspec/changes/archive/2026-04-12-elevation-map-interaction/proposal.md diff --git a/openspec/changes/elevation-map-interaction/specs/elevation-map-interaction/spec.md b/openspec/changes/archive/2026-04-12-elevation-map-interaction/specs/elevation-map-interaction/spec.md similarity index 100% rename from openspec/changes/elevation-map-interaction/specs/elevation-map-interaction/spec.md rename to openspec/changes/archive/2026-04-12-elevation-map-interaction/specs/elevation-map-interaction/spec.md diff --git a/openspec/changes/elevation-map-interaction/tasks.md b/openspec/changes/archive/2026-04-12-elevation-map-interaction/tasks.md similarity index 100% rename from openspec/changes/elevation-map-interaction/tasks.md rename to openspec/changes/archive/2026-04-12-elevation-map-interaction/tasks.md diff --git a/openspec/specs/elevation-map-interaction/spec.md b/openspec/specs/elevation-map-interaction/spec.md new file mode 100644 index 0000000..eeea56b --- /dev/null +++ b/openspec/specs/elevation-map-interaction/spec.md @@ -0,0 +1,79 @@ +## ADDED Requirements + +### Requirement: Route hover highlights elevation chart +Hovering over the route polyline on the map SHALL highlight the corresponding position on the elevation chart. + +#### Scenario: Hover route on map +- **WHEN** a user hovers over the route polyline on the map +- **THEN** the elevation chart shows a crosshair at the corresponding distance along the route + +#### Scenario: Leave route on map +- **WHEN** a user moves the mouse away from the route polyline +- **THEN** the elevation chart crosshair disappears + +### Requirement: Chart click pans map +Clicking on the elevation chart SHALL pan the map to center on that point along the route. + +#### Scenario: Click chart +- **WHEN** a user clicks on the elevation chart +- **THEN** the map pans to center on the corresponding route coordinate + +### Requirement: Chart drag-select zooms map +Dragging a range on the elevation chart SHALL zoom the map to fit that section of the route. + +#### Scenario: Drag select range +- **WHEN** a user clicks and drags horizontally on the elevation chart +- **THEN** a visual highlight shows the selected range +- **AND** on mouse release, the map zooms to fit the route coordinates within that range + +#### Scenario: Reset zoom +- **WHEN** the map has been zoomed via chart drag-select +- **THEN** a reset button appears to return to the full route view + +### Requirement: Mobile touch interaction +The elevation chart SHALL support touch-based interaction on mobile devices. + +#### Scenario: Single touch scrub +- **WHEN** a user touches and drags on the chart with one finger +- **THEN** the crosshair follows the finger position along the chart +- **AND** the map highlight dot follows in real-time + +#### Scenario: Tap to pan +- **WHEN** a user taps the chart (touch without significant movement) +- **THEN** the map pans to that point along the route + +#### Scenario: Two-finger range select +- **WHEN** a user places two fingers on the chart +- **THEN** the area between the fingers is highlighted as a selection range +- **AND** on release, the map zooms to fit the route coordinates in that range + +#### Scenario: No page scroll on touch +- **WHEN** a user touches the elevation chart +- **THEN** page scrolling is prevented (touch-none CSS + preventDefault) + +### Requirement: iOS safe area support +The Planner layout SHALL respect iOS safe area insets. + +#### Scenario: Notch/Dynamic Island clearance +- **WHEN** the Planner is viewed on an iOS device with a notch or Dynamic Island +- **THEN** the header bar is padded below the safe area inset + +#### Scenario: Home indicator clearance +- **WHEN** the Planner is viewed on an iOS device without a physical home button +- **THEN** the elevation chart area is padded above the home indicator + +#### Scenario: No accidental page zoom +- **WHEN** a user pinches on the Planner UI +- **THEN** the browser-level page zoom does not trigger (viewport user-scalable=no) + +### Requirement: Responsive mobile header +The Planner header SHALL adapt to small screens by hiding secondary controls. + +#### Scenario: Small screen header +- **WHEN** the Planner is viewed on a mobile device +- **THEN** only the profile selector and export button are visible +- **AND** participant list, undo/redo, connection status, and computing text are hidden + +#### Scenario: Desktop header +- **WHEN** the Planner is viewed on a desktop screen +- **THEN** all header controls are visible