Releases: Codzelerate/homebridge-volvo-xc90
Releases · Codzelerate/homebridge-volvo-xc90
v1.3.11
v1.3.10
Added
- Grant expiry tracking —
grantedAtis now stamped on first successful OAuth authentication and preserved through every token rotation. On each Homebridge restart the plugin checks the grant age against Volvo's documented limits:- 2-week warning — logs a prominent warning with re-auth instructions when fewer than 14 days remain before the 6-month hard expiry.
- Post-expiry warning — logs immediately if the grant is already past 6 months.
invalid_grantdetection — when a token refresh is rejected by Volvo, the error message now distinguishes between the 7-day stale token limit (Homebridge offline for a week) and the 6-month hard expiry, and links directly to the re-auth flow in the Homebridge UI.
Changed
- All "run the setup tool" error messages updated to point users to Homebridge UI → Plugins → Volvo XC90 → Settings → Re-configure OAuth instead of the terminal.
v1.3.9
Fixed
- OAuth wizard crash —
crypto.subtleis unavailable in the Homebridge UI webview; PKCE SHA-256 challenge is now computed via a stateless/pkce-challengeserver endpoint (pure function, no stored state) instead ofcrypto.subtle.digest.
v1.3.8
Fixed
- OAuth wizard timeout — auth URL and PKCE challenge/verifier are now generated entirely in the browser (Web Crypto API). The wizard no longer calls the Homebridge plugin server for Step 1, eliminating the timeout that occurred when the server.js child process was slow to start.
- Manual token entry — added a "Already have a refresh token? Paste it directly →" path in the OAuth wizard for users who obtained a token via the terminal
node dist/oauthSetup.jstool. Bypasses the full OAuth flow. - Stateless server — removed
this.pendingserver-side state fromserver.js; credentials and PKCE verifier are now sent by the frontend at exchange time, making the flow resilient to server restarts between wizard steps.
v1.3.7
Changed
- Verbose debug logging — when
debug: trueis set, the plugin now logs: HTTP error bodies on failed token refreshes (previously swallowed), refresh token prefix hints (first 8 chars) to identify which token is in use, access token expiry countdowns, request round-trip timing, and explicit cache miss/hit/invalidation events with TTL and generation info.
v1.3.6
chore: release v1.3.6 Fix two Homebridge verification failures: - config.schema.json: move required fields to object-level array (remove invalid boolean required on individual properties) - package.json: remove peerDependencies block (homebridge must only be in devDependencies)
v1.3.5
Added
- OAuth Setup UI — the entire OAuth flow now lives inside the Homebridge settings panel. Enter Client ID, Client Secret, and Redirect URI, click Generate Auth URL, sign in, paste the redirect URL, and you're done. No terminal, no copy-paste config blocks. Credentials are saved to config automatically.
- Fully custom settings UI — replaced the hybrid schema form with a fully custom dark-themed panel: bento grid for feature toggles (Controls / Sensors / Energy), auth status hero card, OAuth wizard with animated 3-step stepper, collapsible sections (Alert Thresholds, Vehicle Specs, Advanced), and reactive config sync with Homebridge's native Save button.
- Masked sensitive fields — VCC API Key and VIN are masked by default with a 👁 show/hide reveal toggle.
Changed
- OAuth setup is now UI-first — the Homebridge settings panel is the primary path. The terminal
npm run oauthtool remains available as a fallback. - Reactive config sync — UI changes are pushed to Homebridge's in-memory config automatically (debounced 300ms). The native Homebridge Save button is the only save action needed — no custom Save button in the UI.
v1.3.4
Changed
- Charging ETA is now opt-in — enable via Energy → Show Charging ETA in plugin settings. Previously appeared automatically whenever Show EV Battery was on. If you updated to v1.3.3, the sensor will be removed on the next restart unless you enable the toggle.
v1.3.3
Added
- Charging ETA sensor — new Light Sensor sub-service inside the Energy tile showing minutes to full charge. Displays the value when actively charging, 0 when not charging or charge is complete. Appears automatically whenever Show EV Battery is enabled — no extra config needed.
v1.3.2
Documentation
- Fixed OAuth setup steps: tool must be run on a machine with a browser (not the headless Pi), the tool prints a URL rather than opening one, and redirect URI guidance now matches what the tool itself says (use your own GitHub profile URL, not the plugin repo URL).