From c0e9c3b9dc2a98ba7f2f5d5f1c9bec7e76fc10f7 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Wed, 2 Jul 2025 04:43:06 -0700 Subject: [PATCH 1/8] Fix glitchy 'show' checkboxes on integration page (#26021) --- .../config/integrations/ha-config-integrations-dashboard.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/panels/config/integrations/ha-config-integrations-dashboard.ts b/src/panels/config/integrations/ha-config-integrations-dashboard.ts index 3cb99481cd..f3a8e1eb4a 100644 --- a/src/panels/config/integrations/ha-config-integrations-dashboard.ts +++ b/src/panels/config/integrations/ha-config-integrations-dashboard.ts @@ -406,11 +406,7 @@ class HaConfigIntegrationsDashboard extends KeyboardShortcutMixin( ${!this._showDisabled && this.narrow && disabledConfigEntries.length ? html`${disabledConfigEntries.length}` : ""} - + Date: Tue, 1 Jul 2025 21:46:58 +0200 Subject: [PATCH 2/8] Add missing area helper (#26022) --- src/components/ha-area-picker.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/ha-area-picker.ts b/src/components/ha-area-picker.ts index 1f14568261..9b18057808 100644 --- a/src/components/ha-area-picker.ts +++ b/src/components/ha-area-picker.ts @@ -366,6 +366,7 @@ export class HaAreaPicker extends LitElement { .hass=${this.hass} .autofocus=${this.autofocus} .label=${this.label} + .helper=${this.helper} .notFoundLabel=${this.hass.localize( "ui.components.area-picker.no_match" )} From 3d75831623eee213f8aafa09bb76fd71a7b0a0dc Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Tue, 1 Jul 2025 21:47:20 +0200 Subject: [PATCH 3/8] Add missing domain icon import in area controls (#26023) --- .../lovelace/card-features/hui-area-controls-card-feature.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts b/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts index 705f02855a..77fbbd50d0 100644 --- a/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts +++ b/src/panels/lovelace/card-features/hui-area-controls-card-feature.ts @@ -1,7 +1,7 @@ import type { HassEntity } from "home-assistant-js-websocket"; import { css, html, LitElement, nothing } from "lit"; -import { classMap } from "lit/directives/class-map"; import { customElement, property, state } from "lit/decorators"; +import { classMap } from "lit/directives/class-map"; import { styleMap } from "lit/directives/style-map"; import memoizeOne from "memoize-one"; import { ensureArray } from "../../../common/array/ensure-array"; @@ -14,6 +14,7 @@ import { stateActive } from "../../../common/entity/state_active"; import { domainColorProperties } from "../../../common/entity/state_color"; import "../../../components/ha-control-button"; import "../../../components/ha-control-button-group"; +import "../../../components/ha-domain-icon"; import "../../../components/ha-svg-icon"; import type { AreaRegistryEntry } from "../../../data/area_registry"; import { forwardHaptic } from "../../../data/haptics"; From eecd765d09135a5fa2ce74cf7fe429417480084b Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Wed, 2 Jul 2025 11:03:21 +0200 Subject: [PATCH 4/8] Fix UI jump when using drag and drop in areas strategy editor (#26026) --- src/components/ha-areas-floors-display-editor.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/ha-areas-floors-display-editor.ts b/src/components/ha-areas-floors-display-editor.ts index 5b372f932f..539df7ab09 100644 --- a/src/components/ha-areas-floors-display-editor.ts +++ b/src/components/ha-areas-floors-display-editor.ts @@ -78,6 +78,7 @@ export class HaAreasFloorsDisplayEditor extends LitElement { handle-selector=".handle" @item-moved=${this._floorMoved} .disabled=${this.disabled || !canReorderFloors} + invert-swap >
${repeat( From 1db8ef37a2c7abf600256025476a7dd5ce4f3622 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 2 Jul 2025 13:42:21 +0200 Subject: [PATCH 5/8] Dont fetch device actions on first updated (#26028) --- .../config/devices/ha-config-device-page.ts | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index 34f511b9c0..c062dc699f 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -10,7 +10,7 @@ import { mdiPlusCircle, mdiRestore, } from "@mdi/js"; -import type { CSSResultGroup, TemplateResult } from "lit"; +import type { CSSResultGroup, PropertyValues, TemplateResult } from "lit"; import { LitElement, css, html, nothing } from "lit"; import { customElement, property, state } from "lit/decorators"; import { ifDefined } from "lit/directives/if-defined"; @@ -273,22 +273,24 @@ export class HaConfigDevicePage extends LitElement { findBatteryChargingEntity(this.hass, entities) ); - public willUpdate(changedProps) { + public willUpdate(changedProps: PropertyValues) { super.willUpdate(changedProps); - if (changedProps.has("deviceId") || changedProps.has("entries")) { + if (changedProps.has("deviceId")) { this._deviceActions = []; this._deviceAlerts = []; this._deleteButtons = []; this._diagnosticDownloadLinks = []; + } + + if (changedProps.has("deviceId") || changedProps.has("entries")) { this._fetchData(); } } - protected firstUpdated(changedProps) { + protected firstUpdated(changedProps: PropertyValues) { super.firstUpdated(changedProps); loadDeviceRegistryDetailDialog(); - this._fetchData(); } protected updated(changedProps) { @@ -989,6 +991,7 @@ export class HaConfigDevicePage extends LitElement { } private _getDeleteActions() { + const deviceId = this.deviceId; const device = this.hass.devices[this.deviceId]; if (!device) { @@ -1058,12 +1061,18 @@ export class HaConfigDevicePage extends LitElement { } ); + if (this.deviceId !== deviceId) { + // abort if the device has changed + return; + } + if (buttons.length > 0) { this._deleteButtons = buttons; } } private async _getDeviceActions() { + const deviceId = this.deviceId; const device = this.hass.devices[this.deviceId]; if (!device) { @@ -1157,14 +1166,25 @@ export class HaConfigDevicePage extends LitElement { // load matter device actions async to avoid an UI with 0 actions when the matter integration needs very long to get node diagnostics matter.getMatterDeviceActions(this, this.hass, device).then((actions) => { + if (this.deviceId !== deviceId) { + // abort if the device has changed + return; + } this._deviceActions = [...actions, ...(this._deviceActions || [])]; }); } + if (this.deviceId !== deviceId) { + // abort if the device has changed + return; + } + this._deviceActions = deviceActions; } private async _getDeviceAlerts() { + const deviceId = this.deviceId; + const device = this.hass.devices[this.deviceId]; if (!device) { @@ -1188,6 +1208,11 @@ export class HaConfigDevicePage extends LitElement { deviceAlerts.push(...alerts); } + if (this.deviceId !== deviceId) { + // abort if the device has changed + return; + } + this._deviceAlerts = deviceAlerts; if (deviceAlerts.length) { this._deviceAlertsActionsTimeout = window.setTimeout(() => { From 232649c0cdb6d3ba4f3602dd457e20a52395c6bf Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Wed, 2 Jul 2025 13:41:26 +0200 Subject: [PATCH 6/8] Improve styling of the code editor in fullscreen mode (#26029) --- src/components/ha-code-editor.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/ha-code-editor.ts b/src/components/ha-code-editor.ts index 5cb78c7193..69387c89a3 100644 --- a/src/components/ha-code-editor.ts +++ b/src/components/ha-code-editor.ts @@ -584,11 +584,14 @@ export class HaCodeEditor extends ReactiveElement { :host(.fullscreen) { position: fixed !important; - top: var(--header-height, 56px) !important; - left: 0 !important; - right: 0 !important; - bottom: 0 !important; + top: calc(var(--header-height, 56px) + 8px) !important; + left: 8px !important; + right: 8px !important; + bottom: 8px !important; z-index: 9999 !important; + border-radius: 12px !important; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3) !important; + overflow: hidden !important; background-color: var( --code-editor-background-color, var(--card-background-color) From cf531cd935e172c69f84583b7db45af2ed7d2dc0 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 2 Jul 2025 13:41:52 +0200 Subject: [PATCH 7/8] Disable fullscreen in trigger detail dialog (#26030) --- .../config/automation/trigger/ha-automation-trigger-row.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/panels/config/automation/trigger/ha-automation-trigger-row.ts b/src/panels/config/automation/trigger/ha-automation-trigger-row.ts index f9f4c28ec2..5cabb41266 100644 --- a/src/panels/config/automation/trigger/ha-automation-trigger-row.ts +++ b/src/panels/config/automation/trigger/ha-automation-trigger-row.ts @@ -566,6 +566,7 @@ export default class HaAutomationTriggerRow extends LitElement { text: html` From 33ea02208ae486a8502422d9038e2c2cc141895e Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 2 Jul 2025 13:44:53 +0200 Subject: [PATCH 8/8] Bumped version to 20250702.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 360873cc72..7a89b5f566 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "home-assistant-frontend" -version = "20250701.0" +version = "20250702.0" license = "Apache-2.0" license-files = ["LICENSE*"] description = "The Home Assistant frontend"