Migrate from eslint-plugin-import to eslint-plugin-import-x since the
original plugin uses removed ESLint 10 APIs (context.parserOptions,
context.parserPath). Airbnb-base non-import rules preserved via
FlatCompat with import rules stripped and replaced by import-x.
- eslint 9.39.4 → 10.1.0
- Add eslint-plugin-import-x 4.16.2
- Add @eslint/eslintrc and @eslint/js as explicit deps
- Remove --flag v10_config_lookup_from_file (now default)
- Replace /* eslint-env */ comment with config-based globals
- Update all import/ rule references to import-x/
* Allow customizing home page summaries and adding quick links
Add ability to hide built-in summaries (light, climate, security,
media players, weather, energy) and add custom quick links to
dashboards, sidebar items, or other pages from the edit overview dialog.
https://claude.ai/code/session_01AqgbQULH5vfETibiba5RXH
* Remove quick links, focus on summary enable/disable only
https://claude.ai/code/session_01AqgbQULH5vfETibiba5RXH
* Match summary editor rows to dashboard order with icon, color, and toggle on right
Each summary row now shows its colored icon and title matching the
dashboard appearance, with the toggle switch moved to the right side.
Order matches the dashboard: light, climate, security, media players,
weather, energy, persons.
https://claude.ai/code/session_01AqgbQULH5vfETibiba5RXH
* Lint
* Apply suggestion from @balloob
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Create shared select card feature base class
* Add sound mode and source features
* Remove serviceValueKey as its the same as attribute
* Migrate more
* Migrate select options
* Add fan direction
* Remove default usages
* Add support for skeleton on tile info secondary text
* Show loading state for users of tile info
* Update src/components/tile/ha-tile-info.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add persons summary tile to home overview dashboard
Show how many people are currently home in the Summary section
of the default home dashboard. Only persons with at least one
tracking device are included. The tile only appears when the map
panel is loaded and at least one tracked person entity exists.
Tapping navigates to the map panel. Displays a count of persons
home or "Nobody" when all are away.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove persons tile from home overview strategy
* Translation tweak
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add solo-select gesture to chart legend
Ctrl+click (Cmd+click on Mac) or long-press (touch, 500ms) a legend
item to solo-select it:
- Solo-click any item → hide everything else, show only that item
- Solo-click the only visible item → restore all
There is no special "solo mode" — the gesture simply sets which items
are hidden. Normal click/tap continues to toggle individual series,
including after a solo action (e.g. solo a, then click b to add it).
Closes https://github.com/orgs/home-assistant/discussions/1492
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Deduplicate legend parsing in _renderLegend and _getAllLegendIds
Both methods parsed options.legend and filtered datasets identically.
Extract the shared logic into a new _getLegendItems method.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update src/components/chart/ha-chart-base.ts
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add ability to duplicate a section
* Move section edit mode buttons to overflow menu
* Fix typing for concat and push parameters
* Fix incorrect clipboard typing for badges
* Fix base time inputs reportValidity() function
The queryAll selector returns a NodeList not not an array. Need to spread it to an array before we can use every().
* Validate the date range picker time inputs
Enable auto validation to get the nice red underline on invalid values, and then check validity before accepting the input.
* Fix automatic 24hr value conversion in AM/PM format
When using AM/PM, entering a 24 hour value will automatically convert the first time. For example 15 will become 3. However if you then enter 15 again it will stay as 15 and not update.
To fix this, make sure we trigger an update of the input field once the current update cycle is complete.
* Validate time inputs on save not value update
In the value changed callback, the update 24->12hr input correction will not have been updated and therefore they will report invalid.
Refactor climate HVAC mode handling in state-history-chart-line to be data-driven
Replace repetitive per-mode detection, dataset creation, and series population
blocks with a single CLIMATE_MODE_CONFIGS array and loops over active modes.
* Support additional climate hvac_mode in state-history-chart-line
* Reverted changes to the chart legend to keep change focussed on the additonal hvac_mode support
* Remove the tests since they don't add value.
Add `white-space: pre-line` to the event description style so that
newlines in the calendar event description are rendered correctly
instead of being collapsed into a single line.
* Add search highlight to ZHA graph
* Move logic upstream and extend search to zwave and bluetooth
* Move search down to avoid collisions with graph legend
* Fix mobile; simplify code
* Apply highlights directly on search callback
* Revert "Move search down to avoid collisions with graph legend"
This reverts commit 4578aec9c3.
* Move legend down
* Make search bar shrink to avoid overlapping buttons
* Move search bar to topbar on mobile
* Fix inset
* Fix small controlls position
* Apply suggestion from @MindFreeze
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add device area column to ZHA data table
Add a device area column to the ZHA data table, which most notably adds
the column to the "create [ZigBee] group" view".
The column is only show on wider screens to allow for ordering, whilst
narrower screens will show the area as a subtitle to the device's name.
* Localize the ZHA group data table
* fixup! Add device area column to ZHA data table
* fixup! Localize the ZHA group data table
* Added a todo-list card option "days_to_show" to filter tasks far in the future (#24020)
* Adjusted min and 0 values as suggested in PR
* Adjusted as suggested in review
* Switched from days_to_show to period (calendar only for now) as suggested
* removed days_to_show from editor UI
* fixed lint error
* Fixed code style with prettier
* fix filtering
* Update filtering period options
* Update src/panels/lovelace/editor/config-elements/hui-todo-list-editor.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Apply suggestion from @MindFreeze
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* prettier/lint
* fix memoization, items without status
* no rolling window
* refresh on date change
* Show dialog on create when using due_date filter
---------
Co-authored-by: cpetry <petry2christian@gmail.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Refactor lovelace view lifecycle to avoid unnecessary DOM rebuilds
- Remove `force` flag from `hui-root` that was clearing the entire view
cache and destroying all cached view DOM on any config change. Views
now receive updated lovelace in place and handle config changes
internally.
- Add `_cleanupViewCache` to remove stale cache entries when views are
added, removed, or reordered.
- Remove `@ll-rebuild` handler from `hui-root`. Cards and badges already
handle `ll-rebuild` via their `hui-card`/`hui-badge` wrappers. Sections
now always stop propagation and rebuild locally.
- Add `deepEqual` guard in `hui-view._setConfig` and
`hui-section._initializeConfig` to skip re-rendering when strategy
regeneration produces an identical config.
- Simplify `hui-view` refresh flow: remove `_refreshConfig`,
`_rendered` flag, `strategy-config-changed` event, and
connected/disconnected callbacks. Registry changes now debounce
directly into `_initializeConfig`.
- Fix `isStrategy` check in `hui-view._initializeConfig` to use the raw
config (before strategy expansion) rather than the generated config.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Remove unused type
* Improve viewCache cleanup
* clean up
* Handle custom view re-creation
* Fix custom view loading
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Migrate ha-multi-textfield to ha-input-multi and update ha-selector-text to use new input components
* Review
* Update src/components/input/ha-input-multi.ts
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
Fix water/gas badge when rate is 0
If there is only one flow rate sensor, and it has a value <=0, the badge would be displayed without a unit because the sensor gets skipped.
Instead of skipping <=0 values, continue to process sensor, but clamp the value to a minimum of 0. This ensures for single sensors we have a unit, and for multiple sensors the chosen unit is consistent even if the first sensor value drops to zero.
* Use isExternalStatistic helper for consistency
* Remove redundant if condition
We have `band = drawBands && ...`, so there is no point checking if `drawBands` is true inside `if (band && ...)`.
* Skip plotting state value on statistic graph if units mismatch
For example plotting a *F sensor on a *C chart - statistic data will be converted to *C, but the state value will still be in *F so the displayed point is wrong. Similarly if plotting a kW sensor on a W chart, the same is true - statistics get converted to W by recorder, but the state value would still be in kW. In other words the plotted state point is complete nonsense.
If the units of the statistic state don't match the units of the graph, we should not be displaying the value on the graph.
* Remove redundant this.unit check
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Preserve entity unit_of_measurement in gas and water flow rate badges
The gas and water total badges on the energy dashboard Now tab previously
converted all flow rate values to L/min and then formatted them as either
L/min or gal/min based on the unit system. This meant entities reporting
in m³/h or other units always displayed incorrectly.
Now the badges preserve the unit_of_measurement from the entities. If all
entities share the same unit, the raw values are summed directly. If they
differ, values are converted through L/min as an intermediate and displayed
in the first entity's unit.
* Extract shared computeTotalFlowRate to energy.ts
* Use same now() time for all entity state values
Otherwise if there is a slight time lag while each statistic is processed, some of the points go missing from the tooltip. There end up being to very closely spaced time points for each different entity.
* Fix initial statistics graph card metadata loading
When using energy collection mode, the metadata for statistic entities was not always being loaded when the charts were first created. This could be seen in the graph units when they had differing unit (e.g. kW and W mixed).
* Re-create form editor when schema changes in hui-form-element-editor
When a parent component passes a new schema to hui-form-element-editor
(e.g. with updated disabled flags after an entity change), the internal
hui-form-editor was not rebuilt because loadConfigElement() short-circuits
once the config element exists. This meant dynamic schema changes were
silently ignored.
Override updated() to detect schema changes after initial load, tear down
the stale config element via unloadConfigElement(), and re-set the value
so the normal load path recreates the form with the current schema.
Fixes#29776
* Fix prettier formatting in hui-map-card.ts
Pre-existing formatting issue on dev branch.
* Propagate schema changes to existing form editor element
When the schema property on hui-form-element-editor changes (e.g. because
the selected entity changed and disabled flags need updating), directly
update the schema on the already-created hui-form-editor config element.
Previously, unloadConfigElement() was tried but caused a visible flash
(editor going blank then reappearing), and re-setting value with a spread
object was tried but deepEqual considers it unchanged, short-circuiting
the reload.
The fix is minimal: make _configElement protected in HuiElementEditor so
the subclass can reach it, then in the updated() hook push the new schema
directly onto the existing element — no teardown, no re-creation.
* Convert energy panel to use a dashboard strategy
Move the view-selection logic from ha-panel-energy into a dedicated
energy dashboard strategy, consistent with how home/areas/map dashboards
work. The strategy decides which view strategies (electricity, gas,
water, power, overview) to show based on energy preferences.
Extract shared constants into a separate module to avoid circular
dependencies between the panel and view strategies.
* Remove unused energy collection constants from ha-panel-energy
* date-range-picker with cally
* fix timePicker
* Review: backdrop transition
* fix comments
* Add formatCallyDateRange
* Refactor date formatting in date range picker and remove unused styles
* time-input without label
* review
* Use isExternalStatistic helper for consistency
* Remove redundant if condition
We have `band = drawBands && ...`, so there is no point checking if `drawBands` is true inside `if (band && ...)`.
* Skip plotting state value on statistic graph if units mismatch
For example plotting a *F sensor on a *C chart - statistic data will be converted to *C, but the state value will still be in *F so the displayed point is wrong. Similarly if plotting a kW sensor on a W chart, the same is true - statistics get converted to W by recorder, but the state value would still be in kW. In other words the plotted state point is complete nonsense.
If the units of the statistic state don't match the units of the graph, we should not be displaying the value on the graph.
* Remove redundant this.unit check
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Refactor device entities card to use Lit directive for entity rows
Replace the imperative pattern (shouldUpdate hack, _entityRows array,
_renderEntity pushing elements) with a declarative approach using a
reusable Lit directive and repeat for stable keying.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix function name and padding issue
* Recreate on domain change, otherwise update
* Prettier
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Add entity name alias toggle and drag-to-reorder aliases in voice settings
* Fix reorder
* Update src/panels/config/voice-assistants/entity-voice-settings.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Use map instead of repeat
* Improve key
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add scrollbar support for cards with fixed grid row height
* Fix default sizing
* Add warning for card that doesn't support resizing well
* Remove not used explanation
* Preserve entity unit_of_measurement in gas and water flow rate badges
The gas and water total badges on the energy dashboard Now tab previously
converted all flow rate values to L/min and then formatted them as either
L/min or gal/min based on the unit system. This meant entities reporting
in m³/h or other units always displayed incorrectly.
Now the badges preserve the unit_of_measurement from the entities. If all
entities share the same unit, the raw values are summed directly. If they
differ, values are converted through L/min as an intermediate and displayed
in the first entity's unit.
* Extract shared computeTotalFlowRate to energy.ts
* Rescale Y-axis on chart zoom via custom AxisProxy filterMode
Patch ECharts' AxisProxy.filterData to support a "boundaryFilter" mode
that keeps the nearest data point outside each zoom boundary while
filtering distant points. This lets ECharts natively rescale the Y-axis
to the visible data range without causing line gaps at the zoom edges.
* Add tests for ECharts AxisProxy patch internals
Verify that the ECharts internals our boundaryFilter patch relies on
still exist (filterData, getTargetSeriesModels on AxisProxy prototype),
and test the patch behavior: delegation for other filterModes, early
return for non-matching models, and correct boundary-preserving filtering.
* Update comment
* Make favorites UI reusable
* Setup cover favorites
* Fix
* Make generic
* Remove
* Move
* Add type for keys
* Remove
* Move
* Types
* Types
* Changes for tilt position
* Cleanup
* Add missing options
* Replace cover preset features with favorites features
Editor points to more info instead of allowing cusomisation of feature
* Fix drag
* Remove learn more
* Add domains with favorites shared data
* Support recent additions: reset and copy favorites
* Move favorites logic into new file, futureproof for new domains
* Await all
* Refactor
* Use copy for primary action
* Allow empty lists
* Rename
* Use better ally labels
* Move favorites options above and use divider
* Move
* Use proper DOM types
* Use proper type
* Use proper types
* Cleanup
* Type from param
* Center align label
* Only show labels if both show
* Switch date picker to cally calendar-date
* Remove app-datepicker styles from date picker dialog
Clean up unused CSS overrides in ha-dialog-date-picker.
Remove custom properties, focus/body rules, and responsive media
queries for app-datepicker and calendar-date so the component uses
upstream defaults and avoids duplicate styling
* Review
* Apply suggestion from @MindFreeze
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Fix date parsing in HaDialogDatePicker to handle ISO string format
* Update src/components/ha-dialog-date-picker.ts
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Remove filter for unstable app stages
* Show stage in app store repository view
* Increase size of cards to accomadate badges
* Add stage to installed apps, update style
* Make "Search" consistent, "Search apps" not needed in this context
* Remove show advanced mode logic for app visibility
* Add margin to .addition
* Remove [deprecated] from app page title also
* Use common helper
Correct Statistic Picker _getAdditionalItems
This should be a lambda function saved to a property, not a method. Otherwise when called the "this" is the caller not the statistic picker. This was causing the Statistic Card entity picker to load blank.
* Initial implementation of Matter lock pin management and events.
- Implement lock codes
- Implement lock events
- Implement lock schedules and guest codes
* Initial implementation of Matter lock pin management and events.
- Implement lock codes
- Implement lock events
- Implement lock schedules and guest codes
* Initial implementation of Matter lock pin management and events.
- Implement lock codes
- Implement lock events
- Implement lock schedules and guest codes
* - Copilot fixes
* - Requested improvements on how the UI screens render including:
- Cancel button location
- Alignment of delete icons and buttons
* Updates to support new PR for backend
* Update as per PR comments
* Fixes to align to new backend design.
* Fixes for user deletion
* Fixes for PR comments
* Delete test/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json
* Remove unused code
* Updates with review feedback
* PR Comments
* Fixed linting error
* Fixes for new dialog changes
* Added debugging for errors, aligning to other areas where this is used.
---------
Co-authored-by: Wendelin <12148533+wendevlin@users.noreply.github.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add date selection keys to statistics-graph editor
Add support for the `energy_date_selection` and `collection_key` entires in the visual statistics-graph card editor, along with validation of the collection key in the statistics-graph's setConfig.
* Add missing option to stats card editor
Was missing the expand_legend config option in the visual editor.
* Tidy statistics graph editor arrangement
1. Group the various settings cleanly.
2. Auto-hide the collections key if energy date picker selection is disabled
3. Auto-hide days to show if a collection is linked
* Add "auto" option for statistics-chart period
When using the energy date picker option, enable the ability to select a period of "auto" which will enable use of the energy systems automatic period selection function.
* Correct hiding days to show
Should be hidden whenever energy_date_selection is true, regardless of collection key to cope with upgrading existing cards for which no key has been set.
* Hide "auto" period on statistics graph card editor
When not using energy, hide the auto option to avoid confusion.
* Swap date selection and collection key order
This keeps the toggle in a consistent location.
* Remove duplicate config key
There is a title? key now in EnergyCardBaseConfig.
* Correct energy_date_selection translation
* Improve collection key description
* Improve terminology for energy card collection
* Improve energy support for statistics card
Rather than setting the period to "energy_date_selection", add an energy_date_selection key to the config to be more consistent. The original configuration option is still supported for backwards compatibility
Update the statistic card visual editor to support energy collection key selection.
* Add statistics card collection key validation
* Apply suggestions from code review
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Remove title from EnergyCardBaseConfig
This was added when the energy card visual editors were created, but not all cards using a collection key need a title. Using Omit to remove it seems to lose the extend of LovelaceCardConfig.
Instead add EnergyCardConfig which is EnergyCardBaseConfig with the title field. This is used for a number of cards to allow them to share the same visual editor without having to list out every one.
* Mark Statistic Period calendar.offset as optional
It is already handled in core as an optional key (defaults to 0), and the statistic card/editor was explicitly omiting the key even though it was declaring it as required.
This removes the need for an error masking cast when converting the deprecated PERIOD_ENERGY to STATISTIC_CARD_DEFAULT_PERIOD.
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
The @rspack/dev-server overlay catches ResizeObserver loop errors as
runtime crashes, showing a full-screen error overlay that blocks
development. These errors are benign — they originate from
lit-virtualizer (used by ha-data-table) and simply mean not all
resize observations could be delivered in a single animation frame.
Add a client.overlay.runtimeErrors filter to the dev server config
that suppresses ResizeObserver loop messages while still surfacing
all real runtime errors.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The gallery mock set hass.auth.data.hassUrl to an empty string, which
caused brandsUrl() to throw when constructing a URL via new URL(base, '').
In production hassUrl is always a valid URL, so the mock now uses
location.origin to match real behavior.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fix media-player mock state attributes for gallery seek UI
Expose media-player capability and state attributes via entity hooks so gallery music mocks render position bars. Keep the domain-hook model and null state attrs when off to match other mocks.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When displaying the "now" value on statistics graphs, don't include a "null" data point for sum/change type graphs, just skip entirely.
Otherwise for you get a messy null data point in the tooltip.
* Correct missing ha-tooltip CSS variable
We were missing a default for the `--wa-tooltip-border-width` variable which meant the arrow from the tooltip disappeared in WA 3.3.1.
* Fix tooltip in ha-slider
Skip fetching hourly statistics when hours_to_show < 1 since hourly
aggregates produce stale outlier points in sub-hour chart windows
(e.g. hours_to_show: 0.1 or 0.05).
Also fix Date object handling in ha-chart-base downsampling bounds
extraction.
* Add common API for energy collection keys
These allow so far for:
1. Creating a valid collection key
2. Validating that a collection key is useable
3. Getting a list of all currently active collection keys
Currently the validation/creation is simply checking the prefix. In time this could be extended to add more validation - e.g. sanitising punctuation/spaces/etc.
Cards configured using a visual editor will in the future ican use these APIs to distinguish between collection keys created manually in YAML/internally by HA from those created by the visual editor.
* Create visual editor for energy date selector
Allow creating date selection cards directly from the lovelace card dialog rather than requiring manual creation.
To aid in this, a date selection editor card has been created to allow using the visual editor. This includes options for setting the vertical opening direction, whether comparison is enabled/disabled, and creating a collection key.
To keep things hopefully more accessible to users, the `energy_` prefix for the collection key can be omitted from the text field. It will be added automatically if necessary. The prefix must be added if editing in the YAML editor.
Validation of the collection key is also performed, providing an error message if the key is invalid.
* Allow visual editors only for UI collection keys
Prevent the visual editors from being used if the collection key doesn't have the correct prefix. This is to avoid breaking existing user dashboards that predate the visual editor.
Additionally use the helper in energy dashboard for stripping the UI prefix.
* Create visual editor for sankey cards
Allow creating energy/water/power sankey cards directly from the lovelace card dialog rather than requiring manual creation.
A sankey chart editor card has been created to allow using the visual editor. This includes setting of all common options for sankey cards including layout, groups, and selection of a collection key.
To keep things simple for users, the visual editor displays the collection_key field as a drop-down menu from which all active collection keys may be selected.
* Create visual editor for energy graph cards
Allow creating energy/solar/gas/water usage graph cards directly from the lovelace card dialog rather than requiring manual creation.
A common graph editor card has been created to allow using the visual editor. This provides a basic set of common properties - currently just title and collection key.
To keep things simple for users, the visual editor displays the collection_key field as a drop-down menu from which all active collection keys may be selected.
* Assign visual editor to compare card
This is not assigned to the lovelace card selector as its not strictly a card, but rather an alert. However it might as well be assigned to the visual editor for consistency.
* Add Power Sources Graph
This was missed when adding other graphs. Currently it shares the same editor which means the optional show_legend key cannot yet be set visually. In time this could be updated.
* Update energy card descriptions
Update descriptions and names of cards in the lovelace card selector to be consistent with the energy card documentation.
* Create visual editor for energy device graph cards
Allow creating device and detailed device graph cards directly from the lovelace card dialog rather than requiring manual creation.
* Pass config type to devices schema
Rather than converting to a boolean, pass in the type. This will make expanding easier if future devices cards are added.
* Add missing fields to Energy Graph Card Editor
Add options to set `show_legend` and `link_dashboard` config fields.
* Add energy gauge visual editing
These need no special configuration, so might as well reuse the generic energy graph card editor.
* Add option to ignore onInput for ha-form-string
For the ha-form-string element on e.g. the card editor dialog, it would be useful for some types of input to not send value changed events for incomplete changes.
Currently the form triggers the event whenever a character is typed/deleted by forwarding onInput event. To avoid this where undesireable, add a new optional schema entry to ignore these events, which if defined and true sees updating only in response to the onChange callback.
For the energy date picker, this will avoid unnecessary creation of collection keys and by extension energy API connections when using the visual editor improving efficiency.
* Disable preview of energy cards in card picker
To avoid excess querying of the backend for energy data when loading the card picker dialog.
* Set default energy collection key to dashboard name
This changes the behaviour so that by default any component without a collection key will be grouped with other elements on their dashboard, but not with elements on other dashboards.
* Add stub config for date picker
To auto-populate a default picker configuration, including current dashboard name as the collection key.
* Add Stub Configs for other Energy Cards
Auto-populate the default parameters and the current dashboards default collection key.
* Add isActive Getter to Energy Collection
* Add findEnergyDataCollection
This will look for an existing data collection but will not create a new one if it doesn't exist.
To help with this, move the logic for creating the connection key name into a function shared between the new findEnergyDataCollection and the existing getEnergyDataCollection.
* Convert energyCollectionKeys to a Set
All entries should be unique, so use set behaviour.
* Fix capitalisation in translations
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Revert unintentionally committed change
* Revert "Add option to ignore onInput for ha-form-string"
This reverts commit 1cae35db25.
* Remove hiding of collection key prefix
For now keep things simple and show the whole prefix as creation will probably be overhauled in the future.
To assist the user, in the date picker, automatically add the required prefix when the user types into the collection key box.
* Use panelUrl directly for default collection keys
* Update src/translations/en.json
Fix typo
Co-authored-by: Norbert Rittel <norbert@rittel.de>
* Ensure energy cards appear at end of card picker
Add a new `sortAtEnd` option which will cause cards with this sort parameter to sink to the bottom of the card picker.
* Remove collection key from stubConfig
Empty is fine, will convert to same default key anyway.
* Make all collection keys text fields
Remove the active energy collection dropdown.
* Revert "Ensure energy cards appear at end of card picker"
This reverts commit 28834aaa55.
* Add (hidden) energy cards to card picker
Merge in changes originally proposed in #23499.
* Resolve Merge Conflicts
* Fix Lint Error
* Update energy card descriptions
Make them consistent with other card descriptions which start with "The <name of card> card shows ...".
* Change Energy Card Descriptions
Fix the descriptions to use `This card` not `The ... card`.
* Change hide_compound_stats Description
Change to 'upstream devices' to match energy config page descriptions.
* Remove superfluous translation
The type field was not intended to be added to the label callback.
* Remove unused collection key exports
* Remove createEnergyCollectionKey
Was helpful when tying into the collection_key field to auto-add the prefix, but so be it.
* Add visual editor to water flow sankey
Can use the same sankey editor as the others. Update the description of energy sankey to better describe what is being displayed and to match the description of water vs water flow sankey.
* Add getStubConfig to water flow sankey
* Add missing water-flow-sankey to validation
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Fix Date Picker Collection Key Localise
* Move Collection Key to end of Visual Editor
Downplay its significance - move it to the end of the list of options.
* Fix default collection key check
Intended behaviour was to check that the panel URL was not empty - defaultKey will always be truthy!
* Add Opening Direction to Date Picker Config
* Omit "inline" opening direction
This breaks the visual editor as the date selection window suddenly popus up in the preview and is uncloseable.
* Update src/panels/lovelace/editor/lovelace-cards.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add visual editor for energy-sources-table
The only energy card now missing a visual editor, create the editor for completeness.
* Add name/description for Energy Compare card
* Add preview mode to energy-compare-card
Otherwise it just appears blank in the card and dashboard editors. In preview it will just use the current date for start/end and not provide the dismiss option just to give an impression of how it will look.
* Add type check in energy-graph-card-editor
* Add documentation link for energy-compare-card
* Add documentation links for energy badges
* Fix value lost in dev merge
* Remove dismiss from compare card preview
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: karwosts <karwosts@gmail.com>
Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>
* Initial plan
* Extract shared automation rows logic into AutomationRowsMixin
Create ha-automation-rows-mixin.ts with common list manipulation methods
(moveUp, moveDown, move, itemMoved, itemAdded, itemRemoved, itemChanged,
duplicateItem, insertAfter, handleDragKeydown, stopSortSelection, getKey)
and shared properties (hass, disabled, narrow, optionsInSidebar,
_rowSortSelected, _clipboard).
Refactor ha-automation-trigger, ha-automation-condition,
ha-automation-action, and ha-automation-option to use the mixin,
eliminating significant code duplication.
Co-authored-by: wendevlin <12148533+wendevlin@users.noreply.github.com>
* Address review feedback: rename to AutomationSortableListMixin, remove _ prefix from protected members, throw in setHighlightedItems
- Rename AutomationRowsMixin to AutomationSortableListMixin
- Rename file to ha-automation-sortable-list-mixin.ts
- Remove _ prefix from all protected methods/properties
- Make setHighlightedItems throw Not implemented error
- Update all 4 component files with new references
Co-authored-by: wendevlin <12148533+wendevlin@users.noreply.github.com>
* Add missing this.items = items in itemChanged to avoid UI jump
The original _conditionChanged had this.conditions = conditions before
fireEvent to update local state and avoid UI jumps. This was lost during
the mixin extraction.
Co-authored-by: MindFreeze <5219205+MindFreeze@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: wendevlin <12148533+wendevlin@users.noreply.github.com>
Co-authored-by: MindFreeze <5219205+MindFreeze@users.noreply.github.com>
* Make "now-12m" use month boundaries
Currently the "Last 12 Months" date function calculates precisely 12 months from the current day. So today is March 10, then it would retrieve April 11 to March 10.
However logically the name implies whole months - i.e. "now" would be "March", so the last 12 months ought to be Apr 1 to March 31.
* Let energy date picker detect 12 Month range
With now-12m changed to mean whole months rather than partial months, we can make the energy date picker nicely detect and render any month range, and also fix the now button so that it can pick a "now-12m" range.
* Use Short Month for Displayed Range
To avoid making the displayed range too large to fit on small screens.
* Move subMonths into calcDate fn not input
Perform both startOfMonth and subMonths as a custom function in calcDate rather than performing subMonths on the input to avoid any wierd timezone issues.
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
Add padding to the #slider element in ha-slider to expand its touch
target to 32px, making sliders easier to interact with on touch devices.
Remove the pointer-events: none workaround on the volume slider in the
media player more-info dialog. This workaround disabled touch interaction
entirely on coarse pointer devices, which is no longer needed now that
the slider has an adequately sized touch target.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Allow trace graph to scroll independently
* Apply independent trace graph scrolling to script trace
Port the independent column scrolling and sticky nav overlay from
ha-automation-trace to ha-script-trace, and add scroll-to-active-node
behavior to hat-script-graph.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Re-encapsulate nav buttons inside hat-script-graph
Move the up/down navigation buttons back into hat-script-graph where they
belong, restoring _previousTrackedNode/_nextTrackedNode as private. Wrap
the graph content in a div.graph-scroll so it scrolls independently while
the button column stays fixed — the same flex-row layout the parent was
using, now self-contained inside the shadow DOM.
This removes the duplicated nav overlay markup and disabled-state logic
from ha-automation-trace and ha-script-trace, and removes the unnecessary
public surface on HatScriptGraph.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Make not-scrollable more specific.
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
Filter hidden entities in common controls section strategy
Match filtering behavior of area/room view strategies by excluding entities
marked as hidden (via hidden_by: user/integration/device) from the common
controls section. This ensures consistency across all auto-generated
dashboard strategies and respects user preferences for entity visibility.
* Fix missed spacing token usage
* Reduce Date Picker Collapse Button Width
Remove unnecessary padding between date icon button and date text and allow next/prev to be shown for 20px narrower screens.
* Reduce calendar icon size for narrow screens
Allows use of screens down to 325px wide before the next/prev buttons are lost.
Given most android screens are >=360px this is a big improvement as before this change the hide limit was 370px.
* Correct missing ha-tooltip CSS variable
We were missing a default for the `--wa-tooltip-border-width` variable which meant the arrow from the tooltip disappeared in WA 3.3.1.
* Fix tooltip in ha-slider
When displaying the "now" value on statistics graphs, don't include a "null" data point for sum/change type graphs, just skip entirely.
Otherwise for you get a messy null data point in the tooltip.
Skip fetching hourly statistics when hours_to_show < 1 since hourly
aggregates produce stale outlier points in sub-hour chart windows
(e.g. hours_to_show: 0.1 or 0.05).
Also fix Date object handling in ha-chart-base downsampling bounds
extraction.
* Update design of app store repositories dialog
* Cleanup
* Move to new page
* Move to new page
* Update label
* Migrate translations
* Add loading state to dialog box
* Create dedicated app store registries page
* Add validation for required fields in ha-auth-flow before submission
* Add reportValidity methods to form components for improved validation handling
* Remove async reportValidity funcs
* Review
* Add audits and yaml mode to more info details
* Reset yaml mode on back
* Use mapped array for state entries
* Typo
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Memoize
* Rename
* Fix
* Format audits in normal mode
* Refactor, dont pass hass
---------
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Add audits and yaml mode to more info details
* Reset yaml mode on back
* Use mapped array for state entries
* Typo
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Memoize
* Rename
* Fix
* Format audits in normal mode
* Refactor, dont pass hass
---------
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Enhance narrow property to reflect changes and adjust header padding for safe area
* Remove safe-area-inset-top for narrow iframe
* handle kiosk mode
* Add flow rate picker to gas, water, and water device energy dialogs
Add optional flow rate (stat_rate) picker to gas source, water source,
and water device configuration dialogs, matching the pattern used for
power tracking in grid/solar/battery sources and energy devices.
- Add stat_rate to GasSourceTypeEnergyPreference and WaterSourceTypeEnergyPreference
- Collect gas/water stat_rate in getReferencedStatisticIdsPower()
- Add flow rate ha-statistic-picker filtered to volume_flow_rate device class
- Move entity help text to picker helper props for cleaner layout
* Apply suggestions from code review
Co-authored-by: Norbert Rittel <norbert@rittel.de>
---------
Co-authored-by: Norbert Rittel <norbert@rittel.de>
* Reorganize ZWave settings
* Next iteration
* Made more consistent with Zigbee settings page
* Update text
* Updates on the provisioned devices page
* Add identifier when you have multiple networks
* Update to force remove button
* Update button text
* Update rebuild text
* Update remove foreign device button text
* Fix scrim closure
* Trigger add todo item dialog via add_item=true search param
* Check supports before opening prompt
* Use in willUpdate
* Add subtitle as context using name of list
* fix styles to prevent oveflow
* use a new variable to define min-width
* pass a "minWidth" property into ha-language-picker
* use a "minWidth" property for ha-generic-picker
* Update ha-language-picker.ts
* pass empty minWidth
* do not set min-width if empty
* add a style for ha-language-picker
* remove a style for ha-language-picker
* add a style for ha-language-picker
* remove min-width
* add a style for ha-language-picker
* Update src/panels/profile/ha-pick-language-row.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* add a gap
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add support for vacuum segment mapping to areas
* simplify, use list item
* Update ha-more-info-view-vacuum-segment-mapping.ts
* review
* review
* Update dialog-vacuum-segment-mapping.ts
* Add option to split antimeridian-crossing path to ha-map
and map card with related editor options
* Remove split antimeridian-crossing option in ha-map
making it the default behavior, as suggested by @karwosts. And remove the option from the map card
* Fix longitudeDifference is zero edge case
* Fix history timeline showing same color for all zones
For person and device_tracker entities, zone states (e.g. "Kitchen",
"Office") all resolved to --state-person-active-color because their
zone-specific CSS variables don't exist and the fallback chain always
landed on the generic active color.
Now zone states only check for an explicitly defined CSS variable
(e.g. --state-person-kitchen-color) and otherwise fall through to the
generic color handler which assigns a unique palette color per zone.
Fixes#14705
* Update src/components/chart/timeline-color.ts
Co-authored-by: Wendelin <12148533+wendevlin@users.noreply.github.com>
---------
Co-authored-by: Wendelin <12148533+wendevlin@users.noreply.github.com>
The old `--ha-animation-base-duration` variable was split into three
separate variables: `--ha-animation-duration-fast` (150ms),
`--ha-animation-duration-normal` (250ms), and
`--ha-animation-duration-slow` (350ms).
Extract CSV dump logic from ha-panel-energy into a reusable
downloadEnergyData() utility in data/energy.ts, and add a
"Download data" button to the period selector's overflow menu.
This makes the download accessible from both the energy panel
and energy cards on regular dashboards.
* Replace filled help icon with outlined version across frontend
Updated help icon from mdiHelpCircle to mdiHelpCircleOutline for
visual consistency across the application. This change affects help
tooltips and icon buttons in configuration panels, dialogs, and
Lovelace editor components.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Update src/panels/config/ha-panel-config.ts
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Smarter floor/area grouping for energy sankey cards
Instead of hiding floors and areas whenever any device has an upstream
parent (included_in_stat), check whether each parent shares the same
area as its children. Only disable grouping when a mismatch is found.
* Allow missing area for parent or child
---------
Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>
Add panel.developer_tools as an additional translation key for the developer tools in `configSections`. Otherwise the title of the page is simply Settings.
* Correct options reset in ha-selector-select
Separate out the handling of resetting for select elements in `ha-selector-select` from the main value changed callback.
This fixes a bug that prevented `ha-selector-select` elements operating in `list` mode from updating their value due to recent changes in the reset logc.
* Split radio changed callback for consistency
Correct hardcoded collection keys
Some elements in the energy overview strategy, and all in the energy view strategy were using hardcoded literals rather than the assigned collection key.
Fix bug in energy-period-selector
When the dropdown item for compare is disabled, the click callback still fires, allowing compare to be selected. So remove the callback for disabled buttons.
Also fix a slight visual bug in the ha-ripple border radius.
* Replace ha-divider with wa-divider in onboarding and dashboard components
* Refactor styles in onboarding-welcome component for consistency and responsiveness
* Improve PR template and add AI agent instructions
Move screenshots section closer to proposed change for better flow, and add instructions in copilot-instructions.md to ensure AI agents use the PR template when creating pull requests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Instruct AI agents to not check checklist items on behalf of the user
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remind user to add screenshots for UI changes after creating PR
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Hide actions in attributes view
Simplify the isDefaultView condition to hide actions when child views are shown in the more-info dialog.
Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
* Remove keepHeader option from ChildView interface
Completely removes the keepHeader property which was used to keep the header visible in child views. This simplifies the logic and ensures actions are consistently hidden across all child views, including the attributes view.
Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
* Migrate config-apps dialog(s) to wa
* Apply suggestions from code review
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Use standard buttons
* Use back action
* Remove extra close action
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add repairs and updates cards to home dashboard overview
Add two new cards to the "For You" section of the home dashboard that display
links to repairs and updates when there are active issues or available updates.
Both cards are only visible to admin users and hide when empty.
https://claude.ai/code/session_013NTgs1U9x59uaEJs1smy8i
* Fix navigation and visibility
* Reorder
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Normalize SI unit prefixes in distribution card proportions
* Extract SI prefix normalization to shared utility with tests
Moves normalizeValueBySIPrefix to src/common/number/ so it can be
reused. Replaces the inline method in the distribution card and the
switch statement in getPowerFromState (energy.ts).
* fix margin-top for ha-entity-picker
* Apply suggestion from @MindFreeze
* use ha-space var
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* fix unit for monetary
* fix for span
* formatEntityStateToParts() does not return "order"
* get unit from formatEntityStateToParts()
* resolving conflicts
* resolving conflicts
* some styling
* Move AI task to its own page and change General into Home information
* Fixed unused state properties for form submission states, removed unused imports and obsolete CSS, replaced hardcoded pixel values with spacing tokens, and added error handling for the map component.
* Update src/panels/config/core/ha-config-section-general.ts
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* add formatEntityStateToParts
* add formatEntityStateToParts
* use formatEntityStateToParts
* add formatEntityStateToParts
* use formatEntityStateToParts
* add formatEntityStateToParts
* add formatEntityStateToParts
* add computeStateDisplayToParts
* update for monetary
* fix a test for monetary
* fixed test for monetary
* do not include "order" into result
* do not include "order" into result
* do not include "order" into result
* do not include "order" into result
* do not include "order" into result
* do not include "order" into result
* do not include "order" into result
* simplify
* ensure less conflicts in future merges
* Refactor monetary computing
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
* Migrate profile dialog(s) to wa
* Make sure code is entered before submit is allowed
* Refactor dialog
* Remove unused params
* Pass existing names and validate name is not already used
* Reduce cleanup on show
* Make QR image larger
* max width
* Fix
* Remove extra event fire
* Make params required
* cleanup
* Cleanup
* Fix
* Fix
* Update @home-assistant/webawesome to version 3.2.1 and refactor ha-dropdown integration in automation picker
* review
* revert wa update
* Update @home-assistant/webawesome to version 3.0.0-ha.2 in yarn.lock
* Add splitNumber option to monthly ECharts
When there are a small number of bars (<=3) for monthly data, set the splitNumber parameter to force the date x-axis to show whole months.
* Add axis tick fomratting for short months
This ensures that the month format is consistent between 2/3 month and longer ranges.
* Avoid calling getSuggestedMax twice
* Fix another case of power chart cutting off last hour of data
The previous fix only solved the problem for 5-minute data, not hourly or daily. This should solve the issue regardless, and allows the energy chart to have other line-based plots in the future.
* Update other uses of getSuggestedMax()
* Fix statistics-chart Last Period Rendering
1. When appending the "current state" value, if the current time intersects with the final period, we can end up with the chart folding back on itself. This is fixed by ensuring for the final period we push the earlier of the statistic end time and the display end time (which is in turn limited to now).
2. Always close off the last data point at the chart end time. Otherwise for line charts, the final period doesn't get rendered.
* Remove unused monthStyle formatter.
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Rename getSuggestedMax function parameter in energy chart
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Document magic numbers in montly energy chart
* Make padding a constant for clarity.
* Explain the purpose of splitNumber.
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
When HistoryStream.processMessage() prunes expired history and preserves
the last expired state as a boundary marker, it updates lu (last_updated)
but not lc (last_changed). Chart components use lc preferentially, so
when lc is present the boundary point gets plotted at the original stale
timestamp far to the left of the visible window. Delete lc from the
boundary state so the chart uses the corrected lu timestamp.
* fix padding & margin
* fix margin for icon
* fix margin for icon
* fix margin for image
* use ha-space-4
* use --ha-space-4
* use ha-space-1
* use ha-space-4
* fix styles
* fix a gap between logos
* fix a gap between logos
* fix right margin for logo
* fix right margin for logo
* show icons in flex
* remove unneeded style
* add right margin for logo
* Fix Discord link for designers
Updated Discord link for designers to the correct channel.
* Update Discord link for designers in home.markdown
* Update gallery/src/pages/concepts/home.markdown
Co-authored-by: Aidan Timson <aidan@timmo.dev>
---------
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
Co-authored-by: Aidan Timson <aidan@timmo.dev>
* Use Suggested Period for Energy Tooltip
Ensure the tooltips for energy charts match energy data grouping by using getSuggestedPeriod rather than hardcoded differenceInDays.
* Make getSuggestedMax return Date()
Currently used in two places - for energy charge ECOption, and for a statistics-graph. In both places a Date is expected rather than a Number. No point converting to a Number with getTime() when they are immediately converted back to a Date.
* Add support for context in quick bar
* Send context from device page
* Use interface
* Prefetch and pass related result to dialog instead of loading on show (load on event call)
* Apply suggestion from @MindFreeze
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add error
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Fix
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Allow HaDropdownSelectEvent to pass the value type
* Fix potential type conflict
* Add clarification of type
* Fix type
* Create new type for ha-select
* Refactor
* Add clearable to only handle undefined when needed
* Value changed event
* Use clearable type
* Remove
* Profile section refactor
* Protocols refactor
* More config refactor
* Entity rows 1
* Remove unrelated
* Remove ValueChangedEvent changes (moved to separate branch)
* Revert
* Add
* Revert unrelated or extra checks
* Restore
* Restore
* Restore
* Update src/components/ha-conversation-agent-picker.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Show Year on Energy Dashboard Date Picker
When the selected range (start and/or end) is in a different year from the current one, show the year for that date.
* Correct Energy Picker Year Detection
Ensure that when checking if a range is a full year, the endpoints must be in the same calendar year.
Otherwise selecting a 12-month range that spans into two years would be treated as all being a single year.
* Add natural wrapping spans for date range
Encourage the range to wrap nicely if the text is too large for the toolbar.
* Use en dash between date range
The en dash character is usually used for date ranges rather than the
standard hypen
* Fix Now Button Rendering on Resize
Host element needs to be `display:block` no the default `display:inline` for the ResizeObserver to work.
* Remove P tag from date picker range label
Removing the paragraph tag and adding text-align center seems to produce cleaner wrapping of the date range on narrower screens.
* Allow Overriding HA Dialog Header Font Size
For the title and subtitle, variables can not be set in the host to control the font size. This is useful in cases where the heading is used on a narrow card and the title needs to be smaller.
* Add property to manually trigger opening of ha-date-range-picker
For cases where there is a desire to click in regions other than the calendar icon to have the date picker open.
* Add no-padding option to ha-dialog-header
When used within cards already containing padding, the extra padding may be unnecessary.
* Use ha-dialog-header for Energy Period Selector
Place the day/month in the title and the year in the subtitle. This gives a cleaner more consistent look.
* Remove Unnecessary IDs
Came from copy-paste from another example.
* Apply Typing to Date Picker Methods
* Move selector buttons to overflow if too small
When the period selector gets too small to fit everything (very narrow screens, or card in grid), then move the next/previous buttons to the overflow menu.
The now button exists on the overflow menu now too when in narrow mode.
* Change Date Picker openPicker to open()
Makes far more sense as a method not a property.
* Revert Padding Change to ha-dialog-header
* Simplify Energy Selector Overflow Buttons
Improve button labelling to just use index, avoiding possible localisation issues of using the label.
Simplify the interface to remove unnecessary fields.
* Update Button Collapse Width for Picker
Increase to 300px now that padding of dialog header is present.
* Fix Imports in Energy Period Selector
* Fix whitespace
* Properly leverage slots in ha-dialog-header
Make proper use of the actionItems slot for the control buttons to keep them properly contained as the date selector is resized.
* Move clickable date to title/subtitle elements
In moving the control buttons into the actionItems slot, we can no longer use the whole ha-dialog-header element as a clickable region for opening the date selector. Frankly this is not a bad thing as it meant it was not possible to nicely hover/highlight the date.
Instead we now make the title/subtitle clickable elements. This allows adding a nice hover effect and cursor pointer effect.
* Add option to make ha-dialog-header content clickable
* Use clickable dialog header in period selector
This way the whole title area is the hit point rather than the title and subtitle text individually.
* Remove ha-dialog-header from period selector
It's not a dialog, so it makes no sense to use that element. Instead recreate just the necessary parts to make it stylistically simiar. The reality is this is not much extra code, and it should make maintaining easier.
* Revert changes to ha-dialog-header
* Style Date Range as Input Field
* Use ha-ripple Effect
* Remove Unnecessary Tooltip Option
Unused, so remove the extra complexity.
* Remove more unused imports
* Force energy panel picker open direction
Now that the button is on the left, we need it to open to the right to avoid colision with the sidebar. Add the option to force the direction.
* Rename property to openingDirection for consistency
* Create data-table-columns.ts
* Update data-table-columns.ts
* move a code for columns into separate functions
* move a code for columns into separate functions
* move a code for columns into separate functions
* move a code for columns into separate functions
* move a code for columns into separate functions
* move a code for columns into separate functions
* move a code for columns into separate functions
* move a code for columns into separate functions
* fix a translation key
* move commonly used translations to generic
* remove a translation for another PR
* restore "domain" translation for while
* resolving conflicts
* resolve conflicts
* resolving conflicts
* resolving conflicts
* resolving conflicts
* resolving conflicts
* fix conflicts
* fix conflicts
* fix import
* fix import
YAML dashboards are defined in configuration files and cannot be
modified or deleted through the UI. This change ensures the edit
and delete actions are only shown for storage-mode dashboards.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
When edit mode is toggled, existing cards are moved into edit mode
wrappers. This triggers connectedCallback which was calling _setupChart
synchronously before the browser recalculated CSS inheritance. The
chart would read stale CSS custom properties, resulting in low-contrast
axis labels in dark theme.
Defer _setupChart using afterNextRender to allow the browser to complete
layout and CSS recalculation first. Guard conditions prevent issues with
rapid connect/disconnect cycles.
YAML dashboards are defined in configuration files and cannot be
modified or deleted through the UI. This change ensures the edit
and delete actions are only shown for storage-mode dashboards.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Improved HTML presentation table support to ha-markdown, compatible with companion app on android and iOS
- Support valign attribute for vertical alignment (top, middle, bottom, baseline)
- Support border attribute for cell borders (0, 1, 2, 3px)
- Set default styling for presentation tables (no borders, no padding)
- Use CSS variables for customization
- Include future-proof @supports rule for attr() function
- Maintain backward compatibility with existing markdown tables
* Merge Long Term Statistics for Power Sensors in Energy Dashboard
When using 5minute data for the power sources chart, data would be missing if the selected range was beyond the short term statistics limit. This change takes data from long term statistics and merges it in to the power sources data if the short term statistics doesn't extend far enough back for the selection.
* Skip for zero-length power statistics
Prevent out of bounds array access if power statistics has no entries.
Reorganizes the User settings card on the profile page to show more
frequently used settings first:
- Default dashboard
- Customize sidebar
- Advanced mode (admin)
- Entity ID picker (admin)
Then adds a divider followed by localization settings:
- Language, number format, time format, date format, time zone, first weekday
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Live inline template previews
* Opt out for markdown, no fullscreen
* flask/flaskOff
* styling
* mdiBug
* Update src/components/ha-selector/ha-selector-template.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* resub on connect
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Set home as default dashboard
* Handle lovelace to home redirect
* Remove special url path for lovelace
* Rename special rules for lovelace dashboard
* Update src/panels/lovelace/ha-panel-lovelace.ts
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Handle default config
* Fix default section
* Early check for lovelace panel
---------
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Enhance calendar entity options with color support and update UI components for color selection
* Add loading spinner to calendar components and improve event loading state management
* simplify
* Remove redundant color change check in HuiCalendarCard update logic
* Add color validation utility and update calendar components to use it. color need to be hex strings
* Adds logic to reset the _eventsLoaded state to false when either the card configuration or the entity registry changes, ensuring events are reloaded appropriately.
* remove casting
* Use SubscribeMixin for entity registry subscription
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Add sections to navigation picker
* Use PANEL_DASHBOARDS to assign system dashboards to the dashboards section
* Clean
* Add context based related section
* Add integration icon for related device
* Add floor and sort
* Consolidate and cleanup
* Reuse type
* Add context check and catch findRelated errors
* Remove floor from set, use area
* Memoize related updates
* Log error
* Remove
* Fix icon path usage
* Update dependency tar to v7.5.4 [SECURITY]
* Update dependency tar to v7.5.4
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* add "hideUnit" to formatEntityAttributeValue()
* add "hideUnit" to formatEntityAttributeValue()
* add "hideUnit" to computeAttributeValueDisplay()
* use formatEntityAttributeValue() with "hideUnit"
* fix logic for "hideUnit" for ha-attribute-value
* prettier
* remove hideUnit from formatEntityAttributeValue()
* revert to the initial code
* revert to the initial code
* revert to the initial code
* use formatEntityAttributeValuePart() to get a value w/o unit
* use formatEntityAttributeValueToParts() instead of formatEntityAttributeValuePart()
* fix a value
* fix name of a const
* Update src/components/ha-attribute-value.ts
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
* Prettier
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
Refactor dropdown menus to use ha-dropdown and ha-dropdown-item components
- Replaced ha-md-button-menu and related components with ha-dropdown and ha-dropdown-item in dialog-edit-sidebar, hass-tabs-subpage-data-table, ha-config-devices-dashboard, ha-config-entities.
- Updated event handling to accommodate new dropdown structure.
- Added wa-divider for better visual separation in dropdowns.
- Improved accessibility and usability of dropdown menus across various components.
* aligning ui of dialog and media bar
* refactored media progress logic to be reusable
* updating track times to be consistent with music assistant
* WIP aligning volume slider with music assistant
* migrating to ha-dropdown
* showing volume tooltip on touch devices
* Fixed volume slider going to 100 randomly
* Added scrolling support
* Refactored volume control logic
* Add horizontal stacked bar card
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Refactor to use ha-segmented-bar component
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Fix spacing when heading is empty
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Rename card from horizontal-stacked-bar to distribution
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Fix remaining translation references
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Add fixed row setting to prevent layout issues
* Add spacing between bar and legend
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* PR review changes
* Improve accessibility and performance
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
Migrate four components from ha-button-menu to ha-dropdown:
- error-log-card: overflow menu with log view switching
- system-log-card: overflow menu for full logs
- ha-filter-categories: category edit/delete actions
- ha-form-optional_actions: add interaction dropdown
Changes:
- Replace ha-button-menu with ha-dropdown
- Replace ha-list-item with ha-dropdown-item
- Update event handlers from @action to @wa-select
- Use value-based selection instead of index-based
- Add proper accessibility labels to trigger buttons
Part of #26537
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* Fixed modal visibility issue in settings -> areas -> edit room
* converting both components to use ha-wa-dialog
* removed z-index from ha-wa-dialog
* fixed hardcoded .open in media browser dialog and remove unnecessary z-index CSS variables
* Migrate dialog-automation-save to ha-wa-dialog
* Migrate dialog-automation-mode to ha-wa-dialog
* Migrate dialog-paste-replace to ha-wa-dialog
* Migrate dialog-new-automation to ha-wa-dialog
* Migrate ha-device-automation-dialog to ha-wa-dialog
* Add "Commands" title to quick bar translations in English
* Enhance QuickBar dialog handling and localize commands title
* add nav icons
* Add icons and styles and separate navigation from commands
* handle non admin
* Add areas
* Fix import and shortcuts
* Restructure
* remove area sort
* move keys
* area search keys review
* Fix adaptive dialog slots without header
* Design review
* Review marcin
* Fix safe area bottom
* Fix ios focus
* Make it clearable
---------
Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>
* Moved theme functionality and persistence target
* fixed type mismatch
* using SubscribeMixin
* returning no-op unsub to handle rejection path
* added notification if theme save fails
* using hass instead of state
* renamed theme variable for clarity
* Added toast if theme pref is unavailable
* Always saving theme to localStorage
* Removing localStorage fallback
* Updating local cache when new theme comes from core
ha-device-info-matter: rename 'Device info' to 'Matter info'
Fixes duplicate "Device info" section name when viewing Matter devices.
The nested expansion panel now displays "Matter info" consistent with
other integrations (e.g., ZHA uses "Zigbee info", Z-Wave uses "Z-Wave info").
Also adds a gallery demo for testing the component.
* Fixed modal visibility issue in settings -> areas -> edit room
* converting both components to use ha-wa-dialog
* removed z-index from ha-wa-dialog
* fixed hardcoded .open in media browser dialog and remove unnecessary z-index CSS variables
Summary of the fix:
The Problem:
now-12m was selecting the calendar year (Jan 1st to Dec 31st) instead of the last 12 months from now
It used startOfMonth and endOfMonth, which snap to month boundaries
The Solution:
Changed to match the now-7d and now-30d pattern
Now uses subMonths(today, 12) for start and subMonths(today, 0) (which equals today) for end
This gives exactly the last 12 months (365/366 days) ending at the current time
The Fix:
// Before (WRONG):calcDate(subMonths(today, 12), startOfMonth, ...) // Jan 1st of 12 months agocalcDate(subMonths(today, 1), endOfMonth, ...) // Dec 31st of last month// After (CORRECT):calcDate(today, subMonths, hass.locale, hass.config, 12) // 12 months ago from nowcalcDate(today, subMonths, hass.locale, hass.config, 0) // now
* add "show not installable option" to update page
* split updates by install feature and show always
* fix
* fix "no update" panel
* use `nothing` instead of empty string
* re-add `outlined` to ha-card
* keep title, use different for not-installable updates
* Add area and device context to media player join dialog
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Add memoization to avoid recomputing display data
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
When entity names are too long, the header text would push the three-dot menu icon off the right edge of the screen, making it inaccessible. This fix ensures the menu icon remains visible by:
- Adding min-width: 0 to the header slot to allow proper flexbox shrinking and text wrapping
- Adding flex-shrink: 0 to the icons container to prevent it from being compressed
The fix uses standard flexbox properties that work universally across all screen sizes, ensuring the menu icon stays visible on both mobile and desktop views.
* create Assistants filter
* render logo and name
* make the Voice assistants filter work
* integrate cloudStatus
* code clean-up
* remove cloudStatus
* bugfix
* remove console log
* remove cloudstatus
* set ha-list clientHeight to 49px
* refactor: polish automation dialog UI and component styles
* Revert "Merge pull request #1 from marcinbauer85/fix/ui-polish-automation-dialog"
This reverts commit c2c47197e2, reversing
changes made to 49bed5e6a6.
* Add shortcuts dialog shortcut and use Unicode command character
* Update shortcut description text
* Fix statistics-graph energy-date mode end-time with 5min statistics
* don't modify date/hour for 5minute graph
* suggestedMax use period instead of days
* go back to string types
* Remove duplicate custom items, allow default from picker
* Memoize
* Memoize
* Memoize func
* Don't show no matching item when custom value is allowed
* Remove no items found label now unused
* Cleanup unused translations
* Restore used value
* Remove no items found label now unused
* Remove redundant comment
* Remove searchFn
* Ensure custom value isnt identical
* Fix duplicated value
* Fix duplicated value
* Use additional items for entity state content
* Fix duplicate values
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
* Initial plan
* Add template target display with neutral badge
- Import mdiCodeBraces icon and isTemplate function
- Check if target ID is a template before checking if it exists
- Display grey {} icon with "Template" text for templated targets
- Add "template" translation key to target_summary
- Prevents misleading red "Unknown area" badge for template targets
Co-authored-by: piitaya <5878303+piitaya@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: piitaya <5878303+piitaya@users.noreply.github.com>
* Support multiple adapters in bluetooth panel
* Move connection allocations up
* Make it tabs
* Add icons
* Revert "Add icons"
This reverts commit e338b6e578.
* Revert "Make it tabs"
This reverts commit d1b19d5c3e.
* Fix scanner matching and no active connection slot support
* Update src/panels/config/integrations/integration-panels/bluetooth/bluetooth-config-dashboard.ts
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Support multiple adapters in bluetooth panel
* Move connection allocations up
* Make it tabs
* Add icons
* Revert "Add icons"
This reverts commit e338b6e578.
* Revert "Make it tabs"
This reverts commit d1b19d5c3e.
* Fix scanner matching and no active connection slot support
* Update src/panels/config/integrations/integration-panels/bluetooth/bluetooth-config-dashboard.ts
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Remove duplicate custom items, allow default from picker
* Memoize
* Memoize
* Memoize func
* Don't show no matching item when custom value is allowed
* Remove no items found label now unused
* Cleanup unused translations
* Restore used value
* Remove no items found label now unused
* Remove redundant comment
* Remove searchFn
* Ensure custom value isnt identical
* Fix duplicated value
* Fix duplicated value
* Use additional items for entity state content
* Fix duplicate values
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
* Fix statistics-graph energy-date mode end-time with 5min statistics
* don't modify date/hour for 5minute graph
* suggestedMax use period instead of days
* go back to string types
* Initial plan
* Add template target display with neutral badge
- Import mdiCodeBraces icon and isTemplate function
- Check if target ID is a template before checking if it exists
- Display grey {} icon with "Template" text for templated targets
- Add "template" translation key to target_summary
- Prevents misleading red "Unknown area" badge for template targets
Co-authored-by: piitaya <5878303+piitaya@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: piitaya <5878303+piitaya@users.noreply.github.com>
* Update dependency globals to v17
* Add global definitions for audioWorklet in ESLint configuration
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Migrate entity state content picker to generic picker
* Use similar primary/secondary as name picker
* Remove redundant func
* Memoize func
* Add custom value label
* Format
* Remove
* Remove renderer, use better translation
* Format
* Cleanup import
* Remove search labels where unused
* Merge
* Use weather tile card and energy summary in home dashboard
* Only use sidebar on desktop
* Hide sidebar on mobile
* Rename widget to summaries
* Improve commonly used
* Feedbacks
* Use key instead of section
* Switch energy now chart to watts
* Add kW
* Scale formatted value based on powers of 1000
1000 W -> 1 kW
W → kW → MW → GW → TW
* Explainers
* Use 3 dp for kW+ and 0 for W
* Add non-integer test
* Automation editor show targets within rows
* review
* Fix expandable row icons
* Use state icon instead of state-badge
* Fix target wrap
* Use default font weight for automation rows
* Remove comma from targets in row
* Sticky period selector for energy dashboard
* Blur view when date picker is open
* move to hui-root via slot
* fix scrollbar
* Use dialog backdrop and define default
* Set energy selector position to fixed
* format
---------
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
* use a new variable for width & height
* use a new variable for width & height
* fix styles & creation of marker
* iconSize -> markerIconSize (for zones)
* Apply suggestion from @MindFreeze
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* format
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Energy strategies to refresh energy collection which allows to be used in custom dashboards
* Update src/panels/energy/strategies/energy-overview-view-strategy.ts
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* Only refresh if no prefs
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
When users configure energy with only device consumption (no
grid/solar/battery/gas/water sources), the dashboard would redirect
to /config/energy instead of displaying. This occurred because
_generateLovelaceConfig() returned an empty views array.
The fix adds hasDeviceConsumption check and includes ENERGY_VIEW
when device consumption is configured, since energy-view-strategy
already supports device consumption cards.
* allow "number" names to be processed
* Apply suggestion from @MindFreeze
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
@@ -22,11 +22,13 @@ You are an assistant helping with development of the Home Assistant frontend. Th
```bash
yarn lint # ESLint + Prettier + TypeScript + Lit
yarn format # Auto-fix ESLint + Prettier
yarn lint:types # TypeScript compiler
yarn lint:types # TypeScript compiler (run WITHOUT file arguments)
yarn test# Vitest
script/develop # Development server
```
> **WARNING:** Never run `tsc` or `yarn lint:types` with file arguments (e.g., `yarn lint:types src/file.ts`). When `tsc` receives file arguments, it ignores `tsconfig.json` and emits `.js` files into `src/`, polluting the codebase. Always run `yarn lint:types` without arguments. For individual file type checking, rely on IDE diagnostics. If `.js` files are accidentally generated, clean up with `git clean -fd src/`.
### Component Prefixes
-`ha-` - Home Assistant components
@@ -154,7 +156,7 @@ try {
- **Use CSS custom properties**: Leverage the theme system
- **Use spacing tokens**: Prefer `--ha-space-*` tokens over hardcoded values for consistent spacing
- Spacing scale: `--ha-space-0` (0px) through `--ha-space-20` (80px) in 4px increments
- Spacing scale: `--ha-space-1` (4px) through `--ha-space-20` (80px) in 4px increments
- Defined in `src/resources/theme/core.globals.ts`
- Common values: `--ha-space-2` (8px), `--ha-space-4` (16px), `--ha-space-8` (32px)
- **Mobile-first responsive**: Design for mobile, enhance for desktop
@@ -192,13 +194,13 @@ The View Transitions API creates smooth animations between DOM state changes. Wh
- **Utility wrapper**: `src/common/util/view-transition.ts` - `withViewTransition()` function with graceful fallback
- **Real-world example**: `src/util/launch-screen.ts` - Launch screen fade pattern with browser support detection
- **Animation keyframes**: `src/resources/theme/animations.globals.ts` - Global `fade-in`, `fade-out`, `scale` animations
1. Always use `withViewTransition()` wrapper for automatic fallback
2. Keep transitions simple (subtle crossfades and fades work best)
3. Use `--ha-animation-base-duration` CSS variable for consistent timing
3. Use `--ha-animation-duration-*` CSS variables for consistent timing (`fast`, `normal`, `slow`)
4. Assign unique `view-transition-name` to elements (must be unique at any given time)
5. For Lit components: Override `performUpdate()` or use `::part()` for internal elements
@@ -212,13 +214,6 @@ By default, `:root` receives `view-transition-name: root`, creating a full-page
- Only one view transition can run at a time
- **Shadow DOM incompatibility**: View transitions operate at document level and do not work within Shadow DOM due to style isolation ([spec discussion](https://github.com/w3c/csswg-drafts/issues/10303)). For web components, set `view-transition-name` on the `:host` element or use document-level transitions
- Use HTTPS - All external resources must use HTTPS
- CSP compliance - Ensure code works with Content Security Policy
### Pull Requests
When creating a pull request, you **must** use the PR template located at `.github/PULL_REQUEST_TEMPLATE.md`. Read the template file and use its full content as the PR body, filling in each section appropriately.
- Do not omit, reorder, or rewrite the template sections
- Check the appropriate "Type of change" box based on the changes
- Do not check the checklist items on behalf of the user — those are the user's responsibility to review and check
- If the PR includes UI changes, remind the user to add screenshots or a short video to the PR after creating it
- Be simple and user friendly — explain what the change does, not implementation details
@@ -10,7 +10,9 @@ As a community, we are proud of our logo. Follow these guidelines to ensure it a

Please note that this logo is not released under the CC license. All rights reserved.
<ha-alert alert-type="info">
This logo is trademarked and the property of the Open Home Foundation. This means it is not available for commercial use without express written permission from the foundation. We regard commercial use as anything designed to market or promote a product, software or service that is for sale. Please contact <a href="mailto:partner@openhomefoundation.org">partner@openhomefoundation.org</a> for further information
@@ -18,8 +18,8 @@ The Home Assistant interface is based on Material Design. It's a design system c
We want to make it as easy for designers to contribute as it is for developers. There’s a lot a designer can contribute to:
- Meet us at <a href="https://www.home-assistant.io/join-chat" rel="noopener noreferrer" target="_blank">devs_ux Discord</a>. Feel free to share your designs, user test or strategic ideas.
- Meet us at <a href="https://www.home-assistant.io/join-chat-design" rel="noopener noreferrer" target="_blank">Discord #designers channel</a>. If you can't see the channel, make sure you set the correct role in Channels & Roles.
- Find the latest UX <a href="https://github.com/home-assistant/frontend/discussions?discussions_q=label%3Aux" rel="noopener noreferrer" target="_blank">discussions</a> and <a href="https://github.com/home-assistant/frontend/labels/ux" rel="noopener noreferrer" target="_blank">issues</a> on GitHub. Everyone can start a new issue or discussion!
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.