20240926.0 (#22107)

This commit is contained in:
Bram Kragten 2024-09-26 18:30:57 +02:00 committed by GitHub
commit d4a5115a65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 264 additions and 213 deletions

View File

@ -139,7 +139,7 @@
</p> </p>
</div> </div>
<div class="section-header">Wat does Home Assistant Cast do?</div> <div class="section-header">What does Home Assistant Cast do?</div>
<div class="card-content"> <div class="card-content">
<p> <p>
Home Assistant Cast is a receiver application for the Chromecast. When Home Assistant Cast is a receiver application for the Chromecast. When

View File

@ -167,7 +167,7 @@
"@rollup/plugin-babel": "6.0.4", "@rollup/plugin-babel": "6.0.4",
"@rollup/plugin-commonjs": "26.0.1", "@rollup/plugin-commonjs": "26.0.1",
"@rollup/plugin-json": "6.1.0", "@rollup/plugin-json": "6.1.0",
"@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-node-resolve": "15.2.4",
"@rollup/plugin-replace": "5.0.7", "@rollup/plugin-replace": "5.0.7",
"@types/babel__plugin-transform-runtime": "7.9.5", "@types/babel__plugin-transform-runtime": "7.9.5",
"@types/chromecast-caf-receiver": "6.0.17", "@types/chromecast-caf-receiver": "6.0.17",

View File

@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "home-assistant-frontend" name = "home-assistant-frontend"
version = "20240925.0" version = "20240926.0"
license = {text = "Apache-2.0"} license = {text = "Apache-2.0"}
description = "The Home Assistant frontend" description = "The Home Assistant frontend"
readme = "README.md" readme = "README.md"

View File

@ -173,6 +173,7 @@ class HaEntityStatePicker extends LitElement {
no-style no-style
@item-moved=${this._moveItem} @item-moved=${this._moveItem}
.disabled=${this.disabled} .disabled=${this.disabled}
filter="button.trailing.action"
> >
<ha-chip-set> <ha-chip-set>
${repeat( ${repeat(

View File

@ -43,6 +43,13 @@ export class HaSortable extends LitElement {
@property({ type: String, attribute: "handle-selector" }) @property({ type: String, attribute: "handle-selector" })
public handleSelector?: string; public handleSelector?: string;
/**
* Selectors that do not lead to dragging (String or Function)
* https://github.com/SortableJS/Sortable?tab=readme-ov-file#filter-option
* */
@property({ type: String, attribute: "filter" })
public filter?: string;
@property({ type: String }) @property({ type: String })
public group?: string | SortableInstance.GroupOptions; public group?: string | SortableInstance.GroupOptions;
@ -145,6 +152,9 @@ export class HaSortable extends LitElement {
if (this.group) { if (this.group) {
options.group = this.group; options.group = this.group;
} }
if (this.filter) {
options.filter = this.filter;
}
this._sortable = new Sortable(container, options); this._sortable = new Sortable(container, options);
} }

View File

@ -68,6 +68,7 @@ export const startExternalCommissioning = async (hass: HomeAssistant) => {
).tlv, ).tlv,
border_agent_id: preferredDataset.preferred_border_agent_id, border_agent_id: preferredDataset.preferred_border_agent_id,
mac_extended_address: preferredDataset.preferred_extended_address, mac_extended_address: preferredDataset.preferred_extended_address,
extended_pan_id: preferredDataset.extended_pan_id,
}, },
}); });
} }

View File

