Releases: CJFData/light-transit
Release list
Pico Transit v0.2.6-pre
Debug-signed APK attached for sideload testing (see README's "Getting it onto a real Light Phone III" section).
Highlights since v0.2.3
- Select Run — for CTA 'L' trains and MBTA Green Line, whose live vehicles show up as a "Closest match" rather than a certain trip match. A stop-by-stop view lets a rider tap the live vehicle they're on directly, plus a quick Next/Previous stepper on Trip Detail.
- Fixed a "running 1400+ minutes early" bug on trips that cross midnight — a real gap in how several shared schedule queries handled GTFS's "transit day" convention.
- Fixed implausible live ETAs from ordinal fuzzy-run matching (an inherently approximate technique) — a wildly-off match now suppresses its status/row instead of displaying a nonsensical time.
- Direction labels ("Northbound"/"Southbound", etc.) were silently dropped almost everywhere except the direction picker — now shown correctly on Upcoming Arrivals, Trip Detail, and Connections.
- Stations list opens straight to arrivals — a plain tap now jumps to live upcoming arrivals instead of the platform map (on by default, Settings toggle).
- Locked to portrait — the app no longer rotates to landscape.
- CARTO map tiles now route through pico-transit-proxy with a real API key, server-side only.
Full detail in RELEASE_NOTES.md.
Pico Transit v0.2.3
Pre-release, built for real-world testing -- not a final/stable cut.
What's new
- STM Montréal crash fixes: confirmed OOM crashes on real hardware, both during download (Ktor buffered the whole response into memory before writing to disk -- now streams straight to disk) and during parsing (one SQLite transaction held open for the whole ~5.1M-row feed -- now commits in 50,000-row batches per table).
- "Only download over Wi-Fi" setting (on by default) -- schedule downloads and update checks wait for Wi-Fi, so a refresh never surprises you with cellular data usage. Falls back to your last-downloaded schedule in the meantime, and resumes automatically the moment Wi-Fi reconnects.
- "Clear schedule cache" Settings action -- frees up space by deleting every agency's downloaded schedule, then re-downloads your current one right away. Useful if a schedule ever ends up in a bad state.
- 12 new agencies, static schedules only for now: BART, SFMTA Muni, AC Transit, Caltrain, VTA, LA Metro (bus+rail merged into one entry), CTA, Metra, Pace, NYC Subway, LIRR, and Metro-North. LIRR and Metro-North also have live vehicle tracking wired in; the other 10 are labeled "(No Live)" in the agency picker so it's clear upfront they're schedule-only for now -- most either need an API key we haven't obtained yet, or don't publish a compatible live feed at all.
Known limitations in this build
- The 10 "(No Live)" agencies are static-schedule-only -- no live vehicle tracking or live ETAs yet.
- CTA's feed is large (~6M rows, similar scale to STM's) -- confirmed it ingests successfully on a test device, but if you hit anything slow or crash-y on first schedule download, that's exactly the kind of report we want.
- A comment-audit pass over this release's changes is in progress and revisions will land in a near-term follow-up commit -- doesn't affect app behavior, just internal code documentation.
Testing this build
This APK is signed with the Light SDK's own dev-testing key (same one every Light SDK tool uses locally), not an official Light-signed release. Install via Obtainium (or sideload directly) and try switching between agencies, especially the new ones -- feedback on crashes, slow ingests, or anything that looks wrong is very welcome.
Pico Transit v0.2.2
- Added STM Montréal as a supported agency, routed through the redirect proxy, timezone matching its own
agency.txtexactly (America/Montreal) - Departures screen: tap the header to view tomorrow's schedule instead of today's, and back again
- Renamed "Explore Schedules" to "Schedules" and "Explore" to "Explore/Leave now" in the docs, matching the app's own Schedule/Station/Explore naming
- Fixed several README spots still describing the pre-v0.2.0 home screen (an inline agency picker that no longer exists)
- Added a Gestures section documenting tap-and-hold-to-arrivals, double-tap zoom, and Trip Detail's boarded/not-boarded tap behavior
- Added route-list screenshots for all five supported agencies
Pico Transit v0.2.1
Removes two app-side workarounds now that every agency's realtime feed URL (and LTC's static feed) resolves through a redirect to HTTPS:
- The
:netconfigcleartext exception for RIPTA/LTC's HTTP-only origins is gone - The
LtcTrustAnchor/GtfsTrustAnchors.ktbundled-root-cert workaround for LTC's untrusted cert chain is gone GtfsRealtimeClient.fetchFeedsimplified to a single request now that redirects resolve upstream instead of in app code
Also:
- Fixed the home screen's "ETA h:mm" text rendering in the device's timezone instead of the boarded trip's agency timezone
- Dropped "-testing" from LTC's display name
- "Merge feed stations" now defaults on
- Merged upstream
light-sdk/main(NFC reader API, detached audio playback, Light Keyboard v0.0.18, zxing/sol4k allow-list)
Pico Transit v0.2.0
Adds a dedicated onboarding step and reworks the home screen:
- First launch (or switching agencies from Settings) now opens a welcome screen to pick your transit agency, instead of the home screen doubling as an always-visible picker
- Once an agency's picked, the home screen shows a ticking clock in its own timezone, the agency's name, and a loading indicator until the schedule's ready
- The clock stays visible while a trip is boarded too, alongside the live ETA and progress bar
- Settings' old default-agency toggle list is replaced with a single row that reopens the same picker to switch agencies
See RELEASE_NOTES.md for the full picture of everything unique to Pico Transit.
v0.1.2 alpha
Full Changelog: v0.1.0...v0.1.2