Join Nostr
2026-07-17 12:27:48 UTC

roadstrapp on Nostr: Roadstr v0.4.6 ( ZTL (limited-traffic zones) Fixed a bug that made ZTL detection ...

Roadstr v0.4.6 (

ZTL (limited-traffic zones)
Fixed a bug that made ZTL detection silently fail since the feature shipped. The Overpass query used ["name"~"ZTL","i"] — the quoted "i" is a syntax error in Overpass QL (case-insensitive regex needs an unquoted ,i), so every ZTL fetch failed, on every mirror, from day one.
Rewrote ZTL detection to match how Italian zones are actually mapped. Italian ZTLs are tagged per-street (motor_vehicle=permit, access=no/destination, highway=pedestrian), not as named polygons — the old polygon-only query returned nothing even after the syntax fix. Detection is now proximity-based (≤12 m from a restricted way) in addition to the legacy polygon lookup, verified live against Ravenna's centro storico (251 restricted ways) and cross-checked against the ~350 Italian cities that do use the official boundary=limited_traffic_zone polygon tag.
Removed the overpass.osm.ch mirror. It turned out to be a Switzerland-only data extract that returned HTTP 200 with zero results for anywhere else — every dependent feature (ZTL, speed limits, speed cameras, POI search) silently read that as "nothing here." Replaced with two verified worldwide mirrors.
Verified live against 24 cities worldwide (12 European historic centres, 12 US cities/car-free towns) to check the new detection actually generalises rather than just fixing Italy. Works well anywhere OSM has restricted-access tagging; known gap where a town's equivalent has never been mapped by the local OSM community (e.g. Tangier Island, VA); intentionally does not flag toll-only zones (NYC congestion pricing, London ULEZ) as ZTL, since those don't restrict entry.
The warning banner now shows the correct local term instead of the Italian "ZTL" everywhere — "ZTL" in Italy and France (both use the same official term), "ZAC" in Portugal, a generic translated phrase elsewhere. Countries with no single official acronym (Spain, Germany, UK…) no longer get one invented for them.
Fixed the spoken ZTL warning, which previously had translations for only 9 of the app's 27 languages and silently fell back to English for the rest.
Navigation
Map no longer flips 180° mid-drive. A GPS multipath glitch could teleport a fix 20+ m backward with an inverted bearing, slipping past the existing distance-based filter. A direction reversal during active navigation is now trusted only after two consecutive GPS samples agree on it — a real U-turn confirms itself on the next fix, a glitch doesn't.
Voice no longer repeats the same instruction 3–4 times on approach to a manoeuvre. The same normalised instruction is now suppressed for 12 seconds at the single choke-point every announcement passes through.
Navigation cursor sits further down the screen, trading a bit of "behind you" for more visible road ahead.
Renamed the button on the pin/place-info panels from "Start navigation" (which actually opened a route preview) to "Show route preview" — "Start navigation" now only appears where navigation genuinely starts.
Security
A malicious relay could have redirected Lightning zaps to its own wallet. fetchLightningAddress trusted a relay's kind-0 profile event without checking its id hash, signature, or that the pubkey matched the person being zapped — fixed by verifying every profile event the same way road events already were.
Logging out no longer destroys local data. It previously called deleteAll() on secure storage, wiping the encrypted-settings key along with it — undecryptable on next launch, silently taking favourites, history and routing/NWC config with it. Logout now removes only the 5 Nostr-identity keys.
One-time report/confirmation fetches (profile screen) now verify event signatures and enforce one-vote-per-identity, matching the live subscription's rules — previously trusted unverified relay data and allowed repeat votes.
Amber (NIP-55) event publishing now broadcasts to all configured relays instead of only the primary one, matching nsec-login behaviour.
NIP-44 decryption now enforces the exact padded length the spec prescribes, rejecting malformed payloads other implementations would also refuse.
Consolidated three duplicated event-verification implementations into one shared, tested helper.