From 621d91e14f0f5b41943c71c516de384d3d668265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 19 Apr 2026 08:23:44 +0200 Subject: [PATCH] Park mobile-activity-recording + mobile-nearby-sync under docs/ideas Both are blocked on the mobile-app foundation and on a user base that actually records activities or needs offline peer sync. With 3 users and 0 activities on prod today, these are engineering for a hypothetical population. Move the artifact sets out of openspec/changes/ (so openspec list stays clean) and under docs/ideas/ where self-host-overpass already lives. Each gets a short README documenting: - current parked status - revive triggers (when should we look at this again?) - key constraints not to rediscover (background-GPS privacy review; BLE dev-build requirement; QR-only subset as a cheaper path) Reviving is `git mv docs/ideas/ openspec/changes/` and running /opsx:apply, same pattern as self-host-overpass. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../mobile-activity-recording/.openspec.yaml | 0 .../ideas/mobile-activity-recording/README.md | 39 +++++++++++++++++ .../mobile-activity-recording/proposal.md | 0 .../specs/mobile-activity-recording/spec.md | 0 .../ideas}/mobile-nearby-sync/.openspec.yaml | 0 docs/ideas/mobile-nearby-sync/README.md | 43 +++++++++++++++++++ .../ideas}/mobile-nearby-sync/proposal.md | 0 .../specs/mobile-nearby-sync/spec.md | 0 8 files changed, 82 insertions(+) rename {openspec/changes => docs/ideas}/mobile-activity-recording/.openspec.yaml (100%) create mode 100644 docs/ideas/mobile-activity-recording/README.md rename {openspec/changes => docs/ideas}/mobile-activity-recording/proposal.md (100%) rename {openspec/changes => docs/ideas}/mobile-activity-recording/specs/mobile-activity-recording/spec.md (100%) rename {openspec/changes => docs/ideas}/mobile-nearby-sync/.openspec.yaml (100%) create mode 100644 docs/ideas/mobile-nearby-sync/README.md rename {openspec/changes => docs/ideas}/mobile-nearby-sync/proposal.md (100%) rename {openspec/changes => docs/ideas}/mobile-nearby-sync/specs/mobile-nearby-sync/spec.md (100%) diff --git a/openspec/changes/mobile-activity-recording/.openspec.yaml b/docs/ideas/mobile-activity-recording/.openspec.yaml similarity index 100% rename from openspec/changes/mobile-activity-recording/.openspec.yaml rename to docs/ideas/mobile-activity-recording/.openspec.yaml diff --git a/docs/ideas/mobile-activity-recording/README.md b/docs/ideas/mobile-activity-recording/README.md new file mode 100644 index 0000000..ccc2075 --- /dev/null +++ b/docs/ideas/mobile-activity-recording/README.md @@ -0,0 +1,39 @@ +# mobile-activity-recording (parked) + +OpenSpec change for recording GPS activities on-device in the mobile app +(ride/hike tracking, live stats, save as Journal activity, HealthKit / +Health Connect export). Moved here from `openspec/changes/` so it does not +clutter the active change list; revive by moving the directory back under +`openspec/changes/` when ready to implement. + +## Status + +**Parked.** Blocked on `mobile-app` (the foundation change) landing first, +and on there being enough Journal users actually logging activities to +justify the native-recording complexity. At the current user count (3) and +activity count (0), shipping this would be writing code for nobody. + +## When to revive + +Revisit once **any** of these is true: + +- The mobile app is live and users are asking to record from the phone + instead of importing from Wahoo/Garmin/Komoot later +- The web Journal has a meaningful stream of imported activities, so the + feature lands into an existing behaviour rather than inventing one +- A specific user request justifies the iOS/Android background-location + privacy review (App Store's bar for background GPS is high) + +## Key constraints to remember + +- **Background GPS requires explicit user consent + justification** on iOS + and Android. App Store privacy review will scrutinise this. +- **Dependencies**: `expo-location` for the track, plus `expo-health` (or + equivalent) for HealthKit / Health Connect integration. +- **Battery**: continuous GPS at high accuracy is a power-hungry path; + recording UI needs clear on/off state and resumption. + +## What's in the folder + +- `proposal.md` — why / what / impact +- `specs/` — delta specs (would land against a new `mobile-activity-recording` capability) diff --git a/openspec/changes/mobile-activity-recording/proposal.md b/docs/ideas/mobile-activity-recording/proposal.md similarity index 100% rename from openspec/changes/mobile-activity-recording/proposal.md rename to docs/ideas/mobile-activity-recording/proposal.md diff --git a/openspec/changes/mobile-activity-recording/specs/mobile-activity-recording/spec.md b/docs/ideas/mobile-activity-recording/specs/mobile-activity-recording/spec.md similarity index 100% rename from openspec/changes/mobile-activity-recording/specs/mobile-activity-recording/spec.md rename to docs/ideas/mobile-activity-recording/specs/mobile-activity-recording/spec.md diff --git a/openspec/changes/mobile-nearby-sync/.openspec.yaml b/docs/ideas/mobile-nearby-sync/.openspec.yaml similarity index 100% rename from openspec/changes/mobile-nearby-sync/.openspec.yaml rename to docs/ideas/mobile-nearby-sync/.openspec.yaml diff --git a/docs/ideas/mobile-nearby-sync/README.md b/docs/ideas/mobile-nearby-sync/README.md new file mode 100644 index 0000000..ee23976 --- /dev/null +++ b/docs/ideas/mobile-nearby-sync/README.md @@ -0,0 +1,43 @@ +# mobile-nearby-sync (parked) + +OpenSpec change for sharing routes between nearby devices without internet +(BLE-based peer sync + QR-code waypoint fallback) in the mobile app. +Moved here from `openspec/changes/` so it does not clutter the active +change list; revive by moving the directory back under +`openspec/changes/` when ready to implement. + +## Status + +**Parked.** Blocked on `mobile-app` landing first, and on there being +enough users actually hiking/bikepacking together to justify the BLE +complexity. At the current user count (3) this is engineering for a +hypothetical group trip. + +## When to revive + +Revisit once **any** of these is true: + +- The mobile app is live and users start reporting "we were in a dead zone + and couldn't update the route" +- A group / tour organiser asks specifically for peer-to-peer route sync +- QR-code waypoint sharing alone (the simpler half of this spec) would + cover the need — worth shipping that first as a narrower change + +## Key constraints to remember + +- **Requires an Expo dev build** — `react-native-ble-plx` isn't available + in Expo Go. +- **iOS + Android BLE APIs differ significantly**; expect platform-specific + bugs. Background BLE advertising has battery and OS-lifecycle caveats + (iOS suspends advertising when backgrounded after a grace period). +- **Permissions sprawl**: iOS `NSBluetoothAlwaysUsageDescription`, Android + `BLUETOOTH_SCAN` + `BLUETOOTH_CONNECT` + `BLUETOOTH_ADVERTISE`, plus + location on older Android. +- **QR waypoint sharing is an order of magnitude simpler** than BLE and + covers a big chunk of the use case — consider extracting that as a + separate, earlier change if the need becomes real. + +## What's in the folder + +- `proposal.md` — why / what / non-goals / impact / future ideas (TXQR) +- `specs/` — delta specs (would land against a new `mobile-nearby-sync` capability) diff --git a/openspec/changes/mobile-nearby-sync/proposal.md b/docs/ideas/mobile-nearby-sync/proposal.md similarity index 100% rename from openspec/changes/mobile-nearby-sync/proposal.md rename to docs/ideas/mobile-nearby-sync/proposal.md diff --git a/openspec/changes/mobile-nearby-sync/specs/mobile-nearby-sync/spec.md b/docs/ideas/mobile-nearby-sync/specs/mobile-nearby-sync/spec.md similarity index 100% rename from openspec/changes/mobile-nearby-sync/specs/mobile-nearby-sync/spec.md rename to docs/ideas/mobile-nearby-sync/specs/mobile-nearby-sync/spec.md