Skip to content

Releases: jonducrou/ha_visualiser

v0.9.0: Control UI Overhaul

18 Jan 06:00
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Pre-release

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

18 Jan 00:28
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Pre-release

🔧 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

  1. Update via HACS or replace the files manually
  2. Restart Home Assistant
  3. Clear browser cache (Ctrl+Shift+R or Cmd+Shift+R)
  4. Test template sensors with special characters in their names

v0.8.20 - Fix NoneType Iteration Error

03 Dec 09:03
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🔧 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 None values (e.g., group_members: null)
  • The pattern dict.get("key", []) only returns the default [] when the key is missing, not when the value is None
  • This caused .extend() calls to fail when iterating over None

Solution:
Changed ~50 occurrences from:

attr = state.attributes.get("key", [])  # Returns None if value is null

To:

attr = state.attributes.get("key") or []  # Always returns a list

Affected 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

06 Nov 10:27
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🔧 Bug Fixes

Automation Template Triggers Now Show Entity Dependencies

Fixed two related issues from #15:

1. Forward Relationships

  • Automation template triggers with value_template now 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

08 Oct 10:18

Choose a tag to compare

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:

  1. Copy custom_components/ha_visualiser to your HA config directory
  2. Restart Home Assistant
  3. The integration will automatically update

🤖 Generated with Claude Code

v0.8.17 - Template Select Support

07 Oct 11:51

Choose a tag to compare

What's Changed

Template Select Support ✨

  • 🔧 Template Select Fix: Added support for options field 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.

Fixes: #15, #14

Full Changelog: v0.8.16...v0.8.17

v0.8.17-pre2 - Enhanced Mobile Touch Handling

20 Sep 11:12

Choose a tag to compare

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 click and touchend handlers for broad compatibility
  • Event Prevention: Added preventDefault() and stopPropagation() 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:

  1. 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
  2. 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

20 Sep 10:51

Choose a tag to compare

Pre-release

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 captured
    • touch-action: manipulation - Optimizes mobile touch responsiveness
    • -webkit-tap-highlight-color: transparent - Improves iOS tap feedback
  • CSS Specificity: Applied mobile overrides with !important for reliability

🧪 Testing Needed

Please test the following on mobile devices (especially iOS):

  1. 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
  2. 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
  3. 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

14 Sep 11:12

Choose a tag to compare

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

14 Sep 10:59

Choose a tag to compare

Pre-release

🚀 Pre-Release v0.8.15: iOS Navigation Solution

⚠️ Pre-Release Note: This version contains significant UI changes and is marked as pre-release for initial testing. Please test thoroughly before deploying to production systems.

🛠️ 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-header component 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

  1. Update: Install v0.8.15-pre via HACS or manual installation
  2. Restart Home Assistant to load the new panel version
  3. Test on mobile: Navigation header should appear on mobile devices
  4. 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