Releases: WJDDesigns/ultra-card-connect
v1.1.0 — HTTP API Auth, Setup Without Account & Credentials Flow
Ultra Card Connect v1.1.0
Stable Release — recommended for all users.
✨ What's New
HTTP API Auth Views
Three new HA HTTP API endpoints are now registered on integration setup, allowing the Ultra Card frontend to authenticate users directly through Home Assistant's secure session layer — credentials are never stored in browser localStorage.
POST /api/ultra_card_pro_cloud/login— Acceptsusername+password, updates the config entry credentials, forces the coordinator to re-authenticate, and returns the current sensor state immediately so the frontend reflects auth status without a page reload. If no config entry exists yet, one is created automatically via the config flow.POST /api/ultra_card_pro_cloud/logout— Removes stored credentials from the config entry and resets JWT/refresh tokens, logging the user out cleanly.POST /api/ultra_card_pro_cloud/register— Creates a new ultracard.io account via the WordPress API, then auto-logs in using the login flow above. Returns the sensor state on success.
All views require a valid Home Assistant session (requires_auth = True).
Setup Without Account
The config flow now opens with a menu step letting users choose:
- Sign in with ultracard.io account — proceeds to the new
credentialsstep (username/password). - Set up without an account — creates a config entry immediately with no credentials, so the sidebar appears right away. Users can sign in later via the Account tab in the Hub sidebar.
Coordinator — Graceful No-Credentials Handling
When the config entry has no credentials (set up without account), the coordinator now returns {"authenticated": False} immediately instead of attempting network requests, eliminating unnecessary errors in the logs.
Config Flow Cleanup
- Split
async_step_userinto a menu step (user) and a dedicatedasync_step_credentialsstep for the sign-in form. - Added
async_step_user_api— a programmatic flow step called by the new login HTTP view to create entries without user interaction. - Config entry title changed from
"Ultra Card Pro (...)"to"Ultra Card (...)". - Removed emoji prefixes from log statements for cleaner HA logs.
Strings & Translations
- New
userstep description explains the menu choice. - New
credentialsstep with sign-in instructions and a link to the registration page. - Updated
strings.jsonandtranslations/en.jsonin sync.
🐛 Bug Fixes
- Fixed whitespace/formatting inconsistencies in
coordinator.py. ultra-card-panel.jsminor update (line 307 patch).
🔧 Installation / Upgrade
- In HACS, find Ultra Card Connect and update to v1.1.0.
- Restart Home Assistant when prompted.
- If upgrading, your existing config entry is preserved — no reconfiguration needed.
- New installs will see the "Set up without account" option during initial config flow.
Pairs with Ultra Card v3.1.0-beta1 or later.
v1.0.9
What's Changed in v1.0.9
See CHANGELOG.md for details.
Installation
Via HACS (Recommended):
- Open HACS in Home Assistant
- Search for "Ultra Card Connect"
- Click Download
- Restart Home Assistant
Manual Installation:
- Download the
custom_components/ultra_card_pro_cloudfolder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
v1.0.8
What's Changed in v1.0.8
See CHANGELOG.md for details.
Installation
Via HACS (Recommended):
- Open HACS in Home Assistant
- Search for "Ultra Card Pro Cloud"
- Click Install
- Restart Home Assistant
Manual Installation:
- Download the
custom_components/ultra_card_pro_cloudfolder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
v1.0.5
What's Changed in v1.0.5
See CHANGELOG.md for details.
Installation
Via HACS (Recommended):
- Open HACS in Home Assistant
- Search for "Ultra Card Pro Cloud"
- Click Install
- Restart Home Assistant
Manual Installation:
- Download the
custom_components/ultra_card_pro_cloudfolder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
v1.0.4
What's Changed in v1.0.4
See CHANGELOG.md for details.
Installation
Via HACS (Recommended):
- Open HACS in Home Assistant
- Search for "Ultra Card Pro Cloud"
- Click Install
- Restart Home Assistant
Manual Installation:
- Download the
custom_components/ultra_card_pro_cloudfolder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
v1.0.3
What's Changed in v1.0.3
Improved
- Better Connection Error Handling: Added specific exception handling for different connection error types (DNS, SSL/TLS, timeout, server disconnection) with helpful error messages to aid troubleshooting
- User-Agent Headers: All API requests now include proper User-Agent headers to prevent WAF/CDN blocking
- Increased Timeouts: Extended request timeout from 15s to 30s with a separate 10s connection timeout for more reliable connections on slower networks
- Connectivity Diagnostics: Added async_test_connectivity() method for diagnosing connection issues (tests DNS, SSL, API, and auth separately)
- Enhanced Error Logging: Error responses now include error_type field for easier issue categorization
Fixed
- Intermittent connection failures where users could reach ultracard.io in browser but not through Home Assistant
Installation
Via HACS (Recommended):
- Open HACS in Home Assistant
- Search for "Ultra Card Pro Cloud"
- Click Install
- Restart Home Assistant
Manual Installation:
- Download the
custom_components/ultra_card_pro_cloudfolder - Copy to your Home Assistant
config/custom_components/directory - Restart Home Assistant
v1.0.2: JWT Authentication Pro Compatibility
🐛 Bug Fixes
- JWT Authentication Pro compatibility - Full support for JWT Auth Pro plugin with token refresh mechanism
- Fixed token expiry detection - Now correctly parses JWT token expiry from the token itself (supports 180+ day tokens)
- Fixed 202 status handling - Properly handles HTTP 202 'Accepted' responses from JWT Auth Pro
- Added rate limiting support - Handles HTTP 429 responses with proper Retry-After delays
✨ Improvements
- Added retry logic - Automatic retries with exponential backoff for transient failures
- Improved token refresh - Better handling of refresh tokens with JWT Auth Pro format
- Reduced logging noise - Routine polling now uses debug level (quiet logs in production)
- Better error recovery - Clears stale tokens after 3 consecutive failures to force fresh authentication
🔧 Root Cause
The integration was defaulting to 1-hour token expiry when JWT Auth Pro doesn't return expires_in in the response. This caused unnecessary token refresh attempts every 55 minutes, leading to intermittent connected/disconnected status.
The fix parses the actual JWT token to extract the real expiry time from the exp claim.
📦 Installation
Update via HACS or manually replace the custom_components/ultra_card_pro_cloud folder.
⚠️ After Update
Users experiencing issues should:
- Remove the integration
- Restart Home Assistant
- Re-add the integration with their credentials
V1.0.1
Initial Release