Roadstr 0.4.22 is out. π οΈ
A crash that could kill the app mid-drive is fixed at the root: it came from the bundled speech library, untouched since Dec 2024 while twelve memory-safety fixes landed upstream β including in the very code that reads out distances. Rebuilt past all of them.
Limited traffic zones are now answered street by street: only the stretches actually restricted turn red, and "you're in a zone" shows only when you really are β not because one happens to be nearby.
Plus four new themes, a route drawn as a lit line, and time-to-arrival promoted over distance. Because what you're deciding is whether you'll make it, not how many km are left.
Still no Google, still no tracking.

GitHub
Release roadstrapp.0.4.22.apk Β· roadstrapp/roadstr-app
Roadstr 0.4.22
A crash fixed at the root, limited-traffic zones answered street by street, and a new
look for driving.
Fixed
The app could die outr...
#Nostr #Roadstr #OpenStreetMap #GrowNostr #FuckGoogle
Back from London and we're building again!
Roadstr 0.4.21 is out. π
Public transport routing lands: bus, tram, metro, rail, coach and ferry β worldwide, from openly published timetables. No account, no API key, no tracking.
Journeys are shown door to door: the walk to the stop, which stop and by when, each line in its operator's own colour, the changes, and the walk at the far end.
Also: bike routes from the planner, faster cold GPS fixes without Google, and the map no longer swings round when you leave a roundabout.
Next up: a proper vector rendering engine β and offline maps with it.
Get it from

GitHub
Release roadstrapp.0.4.21.apk Β· roadstrapp/roadstr-app
Roadstr 0.4.21
Public transport routing arrives, and the map stops startling you at junctions.
Added
π Public transport
Plan a journey by bus, t...
or via
@Zapstore
#Nostr #Roadstr #OpenStreetMap #GrowNostr #FuckGoogle
Roadstr 0.4.20 is out.
Pick your own vehicle cursor colour β 7 tints to choose from β plus a new Classic Fiat 500 style, right from Settings.
Free, open source, no Google Play Services, no tracking. Just you and the road.

GitHub
Release roadstrapp.0.4.20.apk Β· roadstrapp/roadstr-app
Roadstr 0.4.20
Pick your own colours, and a new way to walk.
Added
Seven colour tints for the vehicle cursor β violet, indigo, blue,
green, yell...
#Nostr #Roadstr #OpenStreetMap #GrowNostr #FuckGoogle
Roadstr 0.4.18 is out β and if you're on 0.4.17, update.
That release could crash mid-route. The map was opening a new database watcher on every GPS fix and couldn't close the old ones fast enough, so after a few minutes of driving it ran out of memory. Fixed, and covered by tests so it can't come back quietly.
Also fixed, all reported from an actual drive:
β’ Roundabout signs drew too many arms. Where a road meets a roundabout as two separate carriageways it got counted twice β a four-exit junction drew as seven. The spacing between those two points depends entirely on the size of the roundabout, so the fixed threshold could never work. It's measured from the ring now. And when the shape still can't be resolved confidently, a plain roundabout is drawn instead of a wrong one: on the road, a sign showing the wrong junction is worse than one showing no detail.
β’ The map no longer occasionally spins 180Β°. Standing still the GPS drifts, and the direction of travel was being measured from where it had drifted to.
β’ More restricted-traffic zones detected. Most are tagged in OpenStreetMap as time-limited, and those tags weren't being read at all β eleven restricted streets in one Italian city centre the app simply couldn't see before.

GitHub
Release roadstrapp.0.4.18.apk Β· roadstrapp/roadstr-app
Roadstr 0.4.18
A crash during navigation, and the roundabout signs that were drawing the wrong junction.
Both came from the previous release. Insta...
#Nostr #Roadstr #OpenStreetMap #GrowNostr #FuckGoogle
Roadstr 0.4.17 is out.
For our European Friends: roundabout signs now show the real junction. A router only tells you which exit to take β "third exit" describes a four-arm roundabout and a seven-arm one equally well, so the sign used to draw the same generic ring for both. The arm count now comes from OpenStreetMap, and the symbol looks like the junction you're actually approaching.
Feels like I'm 16 again: pick your cursor β city, racing, SUV, electric, bicycle, formula β and a redrawn speedometer.
One thing under the hood worth mentioning. The roundabout lookup batched every junction on your whole route into a single OpenStreetMap query. That's a piece of your itinerary sent in one request before you've even set off, and every other lookup in Roadstr only ever discloses where the car *is*, as you drive. Now it's capped, nearest first.
Get it via
@Zapstore of directly from