@ -129,32 +129,31 @@ class DialogBox extends LitElement {
} }
private _dismiss(): void { private _dismiss(): void {
this._cancel();
this._closeState = "canceled"; this._closeState = "canceled";
this._closeDialog(); this._closeDialog();
this._cancel();
} }
private _confirm(): void { private _confirm(): void {
this._closeState = "confirmed";
this._closeDialog();
if (this._params!.confirm) { if (this._params!.confirm) {
this._params!.confirm(this._textField?.value); this._params!.confirm(this._textField?.value);
} }
this._closeState = "confirmed";
this._closeDialog();
} }
private _closeDialog() { private _closeDialog() {
fireEvent(this, "dialog-closed", { dialog: this.localName });
this._dialog?.close(); this._dialog?.close();
} }
private _dialogClosed() { private _dialogClosed() {
if (!this._closeState) { if (!this._closeState) {
fireEvent(this, "dialog-closed", { dialog: this.localName });
this._cancel(); this._cancel();
} }
if (!this._params) { this._closeState = undefined;
return;
}
this._params = undefined; this._params = undefined;
fireEvent(this, "dialog-closed", { dialog: this.localName });
} }
static get styles(): CSSResultGroup { static get styles(): CSSResultGroup {

View File

@ -1,4 +1,4 @@
import { css, html, LitElement, PropertyValues } from "lit"; import { css, html, LitElement, nothing, PropertyValues } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../common/dom/fire_event"; import { fireEvent } from "../../common/dom/fire_event";
import "../../components/ha-circular-progress"; import "../../components/ha-circular-progress";
@ -45,7 +45,11 @@ export class HaVoiceAssistantSetupStepUpdate extends LitElement {
} }
protected override render() { protected override render() {
const stateObj = this.hass.states[this.updateEntityId!]; if (!this.updateEntityId || !(this.updateEntityId in this.hass.states)) {
return nothing;
}
const stateObj = this.hass.states[this.updateEntityId];
const progressIsNumeric = const progressIsNumeric =
typeof stateObj?.attributes.in_progress === "number"; typeof stateObj?.attributes.in_progress === "number";

View File

@ -59,6 +59,7 @@ interface EMOutgoingMessageMatterCommission extends EMMessage {
type: "matter/commission"; type: "matter/commission";
payload?: { payload?: {
mac_extended_address: string | null; mac_extended_address: string | null;
extended_pan_id: string | null;
border_agent_id: string | null; border_agent_id: string | null;
active_operational_dataset: string | null; active_operational_dataset: string | null;
}; };

View File

@ -90,7 +90,7 @@ export class HaManualAutomationEditor extends LitElement {
role="region" role="region"
aria-labelledby="triggers-heading" aria-labelledby="triggers-heading"
.triggers=${this.config.triggers || []} .triggers=${this.config.triggers || []}
.path=${["trigger"]} .path=${["triggers"]}
@value-changed=${this._triggerChanged} @value-changed=${this._triggerChanged}
@item-moved=${this._itemMoved} @item-moved=${this._itemMoved}
.hass=${this.hass} .hass=${this.hass}
@ -132,7 +132,7 @@ export class HaManualAutomationEditor extends LitElement {
role="region" role="region"
aria-labelledby="conditions-heading" aria-labelledby="conditions-heading"
.conditions=${this.config.conditions || []} .conditions=${this.config.conditions || []}
.path=${["condition"]} .path=${["conditions"]}
@value-changed=${this._conditionChanged} @value-changed=${this._conditionChanged}
@item-moved=${this._itemMoved} @item-moved=${this._itemMoved}
.hass=${this.hass} .hass=${this.hass}
@ -172,7 +172,7 @@ export class HaManualAutomationEditor extends LitElement {
role="region" role="region"
aria-labelledby="actions-heading" aria-labelledby="actions-heading"
.actions=${this.config.actions || []} .actions=${this.config.actions || []}
.path=${["action"]} .path=${["actions"]}
@value-changed=${this._actionChanged} @value-changed=${this._actionChanged}
@item-moved=${this._itemMoved} @item-moved=${this._itemMoved}
.hass=${this.hass} .hass=${this.hass}

View File

@ -137,7 +137,19 @@ class DialogMatterOpenCommissioningWindow extends LitElement {
: html` : html`
<p> <p>
${this.hass.localize( ${this.hass.localize(
"ui.panel.config.matter.open_commissioning_window.introduction" "ui.panel.config.matter.open_commissioning_window.description",
{
startCommissioning: html`<b
>${this.hass.localize(
"ui.panel.config.matter.open_commissioning_window.start_commissioning"
)}</b
>`,
}
)}
</p>
<p class="note">
${this.hass.localize(
"ui.panel.config.matter.open_commissioning_window.prevent_misuse_description"
)} )}
</p> </p>
<mwc-button slot="primaryAction" @click=${this._start}> <mwc-button slot="primaryAction" @click=${this._start}>
@ -247,6 +259,11 @@ class DialogMatterOpenCommissioningWindow extends LitElement {
.code { .code {
font-family: monospace; font-family: monospace;
} }
.note {
color: var(--secondary-text-color);
font-size: 0.9em;
}
`, `,
]; ];
} }

View File

@ -5,7 +5,7 @@ import { customElement, property, state } from "lit/decorators";
import { fireEvent } from "../../../../../common/dom/fire_event"; import { fireEvent } from "../../../../../common/dom/fire_event";
import "../../../../../components/ha-circular-progress"; import "../../../../../components/ha-circular-progress";
import { createCloseHeading } from "../../../../../components/ha-dialog"; import { createCloseHeading } from "../../../../../components/ha-dialog";
import { pingMatterNode, MatterPingResult } from "../../../../../data/matter"; import { pingMatterNode } from "../../../../../data/matter";
import { haStyle, haStyleDialog } from "../../../../../resources/styles"; import { haStyle, haStyleDialog } from "../../../../../resources/styles";
import { HomeAssistant } from "../../../../../types"; import { HomeAssistant } from "../../../../../types";
import { MatterPingNodeDialogParams } from "./show-dialog-matter-ping-node"; import { MatterPingNodeDialogParams } from "./show-dialog-matter-ping-node";
@ -16,9 +16,12 @@ class DialogMatterPingNode extends LitElement {
@state() private device_id?: string; @state() private device_id?: string;
@state() private _status?: string; @state() private _status?: "started" | "failed";
@state() private _pingResult?: MatterPingResult; @state() private _pingResultEntries?: [
ip_address: string,
success: boolean,
][];
public async showDialog(params: MatterPingNodeDialogParams): Promise<void> { public async showDialog(params: MatterPingNodeDialogParams): Promise<void> {
this.device_id = params.device_id; this.device_id = params.device_id;
@ -38,7 +41,28 @@ class DialogMatterPingNode extends LitElement {
this.hass.localize("ui.panel.config.matter.ping_node.title") this.hass.localize("ui.panel.config.matter.ping_node.title")
)} )}
> >
${this._pingResult ${this._status === "failed"
? html`
<div class="flex-container">
<ha-svg-icon
.path=${mdiCloseCircle}
class="failed"
></ha-svg-icon>
<div class="status">
<p>
${this.hass.localize(
this._pingResultEntries
? "ui.panel.config.matter.ping_node.no_ip_found"
: "ui.panel.config.matter.ping_node.ping_failed"
)}
</p>
</div>
</div>
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
${this.hass.localize("ui.common.close")}
</mwc-button>
`
: this._pingResultEntries
? html` ? html`
<h2> <h2>
${this.hass.localize( ${this.hass.localize(
@ -46,7 +70,7 @@ class DialogMatterPingNode extends LitElement {
)} )}
</h2> </h2>
<mwc-list> <mwc-list>
${Object.entries(this._pingResult).map( ${this._pingResultEntries.map(
([ip, success]) => ([ip, success]) =>
html`<ha-list-item hasMeta noninteractive html`<ha-list-item hasMeta noninteractive
>${ip} >${ip}
@ -80,25 +104,6 @@ class DialogMatterPingNode extends LitElement {
${this.hass.localize("ui.common.close")} ${this.hass.localize("ui.common.close")}
</mwc-button> </mwc-button>
` `
: this._status === "failed"
? html`
<div class="flex-container">
<ha-svg-icon
.path=${mdiCloseCircle}
class="failed"
></ha-svg-icon>
<div class="status">
<p>
${this.hass.localize(
"ui.panel.config.matter.ping_node.ping_failed"
)}
</p>
</div>
</div>
<mwc-button slot="primaryAction" @click=${this.closeDialog}>
${this.hass.localize("ui.common.close")}
</mwc-button>
`
: html` : html`
<p> <p>
${this.hass.localize( ${this.hass.localize(
@ -128,7 +133,13 @@ class DialogMatterPingNode extends LitElement {
} }
this._status = "started"; this._status = "started";
try { try {
this._pingResult = await pingMatterNode(this.hass, this.device_id!); const pingResult = await pingMatterNode(this.hass, this.device_id!);
const pingResultEntries = Object.entries(pingResult);
if (pingResultEntries.length === 0) {
this._status = "failed";
}
this._pingResultEntries = pingResultEntries;
} catch (err) { } catch (err) {
this._status = "failed"; this._status = "failed";
} }
@ -137,7 +148,7 @@ class DialogMatterPingNode extends LitElement {
public closeDialog(): void { public closeDialog(): void {
this.device_id = undefined; this.device_id = undefined;
this._status = undefined; this._status = undefined;
this._pingResult = undefined; this._pingResultEntries = undefined;
fireEvent(this, "dialog-closed", { dialog: this.localName }); fireEvent(this, "dialog-closed", { dialog: this.localName });
} }

View File

@ -20,9 +20,9 @@ class DialogRepairsIssueSubtitle extends LitElement {
protected render() { protected render() {
const domainName = domainToName(this.hass.localize, this.issue.domain); const domainName = domainToName(this.hass.localize, this.issue.domain);
const reportedBy = domainName const reportedBy = domainName
? this.hass.localize("ui.panel.config.repairs.reported_by", { ? `${this.hass.localize("ui.panel.config.repairs.reported_by", {
integration: domainName, integration: domainName,
}) })}`
: ""; : "";
const severity = this.hass.localize( const severity = this.hass.localize(

View File

@ -1,5 +1,5 @@
import { mdiHelpCircle } from "@mdi/js"; import { mdiHelpCircle } from "@mdi/js";
import { ERR_CONNECTION_LOST } from "home-assistant-js-websocket"; import { ERR_CONNECTION_LOST, HassService } from "home-assistant-js-websocket";
import { load } from "js-yaml"; import { load } from "js-yaml";
import { css, CSSResultGroup, html, LitElement, nothing } from "lit"; import { css, CSSResultGroup, html, LitElement, nothing } from "lit";
import { customElement, property, query, state } from "lit/decorators"; import { customElement, property, query, state } from "lit/decorators";
@ -8,16 +8,16 @@ import { storage } from "../../../common/decorators/storage";
import { computeDomain } from "../../../common/entity/compute_domain"; import { computeDomain } from "../../../common/entity/compute_domain";
import { computeObjectId } from "../../../common/entity/compute_object_id"; import { computeObjectId } from "../../../common/entity/compute_object_id";
import { hasTemplate } from "../../../common/string/has-template"; import { hasTemplate } from "../../../common/string/has-template";
import { extractSearchParam } from "../../../common/url/search-params";
import { HaProgressButton } from "../../../components/buttons/ha-progress-button";
import { LocalizeFunc } from "../../../common/translations/localize"; import { LocalizeFunc } from "../../../common/translations/localize";
import { showToast } from "../../../util/toast"; import { extractSearchParam } from "../../../common/url/search-params";
import { copyToClipboard } from "../../../common/util/copy-clipboard"; import { copyToClipboard } from "../../../common/util/copy-clipboard";
import { HaProgressButton } from "../../../components/buttons/ha-progress-button";
import { showToast } from "../../../util/toast";
import "../../../components/entity/ha-entity-picker"; import "../../../components/entity/ha-entity-picker";
import "../../../components/ha-card";
import "../../../components/ha-alert"; import "../../../components/ha-alert";
import "../../../components/ha-button"; import "../../../components/ha-button";
import "../../../components/ha-card";
import "../../../components/ha-expansion-panel"; import "../../../components/ha-expansion-panel";
import "../../../components/ha-icon-button"; import "../../../components/ha-icon-button";
import "../../../components/ha-service-control"; import "../../../components/ha-service-control";
@ -382,10 +382,24 @@ class HaPanelDevAction extends LitElement {
} }
const target = "target" in serviceDomains[domain][service]; const target = "target" in serviceDomains[domain][service];
const fields = serviceDomains[domain][service].fields; const fields = serviceDomains[domain][service].fields;
const result = Object.keys(fields).map((field) => ({ const result: (HassService["fields"] & { key: string })[] = [];
// TODO: remplace any by proper type when updated in home-assistant-js-websocket
const getFields = (flds: any) => {
Object.keys(flds).forEach((field) => {
const fieldData = flds[field];
if (fieldData.fields) {
getFields(fieldData.fields);
} else {
result.push({
key: field, key: field,
...fields[field], ...fieldData,
})); });
}
});
};
getFields(fields);
return { return {
target, target,

View File

@ -61,6 +61,7 @@ export class DialogStatisticsFixUnitsChanged extends LitElement {
this._params.issue.data.statistic_id, this._params.issue.data.statistic_id,
undefined undefined
), ),
statistic_id: this._params.issue.data.statistic_id,
current_unit: this._params.issue.data.state_unit, current_unit: this._params.issue.data.state_unit,
previous_unit: this._params.issue.data.metadata_unit, previous_unit: this._params.issue.data.metadata_unit,
} }

View File

@ -29,6 +29,7 @@ export const fixStatisticsIssue = async (
"ui.panel.developer-tools.tabs.statistics.fix_issue.no_state.info_text_1", "ui.panel.developer-tools.tabs.statistics.fix_issue.no_state.info_text_1",
{ {
name: getStatisticLabel(hass, issue.data.statistic_id, undefined), name: getStatisticLabel(hass, issue.data.statistic_id, undefined),
statistic_id: issue.data.statistic_id,
} }
)}<br /><br />${localize( )}<br /><br />${localize(
"ui.panel.developer-tools.tabs.statistics.fix_issue.no_state.info_text_2", "ui.panel.developer-tools.tabs.statistics.fix_issue.no_state.info_text_2",
@ -75,6 +76,7 @@ export const fixStatisticsIssue = async (
"ui.panel.developer-tools.tabs.statistics.fix_issue.entity_no_longer_recorded.info_text_1", "ui.panel.developer-tools.tabs.statistics.fix_issue.entity_no_longer_recorded.info_text_1",
{ {
name: getStatisticLabel(hass, issue.data.statistic_id, undefined), name: getStatisticLabel(hass, issue.data.statistic_id, undefined),
statistic_id: issue.data.statistic_id,
} }
)} )}
${localize( ${localize(
@ -110,6 +112,7 @@ export const fixStatisticsIssue = async (
"ui.panel.developer-tools.tabs.statistics.fix_issue.unsupported_state_class.info_text_1", "ui.panel.developer-tools.tabs.statistics.fix_issue.unsupported_state_class.info_text_1",
{ {
name: getStatisticLabel(hass, issue.data.statistic_id, undefined), name: getStatisticLabel(hass, issue.data.statistic_id, undefined),
statistic_id: issue.data.statistic_id,
state_class: issue.data.state_class, state_class: issue.data.state_class,
} }
)}<br /><br /> )}<br /><br />

View File

@ -93,18 +93,16 @@ export class HaCardConditionEditor extends LitElement {
if (!condition) return nothing; if (!condition) return nothing;
return html` return html`
<ha-card outlined> <div class="container">
<ha-expansion-panel leftChevron> <ha-expansion-panel leftChevron>
<h3 slot="header"> <h3 slot="header">
<ha-svg-icon <ha-svg-icon
class="condition-icon" class="condition-icon"
.path=${ICON_CONDITION[condition.condition]} .path=${ICON_CONDITION[condition.condition]}
></ha-svg-icon> ></ha-svg-icon>
${ ${this.hass.localize(
this.hass.localize(
`ui.panel.lovelace.editor.condition-editor.condition.${condition.condition}.label` `ui.panel.lovelace.editor.condition-editor.condition.${condition.condition}.label`
) || condition.condition ) || condition.condition}
}
</h3> </h3>
<ha-button-menu <ha-button-menu
slot="icons" slot="icons"
@ -133,8 +131,7 @@ export class HaCardConditionEditor extends LitElement {
${this.hass.localize( ${this.hass.localize(
"ui.panel.lovelace.editor.edit_card.edit_ui" "ui.panel.lovelace.editor.edit_card.edit_ui"
)} )}
${ ${!this._yamlMode
!this._yamlMode
? html` ? html`
<ha-svg-icon <ha-svg-icon
class="selected_menu_item" class="selected_menu_item"
@ -142,16 +139,14 @@ export class HaCardConditionEditor extends LitElement {
.path=${mdiCheck} .path=${mdiCheck}
></ha-svg-icon> ></ha-svg-icon>
` `
: `` : ``}
}
</ha-list-item> </ha-list-item>
<ha-list-item graphic="icon"> <ha-list-item graphic="icon">
${this.hass.localize( ${this.hass.localize(
"ui.panel.lovelace.editor.edit_card.edit_yaml" "ui.panel.lovelace.editor.edit_card.edit_yaml"
)} )}
${ ${this._yamlMode
this._yamlMode
? html` ? html`
<ha-svg-icon <ha-svg-icon
class="selected_menu_item" class="selected_menu_item"
@ -159,8 +154,7 @@ export class HaCardConditionEditor extends LitElement {
.path=${mdiCheck} .path=${mdiCheck}
></ha-svg-icon> ></ha-svg-icon>
` `
: `` : ``}
}
</ha-list-item> </ha-list-item>
<li divider role="separator"></li> <li divider role="separator"></li>
@ -174,9 +168,7 @@ export class HaCardConditionEditor extends LitElement {
></ha-svg-icon> ></ha-svg-icon>
</ha-list-item> </ha-list-item>
</ha-button-menu> </ha-button-menu>
</div> ${!this._uiAvailable
${
!this._uiAvailable
? html` ? html`
<ha-alert <ha-alert
alert-type="warning" alert-type="warning"
@ -199,11 +191,9 @@ export class HaCardConditionEditor extends LitElement {
)} )}
</ha-alert> </ha-alert>
` `
: nothing : nothing}
}
<div class="content"> <div class="content">
${ ${this._yamlMode
this._yamlMode
? html` ? html`
<ha-yaml-editor <ha-yaml-editor
.hass=${this.hass} .hass=${this.hass}
@ -212,15 +202,11 @@ export class HaCardConditionEditor extends LitElement {
></ha-yaml-editor> ></ha-yaml-editor>
` `
: html` : html`
${dynamicElement( ${dynamicElement(`ha-card-condition-${condition.condition}`, {
`ha-card-condition-${condition.condition}`,
{
hass: this.hass, hass: this.hass,
condition: condition, condition: condition,
} })}
)} `}
`
}
</div> </div>
</ha-expansion-panel> </ha-expansion-panel>
<div <div
@ -230,8 +216,7 @@ export class HaCardConditionEditor extends LitElement {
error: this._testingResult === false, error: this._testingResult === false,
})}" })}"
> >
${ ${this._testingResult
this._testingResult
? this.hass.localize( ? this.hass.localize(
"ui.panel.lovelace.editor.condition-editor.testing_pass" "ui.panel.lovelace.editor.condition-editor.testing_pass"
) )
@ -239,10 +224,9 @@ export class HaCardConditionEditor extends LitElement {
? this.hass.localize( ? this.hass.localize(
"ui.panel.lovelace.editor.condition-editor.testing_error" "ui.panel.lovelace.editor.condition-editor.testing_error"
) )
: nothing : nothing}
} </div>
</div> </div>
</ha-card>
`; `;
} }
@ -313,7 +297,6 @@ export class HaCardConditionEditor extends LitElement {
ha-button-menu { ha-button-menu {
--mdc-theme-text-primary-on-background: var(--primary-text-color); --mdc-theme-text-primary-on-background: var(--primary-text-color);
} }
ha-expansion-panel { ha-expansion-panel {
--expansion-panel-summary-padding: 0 0 0 8px; --expansion-panel-summary-padding: 0 0 0 8px;
--expansion-panel-content-padding: 0; --expansion-panel-content-padding: 0;
@ -372,6 +355,11 @@ export class HaCardConditionEditor extends LitElement {
.testing.pass { .testing.pass {
background-color: var(--success-color); background-color: var(--success-color);
} }
.container {
position: relative;
border-radius: var(--ha-card-border-radius, 12px);
border: 1px solid var(--divider-color);
}
`, `,
]; ];
} }

View File

@ -5127,11 +5127,13 @@
"start_ping": "Start ping", "start_ping": "Start ping",
"in_progress": "The device is being pinged. This may take some time.", "in_progress": "The device is being pinged. This may take some time.",
"ping_failed": "The device ping failed. Additional information may be available in the logs.", "ping_failed": "The device ping failed. Additional information may be available in the logs.",
"ping_complete": "Ping device complete." "ping_complete": "Ping device complete.",
"no_ip_found": "The device ping failed. No IP addresses found for this device."
}, },
"open_commissioning_window": { "open_commissioning_window": {
"title": "Share device", "title": "Share device",
"introduction": "Enable commissioning mode on the device to pair it to another Matter controller.", "description": "To continue, select {startCommissioning}. Home Assistant will then put your device in commissioning mode, allowing it to pair with another Matter controller.",
"prevent_misuse_description": "Note: Do not press the physical setup button on the device as this will reset it.",
"start_commissioning": "Share device", "start_commissioning": "Share device",
"in_progress": "We're communicating with the device. This may take some time.", "in_progress": "We're communicating with the device. This may take some time.",
"failed": "The command failed. Additional information may be available in the logs.", "failed": "The command failed. Additional information may be available in the logs.",
@ -6960,25 +6962,25 @@
}, },
"no_state": { "no_state": {
"title": "Entity has no state", "title": "Entity has no state",
"info_text_1": "{name} has no state at the moment, if this is an orphaned entity, you may want to delete the long term statistics of it from your database.", "info_text_1": "''{name}'' ({statistic_id}) has no state at the moment, if this is an orphaned entity, you may want to delete the long term statistics of it from your database.",
"info_text_2": "Do you want to permanently delete the long term statistics of {statistic_id} from your database?" "info_text_2": "Do you want to permanently delete the long term statistics of {statistic_id} from your database?"
}, },
"entity_not_recorded": { "entity_not_recorded": {
"title": "Entity is not recorded", "title": "Entity is not recorded",
"info_text_1": "State changes of {name} are not recorded, therefore, we cannot track long term statistics for it.", "info_text_1": "State changes of ''{name}'' ({statistic_id}) are not recorded, therefore, we cannot track long term statistics for it.",
"info_text_2": "You probably excluded this entity, or have just included some entities.", "info_text_2": "You probably excluded this entity, or have just included some entities.",
"info_text_3_link": "See the recorder documentation for more information." "info_text_3_link": "See the recorder documentation for more information."
}, },
"entity_no_longer_recorded": { "entity_no_longer_recorded": {
"title": "Entity is no longer recorded", "title": "Entity is no longer recorded",
"info_text_1": "We have generated statistics for {name} in the past, but state changes of this entity are no longer recorded, therefore, we cannot track long term statistics for it anymore.", "info_text_1": "We have generated statistics for ''{name}'' ({statistic_id}) in the past, but state changes of this entity are no longer recorded, therefore, we cannot track long term statistics for it anymore.",
"info_text_2": "You probably excluded this entity, or have just included some entities.", "info_text_2": "You probably excluded this entity, or have just included some entities.",
"info_text_3_link": "See the recorder documentation for more information.", "info_text_3_link": "See the recorder documentation for more information.",
"info_text_4": "If you no longer wish to keep the long term statistics recorded in the past, you may delete them now." "info_text_4": "If you no longer wish to keep the long term statistics recorded in the past, you may delete them now."
}, },
"unsupported_state_class": { "unsupported_state_class": {
"title": "Unsupported state class", "title": "Unsupported state class",
"info_text_1": "The state class of {name}, {state_class} is not supported.", "info_text_1": "The state class of ''{name}'' ({statistic_id}), ''{state_class}'', is not supported.",
"info_text_2": "Statistics cannot be generated until this entity has a supported state class.", "info_text_2": "Statistics cannot be generated until this entity has a supported state class.",
"info_text_3": "If this state class was provided by an integration, this is a bug. Please report an issue.", "info_text_3": "If this state class was provided by an integration, this is a bug. Please report an issue.",
"info_text_4": "If you have set this state class yourself, please correct it.", "info_text_4": "If you have set this state class yourself, please correct it.",
@ -6987,11 +6989,11 @@
"info_text_6": "Do you want to permanently delete the long term statistics of {statistic_id} from your database?" "info_text_6": "Do you want to permanently delete the long term statistics of {statistic_id} from your database?"
}, },
"units_changed": { "units_changed": {
"title": "The unit changed", "title": "The unit has changed",
"update": "Update the unit of the historic statistic values from ''{metadata_unit}'' to ''{state_unit}'', without converting.", "update": "Update the unit of the historic statistic values from ''{metadata_unit}'' to ''{state_unit}'', without converting.",
"clear": "Delete all old statistic data for this entity", "clear": "Delete all old statistic data for this entity",
"how_to_fix": "How do you want to fix this issue?", "how_to_fix": "How do you want to fix this issue?",
"info_text_1": "The unit of {name} changed to ''{current_unit}'' which can't be converted to the previously stored unit, ''{previous_unit}''.", "info_text_1": "The unit of ''{name}'' ({statistic_id}) changed to ''{current_unit}'' which can't be converted to the previously stored unit, ''{previous_unit}''.",
"info_text_2": "If the historic statistic values have a wrong unit, you can update the units of the old values. The values will not be updated.", "info_text_2": "If the historic statistic values have a wrong unit, you can update the units of the old values. The values will not be updated.",
"info_text_3": "Otherwise you can choose to delete all historic statistic values, and start over." "info_text_3": "Otherwise you can choose to delete all historic statistic values, and start over."
}, },

View File

@ -3793,14 +3793,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/plugin-node-resolve@npm:15.2.3, @rollup/plugin-node-resolve@npm:^15.2.3": "@rollup/plugin-node-resolve@npm:15.2.4, @rollup/plugin-node-resolve@npm:^15.2.3":
version: 15.2.3 version: 15.2.4
resolution: "@rollup/plugin-node-resolve@npm:15.2.3" resolution: "@rollup/plugin-node-resolve@npm:15.2.4"
dependencies: dependencies:
"@rollup/pluginutils": "npm:^5.0.1" "@rollup/pluginutils": "npm:^5.0.1"
"@types/resolve": "npm:1.20.2" "@types/resolve": "npm:1.20.2"
deepmerge: "npm:^4.2.2" deepmerge: "npm:^4.2.2"
is-builtin-module: "npm:^3.2.1"
is-module: "npm:^1.0.0" is-module: "npm:^1.0.0"
resolve: "npm:^1.22.1" resolve: "npm:^1.22.1"
peerDependencies: peerDependencies:
@ -3808,7 +3807,7 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
rollup: rollup:
optional: true optional: true
checksum: 10/d36a6792fbe9d8673d3a7c7dc88920be669ac54fba02ac0093d3c00fc9463fce2e87da1906a2651016742709c3d202b367fb49a62acd0d98f18409343f27b8b4 checksum: 10/ad1940019344df457be88414393214fa69eaabba59cb7763bd81a9baacf0bb80efedf1bb999c40593860974b905f8d96ea8600b3b04f402f04da9c7ddc714178
languageName: node languageName: node
linkType: hard linkType: hard
@ -8973,7 +8972,7 @@ __metadata:
"@rollup/plugin-babel": "npm:6.0.4" "@rollup/plugin-babel": "npm:6.0.4"
"@rollup/plugin-commonjs": "npm:26.0.1" "@rollup/plugin-commonjs": "npm:26.0.1"
"@rollup/plugin-json": "npm:6.1.0" "@rollup/plugin-json": "npm:6.1.0"
"@rollup/plugin-node-resolve": "npm:15.2.3" "@rollup/plugin-node-resolve": "npm:15.2.4"
"@rollup/plugin-replace": "npm:5.0.7" "@rollup/plugin-replace": "npm:5.0.7"
"@thomasloven/round-slider": "npm:0.6.0" "@thomasloven/round-slider": "npm:0.6.0"
"@types/babel__plugin-transform-runtime": "npm:7.9.5" "@types/babel__plugin-transform-runtime": "npm:7.9.5"
@ -9597,7 +9596,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-builtin-module@npm:^3.0.0, is-builtin-module@npm:^3.1.0, is-builtin-module@npm:^3.2.1": "is-builtin-module@npm:^3.0.0, is-builtin-module@npm:^3.1.0":
version: 3.2.1 version: 3.2.1
resolution: "is-builtin-module@npm:3.2.1" resolution: "is-builtin-module@npm:3.2.1"
dependencies: dependencies: