Update Logs
What’s new
A running log of changes across every Rabbit Loop app and service.
Give products readable URLs instead of random IDs
Fix duplicate SEO metadata across shop, privacy, and terms pages
Mention Transperth by name on the RL Transit page
Update Privacy Policy to cover RL Transit's route tracking location use
RL Transit beta signups are now closed — the app is moving to a full App Store launch
Add live route tracking — see your position on the map and get notified as you near your stop, even with your phone locked
Show your passkeys in the data export — they were missing from both the page and the download
Clarify that removing a passkey doesn't delete it from your device's password manager
Make passkey removal confirm the passkey actually existed before saying it was removed
Fix a bug where removing a passkey could silently do nothing
Revert "Let people reach the sign-in page by going to the site directly, not just via a link"
Let people reach the sign-in page by going to the site directly, not just via a link
Fix a sign-in bug that could bounce some users back and forth between login and the site
Show our Western Australia location in the footer
Let RL Transit's beta signup page show up in search
Fix session cookie diverging between rabbit-loop.com and auth.rabbit-loop.com
Fix beta signup being permanently stuck on the location check
Fix Ellenbrook and Midland Line missing from Perth Stn
Fix Back from journey detail losing the routes-found list
Fix journey detail card's capped scroll height
Move journey detail screen back inside the real bottom sheet
Fix Live Activity progress bar showing full instead of filling up
Fix crash from dragging the journey detail header
Let the journey detail header itself be dragged to move the sheet
Sync committed build number with the last shipped TestFlight build
Fix journey detail card hiding the sheet's drag handle and header padding
Fix Live Activity progress bar freezing on the Lock Screen
Fix crash opening journey detail screen
Fix crash when opening the itinerary detail screen
Stop a native module failure from crashing the app on startup
Sync committed iOS build number with the last local build
Fix itinerary detail screen actually filling the sheet's space
Fix itinerary detail screen still cutting off on longer trips
Try bringing the moving icon back via a custom ProgressViewStyle
Fix the Live Activity progress bar not actually moving
Fix itinerary detail screen scroll cutoff without making it a popup
Fix disruption alert popup not opening on journey results
Fix itinerary detail screen cutting off the last stop
Fix journey results not closing when you tap a result, or reopening on Back
Fix journey results list not scrolling to the last routes
Make the startup connectivity checks snappier
Add a real offline mode instead of guessing when connectivity is bad
Stop the app hanging on slow or missing connections at startup
Stop drawing the wrong walking route for platform transfers on the map
Extend transfer-time fix to every interchange, not just train stations
Preserve Transperth's real transfer data, only fill genuine gaps
Fix confusing platform-transfer directions in journey planner
Patch dependency security vulnerabilities
Make the progress bar icon glide smoothly instead of stepping once a minute
Give the progress bar a moving icon marker and align the departs label inline
Show the real transit mode (bus/train/ferry) in the Lock Screen and Dynamic Island
Add a live progress bar to the Lock Screen Live Activity, and reposition the departs label
Move the departs label above the countdown instead of below
Redesign the Lock Screen Live Activity layout to match real-world patterns
Fix the Lock Screen countdown being squeezed out entirely on longer routes
Surface a silent Live Activity start failure in the dev logs
Fix Dynamic Island not showing a live countdown
Mention trains alongside buses on the Transit page
Fix the visible headline to use generator wording and add a real H1
Call Icon Builder a generator instead of a creator in page metadata
Update the Transit page hero copy to match how people search for it
Keep sign-in and account pages out of search results
Fix a stored XSS gap in product review schema data
Add an automatic Google Shopping product feed
Fix incorrect FAQ answer about accounts
Add an SEO maintenance guide
Add an SEO maintenance guide
Add an About page and FAQ sections to Shop and Services
SEO and AI-search optimization pass
Show the selected variant's photo in the main product gallery
Let customers pick a product variant before buying
Add a site-wide announcement banner
Bundle beta request notifications instead of one email each
Fix Bus/Train toggle layout, same wrapper bug
Fix tab row layout broken by the press-animation wrapper
Give the main menu some personality
Fix guest favoriting silently failing
Surface errors when favoriting fails
Add favoriting for timetables
Fix journey favorites row layout and refresh
Add favorite journeys, organized by tag
Combine Stops and Timetables into a Home tab
Fix quiet apps disappearing from Update Logs
Give favorites their own tab
Add train lines to the Timetables tab
Bump build number for the revert build
Fix floating map buttons sitting in the wrong spot
Bump build number
Add a proper Favorites tab
Fix build issue silently breaking the lock screen widget update
Fix "future departure" alerts sometimes picking the wrong service
Revert "Fix bottom-of-list cutoff across the app using real safe-area insets"
Fix bottom-of-list cutoff across the app using real safe-area insets
Extend the stopping-stations screen and its "You're here" marker to buses
Fix stopping-stations list showing the wrong stops for short-working peak services
Add boarding/alighting stops and trip totals to journey planner cards
Speed up "Plan journey from my location"
Add a "Plan journey from my location" button to the journey planner
Show "You're here" on the trip stop list when you're near one of its stops
Hide the disruptions badge in Regional mode, clarify it's metro-only
Warn when Precise Location is off
Fix nearest-stop card showing the wrong things
Make the find-me button track your location continuously
Add a find-me button to center the map on your location
Fix remaining Edge Runtime crypto buffer bug
Fix Edge Runtime crypto bug breaking token verification
Add deep debug logging inside verifyAdmission
Add debug logging for maintenance-bypass cookie check
Add hidden admin bypass for maintenance mode
Add hidden admin bypass for maintenance mode
Add hidden admin bypass for maintenance mode
Add debug logging for the graph staleness check
Actually search for the fastest arrive-by option instead of trusting OTP alone
Request more candidate journeys for arrive-by searches
Fix maxInterlineDistance config location for OTP 2.5
Fix route-line toggle when opening a departure board from a journey leg
Show the fastest journey option first
Stop OTP merging separate train lines into one impossible leg
Stop OTP crash-looping when a graph rebuild fails
Make GTFS publish failures visible instead of silent
Fix journey planner routing far-out-of-the-way trips
Fix journey planner suggestions not showing while typing
Fix the actual cause of the app crashing on launch: expo-font version mismatch
Remove the real-alarm feature to fix the app crashing on launch
Fix app crashing on launch on devices below iOS 26
Fix journey leg departures showing no services
Make journey legs tappable, preserve search state, and add an alert mode toggle
Clearer journey planner with icons, and tappable disruption alerts everywhere
Smarter departure alerts, plus an optional real alarm
Move Explore Services button next to the Current Projects heading
Add a Current Projects heading above the RL Transit section
Make the RL Transit homepage section more prominent
Fix SEO indexing for the RL Transit beta signup page
Add RL Transit info page
Ask for location permission explicitly before triggering browser prompt
Add RL Transit pre-beta request flow with location check and declaration
Disable native Apple Maps place popup when tapping the map
New splash screen with WA map and train design
Tap disruption banners to see full details and replacement service info
Fix search mode stuck, ghost stop, wrong error icon, and silent DB rollback
Fix crash in journey planner — activeQuery used before declaration
Never delete the active timetable DB before the new one is in place
Keep search active after no results — tap ↺ to retry
Move GTFS publisher to Coolify
Update server lock file to fix Coolify build
Move disruption scraper to Coolify
Move offline warning to top bar, disable delays in settings when offline
Collapse date/time pickers after planning a journey
Add date picker to journey planner
Refresh disruptions every 2 minutes while app is open
Only show disruptions active today in timetables screen
Filter disruption banner by viewed date, fetch upcoming disruptions too
Show disruption banner even when no departures are running
Fix pruneStale to also remove expired bus disruptions
Fetch disruption descriptions from Transperth detail pages (new only)
Move delays pill to map overlay with dismiss, add View Service Disruptions to Settings
Replace disruption banner with compact pill linking to full delays screen
Show offline warning when live delay data can't be fetched
Show disruption warnings contextually across departure board, timetables, and journey planner
Include bus disruptions alongside train disruptions
Only store disruptions that affect named train lines, not bus/infrastructure
Fix disruption scraper: deduplicate entries that appear multiple times on page
Fix disruption scraper: use correct CSS selectors and handle in dates
Add live Transperth disruption alerts
Dismiss keyboard when Plan journey is tapped
Show time picker in 12-hour format
Add Leave at / Arrive by time selector to journey planner
Fix place search: bound results to Perth, show more address context to avoid wrong picks
Fix route stops: safer SQL query and wire into timetables route selection
Show only route stops on map when a route is highlighted, hiding all others
Hide all stop markers while viewing a journey route
Clear journey detail when tapping the Rabbit Loop button
Switch place search to Nominatim for accurate business name lookup
Add place search to journey planner
Show walking segments on journey map in grey
Fix journey detail back button and preserve planner state
Draw only the travelled segment of each route on the map
Open planned journeys in a dedicated detail screen with route on map
Move OTP base URL to its own config file
Fix journey planner — use inline URL constant
Debug: show sent query and received URL in error
Clean up transit API proxy — remove debug endpoints
Fix journey planner — stop pre-encoding URL params
Debug: show exact URL and status in journey planner error
Fix journey planner not connecting after adding AbortController
Test URL-encoded params in health/plan endpoint
Add plan test endpoint to transit API health check
Add health endpoint to transit API proxy for diagnostics
Improve journey planner error messages and extend timeout to 30s
Simplify journey planner timeout handling
Polish journey planner — fix times, clear button, and reliability
Add journey planner tab to plan door-to-door trips across Perth
Switch proxy to Supabase token validation (supports ECC keys)
Add JWT auth proxy in front of OTP
Switch OSM source to openstreetmap.fr, add size validation
Add download retry with backoff to prevent restart hammering GitHub
Save GTFS zip to release so OTP can download it without hitting Transperth directly
Add OTP server — downloads OSM + GTFS, builds graph, serves routing API
Add weekly OSM snapshot workflow — publishes WA street map to transit-data
Home button refreshes nearest stop card without auto-navigating
Home button now detects your location and opens your nearest stop
Remove journey planner — starting fresh
Make OTP fully self-managing — no Coolify cron needed
Detect and self-heal corrupt OSM download
Auto-refresh GTFS data when timetables change
Add Perth OSM street map so journey planner can find routes
Use full WA OSM for regional service coverage
Fix five bugs found in journey planner code review
Add journey planner powered by OpenTripPlanner
Fix OTP startup flags for v2.5.0
Fix OTP startup command
Add OTP journey planner server
Remove tsconfig.tsbuildinfo from repo
Add new emojis to Faces group
Update app icon to new RL Transit brand icon
Add grouping, multi-select, raw image upload, undo/redo/duplicate
Add undo, redo, and duplicate to icon builder
Ask for location permission on first open and re-check on each return
Use type-aware distance thresholds for nearest stop detection
Show nearest stop based on location when browsing stops tab
Hide journey planner — entry point and navigation removed
Fix transfer search window for long-distance journeys
Increase intermediate stop limit so long-distance transfers are found
Fix journey planner plan button hidden behind favourites list
Add time selector, favourites, and smart back to journey planner
Fix journey planner lag, first-search failure, and sheet disappearing
Fix journey planner missing bus-to-station routes
Redesign journey planner to clearly show service changes
Fix journey planner routing — station stop_ids and radius expansion
Fix Plan button, expand search radius, improve journey planner UX
Fix duplicate location permission string in app.json
Update RL Transit privacy policy for location and journey planning
Add journey planner with place-to-place routing
Fix Swift closure return error in DynamicIsland
Live Activity: line colour + more padding, fix departure board scroll
Rename Lines tab to Timetables
Add Lines tab for bus/ferry route timetable lookup
Redesign Live Activity for modern transit look
Strip platform number from Live Activity station label
Tap logo to return to home state
Trip detail: strip platform numbers from stop names + fix scroll cutoff
Animate Search Here and Find Closest Stop buttons with the sheet
Allow rabbitlooptransit:// scheme for connected app registration
Fix Search Here and Find Closest Stop hidden behind bottom sheet
Fix Settings scroll cut off — increase bottom padding to 80pt
Fix Live Activity layout clipping on edges
Show platform numbers on direction picker rows
Tap a departure to see all stops on that service
Add Custom option to alert time picker
Replace alert countdown picker with preset time chips
Hide Next to Perth button at CBD stations
Add Next to Perth shortcut button on station line picker
Filter special services from station lines + add OTA version indicator
Fix alert countdown picker timezone bug
Compact Dynamic Island pill: show departure time not full countdown
Fix Live Activity — clean station name and compact lock screen layout
Fix 7 bugs from code review
Set runtimeVersion policy to appVersion for OTA compatibility
Two-step direction picker matching Transperth flow
Simplify direction picker to one card per line, no platform info
Fix direction picker grouping and stop sequence selection
Add newcomer direction picker and OTA updates
Simplify direction picker to platform-per-destination model
Fix Swift range type in Live Activity timer — use ClosedRange (...) not Range (..<)
Fix bugs found in code review
Add cancel button for notification and Live Activity
Only filter departure board by line when platforms go to different destinations
Add Live Activities — departure countdown on Dynamic Island and Lock Screen
Remove Perth Stadium from directions, stagger map loading, cleaner alert text
Fix mixed-line departure boards, make boards live, add departure alerts
Re-link EAS project under new account
Publish GTFS releases to a separate public data repo
Publish GTFS releases to a separate public data repo
Move GTFS data service from Render to GitHub Releases
Show suburb on place search results, add Find closest stop button
Restore location permission string rejected by App Store review
Remove unused location permission string
Update Privacy Policy and Terms for accuracy
Lock out the app if maintenance mode turns on while you're using it
Add destination search — find places like "Crown Perth" on the map
Merge duplicate directions, show platforms, add ferry, fix route filter and marker reset
Search here uses the actual visible map area instead of a fixed radius
Fix terminus stations showing their own name as a direction option
Replace auto-loading bus stops with a Search Here button
Fix duplicate station markers on the Regional map
Fix bogus direction options showing a station's own name
Revert bus stops to markers, add schedule time picker to departure board
Render bus stops as circles instead of markers for smoother panning
Fix regional map colors/icons and revert laggier bus-stop hiding
Use macos-26 runner for new-enough Swift tools version
Pin EAS local build workdir and skip cleanup so failure logs survive
Dump real Xcode build log on CI failure for debugging
Use macos-15 runner for new-enough default Xcode version
Build iOS on GitHub's free macOS runner instead of EAS cloud credits
Remove Stadium Special event train from the data entirely
Fix route line closing on pinch-zoom, bus stops vanish while panning, regional overview is trains-only
Fix regional crash and bus stop lag while panning
Fix bus stop icon, make region queries resilient to stale local schema
Add Metro/Regional map sections
Stop the map from re-diffing markers when nothing actually changed
Fix back navigation and stop grouping bus stands with train platforms
Fix map lag when zoomed in and panning around
Show route chip even when a stop has only one route
Remove accidentally committed Supabase CLI cache file
Add Sign In / Create Account row to Settings for guest mode
Fix duplicate station entries in search/map results
Group platforms/stands into stations with a direction picker
Sync timetable updates in the background instead of blocking the app
Make user-facing error and status messages customer-friendly
Modernize Settings and Login screens, disable broken locate button
Fix map freeze when zoomed in: cap bus stop markers to a nearby radius
Use official Transperth line colors throughout the UI, add live-feeling countdown
Fix favorites leaking between accounts on shared devices
Update privacy policy: RL Transit favorites now sync to account when signed in
Add Update Logs, Privacy Policy, and Terms of Service links to Settings
Fix duplicate section numbering in privacy policy
Fix the real cause of 'no such table: departures': pass db filename + directory separately to openDatabaseSync
Fix GTFS sync: clear stale temp-file WAL/SHM sidecars before reuse
Fix unsafe GTFS swap: verify before activating, clear stale WAL sidecars
Fix sync crash: Crypto.digest needs a Uint8Array, not a raw ArrayBuffer
Fix placeholder Render URL — app was pointing at a URL that never existed
Add NSLocationWhenInUseUsageDescription for expo-maps
Save App Store Connect app ID so TestFlight submissions don't need interactive mode
Redesign home screen as an Apple Maps-style network view
Add train line/station data to GTFS snapshot for the upcoming map screen
Fix server OOM crash: stream zip decompression, defer indexing
Replace Supabase Storage GTFS pipeline with a Render data service
Harden GTFS part assembly and surface sync status in Settings
Add presence heartbeat so admin dashboard can show active users
Add shared presence heartbeat endpoint for client-only apps
Split GTFS snapshot into parts to fit Supabase's 50MB upload limit
Add timetable sync loading state, normalize GTFS schema to cut snapshot size
Fix GTFS pipeline CI by bumping Node to 22
Add RL Transit to services list, legal pages, and update logs
Launch RL Transit — Perth public transport stop search, favourites, and departure times.
Update legal pages for the new Strap Monitor home screen widget
Make the Update Logs page nicer to browse, with filtering by app
Note that new repos need the changelog workflow + secrets too
Note that new repos need the changelog workflow + secrets too
Note that new repos need the changelog workflow + secrets too
Add an Update Logs link to the site footer
Test the new Update Logs pipeline
Test the new Update Logs pipeline
Test the new Update Logs pipeline