Thank you to everyone who has been sending feedback, PRs, and issues, especially the R2 owners. You've found real gaps for R2 vehicles, and also surfaced some problems in how I mapped closures and handle ingestion in general. This release is largely your work!
A special thanks to @leetosc, who ran Riviamigo against a real R2 and sent back #70 (decoding R2 closure frames, with an observed position map from actuating each closure) and #71 (detecting trips from sparse power and odometer data, and fixing remaining range that showed about 62% of the real value). Thank you also to @murphysprings for #65, which kicked off the R2 telemetry work and led to the ingestion fixes, and for the fresh-install report in #61, fixed in 2026.09.1. Please keep them coming.
R2 closures and status
- R2 doors, frunk, liftgate, windows, and locks now decode from Parallax frames. Unmapped or unexpected entries are skipped and noted instead of dropping the whole frame.
- The charge port now reads from closure position 10, and defrost status 4 is treated as off, both matched against R1S captures.
- Closures show live opening and closing motion.
- R1T tailgate and side-bin mapping follows the closure frame layout. Side bins and the tonneau are R1T features and are shown only for the R1T. R1T owners: the tailgate and left/right side-bin order are not yet confirmed against an R1T capture, so please tell us if they look swapped.
Trips and charging
- Trips on sparse R2 telemetry are detected from change-only power and odometer motion, start at the shift time and parked location, and use gear subscriptions for anchored starts.
- Remaining range and efficiency are model-aware, so R2 range no longer reads as kilometres.
- Parallax power frames no longer end an active charge.
- Partial frames (door, window, or tire updates) no longer split the state timeline into short Unknown periods. Migration
0027repairs the existing history once on upgrade.
Diagnostics and ingestion
- Ingestion diagnostics are replaced with downloadable captures, which also record GraphQL polls.
- Parallax resubscribes immediately when the connection TTL expires.
- Vehicle ingestion signals are unified.
Fixes and maintenance
- Target tire pressure defaults to 40 psi.
- CI publishes the
devimage alias from the manual candidate workflow. - Expanded R2 ingestion and extended telemetry documentation and runbooks.
Upgrading applies migrations 0025, 0026, and 0027 on startup; restore from backup to roll back.
Full Changelog: 2026.09.4...2026.10.0