No changes yet.
- Migrates recipient discovery toward modern Home Assistant
notify.*entities while retaining legacynotify.<service>actions as a compatibility fallback. - Sends modern notification entities through the canonical
notify.send_messageaction, allowing mobile-app and Telegram notify entities to coexist in one explicit recipient fan-out. - Keeps recipient consent explicit: configuring one or more recipients still creates package-owned recipient switches that default off until the owner enables them.
- Allows the package Test notification to bypass only the global notification master so routing can be accepted before production notifications are enabled; selected recipient switches remain mandatory.
- Reuses one shared recipient-discovery contract in options flow and runtime delivery instead of maintaining service-only discovery in two places.
- Adds regression coverage for entity-first delivery, legacy fallback and pre-cutover test-notification behavior.
- Retains privacy-sanitized per-probe error class, HTTP status when exposed by the upstream exception, and short error text in Vehicle API Audit alert evidence so failed
/alertsprobes remain diagnosable. - Package version
0.6.0-beta.21; frontend resource version remains beta.20 because this candidate changes backend/config-flow behavior only.
- Hardens vehicle reachability around the newest trustworthy Stellantis
createdAt/updatedAttimestamp already present in the loaded upstream coordinator payload, so fresh telemetry can be proven even when a value such as ambient temperature remains numerically unchanged. - Explicitly excludes command/action lifecycle timestamps from heartbeat recovery;
accepted/forwardedremote-command states remain insufficient proof that the vehicle returned fresh data. - Keeps mapped Home Assistant vehicle entities as a startup/reload fallback and chooses the freshest available mapped-data timestamp rather than trusting one temperature entity.
- Replaces the fixed hourly wake-up cadence with a conservative package-owned periodic interval setting: default 60 minutes, configurable from 30 to 360 minutes. Charging wake-up and the one-probe-per-outage path remain separate explicit opt-ins.
- Adds portable Home-zone selection from existing Home Assistant
zone.*entities, defaulting tozone.home, without household-specific helpers. - Expands the Wake-up view with last wake-up, wake-ups today, selected Home zones, bounded 24-hour wake-up activity, last proven vehicle heartbeat, outage state and last availability probe.
- Sends a truthful charge-start report even when no defensible ETA exists, while omitting the finish time instead of inventing one or dropping the whole notification.
- Adds restart-safe logical de-duplication for completed trip/charge notifications.
- Preserves the first observed charging-OFF boundary through the debounce window and uses that boundary for charge duration/power/reporting instead of extending the charge by the debounce delay.
- Adds a Restore notification defaults action that resets only package-owned Number/Time settings and never enables notification topics, recipients or wake-up switches.
- Extends the read-only Vehicle API Audit with structural Stellantis Alerts endpoint evidence. This does not introduce background alert polling, a second authentication/session stack or a Monitor callback.
- Adds/updates focused regression coverage and the complete 18-language backend/frontend control text for the new notification/wake-up behavior.
- Bumps package and consolidated frontend resource to
0.6.0-beta.20; only changed Strategy/i18n/audit resources receive beta.20 cache keys while unchanged internal cards retain their previous content keys. - Runtime acceptance should exercise the normal notification/wake-up contract without adding vehicle-specific special cases; unavailable vehicles are handled by the same generic stale/outage logic.
- Fixes a live runtime defect where one transient historical
/tripsfailure such asRequest timeoutchanged server history tosync_failedand permanently stopped the only bounded reacquisition worker for the rest of that Home Assistant uptime. - Classifies retryable read-only transport failures conservatively: timeouts, connection lifecycle failures, HTTP 408/425/429/5xx and the known upstream shutdown handoff may retry; auth/permission and malformed-data failures remain fail-closed.
- Persists the retryability decision alongside server-history state so the existing single bounded-backoff worker can continue after retryable
sync_failedstates without creating duplicate workers. - Preserves exact VIN binding, local/archive fallback, upstream ownership of authentication/session state and clean unload cancellation.
- Adds transport contract tests for retryable vs permanent failures and the retry-state decision.
- Bumps only the backend package version to
0.6.0-beta.19; frontend resources remain on their unchanged beta.18 content keys. - Runtime acceptance must prove
Request timeout → automatic retry → sync_succeededwithout a manual sync button press.
- Adds a package-owned Canonical mileage distance sensor with Home Assistant
total_increasingsemantics. - Advances the canonical counter from valid upstream odometer observations while ignoring numeric rollbacks and unavailable/unknown samples; implausibly large live forward jumps are deferred to server-history reconciliation.
- Reconciles the counter against the highest trustworthy canonical server-trip odometer anchor, so missed upstream updates and proven odometer gaps can move the counter forward without inventing trip timestamps, energy or consumption.
- Keeps the raw Stellantis mileage entity untouched for current-state diagnostics/provenance.
- Changes the Statistics view to use Canonical mileage for mileage history and monthly driven-distance
changebars; the raw upstream odometer is no longer used for driven-distance aggregation. - Fixes the existing label/config mismatch where “Distance driven per month” was actually rendered with
period: "week". - Adds regression coverage for rollback, unavailable values, positive odometer gaps, invalid server rows and the dashboard source contract.
- Adds the Canonical mileage entity name across the full 18-language Home Assistant translation matrix.
- Bumps the package/frontend resource to
0.6.0-beta.18. Existing malformed Recorder/LTS history is intentionally not rewritten by the integration and requires the one-time supported repair workflow tracked in issue #71. - Remains a prerelease on
develop; exact-SHA Home Assistant runtime/LTS acceptance is required before promotion.
All notable user-facing changes to SV Dashboard are recorded here.
- Adds an opt-in Vehicle API audit to the generated System view for onboarding and comparing real Stellantis vehicles without asking testers for ad-hoc raw logs.
- Reuses the already-loaded Stellantis Vehicles authenticated transport in read-only mode; the audit creates no second OAuth/session stack and sends no wake-up, MQTT or vehicle-control command.
- Probes current vehicle/account data, status, maintenance, vehicle extensions such as
onboardCapabilities, bounded Trips pagination/detail behavior and advertised read-only HAL resources such as telemetry/alerts/collisions/alarms where accessible. - Generates a flattened current-status path inventory with observed types/counts/enums/freshness plus a comparison against fields already mapped by the loaded upstream integration.
- Sanitizes VIN/vehicle/account identifiers, tokens/secrets, exact GPS coordinates, HAL/picture URLs and known identifiers embedded in strings; samples are bounded before export.
- Adds browser-local Download JSON and Copy Markdown actions. No public
/config/wwwreport or persistent audit file is created. - Keeps the audit card internal to the generated dashboard so the normal Add Card picker still exposes only the two intended public Hero cards.
- Adds the new audit UI to the full 18-language frontend catalog and documents the API/reference/evidence contract.
- Bumps the package and consolidated frontend resource to
0.6.0-beta.17. - Remains a prerelease on
develop; real Home Assistant runtime/API/privacy acceptance is required before promotion.
- Fixes the real Home Assistant Add Card picker regression found during beta.15 owner browser QA: internal Trip, Charge, Charge Curve, GPS and Fuel History components remain registered as custom elements for the generated dashboard but no longer publish
window.customCardspicker metadata. - Keeps the beta.15 top-level picker cleanup as defense-in-depth for an in-session upgrade from an older frontend that already registered internal cards.
- Shortens the two Dual-Energy Hero range captions to the shared localized Range label because the adjacent Battery and Fuel headings already provide the energy-domain context; this also reduces long-label pressure in languages such as French.
- Adds regression coverage that internal component modules must never publish picker metadata themselves.
- Bumps package and consolidated frontend resource to
0.6.0-beta.16and cache-busts only the frontend modules changed by this minifix. - Remains a prerelease on
develop;mainstays unchanged until exact-candidate owner browser acceptance is complete.
- Unifies the Dual-Energy Hero into one stacked Battery/Fuel layout at all card widths and keeps both electric and fuel ranges permanently visible.
- Extends the Hero climate control into a guarded, upstream-confirmed START/STOP state machine: START cannot be immediately toggled back, active climate enables STOP only after confirmation, and STOP uses a distinct pending state until the vehicle reports inactive.
- Removes redundant
Charging · Plugged inwording, keeps live EV efficiency estimates out of the Hero, and only shows live fuel consumption when a fresh upstreamfuel_consumption_instantvalue exists. - Uses the temperature badge as a recent-vehicle-data freshness indicator rather than claiming a persistent Stellantis connection state.
- Applies SOH to the configured nominal traction-battery fallback when no trustworthy upstream capacity exists and adds an optional per-vehicle nominal fuel-tank fallback for fuel-capable vehicles.
- Reworks Hybrid Trip History to the compact six-column primary table, removes redundant motorization details, groups start/end mileage, SOC, electric range, fuel level and fuel range, and keeps absolute kWh/l in expanded details without repeating normalized consumption.
- Adds restart-safe canonical fuel/refuel history with semantic deduplication, stable source timestamps, odometer-at-refuel, direct-or-estimated refill liters with provenance, and a since-last-refuel summary for distance, driving time, average speed and guarded average fuel consumption.
- Hardens charging reconstruction against transient out-of-sequence SOC drops such as
67 → 0 → 68so rejected samples cannot poison canonical session SOC/energy. - Keeps only the compact and Dual-Energy Hero cards visible in Home Assistant's Add Card picker while internal Trip/Charge/GPS/Fuel cards remain available to the generated dashboard.
- Completes the tank-capacity translation additions across the full 18-language Home Assistant catalog and fixes the Italian catalog JSON structure.
- Adds and updates regression coverage for the DS4 Hybrid fixture, electric/fuel endpoint detail data, refuel summaries, Hero behavior, capability-driven configuration and beta.15 frontend cache/version contracts.
- Bumps package and consolidated frontend resources to
0.6.0-beta.15; all changed frontend modules and shared localization dependencies use beta.15 cache keys. - Remains a prerelease on
develop;mainstays unchanged until exact-candidate runtime acceptance is complete.
SV Dashboard uses semantic package versions. develop is the integration/acceptance branch; main represents the last explicitly accepted publishable state.
- Adds the SV-owned historical
/tripstransport on top of the already loaded Stellantis Vehicles authenticated client/session instead of relying on a missing upstream history method or introducing a second auth stack. - Makes upstream vehicle resolution resilient to Home Assistant startup ordering with strict VIN matching, loaded-runtime preference and bounded background reacquisition while local history remains available as fallback.
- Rejects upstream runtime objects already marked
_shutting_downso SV Dashboard does not bind to stale clients during Stellantis Vehicles reload/unload. - Adds a temporary, narrowly scoped compatibility recovery for stranded closed upstream HTTP sessions/connectors: an already-dead session reference can be cleared so upstream recreates its own session, connector-only closure uses upstream cleanup, and explicit closed-session/connector failures get at most one request retry.
- Preserves upstream ownership of OAuth, credentials and the long-lived HTTP session; SV Dashboard does not create a parallel Stellantis authentication/session stack.
- Adds focused Python transport/runtime-resolution contract tests and executes the history transport contract suite in the normal Validate workflow.
- Keeps the frontend module content keys from beta.13/beta.12/beta.10/beta.7 because this candidate changes backend/history lifecycle code only; the package version itself advances to
0.6.0-beta.14for an immutable HACS/runtime candidate. - Remains a prerelease on
develop;mainstays unchanged until exact beta.14 runtime acceptance is complete.
- Hides the redundant Powertrain / Antrieb column for single-energy vehicles; pure EV and thermic trip tables no longer repeat the already-known vehicle powertrain on every row.
- Keeps per-trip EV / Hybrid / ICE classification in the Dual-Energy/Hybrid trip table, where the distinction is meaningful.
- Restores missing electric kWh and kWh/100 km in canonical trip history when Stellantis server history omits electric energy but SV Dashboard has a strongly matched, positive locally observed SOC/capacity-derived trip result.
- Never overwrites real server electric telemetry and never invents energy from missing, unchanged or zero local SOC-derived values.
- Recomputes kWh/100 km from the canonical server distance after a successful local-energy enrichment and records the local provenance.
- Adds regression coverage for both capability-gated powertrain display and conservative electric-energy enrichment.
- Cache-busts the changed Trip History card and bumps the package/frontend resource to
0.6.0-beta.13; unchanged beta.12/beta.10/beta.7 frontend modules retain their existing content keys. - Remains a prerelease on
develop;mainstays unchanged pending explicit acceptance.
- Makes the generated Vehicle/LIVE Hero capability-driven: vehicles exposing both electric and fuel data now use the native Dual-Energy Hero automatically, while EV/thermic-only vehicles retain the compact universal Hero.
- Keeps the Dual-Energy Hero independently addable to any Home Assistant dashboard; clicking its vehicle picture continues to open the generated SV vehicle dashboard.
- Clarifies Hero preconditioning as a guarded START-only convenience action. The inactive icon is neutral, a pending START is visualized, duplicate START presses are blocked for 90 seconds while upstream state catches up, and the actual mapped preconditioning state drives the active styling. Explicit START/STOP controls remain in the generated dashboard Quick Actions.
- Simplifies the main Hybrid trip-history table to
Date | Duration | Distance | Avg. km/h | kWh/100 km | l/100 km; absolute kWh, trip type, SOC, mileage, fuel level/range/litres and maximum speed remain in expandable details. - Adds canonical charge-session mileage to expanded Charging History details where available and removes redundant empty reconstructed charge-duration/type rows already explained by the reconstruction hint.
- Applies the reviewed French package-entity wording for current-trip energy and SV-recorded trip/charge results while retaining the semantically correct
Puissance de recharge actuellefor current charge power. - Adds an anonymized real DS4 Hybrid two-trip fixture to regression coverage, including a fuel-using trip with unchanged electric SOC so the parser/UI cannot silently invent electric energy.
- Bumps package and top-level frontend resources to
0.6.0-beta.12for clean external HACS validation in issue #2. - Remains a prerelease on
develop;mainstays unchanged until the DS4 Hybrid/French beta acceptance is complete.
- Bumps the package and top-level Home Assistant frontend resource version to
0.6.0-beta.11to create a clean beta update event for external validation in #2/#41. - Documents that HACS beta testers must enable the per-repository Pre-release switch so HACS resolves the semantic
v0.6.0-beta.Nprerelease tag instead of falling back to adevelopcommit SHA. - Records the HACS 2.0.x external release-link 404 as an upstream URL-construction limitation (
/releases/<tag>instead of GitHub's/releases/tag/<tag>); SV Dashboard does not publish a fake stable release or malformed tag as a workaround. - Keeps all beta.10 Hybrid, Hero, entity and translation behavior unchanged; unchanged internal frontend modules deliberately retain their validated beta.10/beta.7 cache keys.
- Remains a prerelease on
develop;mainstays unchanged until the DS4 Hybrid/French beta acceptance is complete.
- Localized the package-owned Dashboard status entity through the normal Home Assistant 18-language translation contract.
- Applied the DS4 tester's reviewed French entity wording, including clarified current-trip energy and SV-local trip/charge result semantics.
- Moved the owner-approved German Dual-Energy wording (
Kraftstoff,Kraftstoffreichweite,Verbraucht) into the canonical frontend source catalog rather than another runtime patch layer. - Carries the public compact-vs-Dual-Energy card-picker naming cleanup already merged on
develop. - Refreshed README, dashboard/features, localisation, capability and vehicle-card documentation and added DE/EN/FR Dual-Energy Hero examples.
- Documents native More Info/history interactions and the Hybrid Idle/Driving/Charging data contract.
- Explicitly distinguishes battery-side SOC/time estimates from EVSE/grid meter readings.
- Documents how testers/users can share alternative Lovelace/YAML layouts plus screenshots as concrete feature-design input.
- Cache-busts the changed shared i18n runtime and every consuming frontend module so beta upgrades cannot retain stale beta.7/beta.9 translation code.
- Remains a prerelease on
develop; promotion tomainwaits for the real DS4 Hybrid/French external test in issue #2.
- Replaced the temporary YAML/button-card interaction prototype with native Lit controls inside the package-owned Dual-Energy Hero; no nested custom cards are introduced by the Hero itself.
- Made vehicle temperature, battery/fuel percentages, and the currently displayed range/trip-energy/charge-power/fuel-consumption metric open Home Assistant's native More Info/history dialog.
- Made the vehicle image navigate to the generated vehicle dashboard via the published
dashboard_url_pathwhile preserving the large owner-approved Hero presentation. - Kept Battery and Fuel on the native symmetric two-column grid rather than carrying prototype pixel-offset workarounds into product code.
- Audited the card localisation path: automatic HA locale and optional explicit card language share the same context, the editor fallback no longer hard-codes English
Vehicle N, and the climate control reuses the existing translated dashboardclimatelabel instead of hard-codedACaccessibility text. - Strengthened frontend localisation regression coverage across the existing 18-language catalog contract and applied the two reviewed French terminology corrections from external tester PR #20.
- Bumped the package/frontend resource to beta.9 and cache-busted only the changed Dual-Energy Hero module; unchanged package modules remain pinned to their existing beta.7 content URLs.
- Removed the redundant visible
ACcaption below the climate icon while keeping the existing mapped preconditioning control and accessibility label intact. - Enlarged the vehicle image another step across the responsive Hero layouts without changing the Battery/Fuel grid or state logic.
- Preserved the beta.7 Idle / Driving / Charging data contract unchanged; functional runtime acceptance of those states remains pending.
- Bumped the package frontend resource to beta.8 and cache-busted the changed Dual-Energy Hero asset while leaving unchanged beta.7 modules/dependencies pinned to their existing content URLs.
- Enlarged the vehicle hero and reduced unused whitespace in the wide Battery/Fuel overview.
- Added mapped preconditioning/AC control at the top-left and live vehicle temperature at the top-right.
- Battery presentation is state-driven: green EV range while idle, blue current-trip energy in kWh while driving, and a blue pulsing charge-power view while charging.
- The driving hero deliberately uses current-trip energy, not a synthesized kWh/100 km value.
- Hybrid Fuel can show current upstream l/100 km while driving only when that value was refreshed during the current drive; otherwise Fuel range remains visible.
- Preserved neutral missing-Fuel values for EV owner QA and extended all 18 frontend languages for the new hero labels.
- Fixed dual-energy hero clipping when Home Assistant placed the card in a narrow grid cell.
- The card now requests the native 12-column wide grid size and responds to its own container width instead of the browser viewport.
- EV owner acceptance keeps the fuel side visible with neutral missing values rather than hiding or fabricating telemetry.
- Enlarged the vehicle presentation and added neutral battery/fuel percentage fill bars.
- Removed the browser-time
unpkg.comdependency; Lit is pinned and bundled locally with its license notice. - Added stable VIN-backed ConfigEntry identity/recovery and a powertrain fallback override that is available only when automatic detection remains unknown.
- Added live
kWh/100 kmtrip consumption, Hybrid/Fuel-aware local fallback history and fuel telemetry in trip notifications. - Centralized the new Hybrid/Fuel card strings into the shared 18-language frontend catalogs.
- Hardened refuelling detection against single-sample fuel-level spikes and made charge-power formatting locale-aware.
- Renamed remaining internal
Ec3...implementation classes to neutralSv...names without changing public entity identity.
- Created SV Dashboard as the successor to the former e-C3 Dashboard project.
- Introduced the new Home Assistant domain
sv_dashboardand component pathcustom_components/sv_dashboard/. - Migrated the validated predecessor
developsource baseline from exact SHA0a2873611d92a36eca4c41d165ea1fc1462caa50. - Replaced active product/runtime identifiers with SV Dashboard naming rather than carrying the old integration domain forward.
- Moved active migration, DS4 beta, notification QA, LTS and backlog tracking into the new SV Dashboard repository.
- Multi-brand vehicle naming and multi-vehicle behavior.
- Capability-based handling for electric, hybrid and combustion vehicles, with defensive hydrogen/unknown handling.
- Vehicle-specific battery-capacity/residual resolver with no generic fixed e-C3 capacity.
- 18-language Home Assistant, frontend and backend message matrix:
de,en,fr,it,es,pt,nl,da,nb,sv,fi,pl,cs,sk,hu,ro,sl,hr. - Structural CI checks for Home Assistant translation keys/placeholders, frontend catalogs, backend messages and locale fallbacks.
- New repository description/topics and HACS metadata required for repository validation.
- GPL-3.0-or-later licensing and explicit trademark/affiliation notice.
- Generalized vehicle capability documentation and explicit tested/beta/expected compatibility status.
- Rebuilt README for SV Dashboard, the new
sv_dashboarddomain and the migration/beta state. - Updated installation, architecture, entity catalog, dashboard features, localisation, notification/wake-up, vehicle-card, release and branch workflow documentation.
- Retained anonymized screenshots as UI examples.
- Kept predecessor e-C3 observations only where they are useful as clearly labelled historical/reference vehicle evidence.
- Source/frontend test suite migrated and passing on the SV code line.
- 97 predecessor regression tests migrated; additional HA translation-structure coverage added during migration.
- Hassfest passing on validated migration commits.
- HACS repository validation passing after repository metadata/license setup.
- Owner live e-C3 regression on the new SV integration is still pending.
- DS4 Hybrid/French external beta is still pending in issue #2.
- Notification real-event QA continues in issue #3.
- Mileage/LTS investigation continues in issue #4.
No stable SV Dashboard release has been promoted to main yet.
The migration source inherited the predecessor project's mature feature set, including:
- generated Vehicle, Charging, Statistics, Trips, GPS, Wake-up, Notifications and System views;
- reusable vehicle overview/LIVE hero card;
- canonical Stellantis trip/charge/GPS history and data-quality handling;
- package-owned notification thresholds, quiet hours and recipient controls;
- manual history synchronization, wake-up and notification-test actions;
- long-term-statistics presentation and trailing consumption metrics;
- a single package-owned frontend resource model;
- restart-safe local history/notification state;
- multi-entry config-entry mapping without household-specific VIN/entity IDs.
Historical development detail remains available in the predecessor repository/Git history. New work is tracked only in CaneTLOTW/sv_dashboard.