You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bumped icons to match Iconify material-symbols.json released on 2024-11-22.
Bumped version strings to match release 2024.11.23
Imported os module functions: path, walk to __init__.py.
Imported json module to __init__.py, for handling JSON serialisation.
Added ListingView class.
Set requires_auth = False to allow unauthenticated access to icon lists.
Initialised the class with unique url and name attributes for each icon set
Implemented the get method to handle HTTP GET requests and return a JSON response with the list of icons.
Utilised async_add_executor_job to offload blocking I/O operations to a separate thread, preventing event loop blocking.
Revised async_setup function to ensured that the JavaScript loader and icon sets are properly registered as static paths and iterated over iconset_prefixes to set up each icon set individually.
Converted string variables to character variable aliases to reduce file size.
Bumped icons to match Iconify material-symbols.json released on 2024-11-22.
Imported os module functions: path, walk to __init__.py.
Imported json module to __init__.py, for handling JSON serialization.
Improved the ListingView Class.
Set requires_auth = False to allow unauthenticated access to icon lists.
Initialized the class with unique url and name attributes for each icon set
Implemented the get method to handle HTTP GET requests and return a JSON response with the list of icons.
Replaced string slicing with os.path.relpath to compute relative paths.
Used os.path.join and replaced OS-specific path separators with '/' to standardize URLs.
Utilised async_add_executor_job to offload blocking I/O operations to a separate thread, preventing event loop blocking.
Revised async_setup function to ensured that the JavaScript loader and icon sets are properly registered as static paths and iterated over iconset_prefixes to set up each icon set individually.
Notes
This update maintains compatibility with existing configurations but improves overall stability.
Repository Structure: The repository and installation have transitioned from a "Lovelace" repository (v1.X.X) to an "Integration" repository (202X.X.X+). Users should reinstall from the new integration repository to avoid compatibility issues.
Icon Prefix Migration: The icon prefix has transitioned from m3s, which previously contained all icon styles, to individual prefixes based on style. Each style now has its unique prefix (e.g., m3o for outlined, m3r for rounded). Refer to the documentation for the complete list of prefixes.
Reduction in Available Icons: The number of available icons has been reduced from ~18,600 to 13,460.
Release Notes
Enhancements and Improvements
Optimised Caching: Implemented a two-layer caching system to enhance performance. Icon names are now pre-fetched from icons.json, significantly reducing repeated SVG file requests. Dynamic Icon Loading: The code dynamically loads icons.json files for each icon set prefix, allowing modular updates to icon lists without hardcoding. This design offers more flexibility for future icon additions.
Streamlined Icon Object: Simplified the structure of the returned icon object, focusing on essential properties such as viewBox and path to optimise resource usage.
Security Enhancements: Improved security by filtering out SVGs containing scripts or event handlers to ensure safe icon rendering.
Consistent Icon Set Registration: Standardised icon set registration through a loop structure, resulting in cleaner and more maintainable code.
Bugs and Issues Resolved
[#11]: Icons not appearing in Icon Picker dropdown list.