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.
This commit is contained in:
SkateSpots 2026-10-01 11:21:30 +07:00
parent 09b51a764a
commit f953082217
3 changed files with 15 additions and 8 deletions

View file

@ -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`,

View file

@ -780,10 +780,11 @@ export function RouteDialog({
<Search className="h-3 w-3" /> Search
</span>
</button>
<DialogDescription className="mt-2 text-xs">
{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. */}
<DialogDescription className="sr-only">
Route options and in-app directions.
</DialogDescription>
</DialogHeader>
@ -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. */}
<div className={cn('order-2 relative shrink-0 bg-[#0b0b0c]', following ? 'h-[60vh] min-h-[360px] sm:h-[62vh]' : 'h-[50vh] min-h-[300px] sm:h-[440px]')}>
<div className={cn('order-2 relative shrink-0 bg-[#0b0b0c]', following ? 'h-[54vh] min-h-[320px] sm:h-[60vh]' : 'h-[34vh] min-h-[220px] sm:h-[400px]')}>
<div
ref={setMapDiv}
className="h-full w-full bg-[#0b0b0c]"

View file

@ -151,7 +151,7 @@ export default function PrivacyPage() {
<li><strong className="text-white">Bitcoin places</strong> (BTCMap, when you switch that layer on) — see your IP and the area you're viewing.</li>
<li><strong className="text-white">Nostr relays</strong> — see your IP when the app reads or publishes.</li>
<li><strong className="text-white">Cashu mints</strong> — see your IP whenever your wallet sends, receives or melts.</li>
<li><strong className="text-white">Directions</strong> (OSRM, and Transitous for transit) — receive the start and end of any route you ask for, not only your IP.</li>
<li><strong className="text-white">Directions</strong> (OSRM, and Transitous for transit) — receive the start and end of any route you ask for, not only your IP. Routing stays <strong className="text-white">in the app</strong>: your start and destination are never handed off to Google or Apple Maps.</li>
<li><strong className="text-white">Weather</strong> (Open-Meteo, opt-in) and <strong className="text-white">image uploads</strong> (Blossom), when you use them.</li>
<li><strong className="text-white">Sasquatch AI</strong> — your message goes to our own server, then to the model provider.</li>
</ul>