What's changed in 0.4.739
- Attention cards are amber, not baseline pink
- Faster-route buttons stay readable under Material You
- The arrival ETA follows live traffic even when the route never changes
- Free-drive speed box sits down by the locate button
- Translations move to Weblate, and the docs stop miscounting languages
- Ending a drive clears the route line
- Stray taps during a drive can't add stops, and minimizing the route chooser zooms in on the route
- Buy Me a Coffee badge in the README
- Donate goes somewhere real now: Buy Me a Coffee
- Fresh README screenshot set on the merged build, plus two transit shots
- The Fastest tag follows the ETA, not the top row
- Merge cleanup: focus ring on the layers toggle row
- Merge cleanup: repair union-resolved regions
- Merge cleanup: dedupe imports and drop a superseded flock select line
- Avoid-cameras moves its pick to the top of the route list
- Route fit keeps both endpoints visible and stops zooming to space
- Docs: satellite view moves from roadmap to features
- The +N more stops line opens the stops editor too
- Along-route search panel pins to the top and dismisses on any map tap
- Nav aids: the compass stays up during nav, re-center works while stationary
- Update README.md
- Update README.md
- Update README.md
- D-pad cleanup: parking hub menu, focus rings, results handle key path
- Numbered stop pins on the map
- Multiple stops read as their own +N more stops line on the card
- Transit stop names on the map take the transit blue per theme
- Speed readout is one rounded rectangle that widens when the limit joins
- Nav search panel: closes when you grab the map, rides to the top while typing
- Stop picker polish: hint banner follows the theme, picker header slims to a mode label
- Starting nav clears the planning search's leftover results
- Nav search field: arrow keys escape to the chips below
- Layers panel is a VelaMenu so key-only devices can use it
- Nav search and volume float on the map, and the search takes free text
- Speed readout without a posted limit is a compact circle
- Satellite fixes: imagery year retries after a failed lookup, overlay house numbers go white too
- Docs: generalize a verification example in FEATURES
- Search along the route while navigating
- A coordinate deep link moves the camera to its pin
- Top card follow-ups: notifications sit under it, add-stop button with stops present, drop the reroute flash
- Satellite polish: white labels with black halos, white pin backings, yellow freeways, cleaner credit
- City names come back in suggestions: never demote Google's top match
- Directions header moves to a Google-style card at the top of the screen
- Offline routing: highway shields, sign destinations and exit numbers, no graph rebuild needed
- Satellite view: transit and traffic overlays draw above the imagery, capture year gets its own line
- Address suggestions get a real geocoder (Photon, OSM)
- Results: sort chip moves left of the rating filter
- Satellite: ghost roads, dimmed imagery year, toggle-time year fetch
- Route shields on the map: bigger, bolder, Google-like
- Layers button: satellite grows into a multi-layer panel
- Nearby suggestions rank above far matches while typing
- Docs deep pass: scrub personal info, fix stale claims, add LANGUAGES.md
- Satellite imagery layer with a map button
- Stream-parse the traffic-controls Overpass fetch
- Departure-board parse anchors are remotely repairable
- Review and stop counts use real plural forms
- Share to Vela from any app's share sheet
- Honor the zoom in geo links
- Mute turn guidance while off-route
- Update README.md
- House-number gate moves from invisible text to no text
- Board refresh stops polling while the app is backgrounded
- Quarterly cron rebakes the routing graphs and overlay data
- Departure boards stop listing every bus twice at double-fed stops
- Bus stop names hide until you're zoomed in close
- Street names dodge the camera badges
- Deep links fly the camera to the point
- Update README.md
- Update MAP-STYLE.md
- Update README.md
- README: reorder What you get by what matters most
- Cameras yield to POI icons and labels
- Flock cameras: draw at route-overview zoom for real
- Fix house numbers never rendering on a cold start
- Docs audit: trim the README and fix stale claims
- Merge paired curb stops into one map icon with a combined board (#130)
- Departure boards refresh while open (#128)
- Gas stations were showing bus departures; speed sign joins the speed box (#127)
- Stop timeline: show the stops already passed, and cross out moved times (#126)
- Speed limit badge was dead: opacity 0 hides features from queryRenderedFeatures (#125)
- Closing a far-away place no longer flies the camera back home (#124)
- Typed coordinates drop a pin instead of searching as text (#123)
- Stop taps work in every app language, with a direct Transitous board fallback (#71) (#122)
- Show house numbers only when zoomed to the 50 ft scale or closer (#121)
- Stop timeline: GTFS trip data with live/cancelled per stop, Google-style rows (#120)
- Canonical GTFS transit stops on the map with an offline area cache (#119)
- Docs: transit data sources - the Transitous/Google division of labour (#118)
- Feature-phone support: adaptive density + small-screen D-pad focus fixes (from vela-dpad) (#117)
- Stops expand full-screen again
- No photo shimmer on transit stops
- Transitous departure boards: open GTFS realtime as the primary source
- Board: pills for named lines, explicit Stops action on each route row
- Bus board polish, working diagnostics export, cameras in the README
- Bus polish: after-midnight day markers, proximity fallback for stop resolution
- Transit stop correlation: widen the junction-to-stop radius, keep OSM stop icons
- Hide OSM bus-stop icons; drop the blink-and-gone add-stop banner
- Cameras on by default; show departure boards for intersection-named stops
- Flock cameras: refresh the dataset from a hosted release, no app update needed
- Flock cameras: bundle the dataset on-device so the layer is instant and avoid is reliable
- Departure board: list every embedded time vertically, each with a countdown
- Flock: bound the per-endpoint camera-fetch timeout so failover can't hang
- Departure board: show up to 8 arrivals per line, not 4
- Flock cameras: fail over across Overpass mirrors so a 504 no longer blanks the layer
- Transit: only hide reviews/about for BARE stops, not rated transit buildings
- Transit stops: drop the Reviews and About tabs entirely
- Transit stops: skip the review scrape
- Fix the browse-map jank: arm the speed overlay by motion, not by follow
- Fix OOM crash + pan/zoom jank: largeHeap + stream-parse Overpass + revert flock z11
- Flock cameras: show them at route-overview zoom + record fetch outcome to diagnostics
- Unified Google-style speed box + smoother free-drive tracking
- Fix black overlay on roads + transit stop resolution + chevron hiding search bar
- CI: guard against missing translations (fail fast on a locale gap)
- i18n: backfill settings_version_copied into the CJK + Hebrew locales
- Terrain shading: translate the toggle + hint into all 14 locales
- Flock avoid: settings hint states the detour cap + the unavoidable case
- Reconcile #85/#101 speed-limit sign (free-drive guard + overlay fallback)
- Transit tap-through: pick the leg that boards at the tapped stop, not just the line
- Flock along-route count: tile the query + segment-distance the near test
- Flock avoid: stamp the route set by epoch so naming a route can't drop the badges
- Dictation audio focus: abandon before release so music can't stick paused
- Transit route detail: cancel the lookup on close, focus the sheet's back arrow
- Add Android Auto troubleshooting doc for sideloaded nav apps
- Nav: speedometer is a rounded rectangle, matched to the SPEED LIMIT sign
- Speed-B: device-verified on a simulated drive + log only on change
- Speed-B: use Log.i for the overlay-read diagnostic (visible in release)
- Speed limit: online 'Speed B' streamer - posted limit without a routing graph
- Flock: make the toggle AVOID, not just warn (auto-prefer low-camera route)
- Flock: opt-in 'cameras on route' warning on the route picker
- Directions: long-press the map to route through an arbitrary point
- Search: a no-result search no longer shows a blank screen
- Flock layer: fix the Overpass query (out body) + persist the toggle
- Voice: pause playing music while Vela dictation is listening
- Transit UI: drop the chevrons, go clean Google-style
- Transit tap-through: transit-biased headsign geocode + board-leg pick + docs
- Transit: tap-through route stop timeline off the departure board
- Departure board: show more routes per stop (cap 12 -> 24)
- Share menu: rename 'Google Maps link' to 'Copy link' and copy to clipboard
- Show Flock cameras from a neighbourhood zoom, not only street level
- Docs: bus route numbers + flat-vs-grouped board layouts
- Show route numbers on the departure board and group buses by route
- Tapping a bus stop opens the stop, not the road intersection
- Add "Open on the web" to the share menu
- Fix the cold-launch camera staying zoomed out instead of on your location
- Show the departure board when you tap a bus stop on the map (issue #71)
- Show a live departure board when you tap a transit stop
- Show a "departs in X min" countdown and live badge on transit options
- Add the reversible bake pipeline for a posted-speed-limit overlay
- Pin Hebrew dictation instead of falling back to auto-detect
- Show the speed-limit sign while free-driving, not only in navigation
- Redo the launch recenter in the view layer so it actually fires
- Draw mapped Flock and other ALPR cameras on the map
- Snap the map back to my location on launch after a crash
- Drop the 'like Google' aside from the terrain-shading hint
- Add a terrain-shading toggle (off by default) and fix the reviews search circle
- Recolor the overlay houses in classic mode and note it is dark-mode for now
- Translate the newest UI strings into every language
- Integrate Hebrew alongside Chinese and Japanese, and correct its notes
- Add Hebrew (עברית) localization + RTL — 12th language
- Give the classic night palette its own look and enlarge the location arrow
- Make the navigation arrow bigger, drop the white ring, and use a brighter navy
- Point the missing-voice pill at system voice settings for languages Piper cannot speak
- Make re-parking a clear choice instead of a two-step dance
- Track your location while free-driving and smooth the heading beam
- Update the language-set tests to expect Chinese and Japanese
- Escape the apostrophes in the map colors hint so the release build stops choking
- Fix the Chinese depart phrase so it compiles
- Add Chinese, Taiwanese Chinese and Japanese across the app, spoken directions and dictation
- Point offline routing at the rebuilt graphs so avoid tolls and avoid highways work everywhere
- Let the routing graph workflow publish a parallel graph generation beside the old one
- Keep map POIs around when you pan back or close a place instead of refetching from Google
- Add a map colors setting with the modern Google look and the classic Vela look, remote default included
- Tap the version number in Settings to copy it for bug reports
- Catch the feature list up on the nav puck, bold streets, bike teal, plurals and the ramp voice fix
- Say '1 result' not '1 results' by using proper plurals for the results count
- Fix the nav voice mispronouncing take by giving the sign destination its own beat
- Draw dedicated bike paths in Google's teal on the map
- Bold the street-name labels on the map, matching Google
- Make the navigation arrow match Google: a white arrow inside a filled blue circle
- Put the privacy comparison table back in the README and move the how-it-works breakdown to its own doc
- Record that menu photo dates cannot be recalibrated: the gallery request is unchanged and Google now returns no photos to any automated request
- Slim the README down to the essentials and move the deep dives into PRIVACY and SPEC
- Retake every README screenshot with the standard teal look after the last set accidentally used wallpaper theming
- Fresh screenshots for the 0.4 look, and the gallery shot retires
- Note the 0.4 line in the project guide
- The 0.4 line begins
- Fix a brace the merge dropped in the search parser tests
- Review fixes: cache write race, stale dot paints, avoid chips no longer degrade online routes
- Retire the throwaway GraphHopper probe module and give the lists menu its keypad focus
- Write the POI speed changes into the project guide
- Map places appear as they load, nearby areas preload, and your home area shows instantly on launch
- Avoid tolls and avoid highways arrive in the route chooser
- Routing learns avoid tolls and avoid highways under the hood
- The parking button and the results filter menus join the soft ink treatment
- Icons stop reading darker than their labels, and the light map gets its last sampled colors
- Map places that lose the label fight still show as small colored dots
- Light mode is pixel matched to the real Google Maps app
- Note how the sports-field tint actually lands in the map style guide
- Sports fields actually show their tint now
- Park and bike trails draw as green lines and sports fields get their Google tint in dark mode
- Update README.md
- Alleys and driveways draw a shade darker than streets in dark mode, like Google
- Zoomed-in buildings stop glowing brighter than the palette in dark mode
- The Android Auto map uses the Roboto style too, not just the phone screen
- Microsoft footprint buildings wear the sampled palette too, and the old map colors are archived
- Map labels now render in Roboto like Google, from our own font host
- Flick a minimized place card open from anywhere on it, not just the pull bar
- Dark mode is pixel matched to the real Google Maps app and flicks can no longer read as zero
- Sheets finally flick like the place card, the map wears your eyedropped Google colors, two finger tilt actually triggers, and photos zoom on double tap
- Correct the notes: the place page carries no photo dates, the photo listing recalibration is the only route
- Census the page payload strings while hunting photo dates
- Read the photo dates out of the page's embedded payload strings
- Loosen the photo date mining so it finds the page's real photo entries
- Restore the project notes wiped by a bad merge resolution and add the missing entries
- Menu and gallery photos get their dates back, flicks snap sheets a detent, and the map palette tracks the Google app
- The minimized route chooser reopens smoothly, pans away like the other sheets, and light mode roads pick up Google's grey
- Map greens match Google now and are actually visible in dark mode, the trip time stops wrapping, and the map style setting is gone
- Flat green forests and marshes like Google, an interface size setting for car screens, bigger nav buttons, and the search bar stops taking taps under an expanded place card
- Note that menu photo dates wait on recalibrating the photo listing call
- Menus show up much more reliably
- Vela tells you which side your destination is on, sheet buttons share one circle look, and the README slims down
- Drag the route chooser from anywhere, sticky travel mode, wider zoomed-out search, filters clear map pins too, bookmark save icon, circled directions close
- The minimized Start button waits for the chooser body to be nearly gone before growing in
- The route chooser now minimizes under your finger with real inertia
- Picking a time that already passed now says so instead of silently snapping to now
- Search along route chips look tappable and you cannot schedule a trip in the past
- The directions buttons match the rest of the app and estimated times drop the tilde
- Depart at and arrive by feel deliberate now, the reviews tab gets a real rating histogram, menu photos carry their dates again, and the minimized card no longer shows map under it
- Update the project notes for the sheet fold changes
- The place card lands its minimize without the last moment hop, the results list folds its filter chips away with the sheet, and menu photos show when they were uploaded
- Minimizing a scrolled place card scrolls it back to the top so the name is never stuck behind the handle
- The place card fold now moves with the card and the reviews page only closes when you really pull it
- Minimizing the place card now folds the extras away smoothly instead of swapping to a separate mini card
- The reviews pull-to-close waits for your finger and springs back
- A privacy comparison table joins the README
- The full reviews page can be pulled down from its top to close
- The parked car sheet is a single fixed height, no phantom minimize
- The parked car sheet no longer loads the last place's reviews and photos
- Update the viewer feature note for the activity-window fix
- Drop the dead full-screen helper and update the viewer notes
- Full-screen viewers move into the activity window, fixing edges and rotation
- Note the full-screen viewer chrome fix in the docs
- The viewers show the status bar over a gradient, Google's own treatment
- OSM icons blend with the Google dots, and junction signs wait for street zoom
- Full black behind the viewers, since the dialog window refuses the bars
- Note the true-fullscreen viewer fix in the feature list
- The viewer content demands the real display size, ending the inset strips
- The viewers finally reach the screen edges on modern Android
- A pushed notice can be a pop-up now, not just a map card
- The viewers paint their whole window, killing the last see-through strips
- The place card's extras slide away, and the viewers claim the whole screen
- The place card fades as it minimizes, and the header circles stop lying
- Note the menu photo fix in the feature list
- The Menu tab stops collecting photos that were never the menu
- The photo viewer goes properly full screen with Google's blurred backdrop
- Menus become a real tab, and the review search tucks behind a magnifier
- F-Droid setup leads with the one-line repo address, README mentions Material You
- Fix a build break in the nav-exit camera reset
- Ending navigation returns to a flat north-up map, and POI layers stop racing
- Star button becomes the save menu, gallery survives rotation, breathing room
- The place page catches up to the rest of Vela's look
- Filter chips open real menus, and results can filter to wheelchair accessible
- Picking a result opens full size again, and the bar stacks its two lines
- Every POI label can pick a clear side of its icon, not just the map results
- Result labels can sit beside the pin, not only under it
- The sheets glide down for real, and the results bar names your search
- Note the house-number dedup in the feature list
- House numbers stop repeating across apartment complexes
- Stop signs and traffic lights step aside during a search
- Sheets glide down softly when you grab the map, place card included
- Grabbing the map drops the results list out of the way
- The gas price gets its own bold line with a pump glyph in the results
- Result pins match the ambient marker shape, base POIs hide during a search
- Gas stations show their live fuel price on the map, the list and the place page
- Result pins keep the grey teardrop with a red circle, bubbles lose the star
- Dense search results collapse into red dots, rated restaurants get bubbles
- Navigation now buzzes when it reroutes, not just when a turn is coming
- The route chooser swipes down to a slim bar so the route is visible
- The results list rides its throws, and back exits the search in one press
- Search results draw as named POI icons instead of red pins
- A new place closes the route chooser, and the map buttons stay under it
- Switching languages back no longer leaves Russian behind
- Sweep the long dashes out of every translation
- The voice picker shows Android default as its own choice
- Release pruning that can actually see the whole list
- The sheet rides out the throw instead of springing to the detent
- Respect Android's default voice app when nothing is picked in Vela
- Choose which voice app the mic uses
- Smoother sheet animation and a less eager minimize
- The voice demo is a slim black strip so the player reads as a player
- The place card follows your finger and coasts to the nearest size
- Vela Voice warms up before the first dictation
- Transit lines start off by default
- Update README.md
- Write down how the README's inline voice player gets its URL
- The voice demo plays right inside the README
- Screenshots without transit lines, and the voice demo says the new line the way the app would
- Transit screenshot returns without the purple overlay, and the voice demo matches the app exactly
- Test and playground speech ignore the mute switch
- Screenshots lead with navigation, install moves below them, and the voice demo gets a real player
- README leads with what people care about, plus a listenable nav-voice demo
- Traffic conditions in words on route choices, and no surprise voice sample after installs
- Refresh the README screenshots on 0.3.472
- Bigger arrival time without the traffic note, and every nav card joins the stack
- Docs pass for the permission, voice and notification work
- One notification area on the map, a Get-a-voice shortcut, and a spoken directions toggle
- Warn when you would arrive close to closing time
- Update button on the update card is a filled pill
- Approximate location gets a real circle and an explainer, and setup asks about notifications
- Recents get a remove X and show addresses, Home and Work menus match their text
- Ask for precise location when navigation needs it, and explain a dead locate button
- Make the approximate-location blob actually visible, and polish the voice bits
- Show a soft accuracy circle when the location is only approximate
- Voice search: the mic now offers the Vela voice download, and installs are fast
- Voice search polish: call it Vela voice, livelier pulse, cleaner transcripts
- Document on-device voice search (privacy, features, architecture)
- On-device voice search: mic capture, tiers, and the Settings download
- On-device voice search: model hosting + Whisper recognizer engine
- Capitalize Vela Voice and quiet down the Voice library copy
- Tighten every Settings description and drop the leftover clutter
- Reframe the Offline maps section: local area vs whole states and countries
- Rename Offline to Offline maps, move it above Search, simplify the region filter
- Simplify the offline Map area and Routing regions descriptions
- Settings tweaks: clearer offline text, content filters back with place content
- Declutter Settings: Advanced and Developer groups, shorter language and voice sections
- Ask for location right at Get started, drop the extra rationale screen
- Trim onboarding to three steps and give dialog buttons a filled pill
- Voice search mic in the search bar
- Polish the onboarding prompts
- Ask for location in onboarding with a reason, and make the voice offer an honest choice
- Update straight from Settings
- Docs-only pushes stop cutting nightlies
- Docs: which surfaces follow Material You and which stay neutral
- Docs: how the F-Droid channels and triggers actually work
- F-Droid repo suggests the stable; nightlies become opt-in unstable
- F-Droid index actually refreshes on every nightly now
- Material You dynamic colours (issue #15)
- Document the infrastructure releases so nobody deletes the download backend again
- Nightly pruning only touches v0 tags
- Prune nightlies past the newest 14
- Fix crash on open on Android 10 and below when a location provider is disabled
- F-Droid badge next to the Obtainium one
- Recents mix places and searches in one timeline, saved rows readable in dark mode
- House numbers draw above buildings again
- List notes stick to chain stores, show inside the list, and the list shows its name
- Audit cleanup: dead code out, stale comments fixed, shared helpers deduplicated
- Audit fixes: version-skew data wipe, feature id padding, five smaller bugs
- Street names stay readable over routes, keypad focus ring stops clipping the first letter
- Map labels always win over stop signs, compass clears the search bar, demo dot stays blue
- F-Droid repo: install fdroidserver from pip, apt's is too old for modern APKs
- Fresh Davis screenshots and a plain-words guide to parking, lists and import
- Demo drive shows the real nav notification too
- Add a self-hosted F-Droid repository built and published by CI
- Nav notification shows the turn: arrow glyph, ETA clock, lock-screen detail
- Tone the lists ribbon down to chip grey in dark mode
- Move Your lists out of the search page into the ribbon button's own menu
- Fix crash when switching light/dark theme in the app
- Lists map ribbon + export/import, light-mode status bar icons, D-pad highlights, nightly update channel
- List import: preview + opt-in Save, not silent auto-save
- Local place lists (issue #1) + parking history
- Parking v2 (own button + map pin + car sheet), Google Maps list import, department-hours alignment
- Docs: tidy the department-hours entry; write up the proven list-import extraction
- Save my parking spot; department hours nest under the main Hours row
- Show in-store department hours on the place sheet
- Docs: location hygiene is a judgment call, not a blanket ban
- Docs: location hygiene rules for contributors and AI assistants
- Fix department hours mashing into store status; locate button back to the stock FAB
- Locate button matches the chip surfaces; arrive step drops the duplicate street line
- Locate button: back to full size with a lifted circle
- Google-style locate button, radio label spacing, Davis test coords, parking-spot roadmap
- Make every Settings toggle a visible D-pad focus stop
- Replace a few remaining local street names in comments with Davis examples
- Stops always open the editor + a full docs cleanup pass
- Post-merge tweaks for the Android Auto PR
- Dot outlines, teal you-pin, ink flag, no ghost route in walk mode
- Exact-constant walking dots, blue me-pin + flag grammar, tap to restore the card
- AA: fix NAVIGATE handler crash on geo: URIs (opaque — getQueryParameter throws)
- Update README.md
- Update README.md
- Google-style dots, stops editor sheet, swipe never closes the place sheet
- D-pad: pressing up at the top of Settings lands on Back, not lost focus
- Android Auto: full car-side nav (search/route/guide) + map-matching + smoothing
- Fix the add-stop banner rendering black in dark mode + walking dots that don't scale
- Search along route: picks add a stop, distances follow the trip, fix grey chips
- Arrive step names the destination + an X to close search results
- Route picker: only one route wears the Fastest tag
- D-pad polish: Settings focus trap, dialog scroll, hybrid-phone search tap
- CI: fall back to the upstream tts-runtime release so fork PRs don't 404
- Fix Settings jank/ANR from voice-engine enumeration in composition
- Fix the fastest route not always leading the route picker
- Add a "Hide website & external links" setting
- Add a "Hide adult categories" setting
- Nav: show the full trip ETA before the first GPS fix
- Make the directions chips match the rest of Vela
- Add a simulate-my-location demo toggle and refresh the screenshots
- Fix the search bar not opening on ordinary phones
- Search framing: stop the camera snapping back after fitting the results
- D-pad: focus rings on every place-sheet action, fix Choose-on-map, add exhaustive auditors
- Add dpad_test_suite: reproducible on-device D-pad checks
- D-pad: bare map opens on the search bar, not an engaged map
- D-pad: Welcome Get-started now auto-focuses on every screen size
- docs: record the menu/dialog auto-focus solution (VelaMenu/VelaDialog)
- D-pad: menus now auto-focus too (VelaMenu) -- secondary-window gap closed
- D-pad: dialogs now auto-focus (VelaDialog, raw-Dialog pattern)
- D-pad: finish proving the secondary-window focus limit (menus + dialogs)
- D-pad: document the Compose secondary-window focus limit (menus + dialogs)
- D-pad: add robust off-screen auto-focus + document menu/dialog limits
- D-pad: place focus on every screen so no keypress is wasted
- D-pad: make the full-screen reviews WebView scroll by D-pad
- D-pad: close the last touch-only gaps found in a full-app sweep
- Add full D-pad / no-touchscreen operation
- Results sheet: back never exits the app, camera frames the pin cluster
- Results sheet: back steps one size down, and the top stays visible
- Nightly and weekly release channels
- Search results now rise from the bottom, like Google
- Fix content falling off the bottom on short screens (scroll)
- Directions: scroll the travel-mode chips so Bike isn't clipped
- Transit: schedule a departure/arrival time (+ date, + Last available)
- Transit: step-by-step trip guidance (Moovit-style)
- Transit: turn-by-turn walking directions within a walk leg
- Transit: full stop detail in the leg drill-down
- Polish the search results panel: filled chips, no hide button, cleaner hiding
- Tap a house number or building to open its address
- Cut the 0.3 release line
- Refresh the app screenshots on a Pixel 9
- Restyle chips as full pills and rebuild the search results sheet
- Add contributing guidelines, security policy, and issue templates
- Reorganize Settings and freshen up the navigation look
- Give the Check for updates button some room above the gesture bar
- Documentation crawl: fix stale claims and catch everything up
- In-app updater, plus smoother panning when zoomed way in
- Android Auto support, first cut
- Settings to hide reviews and skip photo loading
- Offline place packs now update themselves instead of going stale
- Share the download progress counter between the offline stores
- Stream the place pack build so country sized regions fit CI
- Whole-state offline place packs, so searching offline works like Organic Maps
- Nudge older saved areas to pull offline address data
- Offline polish: POI addresses, honest ETA, and move the offline chip
- Add true offline address routing and a quiet offline indicator
- Match a POI's address in offline search
- Transit lines on by default; robust multi-word offline search
- Make offline category search work (gas, coffee, food)
- Fix blank origin picker so "Choose on map" is reachable
- Make the minimized place card show the name, not photos
- Voice library: show top voices per language with "Show more"
- Drop em-dashes from the English UI text
- Fix Settings not scrolling to Offline from the onboarding prompt
- Put a real changelog in each GitHub release
- Show offline search guidance instead of a raw host error
- Place sheet: minimize-first swipe and fix disappearing POIs
- Add a transit-line highlight layer (train + subway)
- Add "Choose on map" to build a route between two points
- Keep the map camera put on sheet close and Settings exit
- Collapse voice library into per-language groups
- Update README.md
- Add an offline maps prompt to onboarding
- search: handle offline properly (issue #3)
- readme: move screenshots above the "why Google" note
- Update README.md
- readme: add a short "why a degoogled app uses Google" note
- build: debug-only network security config trusting user CAs (re: PR #4)
- docs: Obtainium install badge + doc-drift sweep (second-pass audit)
- nav: font-scale-safe overlays (issue #2) + second-pass regression fixes
- voice: revert default speed to 0.8 + download card ("Vela voice", Installing phase)
- voice: extraction progress (no more 98% park) + download card over the map; drop the remote-config notice
- voice: force final-consonant release ("lef"→"left") + fix 152nd reading
- docs: re-shoot screenshots 01/02/04/06/07 — clean status bar (no Asana icons)
- docs: sync calibration v11 / voice speed 0.72 note in CLAUDE.md
- voice: lower default spoken-directions speed 0.8 → 0.72 (calmer + clearer)
- nav: bigger + always-visible traffic controls; fold pure-rename "Continue" cards
- map: stale-response guards, replay-stop, resume lifecycle (Fable audit batch 4/4)
- voice/web/offline: focus leaks, interrupt latency, download + WebView races (Fable audit batch 3/4)
- nav/routing: localize offline routes + refine light landmarks + area POIs (Fable audit batch 2/4)
- scraper: harden parser calibration + JS sandbox (Fable audit batch 1/4)
- nav: demo/simulate-driving mode — drive any route with no real GPS
- docs: re-shoot place-sheet screenshots with upright POI labels
- poi: upright labels during search + conspicuous dropped-pin coordinates
- directions: editing the origin no longer clears the destination
- poi: name-aware icon grouping fixes grey-generic YMCA (matches Google + OSM)
- place: Street View pill opens Google's keyless pano externally (in-app WebView is black)
- docs: Street View investigated — keyless in a browser, WebGL-black in a WebView (reverted)
- search: fix Open-now (hours fallback), add Sort chip; chips: monochrome glyphs
- i18n: fix Dutch keep-LEFT at keep-RIGHT forks (safety) + uk genitive + locale parity
- map: POI label text matches the icon's category colour in BOTH themes
- docs: refresh Davis map screenshots (new POI label placement + icons)
- places: first-class "Temporarily closed" (banner + hours suppression, 11 langs)
- perf: quarter house-number placement load (bake z17); labels: fix the far-label state
- overlays: stream the UNION of covering regions — fixes St Joseph's missing buildings
- voice: arrival semicolon prosody + crisper consonants; map: cap controls symbols
- nav: fix the doubled "head out on out on" opener at nav start
- docs: house-number layers are minZoom 17.5 now (Google street-level parity)
- map: house numbers only at street zoom (17.5); voice: drain audio so prompts can't chop each other
- docs: drop stale 'placed ON TOP' phrase superseded by the layer-order fix
- map: fix POI icons vanishing at z16+ (addr numbers evicted them) + doubled numbers
- map: pull POI labels closer to the icon (radial offset 2.0 → 1.4)
- map: tighten POI labels toward the icon + fall back to under-icon on collision
- replay: clear the route line + snap the dot back to real location on teardown
- docs: u-turn abandon now gates on onRouteStreak, not bare !offRoute
- nav: harden reroute-abandon (sustained rejoin, not one grazing fix) + replay stale-timer
- docs: record replay arrow/GPS fixes, u-turn back-on-course, incidents defer
- nav: abandon an in-flight reroute when the driver returns to the original route
- replay: show the directional arrow + stop real GPS snapping the puck back
- map: surface schools + parks as ambient POIs (the real fix)
- Fix 3 defects from adversarial review of this turn's changes
- map: draw traffic lights + stop signs (keyless OSM, high zoom)
- nav: silence "use the lanes to continue" for turn bays, keep it for real forks
- POIs: fetch national parks + confirm schools/parks are iconed
- Nav: traffic-light landmark guidance ("pass the light, then turn") — off by default
- Address overlay: county-aggregate mode for the 10 non-statewide states
- Nav: silence straight renames; steadier voice consonants
- docs: record the nav drive-report fixes + traffic-light plan
- Nav: consolidate exit ramp + fork/merge into one instruction
- Nav: bridge route-line z-order, feet increments, voice state-route refs
- docs: update route-sort note (sort by displayed ETA, supersedes gRatio)
- Nav: fastest route always leads the picker + compass clears the banner
- Address overlay: CI pipeline for the 42 statewide OpenAddresses states
- Overlay: stream open house-number labels (OpenAddresses)
- Overlay: stream footprints online — no download needed to see houses
- Overlay: chunk big countries by quadkey prefix (buildable + downloadable)
- Overlay build: parallel, disk-lean ms-global downloads
- Building overlays: world catalog — 51 US states + ~199 countries
- Localize the resume-navigation strings into all 10 languages
- Overlay rendering + fix silent large-download timeout
- Overlay: shrink tiles — z14 min (was z12), drop no-size-limit
- Overlay (step 3): app-side download store + hook (pipeline proven E2E)
- Overlay (step 2): CI matrix workflow + manifest merge (buildings PMTiles)
- Nav: persist + resume navigation across a process kill
- Nav audio: revert pause -> MAY_DUCK (music didn't resume); keep the hold
- Nav: 4 drive-reported fixes (rename voice, roundabout exit, sort, compass)
- Overlay (step 1): buildings-PMTiles build script + region catalog
- Nav audio: duck harder + hold focus so music ducks reliably
- Nav: posted speed-limit badge from OSM maxspeed (on-device GraphHopper)
- Map: fix building footprints (empty maxzoom range) + house numbers z16
- POI markers: grey teardrop pin + labels to the left of the icon
- POI markers: grey pin/bubble backing, drop the white ring
- Voice: don't read a language through a mismatched neural voice
- Onboarding: Vela voice recommended for everyone; refresh Davis screenshots; docs consistency pass
- Trip replay overhaul: route segments, hermetic playback, trace-time puck
- Navigation audit remediation: 40+ fixes across position, guidance, rendering, audio
- Nav tracking overhaul + real continue-silence + closed-place status truth
- Nav voice: lanes-first preface, drop redundant "continue", raise photo caption
- fix: review-photo caption really fixed on Android 15/16 (Pixel 9)
- fix: review-photo caption invisible on Android 15+ (Pixel 9) + bright photos
- i18n: localize Google POI content (categories/hours/status) via hl + numeric status code
- i18n: localize the search-category chips (decouple label from query)
- i18n: translate the app UI into 10 languages + localize ViewModel/notification
- i18n: externalize ~330 :app UI strings to resources (English)
- i18n: runtime locale-switch mechanism (attachBaseContext + recreate)
- i18n: in-app language picker (Settings → Language)
- i18n: pair the download voice to the app language
- i18n: spoken navigation now speaks 10 languages
- nav: speak lane guidance ("use the right 2 lanes") from OSRM lane data
- i18n: localize NavSession spoken lines + the Test-voice sample
- i18n: AppLocale — follow the system language, drive the nav-text locale
- i18n: route NavEngine spoken frame + forSpeech through NavStrings
- i18n: introduce the NavStrings foundation (nav-text localization seam)
- Voice: splice a short beat at commas/semicolons so clauses don't run together
- Voice: fix stale trash icon on delete + silent-until-restart after download
- Voice catalog goes multilingual: group by language + per-language voices
- Voice: default to HFC Female @ 0.8× (remote-settable default voice id)
- Voice library: browse, download & switch between many Piper voices
- PlaceSheet: put Directions up top, phone/website below the hours
- Voice: read 3-digit street ordinals + stop clipping the nav-start prompt
- Place-sheet settle (star-on-top, contact rows) + viewport search + LRU POI cache
- Place-sheet: scrollable action pills (Call shows number) + lean header; faster POI HTTP
- Place-sheet redesign (Save/Share→header, wide Directions), driving-haptics-off, POI zoom cache
- Polish: per-mode haptics, 0.7 voice default, collapsed TTS, prominence sizing, smoother pan
- Ambient POIs: hand only near-view + cap 140 — fix Pixel 5a drag lag
- Fix "fewer POIs" regression (hand map all, let collision limit) + replay voice engine
- Map POIs: deeper + broader + zoom-scaled ambient coverage
- Map POIs: rank ambient Google places by real prominence, not category-term order
- Voice picker: type a variant number to jump (not just ◀ ▶ step)
- Voice: push speaker 14 + 0.8 default, remote-settable speed, sentence-pause at periods
- Voice speed control + remote-default speaker; fix Search-this-area + POI ranking
- Holiday hours: surface Google's special-hours label as a callout
- Voice: swap to libritts_r (more expressive) + a speaker picker
- Reclaim disk from removed Kokoro/Matcha voice models on launch
- Voices: drop Kokoro + Matcha, Piper is the sole "Vela voice"
- Settings: make the Offline section collapsible (collapsed by default)
- Add Matcha neural voice (balanced: realtime + warmer than Piper)
- Voice: fp32 Kokoro (~2x faster) + upgrade path + a text playground
- Add a fast Piper voice alongside Kokoro (13x faster) + research on faster Kokoro
- Kokoro voice: fix accent (en-us), first-run voice prompt, latency findings
- In-app Kokoro neural voice (runs inside Vela, no SherpaTTS app) + POI two-stage collapse
- Reviews: harden native photo caption scrape (author·date shows reliably)
- Voice: offer SherpaTTS/Kokoro; reviews button relabel + declutter; POI photo LRU cache
- Reviews polish: bold search matches, sheet handle (tap/scroll-to-expand), fix full-screen viewer
- Reviews architecture pivot: native inline list + full-screen "Read all" Google panel
- Reviews header: center the rating row above the histogram; un-clip the search field
- Reviews panel: center histogram; chip-less businesses get search/sort; gesture smoke passed
- Reviews panel: un-stick engaged mode, kill the resize flicker, hold reveal for ALL carves
- Native review search/sort/chips + streamed, pre-warmed POI photos
- Reviews panel: no histogram dupe — fade requires native data, reveal waits for fade
- Reviews panel: class-agnostic watchdog (healthy panels were being killed)
- Reviews panel round 4: zero-flash summary fade; engaged panel takes the WHOLE sheet
- Reviews panel round 3: engaged clears all chrome; flicker/fling/flash fixes; system font
- Reviews panel: narrower native histogram, engaged-hide, "?" row, font unify, flash fix
- Reviews panel polish: momentum handoff, sheet takeover, native histogram, load UX, feed watchdog
- Scroll-sync v2: forward boundary drags to the sheet (handoff didn't survive real fingers)
- Reviews panel: scroll-sync (boundary handoff to the Vela sheet)
- Reviews: fix dropped photos (jsaction key) + author/date caption; flatten lane arrows
- Reviews panel: tap-to-view photos + full load gate; nav preview/steps/lanes
- Reviews panel polish: Sort works, hide Like/Share/⋮, keyboard drops, gold stars
- Reviews panel: fix disappearing-on-scroll (promo strip nuked the review list)
- Reviews panel: strip Google chrome + seamless Vela-matched background
- Live Google reviews panel: the visible-WebView idea, shipped (experimental)
- Reviews scrape 2.1x faster overall: taller viewport + trimmed settle
- Reviews scrape ~37% faster: 250 ms poll ticks (wall-clock windows preserved)
- Reviews: stream into the list while loading + reach the 50-cap on busy places
- Nav puck: Kalman speed fusion w/ accelerometer + review-scrape/UI fixes
- Reviews: live loading progress (counter + bar) — the scrape wait is visible now
- Reviews: fix still-3-on-businesses, add search + code-review-pass fixes
- Photo categories: populate fully (viewport) — fix ~1-per-category sparsity
- Docs: menu-link button deferred (fragile path; menu covered by photo Menu tab)
- Q&A: triaged — login-gated, not keyless; documented + scaffold removed
- Photo gallery: category tabs (Menu / Food & drink / Vibe / By owner)
- Multi-stop follow-ups: per-stop arrival cue, reroute-through-remaining, reorder
- Docs: menu-link probe finding (not in [75]; needs a focused capture)
- Reviews: load ~40 (not 3) via WebView viewport + jJc9Ad + review-id dedup
- Multi-stop directions (waypoints)
- Incidents: WebView path investigated — bottoms out at binary vt tiles
- Directions: show "+N min" delta on slower alternates
- Investigate traffic incidents (keyless), document finding + paths
- Nav: gate compound "then" preview on maneuver spacing + next-step shield
- Fix lanes showing miles early + business name leaking into address
- Hours: parse ALL ranges + surface holiday labels; the fallback is holiday-aware
- Search: rank the main store above its departments; hours status back to Google-primary
- Place: compute open/closed from hours (past-midnight-aware) + status/traffic diagnostics
- Routing: rank routes by per-alternate live ETA (fastest leads) + directions-protocol spec
- Routing: name-on-pick — provisional alternates, named only when you choose one
- Routing: bring back alternates — surface Google's own alternate routes
- Nav: reject reroute/faster candidates that don't reach the destination
- Routing: snap to Google's path only when it's actually faster; docs sweep
- Docs: refresh the front door — current features + a features→method→code map
- Nav: real Google-style per-lane diagram from OSRM lane data
- Nav: capture OSRM highway refs/exits, retry OSRM, tighten route-gradient lag
- Settings: merge 'Offline maps' + 'Offline routing' into one 'Offline' section
- Docs: world routing catalog complete (137 regions) + offline-routing in SPEC
- Offline routing: pick the SMALLEST covering region (border-overlap fix)
- Offline routing: add a name filter to the region picker
- CI: fix group-path region selection (empty ids → [] not [""])
- graphbuilder: bump import heap 6g→12g for country-sized regions on CI
- CI: serialize routing-graph runs so concurrent dispatches can't race the manifest
- Offline routing: world region catalog + race-safe parallel build pipeline
- Offline: combine map+routing downloads, location-aware routing picker, fix region bbox
- Routing: host offline-routing graphs on GitHub releases (offline routing goes live)
- Routing: multi-region offline graphs — download several, route in whichever covers the trip
- Routing (Phase 1b-ii): per-region graph download + offline routing END-TO-END (on-device verified)
- Routing (Phase 1b perf): Contraction Hierarchies make on-device routing fast (7.6s -> 188ms)
- Routing (Phase 1b-i): wire on-device engine into directions() as the offline fallback
- Routing (Phase 1a): GraphHopper RouteEngine in :core, R8-proven for release
- ghprobe: PROVE GraphHopper v11 routing + map-matching works on Android (on-device test PASSES)
- ROADMAP: on-device engine = GraphHopper (not Valhalla); spike + sizing + dep scan
- Routing: traffic-aware path (option 3) — snap OSRM to Google's route only on jam-divergence
- Routing: open router (OSRM) is now PRIMARY; Google demoted to traffic + fallback
- Directions: place turns by step-fraction, not polyline length (fixes mis-placed turns)
- Fix: recenter no-op, photo shimmer on addresses, parallel-Nominatim street-fill
- Polish: declutter ambient POIs, POI-tap over chooser, reverse-geocode bare turns, search "Hide" bar
- Nav: dashed walk/bike route line + mock-nav test proving turn road names
- Photos: full gallery via place-page scrape (replaces the degraded RPC) + loading shimmer
- Photos: dial back the gallery retry — degradation is per-session, not transient
- Photos: retry the gallery fetch — it's intermittent keyless, not gated
- Photos: de-dup the hero + fold in [204] preview; document the gated gallery
- Photos: fix blank hero strip — Google moved search photos [105]→[72]
- Reviews: open the full list + keep-best so heavy places (Taco Bell) load
- Reviews: fix author/text scraping + faster load; denser ambient POIs
- Reviews: restore via hidden WebView + finally get per-review photos
- Map: fan out ambient POIs across category terms (~2x coverage)
- Map: ambient POIs — zoom-tracking viewport for coverage + clear on zoom-out
- Map: ambient Google POIs as category dots, Google-first over OSM
- Map: ambient Google POIs on the bare browse map (v1)
- Map: enable two-finger tilt to 3D (explicit, max pitch 70°)
- Nav: fix generic turn arrows + line-gradient spam (on-device diagnosis)
- Nav: regression-test that voice speaks the road name ("onto Larch Way")
- Nav: offline auditor — diff cards/voice vs the plotted route from a saved trip
- Nav: real highway-shield shapes in the maneuver banner (v1, US + Canada)
- Nav: regression tests for today's bugs + TTS expands road abbreviations
- Nav: fix maneuvers 6 mi out of sync + TTS ignoring Imperial units
- Nav/browse: sensor compass for the heading cone when stopped (OsmAnd-style)
- Nav: speed-adaptive position low-pass + gradient cut tracks the per-frame arrow
- Nav: fix replay stuck "stationary" (sanePosition rejected every fix)
- Nav: per-frame follow-camera (fix the "stiff" throttled-ease feel)
- Nav: reject GPS position outliers + hold the dot at a standstill
- Nav: solid gradient cut, smooth puck-follow, zoom locks + keeps tracking
- Nav: camera glide, speed-spike reject, full POI declutter
- Nav: fix pinch-zoom snapping back + grey-split not under the arrow
- Nav tuning instrumentation + finding: stop-detection already handled
- Nav: predictive camera — aim ahead of the puck to see into turns
- Nav: pinch-zoom during navigation without losing the follow-camera
- Nav: continuous speed→zoom (stop the "zooms in and back" oscillation)
- Nav: forward-only map matching (OsmAnd-style), no more global re-snap
- Reviews: widen the auto-retry window (~1.2s -> ~3s)
- Reviews: honest "couldn't load · tap to retry" state (not "no reviews")
- Reviews: retry the intermittent empty fetch (count-vs-zero mismatch)
Full changelog: v0.4.736...v0.4.739