From f953082217576cdf3f4818126bf6b26af005cda9 Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Thu, 1 Oct 2026 11:21:30 +0700 Subject: [PATCH] feat(routes): give the map less of the screen; move the handoff note to /privacy Owner feedback: the route dialog's map still dominated the phone screen, and the 'nothing leaves to Google or Apple Maps' tagline cluttered the chrome. - Map: 50vh -> 34vh on mobile (min-h 300 -> 220); desktop 440 -> 400. Follow mode 60vh -> 54vh, so the bigger map is kept only when you need it. - Drop the visible tagline from the route header (kept sr-only for a11y); the promise now reads on /privacy -> 'What leaves your device' -> Directions ('routing stays in the app; start/destination are never handed off to Google or Apple Maps'). Docs: AGENTS.md map-layout note. --- AGENTS.md | 10 ++++++++-- src/components/RouteDialog.tsx | 11 ++++++----- src/pages/PrivacyPage.tsx | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index ee4e301..0bb09fe 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -324,10 +324,16 @@ session with **no other memory of this project**. So: it** (it's the point of the screen), then the **mode/vehicle row**, then the **"From" row**, then the scrolling details, with the **Start/Stop bar pinned** at the bottom. The map is `shrink-0` at - `h-[50vh] min-h-[300px] sm:h-[440px]` (was `38vh`), or `h-[60vh]`/`sm:h-[62vh]` + `h-[34vh] min-h-[220px] sm:h-[400px]`, or `h-[54vh] min-h-[320px]`/`sm:h-[60vh]` while following. The **summary is a compact one-line strip** (distance · time · arrive) — `StatTile` was **removed**; the three ~90px - tiles were eating the map's space. ⚠️ Don't go back to a single + tiles were eating the map's space. **Owner feedback (2026-10-01): the map + dominated the phone screen** — it was `50vh` (and `38vh` before that); `34vh` + gives the itinerary and controls room while staying pannable, and follow mode + restores a bigger map. The dialog's tagline ("In-app route · OpenStreetMap + routing — nothing leaves to Google or Apple Maps") was **removed from the + visible chrome** (kept `sr-only` for a11y); that promise now lives on + **/privacy → "What leaves your device" → Directions**. ⚠️ Don't go back to a single `overflow-hidden` content box: that made everything below the fold **unreachable** once the map grew. The map carries a metric `L.control.scale`. **Transit** mode uses **Transitous** (`api.transitous.org`, diff --git a/src/components/RouteDialog.tsx b/src/components/RouteDialog.tsx index acea553..cc02ecf 100644 --- a/src/components/RouteDialog.tsx +++ b/src/components/RouteDialog.tsx @@ -780,10 +780,11 @@ export function RouteDialog({ Search - - {mode === 'transit' - ? 'Public transport via Transitous (open timetables + OpenStreetMap)' - : 'In-app route · OpenStreetMap routing — nothing leaves to Google or Apple Maps'} + {/* Copy kept out of the visible chrome so the route screen stays + clean; the same promise now lives on /privacy → "What leaves your + device" → Directions. sr-only keeps the dialog accessible. */} + + Route options and in-app directions. @@ -791,7 +792,7 @@ export function RouteDialog({ `.leaflet-container { height: 100% }` override beats a `h-64` on the map element itself, and against a height-less parent that resolved to 0 — a fully invisible map with no route line. */} -
+
Bitcoin places (BTCMap, when you switch that layer on) — see your IP and the area you're viewing.
  • Nostr relays — see your IP when the app reads or publishes.
  • Cashu mints — see your IP whenever your wallet sends, receives or melts.
  • -
  • Directions (OSRM, and Transitous for transit) — receive the start and end of any route you ask for, not only your IP.
  • +
  • Directions (OSRM, and Transitous for transit) — receive the start and end of any route you ask for, not only your IP. Routing stays in the app: your start and destination are never handed off to Google or Apple Maps.
  • Weather (Open-Meteo, opt-in) and image uploads (Blossom), when you use them.
  • Sasquatch AI — your message goes to our own server, then to the model provider.