Skip to content

v2026.6.8 — Silver Quality Scale (partial)

Choose a tag to compare

@NerdySoftPaw NerdySoftPaw released this 06 Jun 07:30
a875890

Silver Quality Scale Progress 🥈

This release implements 9 of the 10 Silver IQS rules. Only test-coverage (>95%) remains.

New in this release

Reauthentication Flow

When an API key expires or is rotated, HA now automatically shows a "Re-authenticate" notification in the integrations panel. The re-auth form is pre-filled with the current key and updates both config_entry.data and the Application Credentials store on submit.

Supported providers: Trafiklab, RMV, NTA, VBN (OTP + TRIAS), openpublictransport.net, OTP2 Custom

Automatic detection: the coordinator now raises ConfigEntryAuthFailed when a provider returns HTTP 401 or 403 — no manual intervention needed to discover an expired key. Requires python-openpublictransport==0.1.4.

Action Exceptions

Service actions now raise proper HA exceptions instead of silently failing:

  • refresh_departures — raises if entity not found
  • plan_trip — raises if trip planning fails
  • check_delays — raises if entity not found
  • announce_departure — raises on invalid entity or out-of-range index

Log When Unavailable

Coordinator logs once at WARNING when connectivity is lost and once at INFO when it recovers — no repeated log spam on consecutive failures.

Parallel Updates

PARALLEL_UPDATES = 0 on all coordinator-based platform files (correct value for DataUpdateCoordinator — the coordinator serializes updates).


PyPI Library Migration

Provider API code moved to the standalone python-openpublictransport PyPI library. No functional changes — all 28 providers work exactly as before.

Changes in v2026.6.7

  • ~3,800 lines of bundled provider code removedproviders/ folder and data_models.py deleted from integration
  • Integration now imports from python-openpublictransport
  • Cleaner integration codebase; provider updates can ship independently via PyPI

Bronze Quality Scale ✅

  • Configurable entirely through the UI
  • All entities have stable unique IDs, has_entity_name = True
  • Runtime data via ConfigEntry.runtime_data, services in async_setup
  • Connection tested during config flow and on setup
  • Branding assets served from brand/
  • Full config flow test coverage (96 tests)
  • Documentation at docs.openpublictransport.net