GitHub
Release roadstrapp.0.4.17.apk Β· roadstrapp/roadstr-app
Roadstr 0.4.17
Roundabout signs that match the junction in front of you.
Added
Real roundabout shapes. A routing engine only tells the app which ...
#Nostr #Roadstr #OpenStreetMap #GrowNostr #FuckGoogle
Roadstr 0.4.15
No Google code left in the app. None.
Roadstr was built to run on phones with no Google services, and it did. But the APK still carried Google Play Services code β fifteen classes it could never execute on the very devices this app exists for. Nobody put them there on purpose: they arrived as a dependency of the location plugin.
They are now gone.
com.google.android.gms.* 0 classes
com.google.android.play.* 0 classes
Google components in manifest none
What was there, and why it survived so long
Roadstr has always read your position through Android's own LocationManager β every single call site asks for it explicitly, which is what makes the app work on GrapheneOS, /e/OS and LineageOS without Google apps. The Play Services code was never called.
It shipped anyway because geolocator decides at runtime whether to use Google's fused provider or Android's own, so both remain reachable to the compiler. Excluding the library at the build level simply broke the build: the Google client will not compile without it.
What changed
geolocator_android 5.0.3 (MIT) is now vendored in the repository with the proprietary path removed β one file deleted, three lines changed, one dependency dropped. The Dart API is untouched.
Also removed: Google Play Store split-install and deferred-delivery classes, which Flutter links for apps that download parts of themselves from the Play Store. Roadstr does not.
What does not change
Nothing about how location works. Same provider, same accuracy, same behaviour on de-Googled phones β there is simply nothing else left beside it now. Location permissions are unchanged.
Get it on
@Zapstore or directly from Github (via Obtanium) at

GitHub
Release roadstrapp.0.4.15.apk Β· roadstrapp/roadstr-app
Roadstr 0.4.15
No Google code left in the app. None.
Roadstr was built to run on phones with no Google services, and it did. But the APK still
carr...
F-Droid repo incoming as soon as it's approved.
As always #FuckGoogle
#Roadstr #GrowNostr #OtherStuff #Navigation
Small update today since I'm not driving much these days.
Roadstr 0.4.13 is out.
The cursor now points where you're actually going. Outside navigation it used to follow the phone's compass β in a cradle at an angle, that meant it pointed across the road instead of along it. Now it follows your GPS course whenever you're moving, and stays glued to the road through curves.
Also in this one:
β’ Add your own relay for favourites sync. Public relays promise nothing about how long they keep your data β one you run or pay for does.
β’ Search sends far less traffic while you type.
β’ Reconnects and map lookups back off instead of hammering a service that's already struggling. Better battery on a bad connection.
β’ A pile of hardening: hostile relays can't grow the app's memory, remote text is length-capped, LNURL lookups reject addresses that look public but resolve inward.
#Roadstr #OpenStreetMap #GrowNostr and as always #FuckGoogle
Roadstr 0.4.12 is out
NEARBY β tap the search box and, without typing a word, one tap tells you where the closest fuel, supermarket, cash machine, pharmacy, hospital, police station, post office, parking or charger is. Within 5 km of wherever you actually are, nearest first, distance on every row. Straight from OpenStreetMap tags, so it reads the same in Berlin, Tokyo, Nairobi or SΓ£o Paulo β and places OSM never gave a name to are kept, not dropped: an unbranded pump or a cash machine in a wall is exactly what you were looking for.
And a number that had been lying to you: "avoid motorways & tolls" was quoting travel times from a different routing engine than every other route on screen. Checked on 29 real journeys over 350 km across six continents, plus ferries, islands and toll bridges.
Also in this build:
β’ Four relays instead of two, each verified to really store and serve Roadstr events β reports go to all of them, and all four are asked at once, so redundancy costs no waiting
β’ "My reports" is no longer empty: the profile was asking a single relay that kept refusing connections
β’ No more crash when updating the speed limit on one of your speed camera reports
β’ Restricted traffic zone (ZTL/ZAC) warning is back on screen
β’ Speed limit sign no longer hangs around after the route preview
β’ The map moves the moment you open it, instead of waiting for a cold GPS lock
β’ Fewer pointless reroutes
β’ Voice guidance speaks at 1.30Γ by default, so instructions land before the junction
β’ Auto dark theme off by default: your theme stays your theme
β’ 21 strings finally translated into all 26 languages
As usual, free, no account, no tracking. OpenStreetMap for the map, Nostr for the road reports, Lightning for the tips.
#Nostr #Roadstr #OpenStreetMap #GrowNostr #FuckGoogle
v0.4.11 (20)
Notification
Added notifications for every zap, report and alert confirmed or discarded by other users. Notifications will not take place during navigation.
Vocal alert for speed cameras, when a user posts an alert for a speed camera a new field with speed limits can be filled. This will vocally alert users in close proximity.
Bugfixes, resized remaining time and remaining distance in a more properly dimensioned font.
Roadstr v0.4.10 is out β‘πΊοΈ
π°οΈ GPS now works on de-Googled phones β GrapheneOS, /e/OS, LineageOS. No Play Services required, ever. We read the GNSS hardware directly, which also means zero location data ever touches Google β for everyone.
Privacy-first navigation, the way it should be and remember, always FuckGoogle.
#Roadstr #GrapheneOS #Nostr #OpenStreetMap #OtherStuff #GrowNostr
Roadstr v0.4.9 is out β‘πΊοΈ
β’ Avoid highways & toll roads β now actually working
β’ Long-distance walking/cycling routes (BostonβMiami on foot? go for it)
β’ Rich POI details on tap: hours, phone, website, accessibility
β’ Voice-volume slider, independent of your media
β’ Faster "locate me", plus imperial-unit fixes
Thanks to
@The Beave for the extensive testing βοΈ
Download on zapstore or directly from github

