Skip to content

Releases: roadstrapp/roadstr-app

roadstrapp.0.4.5.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 12 Jul 12:50

v0.4.5 (14)

Search & POI

  • Search now favors places near you. Nominatim results are biased toward your GPS position and re-sorted by distance — fixes generic terms like "cinema" or "supermercato" ranking a same-named place on the other side of the world above the one down the street.
  • New category/brand search (Overpass-powered): typing "farmacia," "benzinaio," or a store brand name now searches OSM directly within a radius of your position, sorted by real distance — independent of Nominatim's global relevance ranking.

Speed cameras

  • Added an OSM-sourced speed camera layer (highway=speed_camera / enforcement=maxspeed), shown on the map with a distinct muted marker and included in the proximity beep — additive to, never replacing, community-reported Nostr cameras.

Parking

  • Save your parking spot — a dedicated button for "I'm here now," plus a long-press map option for "actually it was back there" when you've already walked off. Local-only, never touches Nostr, persists until you clear it.

Favorites: export, encryption, sync

  • Export favorites to JSON, with optional password encryption (PBKDF2 + AES-256-GCM).
  • Encrypted cross-device sync via Nostr — favorites publish as a self-encrypted NIP-44 event (kind 30078); relays only ever see ciphertext, nobody but you can read the contents. NIP-44 was implemented from scratch (the Nostr library in use didn't support it) and covered by round-trip tests.
  • Onboarding now explains the encrypted/anonymous sync option.

Arrival precision

  • Arrival radius on the last leg is now dynamic based on live GPS accuracy (10–40 m) instead of a flat 60 m — tight and precise with a good fix, still forgiving in a parking garage or urban canyon.

Voice

  • Male voice option added for every supported language except French (Kokoro-82M has no French male voice) — pick it in Settings, with a live preview sample.
  • 6-stage speech speed slider, also previewable before committing.
  • Smoother navigation camera: replaced the fixed-duration tween with a continuous exponential-smoothing follow — removes the faint stutter that showed up when a new GPS fix landed mid-animation.
  • Secondary instruction panel width fixed to exactly half the screen (was growing unbounded with long text); speed-limit sign no longer overlaps the bottom nav panel.

Cursor

  • Removed the extra cursor styles (muscle car, SUV, compact, vespa, moto, bike) — down to *arrow. The others were too tacky.

Security & privacy

  • Full security audit: removed a dead, exported deep-link intent-filter that any website could have triggered.
  • Replaced a Russian-hosted Overpass mirror with a Swiss one — no more real-time GPS coordinates going to a VK/mail.ru-operated server.
  • Fixed a crash from using a stale screen reference after an async gap.
  • Verified: private keys never leave secure storage, all incoming Nostr events are signature-verified, no tracking/analytics SDKs, encrypted local settings.
  • License clarified as GPL-3.0 (copyleft) — README previously and incorrectly said MIT.
  • Cleaned up ~120 lint warnings and dead code.

roadstrapp.0.4.4.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 11 Jul 23:33

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."

roadstrapp.0.4.1.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 07 Jul 20:23

🔒 v0.4.1 — Navigation polish & security hardening

Navigation fixes

  • TTS timing — Voice announcements now adapt to transport mode. Walking uses tighter distances (far 60 m · near 15 m); cycling uses intermediate distances (far 150 m · near 30 m); driving is unchanged. Back-to-back announcements on short steps are suppressed to prevent the "silencing" effect.
  • Walking arrival radius — Arrival is now confirmed at 15 m instead of 40 m when navigating on foot, so a 300 m route no longer triggers arrival halfway through.
  • Arrival screen removed — The 👍/👎 feedback dialog is gone. On arrival the destination pin turns green with a ✓ icon and stays visible on the map; a brief banner auto-dismisses after 6 seconds.

Security hardening

  • EncryptedSharedPreferences enabled — All four FlutterSecureStorage instances now use encryptedSharedPreferences: true, encrypting both keys and values via Android Keystore (not just values).
  • NWC URI moved to SecureStorage — The nostr+walletconnect:// URI (which contains a Lightning wallet private key) was stored in plain Hive. It is now stored in Android Keystore-backed SecureStorage. Automatic migration from Hive on first launch.
  • Routing API keys moved to SecureStorage — GraphHopper Cloud and OpenRouteService API keys were stored in plain Hive. Migrated to SecureStorage with the same automatic migration path.
  • WebView hardened — The Wikipedia/search WebView now blocks any navigation to non-HTTPS URLs via onNavigationRequest.
  • ADB backup disabledandroid:allowBackup="false" added to AndroidManifest.xml. Prevents adb backup from extracting app data (including the Hive settings file) from an unlocked device with USB debugging enabled.
  • Release logging — Replaced a print() call in gps_service.dart (visible in logcat in release builds) with debugPrint() (stripped in release).
Migration note: NWC URI and routing API keys are migrated automatically from Hive to SecureStorage the first time each relevant screen is used after the update. No manual action required.

roadstrapp.0.4.0.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 06 Jul 20:47

First-launch onboarding

  • 4-page flow on first install: features showcase → Nostr identity → permissions → ready.
  • Nostr login via Amber NIP-55 (recommended) or nsec key (stored in Android Keystore). Profile name and avatar fetched from relay immediately after login.
  • Dedicated GrapheneOS guidance: grant Precise location and "Allow always" to keep GPS active in background.
  • Optional Kokoro AI voice model download (82 MB) with live progress bar — can be deferred to Settings.
  • Pages freely swipeable. Fully localised in all 27 supported languages.

ZTL / restricted zone ahead warning

  • Checks whether an upcoming turn leads into a restricted zone at the moment the instruction is announced — before the user enters.
  • Orange banner + spoken voice warning at that point. One warning per step, no repeated alerts.
  • Distinct from the existing red banner shown when already inside a ZTL.
  • Warning spoken in the user's language at runtime.

Missed-turn rerouting

  • After advancing to a new step, a 2.5-second guard timer verifies the user is actually approaching the next waypoint.
  • If distance hasn't improved and speed is above 3 km/h, silent reroute triggers automatically.

TTS announcement improvements

  • Urban steps now receive an immediate voice announcement right after a maneuver, replacing the previous premature 220 m trigger.
  • Announcement distances adapt to road type and current speed.

Cursor styles overhaul

  • 7 selectable cursors rendered from SVG assets: Arrow, Muscle Car, SUV, Compact, Vespa, Racing Moto, Bicycle.
  • Settings cursor grid replaced with a dropdown with live icon preview.

Localisation sweep

  • Event categories, transport mode chips, time labels, and weather strings now fully localised across all 27 supported languages.
  • 40 new ARB keys covering all onboarding screen strings.

Other improvements

  • Route preview panel now supports drag-to-close gesture with spring-back animation.
  • Secondary nav instruction row shows distance to next maneuver.

roadstrapp.0.3.4.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 04 Jul 20:16

v0.3.4 — Nav UX overhaul, roundabout icons, speed alerts

New features

  • Nav banner now full-width edge-to-edge, covering the status bar area, with ~30% larger text
  • Next-step preview row below the main instruction
  • Roundabout exit icon: custom-drawn painter, exits 1–6, CCW arc — no Overpass API needed
  • TTS: ordinal symbols (1°, 2°…) normalised to spoken words before synthesis
  • Adaptive TTS announcement distances based on road type and current speed
  • Speed limit exceeded → red speedometer arc, text and border
  • Speed camera proximity alert: dual-tone beep (350 Hz + 440 Hz) within 250 m
  • Weather row (Open-Meteo, no API key) in Alternatives panel and Pin panel
  • Drag-to-close gesture on Alternatives panel

Bug fixes

  • Search bar restored to floating position (was accidentally pinned to screen top edge)
  • Roundabout painter geometry corrected: arc now sweeps counter-clockwise (right-hand traffic)
  • Alternatives panel horizontal overflow fixed; title/chip spacing improved
  • Avoid motorways / avoid tolls chips now shown only when GraphHopper is selected

roadstrapp.0.3.3.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 04 Jul 13:43

Roadstr 0.3.3

Navigation

  • Map and cursor follow direction of travel — definitive fix: _toggleHeadingMode is now a real toggle; _recenter re-enables heading mode during active navigation
  • Rerouting on U-turn — added bearing-difference check (>150° at >10 km/h) as a second reroute trigger alongside the existing distance check

Routing

  • Route alternatives — panel shows multiple options when available (distance >5 km)
  • Cycling mode — new "Bike" chip routing through the dedicated OSRM cycling endpoint, preferring cycle paths
  • Route preferences — "Avoid highways", "Avoid tolls", "Shortest route" chips (shown only with GraphHopper/ORS, hidden on OSRM)
  • Drag-to-close — alternatives panel closes on downward drag or flick; includes slide-in animation on open

Weather (Open-Meteo, no API key required)

  • Temperature, condition and wind speed shown in the alternatives panel and quick-search pin popup
  • Lazy async loading, silent failure when offline

UI fixes

  • Fixed overflow in alternatives panel on narrow screens (<360dp): title and mode chips are now on separate rows with horizontal scroll
  • GPS camera animation: _gpsAnimMs = 600 for continuous 60fps movement

roadstrapp.0.3.2.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 04 Jul 08:51

Minor bugfixes and updated translations.

roadstrapp.0.3.1.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 03 Jul 18:54

Added vocal directions and bugfixes.

roadstrapp.0.2.1.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 28 Jun 19:51

First public release.