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:
parent
09b51a764a
commit
f953082217
3 changed files with 15 additions and 8 deletions
10
AGENTS.md
10
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`,
|
||||
|
|
|
|||
|
|
@ -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]"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in a new issue