GitHub
Release roadstrapp.0.4.9.apk Β· roadstrapp/roadstr-app
v0.4.9 (18)
Routing
Avoid highways & toll roads now actually works. The feature was pointed at the wrong server (which returned a web page instead...
#Roadstr #OpenStreetMap #OtherStuff #GrowNostr
πππ
We offer collaborative events on nostr, is it enough?
View quoted note β
π Roadstr 0.4.8 is here!
You can now avoid highways and toll roads, while POIs show richer details like opening hours, accessibility, parking, EV charging, and Bitcoin/Lightning payments. We also added an in-app Wikipedia reader.
Under the hood: more reliable GPS, routing, zaps, and Nostr events, plus several security and privacy improvements.
Give it a try and let us know what you think! β‘
#Roadstr #GrowNostr #OtherStuff #Bitcoin #maps
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.
π Roadstr v0.4.5 is live β search, cameras, encrypted favorites & more
π Search is now local-first
Nominatim results biased toward your GPS, with direct OSM category search
(pharmacy, gas station, brands). "Cinema" finds the one down the street,
not halfway across the world.
πΉ Speed cameras layer added
OSM highway cameras shown on map, integrated with proximity alerts.
Stays alongside Nostr community reports β never replaces them.
π
ΏοΈ Save your parking spot
Local-only, never touches Nostr. Button to mark "I'm here" or long-press
to correct it after you've walked away.
π Encrypted favorites sync via Nostr (NIP-44)
Export favorites as JSON, optionally password-protected.
Cross-device sync via self-encrypted NIP-44 events β relays only see ciphertext.
Implemented NIP-44 from scratch with full test coverage.
ποΈ Voice improvements
Male voices for all languages (except French), 6-stage speed slider,
smoother navigation camera.
π‘οΈ Security audit completed
Removed dead deeplink intent-filter, replaced Russian Overpass mirror
with Swiss one (no GPS coords to VK), verified no tracking/analytics,
private keys stay secure. License clarified: GPL-3.0.
~120 lint warnings cleaned. Zero compromises on privacy.
Roadstr 0.4.5 out now. All open-source.

GitHub
GitHub - roadstrapp/roadstr-app
Contribute to roadstrapp/roadstr-app development by creating an account on GitHub.
#nostr #privacy #bitcoin #routing #grownostr #otherstuff
New release v.0.4.3
## v0.4.3 (12)
### π Navigation
- **Speed limits actually work now.** The root cause: `annotations=maxspeed` is a Mapbox-only extension β vanilla OSRM (including the FOSSGIS server we use) never returned it. Speed limits now come from Overpass, with class-based inference (motorway/trunk/residential/living_street) for the many roads that have no explicit `maxspeed` tag, 3 rotating mirrors for reliability, and support in free-roam driving (not just active navigation).
- **Recenter button** now pulls a fresh one-shot GPS fix instead of reusing the last stream sample, so it snaps to your *actual* current position.
- **Compass/heading button** is a real toggle in both navigation and free-roam β free-roam heading-up mode now rotates the map with the magnetometer instead of doing nothing.
- **Secondary instruction panel** (next-turn preview) enlarged ~100% β bigger icon, bigger text, easier to read at a glance.
### π Voice
- Turn instructions and hazard/ZTL alerts no longer cut each other off mid-sentence. Maneuvers are priority (interrupt immediately); ambient alerts queue and wait their turn, keeping only the most recent one.
- Fixed a race in audio ducking where a stale utterance could release focus meant for a new one, breaking the "duck other media" behavior.
### π Security
- Nostr events are now cryptographically verified (event hash + BIP-340 signature) before being trusted β a malicious relay could previously fabricate road reports or confirmations under any pubkey.
- One vote per identity per event confirmation (was previously unlimited/re-countable).
- Local settings (favorites, search history) are now AES-256 encrypted at rest, key held in the Android Keystore.
- `debugPrint` is silenced in release builds β no more street names/coordinates/TTS phrases in logcat.
- Event comments capped at 500 chars to prevent relay-side payload abuse.
### π¬ Onboarding
- Welcome page now shows the real app logo and a privacy notice recommending a VPN (Mullvad, Bitcoin-payable) given that road reports propagate over Nostr.
- nsec login page now shows the same security disclaimer as the profile screen.
- Fixed the Kokoro voice download completion indicator β it was implemented but never actually triggered (listener was waiting on a stream event that never fires); now shows a white check on a green circle when the download finishes.
- GrapheneOS guidance now mentions setting location permission to "Allow all the time," not just "while in use."