What's Changed
π Features
- Support multiple bikes per account β each Cowboy account now maps to its own config entry. Run the "Add Integration" flow once per account (Cowboy allows one bike per account). Closes #120.
- Firmware update entity β a dedicated Update entity with installed vs. latest version and release notes. The old
binary_sensor.update_availableis now disabled by default (still available for existing automations). - Diagnostics with PII redaction β download a redacted JSON dump from the integration page, safe to paste into bug reports. Closes #99.
- Options flow: polling interval β configure bike-coordinator polling between 1 and 60 minutes.
- Trips data β new sensors: Last trip distance / ended / duration / COβ / calories / title, plus Distance today.
- More bike sensors β Last seen, Last ride mode (enum with per-state icons), Last crash, Warranty ends, Auto-lock, Speed limit.
π Fixes
- Firmware update logic no longer renders
unknownwhen the API returns"firmware": null. - Entry unload now actually invalidates the Cowboy session (was silently failing).
- Device-tracker entities no longer collide when multiple bikes share a title.
- Token renewal no longer relies on
uidhappening to equal the email. - Device-tracker unique ID is entry-scoped, not title-based.
π§° Maintenance
- Dropped dead
get_bike_status(endpoint 404s). PARALLEL_UPDATES = 1on polling platforms.- CI: removed the broken
claude-code-reviewworkflow that was blocking renovate auto-merges. - README note on using multiple Cowboy accounts for multi-bike households.
β οΈ Migration
Existing entries are migrated automatically from v1 to v2 on first load β no action needed. Device registry and entity unique IDs are preserved across the upgrade. If you were relying on binary_sensor.*_update_available in an automation, consider switching to the new Update entity.