Releases: jonducrou/ha_visualiser
v0.9.0: Control UI Overhaul
Control UI Overhaul
This release brings a significant UI refresh with improved styling and usability.
New Features
- CSS Grid Layout: Predictable control bar layout that responds properly at all screen sizes
- HA-Style Components: Select dropdowns, buttons, and checkboxes now match Home Assistant's native styling
- Search Keyboard Navigation: Use arrow keys to navigate, Enter to select, Escape to close
- Loading States: Spinner shows while searching, empty state when no results found
- Improved Accessibility: ARIA attributes and keyboard shortcut hints
UI Improvements
- Search input with icon and loading spinner
- Three responsive breakpoints: phone (<600px), tablet (600-1023px), desktop (1024px+)
- Smooth transitions and hover states
- Better visual hierarchy with card-style containers
Technical
- HTML escaping for XSS protection
- Reduced motion support for accessibility
- Uses HA CSS variables for theme compatibility
Full Changelog: v0.8.21...v0.9.0
v0.8.21 - Template Entity Matching Fix
🔧 Bug Fix
Template Entity Matching for Special Characters
Fixed an issue where template sensors with special characters in their names (colons, parentheses, etc.) were not showing their dependency relationships in the visualiser.
Example: A template sensor named "Solar: Spare Power for Car" that depends on sensor.total_dc_power, sensor.load_power, and sensor.openeo_charger_power_delivered would only show automation relationships, but not its template dependencies.
Root Cause
The entity ID generation was using template_name.lower().replace(' ', '_') which only replaced spaces. This meant:
- Template name: "Solar: Spare Power for Car"
- Generated ID:
sensor.solar:_spare_power_for_car❌ - Actual HA ID:
sensor.solar_spare_power_for_car✅
Solution
Now uses Home Assistant's slugify() function, which is the same function HA uses internally to generate entity IDs. This correctly handles all special characters.
📋 Full Changelog
- Fixed: Template entity ID matching now uses
slugify()for proper special character handling - Updated: Documentation in DECISIONS.md
🔄 Update Instructions
- Update via HACS or replace the files manually
- Restart Home Assistant
- Clear browser cache (Ctrl+Shift+R or Cmd+Shift+R)
- Test template sensors with special characters in their names
v0.8.20 - Fix NoneType Iteration Error
🔧 Bug Fix
Fixed: Graph Not Showing (Issue #18)
Fixed a critical bug where graph building failed with "'NoneType' object is not iterable" error.
Root Cause:
- Home Assistant entity attributes can have explicit
Nonevalues (e.g.,group_members: null) - The pattern
dict.get("key", [])only returns the default[]when the key is missing, not when the value isNone - This caused
.extend()calls to fail when iterating overNone
Solution:
Changed ~50 occurrences from:
attr = state.attributes.get("key", []) # Returns None if value is nullTo:
attr = state.attributes.get("key") or [] # Always returns a listAffected Areas:
- Group member extraction in search results
- Light, switch, cover, fan, media_player, and climate group handling
- Reverse relationship detection
🧪 Testing
All 50 unit tests passing.
📥 Installation
Update through HACS or copy the files to your custom_components/ha_visualiser/ directory and restart Home Assistant.
Important: Clear your browser cache (Ctrl+Shift+R) after updating to ensure the new frontend is loaded.
v0.8.19 - Fix Automation Template Trigger Dependencies
🔧 Bug Fixes
Automation Template Triggers Now Show Entity Dependencies
Fixed two related issues from #15:
1. Forward Relationships ✅
- Automation template triggers with
value_templatenow properly extract entity dependencies - When viewing an automation, entities referenced in template triggers now appear in the graph
2. Reverse Relationships ✅
- When viewing an entity, automations that reference it in template triggers now appear
- Bidirectional relationship detection now works for template triggers
Technical Details
Both _extract_entities_from_config() and _entity_referenced_in_config() now check value_template fields using HA's built-in template compiler, consistent with the v0.8.18 approach for template helpers.
Example:
automation:
trigger:
- platform: template
value_template: "{{ states.sun.sun.attributes.elevation > 0 }}"Now properly shows sun.sun as a dependency in both directions.
📦 What's Covered
Template dependency detection now works for:
- ✅ Template helpers (select, sensor, binary_sensor, etc.) - v0.8.18
- ✅ Automation/script template conditions - v0.8.18
- ✅ Automation template triggers (forward & reverse) - v0.8.19
🧪 Testing
All 50 unit tests passing.
📥 Installation
Update through HACS or copy the files to your custom_components/ha_visualiser/ directory and restart Home Assistant.
v0.8.18 - Template Compiler for Dependency Detection
Template Compiler for Dependency Detection
This release improves template dependency detection by using Home Assistant's built-in template compiler instead of regex parsing.
Key Changes
🔧 Template Compiler Integration
- Now uses
Template.async_render_to_info()- the same method Developer Tools uses - Applies to all template types: helpers, automations, scripts, and conditions
- More reliable for complex templates with multi-line syntax and nested structures
✨ Improved Coverage
- Template select entities (addresses #15)
- Template sensors, binary sensors, switches, buttons, numbers, text
- Automation/script template conditions
- Template shorthand conditions
🛡️ Reliability
- Handles all Jinja2 template syntax correctly
- Stays in sync with Home Assistant's template engine
- Graceful fallback to regex parsing if compilation fails
Benefits
This change makes template dependency detection significantly more reliable, especially for complex templates like the one shown in issue #15. The integration now uses the exact same method that Home Assistant's Developer Tools uses to show "Entities in template".
Installation
Install via HACS or manually:
- Copy
custom_components/ha_visualiserto your HA config directory - Restart Home Assistant
- The integration will automatically update
🤖 Generated with Claude Code
v0.8.17 - Template Select Support
What's Changed
Template Select Support ✨
- 🔧 Template Select Fix: Added support for
optionsfield in template select entities - 🔗 Enhanced Relationships: Template select helpers now properly show entity dependencies
- 📋 Select Action Support: Detects entity references in select_option actions
Bug Fixes
- 📝 Installation Instructions: Corrected README to accurately describe manual integration setup requirement
Technical Details
Extended template relationship detection to include the options field used by template select entities, and added handling for select_option actions. This enables template select helpers created via the UI or YAML to properly display their entity dependencies in the visualization graph.
Full Changelog: v0.8.16...v0.8.17
v0.8.17-pre2 - Enhanced Mobile Touch Handling
Enhanced Mobile Search Touch Handling
This pre-release addresses the remaining mobile search interaction issues with improved touch event handling.
🔧 What Changed from v0.8.17-pre
The previous release fixed z-index and CSS issues, but mobile devices still weren't responding to taps. This release adds comprehensive touch event handling.
Enhanced Event Handling:
- Dual Event Listeners: Added both
clickandtouchendhandlers for broad compatibility - Event Prevention: Added
preventDefault()andstopPropagation()to stop event bubbling - Touch Start Handler: Prevents unwanted scrolling during touch interactions
- Non-Passive Events: Allows
preventDefault()to function properly
🧪 Testing Focus
Please test specifically:
-
Mobile Search Selection:
- Type to search for entities
- Single Tap: Should immediately select entity (no need for tap-and-hold)
- Touch Response: Should feel immediately responsive
- No Fall-Through: Taps should not affect elements behind search results
-
Touch Behavior:
- No unwanted page scrolling while tapping search results
- Clean selection with immediate search dropdown dismissal
- Consistent behavior across different mobile browsers
📱 Technical Approach
This combines both CSS layering fixes (from pre1) with JavaScript touch event enhancements:
- CSS:
z-index: 1001,pointer-events: auto, touch optimization - JS: Dual event handlers, event prevention, touch scroll prevention
Previous Issue: Click events falling through despite CSS fixes
This Fix: Direct touch event handling with event prevention
Comparison: v0.8.16 → v0.8.17-pre → v0.8.17-pre2
- v0.8.16: Working desktop, broken mobile search
- v0.8.17-pre: Fixed CSS layering, but touch events still unreliable
- v0.8.17-pre2: Complete mobile touch event handling
Full Changelog: v0.8.17-pre...v0.8.17-pre2
v0.8.17-pre - Mobile Search Results Fix
Mobile Search Results Touch Fix
This pre-release addresses a critical mobile usability issue where search results were not tappable on mobile devices.
🐛 Bug Fixed
Mobile Search Results Not Selectable: Fixed issue where tapping search results on mobile devices would fall through to elements behind, making entity selection impossible.
🔧 Technical Changes
- Increased z-index: Search results now use
z-index: 1001(above mobile navigation header) - Enhanced Touch Handling: Added mobile-optimized touch properties:
pointer-events: auto- Ensures touch events are capturedtouch-action: manipulation- Optimizes mobile touch responsiveness-webkit-tap-highlight-color: transparent- Improves iOS tap feedback
- CSS Specificity: Applied mobile overrides with
!importantfor reliability
🧪 Testing Needed
Please test the following on mobile devices (especially iOS):
-
Search Functionality:
- Open Entity Visualizer on mobile
- Type in search box to get results
- Tap on search results to select entities
- Verify results are selectable and responsive
-
Touch Responsiveness:
- Confirm search results respond immediately to taps
- Verify no "dead zones" where taps don't register
- Test with different entity types and names
-
Layer Conflicts:
- Ensure search results appear above all other UI elements
- Verify no visual overlapping issues
📱 Known Working
- Desktop search functionality remains unchanged
- Mobile navigation header still works correctly
- iOS back button navigation unaffected
Feedback needed: Please report any remaining touch/tap issues on mobile devices.
Full Changelog: v0.8.16...v0.8.17-pre
v0.8.16 - Mobile Navigation Refinement
Mobile Navigation Improvements
This release refines the mobile navigation experience by adjusting when the back button appears.
What's Changed
- Improved Mobile Navigation Timing: Adjusted the mobile navigation breakpoint from 768px to 870px to match exactly when the Home Assistant sidebar disappears
- Better User Experience: The back button now appears precisely when users lose access to the native sidebar navigation
Technical Details
- Updated CSS media query breakpoint to align with Home Assistant's responsive behavior
- Ensures navigation assistance is provided exactly when needed
Testing
- Tested across multiple screen sizes to verify the 870px breakpoint aligns with sidebar disappearance
- Confirmed desktop experience remains unchanged
- Verified iOS app navigation works reliably
For Developers
This release maintains the same mobile navigation solution introduced in v0.8.15 but with improved timing for when the navigation aid is displayed.
Full Changelog: v0.8.15...v0.8.16
v0.8.15-pre: iOS Navigation Solution
🚀 Pre-Release v0.8.15: iOS Navigation Solution
🛠️ What's New
iOS Navigation Fix 📱
- Resolves Issue #13: iOS users can now escape the Entity Visualizer panel
- Added mobile navigation header with back button for screens < 768px width
- Multiple fallback navigation methods ensure reliable operation across HA versions
Mobile UI Improvements
- Clean, centered "Entity Visualizer" title in navigation header
- Touch-friendly 44px button targets for iOS accessibility
- Fixed positioning with proper z-index layering
- Maintains all existing responsive functionality from v0.8.14
🔧 Technical Changes
- Added
.mobile-nav-headercomponent with mobile-only visibility - JavaScript navigation handlers with graceful fallbacks:
history.back()for browser navigation- Home Assistant event system integration
- Direct URL navigation as final fallback
- Updated to clean, simplified approach (removed complex sidebar toggle)
⚡ Quick Start
- Update: Install v0.8.15-pre via HACS or manual installation
- Restart Home Assistant to load the new panel version
- Test on mobile: Navigation header should appear on mobile devices
- Verify navigation: Back button should reliably return to HA dashboard
🧪 Testing Notes
This pre-release focuses on mobile navigation improvements. Please test:
- iOS HA app navigation functionality
- Mobile responsive behavior at different screen sizes
- Integration with existing entity search and graph features
- Compatibility with your Home Assistant version
📋 Full Changelog
- Fix: iOS users no longer trapped in Entity Visualizer panel
- Enhancement: Mobile navigation header for phones/tablets
- Enhancement: Multiple navigation fallback methods
- Update: Version bump to 0.8.15 for UI changes
- Cleanup: Simplified navigation approach for better reliability
🤖 Generated with Claude Code