diff --git a/demo/src/html/index.html.template b/demo/src/html/index.html.template index 5faafef63d..adcae133fb 100644 --- a/demo/src/html/index.html.template +++ b/demo/src/html/index.html.template @@ -63,33 +63,42 @@ align-items: center; } #ha-launch-screen svg { - width: 170px; + width: 112px; flex-shrink: 0; } - #ha-launch-screen .ha-launch-screen-spacer { + #ha-launch-screen .ha-launch-screen-spacer-top { flex: 1; + margin-top: calc( 2 * max(env(safe-area-inset-bottom), 48px) + 46px ); + padding-top: 48px; + } + #ha-launch-screen .ha-launch-screen-spacer-bottom { + flex: 1; + padding-top: 48px; } .ohf-logo { - color: grey; - font-size: 12px; - margin-bottom: 16px; + margin: max(env(safe-area-inset-bottom), 48px) 0; display: flex; flex-direction: column; align-items: center; + opacity: .66; + } + @media (prefers-color-scheme: dark) { + .ohf-logo { + filter: invert(1); + } }
-
+
-
+
diff --git a/package.json b/package.json index c91c37b4d0..7213ab1680 100644 --- a/package.json +++ b/package.json @@ -27,13 +27,13 @@ "dependencies": { "@babel/runtime": "7.25.0", "@braintree/sanitize-url": "7.1.0", - "@codemirror/autocomplete": "6.17.0", + "@codemirror/autocomplete": "6.18.0", "@codemirror/commands": "6.6.0", "@codemirror/language": "6.10.2", "@codemirror/legacy-modes": "6.4.0", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.29.1", + "@codemirror/view": "6.30.0", "@egjs/hammerjs": "2.0.17", "@formatjs/intl-datetimeformat": "6.12.5", "@formatjs/intl-displaynames": "6.6.8", @@ -53,7 +53,7 @@ "@lit-labs/context": "0.4.1", "@lit-labs/motion": "1.0.7", "@lit-labs/observers": "2.0.2", - "@lit-labs/virtualizer": "2.0.13", + "@lit-labs/virtualizer": "2.0.14", "@lrnwebcomponents/simple-tooltip": "8.0.2", "@material/chips": "=14.0.0-canary.53b3cad2f.0", "@material/data-table": "=14.0.0-canary.53b3cad2f.0", @@ -100,7 +100,7 @@ "chart.js": "4.4.3", "color-name": "2.0.0", "comlink": "4.4.1", - "core-js": "3.37.1", + "core-js": "3.38.0", "cropperjs": "1.6.2", "date-fns": "3.6.0", "date-fns-tz": "3.1.3", @@ -117,14 +117,14 @@ "leaflet": "1.9.4", "leaflet-draw": "1.0.4", "lit": "2.8.0", - "luxon": "3.4.4", + "luxon": "3.5.0", "marked": "13.0.3", "memoize-one": "6.0.0", "node-vibrant": "3.2.1-alpha.1", "proxy-polyfill": "0.3.2", "punycode": "2.3.1", "qr-scanner": "1.4.2", - "qrcode": "1.5.3", + "qrcode": "1.5.4", "roboto-fontface": "0.10.0", "rrule": "2.8.1", "sortablejs": "1.15.2", @@ -155,7 +155,7 @@ "@babel/plugin-transform-runtime": "7.24.7", "@babel/preset-env": "7.25.3", "@babel/preset-typescript": "7.24.7", - "@bundle-stats/plugin-webpack-filter": "4.13.4", + "@bundle-stats/plugin-webpack-filter": "4.14.0", "@koa/cors": "5.0.0", "@lokalise/node-api": "12.7.0", "@octokit/auth-oauth-device": "7.1.1", diff --git a/public/static/images/ohf-badge.svg b/public/static/images/ohf-badge.svg new file mode 100644 index 0000000000..bbe9a15613 --- /dev/null +++ b/public/static/images/ohf-badge.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 75594e4866..73f1f2caa1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "home-assistant-frontend" -version = "20240806.1" +version = "20240809.0" license = {text = "Apache-2.0"} description = "The Home Assistant frontend" readme = "README.md" diff --git a/src/html/index.html.template b/src/html/index.html.template index 5a6316452d..94efb29c09 100644 --- a/src/html/index.html.template +++ b/src/html/index.html.template @@ -42,30 +42,39 @@ width: 112px; flex-shrink: 0; } - #ha-launch-screen .ha-launch-screen-spacer { + #ha-launch-screen .ha-launch-screen-spacer-top { flex: 1; + margin-top: calc( 2 * max(env(safe-area-inset-bottom), 48px) + 46px ); + padding-top: 48px; + } + #ha-launch-screen .ha-launch-screen-spacer-bottom { + flex: 1; + padding-top: 48px; } .ohf-logo { - color: grey; - font-size: 12px; - margin-bottom: 16px; + margin: max(env(safe-area-inset-bottom), 48px) 0; display: flex; flex-direction: column; align-items: center; + opacity: .66; + } + @media (prefers-color-scheme: dark) { + .ohf-logo { + filter: invert(1); + } }
-
+
-
+
diff --git a/src/panels/config/automation/action/types/ha-automation-action-service.ts b/src/panels/config/automation/action/types/ha-automation-action-service.ts index 9c751f82f5..6bb209a0a2 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-service.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-service.ts @@ -53,7 +53,7 @@ export class HaServiceAction extends LitElement implements ActionElement { ); public static get defaultConfig() { - return { service: "", data: {} }; + return { action: "", data: {} }; } protected willUpdate(changedProperties: PropertyValues) { diff --git a/src/panels/config/automation/ha-automation-picker.ts b/src/panels/config/automation/ha-automation-picker.ts index a5523eb3f4..e86e7ed568 100644 --- a/src/panels/config/automation/ha-automation-picker.ts +++ b/src/panels/config/automation/ha-automation-picker.ts @@ -353,6 +353,7 @@ class HaAutomationPicker extends SubscribeMixin(LitElement) { }, actions: { title: "", + label: this.hass.localize("ui.panel.config.generic.headers.actions"), type: "icon-button", showNarrow: true, moveable: false, diff --git a/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts b/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts index 42690fb608..86bee36fb5 100644 --- a/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts +++ b/src/panels/config/automation/trigger/types/ha-automation-trigger-webhook.ts @@ -217,6 +217,7 @@ export class HaWebhookTrigger extends LitElement { ha-textfield > ha-icon-button { --mdc-icon-button-size: 24px; --mdc-icon-size: 18px; + color: var(--secondary-text-color); } ha-button-menu { diff --git a/src/panels/config/blueprint/ha-blueprint-overview.ts b/src/panels/config/blueprint/ha-blueprint-overview.ts index a7b32ea051..a2c99603a2 100644 --- a/src/panels/config/blueprint/ha-blueprint-overview.ts +++ b/src/panels/config/blueprint/ha-blueprint-overview.ts @@ -198,6 +198,7 @@ class HaBlueprintOverview extends LitElement { }, actions: { title: "", + label: this.hass.localize("ui.panel.config.generic.headers.actions"), type: "overflow-menu", showNarrow: true, moveable: false, diff --git a/src/panels/config/helpers/ha-config-helpers.ts b/src/panels/config/helpers/ha-config-helpers.ts index ab36243e23..48b6cfd461 100644 --- a/src/panels/config/helpers/ha-config-helpers.ts +++ b/src/panels/config/helpers/ha-config-helpers.ts @@ -349,7 +349,7 @@ export class HaConfigHelpers extends SubscribeMixin(LitElement) { }, actions: { title: "", - label: "Actions", + label: this.hass.localize("ui.panel.config.generic.headers.actions"), type: "overflow-menu", hideable: false, moveable: false, diff --git a/src/panels/config/scene/ha-scene-dashboard.ts b/src/panels/config/scene/ha-scene-dashboard.ts index 179ee15fac..ebb46d16e5 100644 --- a/src/panels/config/scene/ha-scene-dashboard.ts +++ b/src/panels/config/scene/ha-scene-dashboard.ts @@ -311,6 +311,9 @@ class HaSceneDashboard extends SubscribeMixin(LitElement) { }, only_editable: { title: "", + label: this.hass.localize( + "ui.panel.config.scene.picker.headers.editable" + ), type: "icon", showNarrow: true, template: (scene) => @@ -330,6 +333,7 @@ class HaSceneDashboard extends SubscribeMixin(LitElement) { }, actions: { title: "", + label: this.hass.localize("ui.panel.config.generic.headers.actions"), type: "overflow-menu", showNarrow: true, moveable: false, diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts index 8b42f2b28a..1efff8d02c 100644 --- a/src/panels/config/script/ha-script-editor.ts +++ b/src/panels/config/script/ha-script-editor.ts @@ -488,7 +488,9 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { if (value && !Array.isArray(value)) { config.sequence = [value]; } - config.sequence = migrateAutomationAction(config.sequence); + if (config.sequence) { + config.sequence = migrateAutomationAction(config.sequence); + } return config; } diff --git a/src/panels/config/script/ha-script-picker.ts b/src/panels/config/script/ha-script-picker.ts index 8e1767a2c9..df26ed94b0 100644 --- a/src/panels/config/script/ha-script-picker.ts +++ b/src/panels/config/script/ha-script-picker.ts @@ -321,6 +321,7 @@ class HaScriptPicker extends SubscribeMixin(LitElement) { }, actions: { title: "", + label: this.hass.localize("ui.panel.config.generic.headers.actions"), type: "overflow-menu", showNarrow: true, moveable: false, diff --git a/src/panels/config/voice-assistants/debug/assist-render-pipeline-events.ts b/src/panels/config/voice-assistants/debug/assist-render-pipeline-events.ts index 90fe7b449a..7572553b55 100644 --- a/src/panels/config/voice-assistants/debug/assist-render-pipeline-events.ts +++ b/src/panels/config/voice-assistants/debug/assist-render-pipeline-events.ts @@ -38,7 +38,7 @@ export class AssistPipelineEvents extends LitElement { `; } return html`There where no events in this run.There were no events in this run.`; } return html` diff --git a/src/panels/profile/ha-profile-section-general.ts b/src/panels/profile/ha-profile-section-general.ts index 054e96eb2d..26fd528f9b 100644 --- a/src/panels/profile/ha-profile-section-general.ts +++ b/src/panels/profile/ha-profile-section-general.ts @@ -222,6 +222,7 @@ class HaProfileSectionGeneral extends LitElement { text: this.hass.localize("ui.panel.profile.logout_text"), confirmText: this.hass.localize("ui.panel.profile.logout"), confirm: () => fireEvent(this, "hass-logout"), + destructive: true, }); } diff --git a/src/translations/en.json b/src/translations/en.json index 54b7979d1e..7514ba4abf 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -3744,6 +3744,7 @@ "name": "Name", "last_activated": "Last activated", "category": "Category", + "editable": "[%key:ui::panel::config::helpers::picker::headers::editable%]", "area": "Area", "icon": "Icon" }, diff --git a/yarn.lock b/yarn.lock index a42abe5cf2..5e2fe653d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,12 +6,12 @@ __metadata: cacheKey: 10 "@75lb/deep-merge@npm:^1.1.1": - version: 1.1.1 - resolution: "@75lb/deep-merge@npm:1.1.1" + version: 1.1.2 + resolution: "@75lb/deep-merge@npm:1.1.2" dependencies: - lodash.assignwith: "npm:^4.2.0" + lodash: "npm:^4.17.21" typical: "npm:^7.1.1" - checksum: 10/62f127818076123bcab670319cb9ab03cad9485e990870b85da5db57e5a036eb64c8d0a8c473bd3f5603912d31ead5dd3ead7a9604c7576bb349728c603922e0 + checksum: 10/e64f8488ccd0e0237d1fb9450e5d56583c7b9421e08abcbcb277fbafaf979291c216c892834797b82ba4853329422d51e1564d02a6981debccfb2d49eee19cc1 languageName: node linkType: hard @@ -1471,18 +1471,18 @@ __metadata: languageName: node linkType: hard -"@bundle-stats/plugin-webpack-filter@npm:4.13.4": - version: 4.13.4 - resolution: "@bundle-stats/plugin-webpack-filter@npm:4.13.4" +"@bundle-stats/plugin-webpack-filter@npm:4.14.0": + version: 4.14.0 + resolution: "@bundle-stats/plugin-webpack-filter@npm:4.14.0" peerDependencies: core-js: ^3.0.0 - checksum: 10/2f21d8125043256bc110da3e7742467f6d3e51a9303852845238ea8873198312846385c1c58138d3e15ca297ead228a93bdb138a2e7e78924a7e09a483a565f7 + checksum: 10/d6fa297120807e9e5e90acab0a745df0d24801cbd353e91ec09377c799679b6f58f5c5b72f90c9d34fd82de4da8aedb391df951e05b750d20c1d744a380a7748 languageName: node linkType: hard -"@codemirror/autocomplete@npm:6.17.0": - version: 6.17.0 - resolution: "@codemirror/autocomplete@npm:6.17.0" +"@codemirror/autocomplete@npm:6.18.0": + version: 6.18.0 + resolution: "@codemirror/autocomplete@npm:6.18.0" dependencies: "@codemirror/language": "npm:^6.0.0" "@codemirror/state": "npm:^6.0.0" @@ -1493,7 +1493,7 @@ __metadata: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: 10/b38ef7ad392a88470c5e545b016bf1c443f50840ca4c7af9e19348fe27229aa9118dabc3cff8a0831143a307ab6ba948d7e126c0add7932a7f8044ab5902cda8 + checksum: 10/29cf0857bc81ef1d7de963863b96d9597cbd90d992578a8d91943b5ca2b97f6e0c7c5f868ee9c2f844c1466f11b40799502e0237ee4c45394335c47af3b4765f languageName: node linkType: hard @@ -1550,14 +1550,14 @@ __metadata: languageName: node linkType: hard -"@codemirror/view@npm:6.29.1, @codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0": - version: 6.29.1 - resolution: "@codemirror/view@npm:6.29.1" +"@codemirror/view@npm:6.30.0, @codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0": + version: 6.30.0 + resolution: "@codemirror/view@npm:6.30.0" dependencies: "@codemirror/state": "npm:^6.4.0" style-mod: "npm:^4.1.0" w3c-keyname: "npm:^2.2.4" - checksum: 10/69002f500efed9bd864c710a4040ef03136b08351a61a423c653340d1134acdcab78a92a495666a08045b2bf54ff0811274a7e328c4c1ca4456de3f67694e955 + checksum: 10/6e3c31ef5eb731183ef4ee7bee293d49deae72724d1c01f65fd3e800f0c9cd6e662c411d6a88742599bf2793e5c9491d0a080996e5553a7ce736a148d9f9ad58 languageName: node linkType: hard @@ -2213,13 +2213,13 @@ __metadata: languageName: node linkType: hard -"@lit-labs/virtualizer@npm:2.0.13": - version: 2.0.13 - resolution: "@lit-labs/virtualizer@npm:2.0.13" +"@lit-labs/virtualizer@npm:2.0.14": + version: 2.0.14 + resolution: "@lit-labs/virtualizer@npm:2.0.14" dependencies: - lit: "npm:^3.1.0" + lit: "npm:^3.2.0" tslib: "npm:^2.0.3" - checksum: 10/dcb1bae7c2ae930b56da2309050719572e7e3ba2b2a7aa32c440ba22bb67c75d4b3a3818c8fc589420a206e0dbc803ada73518c8bb68063f51a7dfef4b39b8a9 + checksum: 10/6532a7cad1b36f90f7c5809c31833978b58ab409de5cd51f18bed33e611b7b86ffecb630996df98097a5d43d1e601137b077fd0b1553f44cfd7504d62c879c4f languageName: node linkType: hard @@ -6757,10 +6757,10 @@ __metadata: languageName: node linkType: hard -"core-js@npm:3.37.1": - version: 3.37.1 - resolution: "core-js@npm:3.37.1" - checksum: 10/25d6bd15fcc6ffd2a0ec0be57a78ff3358b3e1fdffdb6800fc93dcfdb3854037aee41f3d101aed8c37905d107daf98218b3e7ee95cec383710d2a66a5d9e541b +"core-js@npm:3.38.0": + version: 3.38.0 + resolution: "core-js@npm:3.38.0" + checksum: 10/95f5c768ee14aaf79e8fece9e58023a5a6367186184c92e825a842f271d3d91c559cfadee9c75712c463f248c61d636ed5a31a1fff1c904d4f5a2ed69b23f0c2 languageName: node linkType: hard @@ -7286,13 +7286,6 @@ __metadata: languageName: node linkType: hard -"encode-utf8@npm:^1.0.3": - version: 1.0.3 - resolution: "encode-utf8@npm:1.0.3" - checksum: 10/0204c37cda21bf19bb8f87f7ec6c89a23d43488c2ef1e5cfa40b64ee9568e63e15dc323fa7f50a491e2c6d33843a6b409f6de09afbf6cf371cb8da596cc64b44 - languageName: node - linkType: hard - "encodeurl@npm:^1.0.2, encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -8995,14 +8988,14 @@ __metadata: "@babel/preset-typescript": "npm:7.24.7" "@babel/runtime": "npm:7.25.0" "@braintree/sanitize-url": "npm:7.1.0" - "@bundle-stats/plugin-webpack-filter": "npm:4.13.4" - "@codemirror/autocomplete": "npm:6.17.0" + "@bundle-stats/plugin-webpack-filter": "npm:4.14.0" + "@codemirror/autocomplete": "npm:6.18.0" "@codemirror/commands": "npm:6.6.0" "@codemirror/language": "npm:6.10.2" "@codemirror/legacy-modes": "npm:6.4.0" "@codemirror/search": "npm:6.5.6" "@codemirror/state": "npm:6.4.1" - "@codemirror/view": "npm:6.29.1" + "@codemirror/view": "npm:6.30.0" "@egjs/hammerjs": "npm:2.0.17" "@formatjs/intl-datetimeformat": "npm:6.12.5" "@formatjs/intl-displaynames": "npm:6.6.8" @@ -9023,7 +9016,7 @@ __metadata: "@lit-labs/context": "npm:0.4.1" "@lit-labs/motion": "npm:1.0.7" "@lit-labs/observers": "npm:2.0.2" - "@lit-labs/virtualizer": "npm:2.0.13" + "@lit-labs/virtualizer": "npm:2.0.14" "@lokalise/node-api": "npm:12.7.0" "@lrnwebcomponents/simple-tooltip": "npm:8.0.2" "@material/chips": "npm:=14.0.0-canary.53b3cad2f.0" @@ -9106,7 +9099,7 @@ __metadata: chart.js: "npm:4.4.3" color-name: "npm:2.0.0" comlink: "npm:4.4.1" - core-js: "npm:3.37.1" + core-js: "npm:3.38.0" cropperjs: "npm:1.6.2" date-fns: "npm:3.6.0" date-fns-tz: "npm:3.1.3" @@ -9150,7 +9143,7 @@ __metadata: lit-analyzer: "npm:2.0.3" lodash.merge: "npm:4.6.2" lodash.template: "npm:4.5.0" - luxon: "npm:3.4.4" + luxon: "npm:3.5.0" magic-string: "npm:0.30.11" map-stream: "npm:0.0.7" marked: "npm:13.0.3" @@ -9164,7 +9157,7 @@ __metadata: proxy-polyfill: "npm:0.3.2" punycode: "npm:2.3.1" qr-scanner: "npm:1.4.2" - qrcode: "npm:1.5.3" + qrcode: "npm:1.5.4" roboto-fontface: "npm:0.10.0" rollup: "npm:2.79.1" rollup-plugin-string: "npm:3.0.0" @@ -10724,13 +10717,6 @@ __metadata: languageName: node linkType: hard -"lodash.assignwith@npm:^4.2.0": - version: 4.2.0 - resolution: "lodash.assignwith@npm:4.2.0" - checksum: 10/f313e1c9c36b67d160a15006b03f95da46dc246f35adbcfd10c2b3e93bb92de6f2cf4bad744a83e0324609913b3eaac1b92ab447b1a409cee00962a138df5a6e - languageName: node - linkType: hard - "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" @@ -10872,10 +10858,10 @@ __metadata: languageName: node linkType: hard -"luxon@npm:3.4.4": - version: 3.4.4 - resolution: "luxon@npm:3.4.4" - checksum: 10/c14164bc338987349075a08e63ea3ff902866735f7f5553a355b27be22667919765ff96fde4d3413d0e9a0edc4ff9e2e74ebcb8f86eae0ce8b14b27330d87d6e +"luxon@npm:3.5.0": + version: 3.5.0 + resolution: "luxon@npm:3.5.0" + checksum: 10/48f86e6c1c96815139f8559456a3354a276ba79bcef0ae0d4f2172f7652f3ba2be2237b0e103b8ea0b79b47715354ac9fac04eb1db3485dcc72d5110491dd47f languageName: node linkType: hard @@ -12373,17 +12359,16 @@ __metadata: languageName: node linkType: hard -"qrcode@npm:1.5.3": - version: 1.5.3 - resolution: "qrcode@npm:1.5.3" +"qrcode@npm:1.5.4": + version: 1.5.4 + resolution: "qrcode@npm:1.5.4" dependencies: dijkstrajs: "npm:^1.0.1" - encode-utf8: "npm:^1.0.3" pngjs: "npm:^5.0.0" yargs: "npm:^15.3.1" bin: qrcode: bin/qrcode - checksum: 10/823642d59a81ba5f406a1e78415fee37fd53856038f49a85c4ca7aa32ba6b8505ab059a832718ac16612bed75aa2a18584faae38cf3c25e2c90fb19b8c55fe46 + checksum: 10/9a1b61760e4ea334545a0f54bbc11c537aba0a17cf52cab9fa1b07f8a1337eed0bc6f7fde41b197f2c82c249bc48728983bfaf861bb7ecb29dc597b2ae33c424 languageName: node linkType: hard