diff --git a/Gemfile b/Gemfile index 4aeb311cecc..abf81fac480 100644 --- a/Gemfile +++ b/Gemfile @@ -10,9 +10,9 @@ group :development do gem 'stringex', '2.8.6' # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' - gem 'sass-embedded', '1.87.0' - gem 'rubocop', '1.75.5' - gem 'ruby-lsp', '0.23.17' + gem 'sass-embedded', '1.89.0' + gem 'rubocop', '1.75.7' + gem 'ruby-lsp', '0.23.21' gem 'rackup', '2.2.1' end diff --git a/Gemfile.lock b/Gemfile.lock index f9c33ee2c18..6575f2805b1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -30,10 +30,10 @@ GEM ffi (1.17.2-arm64-darwin) ffi (1.17.2-x86_64-linux-gnu) forwardable-extended (2.6.0) - google-protobuf (4.30.2-arm64-darwin) + google-protobuf (4.31.0-arm64-darwin) bigdecimal rake (>= 13) - google-protobuf (4.30.2-x86_64-linux) + google-protobuf (4.31.0-x86_64-linux-gnu) bigdecimal rake (>= 13) http_parser.rb (0.8.0) @@ -70,12 +70,12 @@ GEM nokogiri (~> 1.12) jekyll-watch (2.2.1) listen (~> 3.0) - json (2.11.3) + json (2.12.0) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - language_server-protocol (3.17.0.4) + language_server-protocol (3.17.0.5) lint_roller (1.1.0) liquid (4.0.4) listen (3.9.0) @@ -99,7 +99,7 @@ GEM prism (1.4.0) public_suffix (6.0.2) racc (1.8.1) - rack (3.1.14) + rack (3.1.15) rack-protection (4.1.1) base64 (>= 0.1.0) logger (>= 1.6.0) @@ -114,12 +114,12 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rbs (3.9.2) + rbs (3.9.4) logger regexp_parser (2.10.0) rexml (3.4.1) rouge (4.5.2) - rubocop (1.75.5) + rubocop (1.75.7) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -133,7 +133,7 @@ GEM rubocop-ast (1.44.1) parser (>= 3.3.7.2) prism (~> 1.4) - ruby-lsp (0.23.17) + ruby-lsp (0.23.21) language_server-protocol (~> 3.17.0) prism (>= 1.2, < 2.0) rbs (>= 3, < 4) @@ -142,10 +142,10 @@ GEM ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.87.0-arm64-darwin) - google-protobuf (~> 4.30) - sass-embedded (1.87.0-x86_64-linux-gnu) - google-protobuf (~> 4.30) + sass-embedded (1.89.0-arm64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.89.0-x86_64-linux-gnu) + google-protobuf (~> 4.31) sass-globbing (1.1.5) sass (>= 3.1) sassc (2.1.0) @@ -159,7 +159,7 @@ GEM rack-protection (= 4.1.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.12079) + sorbet-runtime (0.5.12124) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -185,9 +185,9 @@ DEPENDENCIES nokogiri (= 1.18.8) rackup (= 2.2.1) rake (= 13.2.1) - rubocop (= 1.75.5) - ruby-lsp (= 0.23.17) - sass-embedded (= 1.87.0) + rubocop (= 1.75.7) + ruby-lsp (= 0.23.21) + sass-embedded (= 1.89.0) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 4.1.1) diff --git a/_config.yml b/_config.yml index 0e4c692e191..cd202946ed4 100644 --- a/_config.yml +++ b/_config.yml @@ -108,8 +108,8 @@ social: # Home Assistant release details current_major_version: 2025 current_minor_version: 5 -current_patch_version: 0 -date_released: 2025-05-07 +current_patch_version: 3 +date_released: 2025-05-23 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/package-lock.json b/package-lock.json index dac42fc1413..a0af2537106 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-stringify": "^11.0.0", - "textlint": "^14.7.1", + "textlint": "^14.7.2", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^5.0.13" @@ -427,73 +427,73 @@ "dev": true }, "node_modules/@textlint/ast-tester": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.7.1.tgz", - "integrity": "sha512-WMXqBRsEaNJowPCASXOqKhu5zu+DL8I6u4R+j3gTHZiBZFXMCLVmBT6pY9ed1i2Owqzj7akYTqjaHJKagGLwxg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.7.2.tgz", + "integrity": "sha512-nlS1xJkIgyBinOx9zlMTU7e+06G8k6Xg8QBBeB+8oiY2UD4XKNHv0A3kOtW30DKtHcw1onZku00gI2ep1er77w==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1", + "@textlint/ast-node-types": "^14.7.2", "debug": "^4.4.0" } }, "node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/ast-traverse": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.7.1.tgz", - "integrity": "sha512-E9uflmEmr9bUbnX5W+KXoH4c2o5Bu6aimeqadIAixkVjVcYFKL7XJ44HJJx/Ern6hcSSYlbIPHjScjAMTT/kqQ==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.7.2.tgz", + "integrity": "sha512-H2pH4NhxBO4nHf9bpEn1v5MZ3E1fKFyrGP3uminXWSqnz+ZEX3fVGYde8EyTdLXpwntUjBg67HBVM4EyTKuhTg==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1" + "@textlint/ast-node-types": "^14.7.2" } }, "node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/config-loader": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.7.1.tgz", - "integrity": "sha512-VBsKuqdrurhS8RUVwmMDShqRYm7oBKPHQxJXDKCY1zT1nXUR0y3/9KcZpKXtG1LEfluIteBmZicR/mwobZW56A==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.7.2.tgz", + "integrity": "sha512-06Fqpe36ur7I+SZTtqZbJbsIbbu8uilJuiQG5t+7NIRPNo/d0TrioaMN2Ru/Yr+hq4eSJu+roZ20FNWHMEJb1Q==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/kernel": "^14.7.1", - "@textlint/module-interop": "^14.7.1", - "@textlint/resolver": "^14.7.1", - "@textlint/types": "^14.7.1", - "@textlint/utils": "^14.7.1", + "@textlint/kernel": "^14.7.2", + "@textlint/module-interop": "^14.7.2", + "@textlint/resolver": "^14.7.2", + "@textlint/types": "^14.7.2", + "@textlint/utils": "^14.7.2", "debug": "^4.4.0", "rc-config-loader": "^4.1.3" } }, "node_modules/@textlint/feature-flag": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.7.1.tgz", - "integrity": "sha512-yuwNOVPiwDRg+rL0uXzqo9q6g+Ac2T+TETU7RuMxPBlSQWak98I4c8NbjL+aWzL7xj5bZJw5q9MIlOk1jRxl2g==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.7.2.tgz", + "integrity": "sha512-zfNbBZVrwgDJ4xTWe2FyL/vLvbfw1kTdPRStkFp1tu7I0ypsfwaMh41XZX8rbRqQ5x4p06rLexuOLig9HySyZg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/fixer-formatter": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.7.1.tgz", - "integrity": "sha512-AnTLCHnMUNnwRZ3CmeaY15SLzjN3yWH/0OF4R0c+l2v6JF6cdlU907rdcjc9QQnszbaAqn1+fqT+oQ9N9nd5jA==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.7.2.tgz", + "integrity": "sha512-KISSckKJD1JAHLy57D+EWRscp/GV7XM/nzPxRARpooIJyGlFNvg/VDkGDzU2ZitH63IduI5qdBxKzvbgk4OgdQ==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/module-interop": "^14.7.1", - "@textlint/resolver": "^14.7.1", - "@textlint/types": "^14.7.1", + "@textlint/module-interop": "^14.7.2", + "@textlint/resolver": "^14.7.2", + "@textlint/types": "^14.7.2", "chalk": "^4.1.2", "debug": "^4.4.0", "diff": "^5.2.0", @@ -503,43 +503,43 @@ } }, "node_modules/@textlint/kernel": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.7.1.tgz", - "integrity": "sha512-aRzw6jdU3UPKxZpeZtM98OBjx0gGUK1QP3RrNBaLSqKOeSn8q2NkfApVIldBV9oQ+z1Drwmati8Pf3xSExTYew==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.7.2.tgz", + "integrity": "sha512-sb2npadp7rsnrVvwv4Ia13/HcwZtVZnY04cJYnDOS6R4TthnYRyP55WF7ftB8GX1bw7FIY/NPvJN/UuWTKQ8XA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1", - "@textlint/ast-tester": "^14.7.1", - "@textlint/ast-traverse": "^14.7.1", - "@textlint/feature-flag": "^14.7.1", - "@textlint/source-code-fixer": "^14.7.1", - "@textlint/types": "^14.7.1", - "@textlint/utils": "^14.7.1", + "@textlint/ast-node-types": "^14.7.2", + "@textlint/ast-tester": "^14.7.2", + "@textlint/ast-traverse": "^14.7.2", + "@textlint/feature-flag": "^14.7.2", + "@textlint/source-code-fixer": "^14.7.2", + "@textlint/types": "^14.7.2", + "@textlint/utils": "^14.7.2", "debug": "^4.4.0", "fast-equals": "^4.0.3", "structured-source": "^4.0.0" } }, "node_modules/@textlint/kernel/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/linter-formatter": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.7.1.tgz", - "integrity": "sha512-saAE+e4RZFInRmCF9pu7ukZAHxWaYw9WIA1PptYHItCnlyGS7WB7cYHilkj4coWGr3xGaQ2qAjqX/QIbVE7QGA==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.7.2.tgz", + "integrity": "sha512-QZOqft5uK+o/UN8UcEF3cHgfbG1r3+OWqlJojyjGNkEBbBNPSyDfYlVxDjHqnOAwm7jBaeqVGlwvw/7PUFmsmw==", "dev": true, "license": "MIT", "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "^14.7.1", - "@textlint/resolver": "^14.7.1", - "@textlint/types": "^14.7.1", + "@textlint/module-interop": "^14.7.2", + "@textlint/resolver": "^14.7.2", + "@textlint/types": "^14.7.2", "chalk": "^4.1.2", "debug": "^4.4.0", "js-yaml": "^3.14.1", @@ -552,13 +552,13 @@ } }, "node_modules/@textlint/markdown-to-ast": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.7.1.tgz", - "integrity": "sha512-aKIJi1FZj8PYr/n9EYFsifofT2XNPDX9E/24PiFMNBjiOfovCayOpfn6iuqNEo3CEPx7w4d20rQOUnxD+GYzhg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.7.2.tgz", + "integrity": "sha512-gfOQaBFoFVTj/9rzhEjnJonWZwWjM1RLmaO4J7GHIOFBAo/qr/EJRO3QijQWaAJFoH8xd/3cpUCEzpRwhwkeoA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1", + "@textlint/ast-node-types": "^14.7.2", "debug": "^4.4.0", "mdast-util-gfm-autolink-literal": "^0.1.3", "neotraverse": "^0.6.15", @@ -570,9 +570,9 @@ } }, "node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, @@ -819,88 +819,88 @@ } }, "node_modules/@textlint/module-interop": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.7.1.tgz", - "integrity": "sha512-9mfLErTFx8N+tZNTL+46YCY/jnCDOJKpceng5WVwDeZeMJbewhjY3PVcxMoPnvPT10QnE/hDk3b6riUYckgHgw==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.7.2.tgz", + "integrity": "sha512-rDQhFERa2+xMqhyrPFvAL9d5Tb4RpQGKQExwrezvtCTREh6Zsp/nKxtK0r6o0P9xn1+zq2sZHW9NZjpe7av3xw==", "dev": true, "license": "MIT" }, "node_modules/@textlint/resolver": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.7.1.tgz", - "integrity": "sha512-lQ5ATfpsOgiYnwe2aoS0t9uJ4SrvyiCJpfJdqUQZCVL161O/yMKZBc6nwsyBlruEcFoNxK06F3s3IIV4EsI12A==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.7.2.tgz", + "integrity": "sha512-FCZa9XJx5KihK/4gxXLhS/KfOnBD6vD5UxAMtgrvbifn+JFrW9Kh17uZLCcuJDDJJCnZOHq8jdT7AU+rpmJZ+w==", "dev": true, "license": "MIT" }, "node_modules/@textlint/source-code-fixer": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.7.1.tgz", - "integrity": "sha512-2teYM26+mwFhKaPKYiKjTH3gInjBFJRMPrd2t+WO8NkZnVCrCq0IdWNJYAP34zBd1JLgXAK0EL93Mo+RPwCtcQ==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.7.2.tgz", + "integrity": "sha512-1aWxLIzUIYq9pnrHx7NT7huNbdMONBGORrxYNFC6yIAlSjPo4j44yZabaOMTxjGTPMOvFTUVl2gXTUYqygBGOA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/types": "^14.7.1", + "@textlint/types": "^14.7.2", "debug": "^4.4.0" } }, "node_modules/@textlint/text-to-ast": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.7.1.tgz", - "integrity": "sha512-sSyWYdsX407xMiTKqnB5xWW4ft9SyxwFW2sY3Cpl0emoH5x1CLiYnxpW8uLIN/eFWiSzQlKU9UpyHFfozSC3Ag==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.7.2.tgz", + "integrity": "sha512-8+4WvYnaDR0F7gDszhs9iCQp5kbbEQ9itbvQHcFDhHi4XCDksWdrQz6XJ+Kw/zbLUEz9QtvoXZ1VjZRiwgtTIg==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1" + "@textlint/ast-node-types": "^14.7.2" } }, "node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.7.1.tgz", - "integrity": "sha512-FnxwOOvvkIZ7HPV4gV0ZU6mA+G6LhA5QdspUqXAqTPQ0SY7X95PfQYbzk8Yz4RNyXFMhIcviKLO4+eSyBBTSuw==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.7.2.tgz", + "integrity": "sha512-s6CR68bK9Y/+c0jvM+9oDT5LgvgRbP2A8IzPwuGVhqwFQBJmrSdG4KvBN4ycsq+h3EACTCeyv9bN9no0td9vgw==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/markdown-to-ast": "^14.7.1" + "@textlint/markdown-to-ast": "^14.7.2" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.7.1.tgz", - "integrity": "sha512-Cq1pmUWU95W2cYpXr9GDkKm5RN5XAPwVThFeMtj6RE4bCS+qqH/2O08yhUobKo0ryKb7j1zzBi/QdQ2U34YwvQ==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.7.2.tgz", + "integrity": "sha512-ZtO/i4cZ+y9j7KqsP8P3cbj/XpUDMyedkV+fQP8DkJb238vJ/EUrW8wBwvIq0BmGe7DKIgIl3WeFp8AKxNw7aw==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/text-to-ast": "^14.7.1" + "@textlint/text-to-ast": "^14.7.2" } }, "node_modules/@textlint/types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.7.1.tgz", - "integrity": "sha512-j10OEEHRAaqGMC6dK3+H1Eg3bksASGTmGDozsSepYs7qInY+lYBCe5m3JTrKkDnAX4nNy8ninnKzrYKcVkWahw==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.7.2.tgz", + "integrity": "sha512-VpsmtJf9+7cnIxmKtAVVGVzI6f2k09kBZnzjdTAO8JZ+HTmV46jeoVrotpSfQbWDpuQk2UFPfrsZL/LNf/99ew==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1" + "@textlint/ast-node-types": "^14.7.2" } }, "node_modules/@textlint/types/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/utils": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.7.1.tgz", - "integrity": "sha512-nvIOltt0U5HQzu28qfYgbXUvZxEZBPRnQZHqlwMsqKp55bZ5L3iSNYwHvCej7fm9GOXH7Yz3UzLSko9eF5m3PA==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.7.2.tgz", + "integrity": "sha512-NMLtiALWVYtl/zqRB0GIw3CJLNSV5bq8u35v1qaJOLrWhBVxOkbWISItHhQGndCalHTt8uYkntHXYKpk0oSPtQ==", "dev": true, "license": "MIT" }, @@ -1648,15 +1648,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -6107,28 +6098,27 @@ "dev": true }, "node_modules/textlint": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-14.7.1.tgz", - "integrity": "sha512-jhWEeF3SWYPuItcTRLA1KAyxHAX2diWpqtglcagPzPidFi2OMKCNW55FlaIQvOkWdohp5LzFk0mv4XiChqGr0Q==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-14.7.2.tgz", + "integrity": "sha512-SRff/IHVonktwTMm0momjMZeh0WTPWbQR0S0NXHoU7MUwLM9e4VJeQvkq7V0d37GiM1WfXJSkbaTVidOhOE+0Q==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.7.1", - "@textlint/ast-traverse": "^14.7.1", - "@textlint/config-loader": "^14.7.1", - "@textlint/feature-flag": "^14.7.1", - "@textlint/fixer-formatter": "^14.7.1", - "@textlint/kernel": "^14.7.1", - "@textlint/linter-formatter": "^14.7.1", - "@textlint/module-interop": "^14.7.1", - "@textlint/resolver": "^14.7.1", - "@textlint/textlint-plugin-markdown": "^14.7.1", - "@textlint/textlint-plugin-text": "^14.7.1", - "@textlint/types": "^14.7.1", - "@textlint/utils": "^14.7.1", + "@textlint/ast-node-types": "^14.7.2", + "@textlint/ast-traverse": "^14.7.2", + "@textlint/config-loader": "^14.7.2", + "@textlint/feature-flag": "^14.7.2", + "@textlint/fixer-formatter": "^14.7.2", + "@textlint/kernel": "^14.7.2", + "@textlint/linter-formatter": "^14.7.2", + "@textlint/module-interop": "^14.7.2", + "@textlint/resolver": "^14.7.2", + "@textlint/textlint-plugin-markdown": "^14.7.2", + "@textlint/textlint-plugin-text": "^14.7.2", + "@textlint/types": "^14.7.2", + "@textlint/utils": "^14.7.2", "debug": "^4.4.0", "file-entry-cache": "^10.0.5", - "get-stdin": "^5.0.1", "glob": "^10.4.5", "md5": "^2.3.0", "mkdirp": "^0.5.6", @@ -6250,9 +6240,9 @@ } }, "node_modules/textlint/node_modules/@textlint/ast-node-types": { - "version": "14.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.1.tgz", - "integrity": "sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==", + "version": "14.7.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.7.2.tgz", + "integrity": "sha512-3rZc9vD8y/DlcFe3Y/cyKRRVgBH4ElEUzVFYdRVDwoMSwV/cIyZgYzVG6ZuOItQt+cHSREuijuucZ4VqZynbtg==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 4063f65c1d3..ea593d5a90e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-stringify": "^11.0.0", - "textlint": "^14.7.1", + "textlint": "^14.7.2", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^5.0.13" diff --git a/plugins/alerts.rb b/plugins/alerts.rb index 6178526e577..9784e8264a4 100644 --- a/plugins/alerts.rb +++ b/plugins/alerts.rb @@ -43,9 +43,9 @@ module Jekyll <<~MARKUP

#{title}

-

+

#{contents} -

+
MARKUP end diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index f9987bbe9e1..ae0bd776361 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -39,6 +39,8 @@ excerpt: > Add-ons are additional standalone third-party software packages that can be installed on Home Assistant OS. + aliases: + - add-ons link: /getting-started/concepts-terminology/#add-ons - term: Area definition: >- @@ -77,7 +79,7 @@ Home Assistant has built-in functionality to create files containing a copy of your configuration. This can be used to restore your Home Assistant as well as migrate to a new system. The backup feature is available for all - [installation types](/installation/#advanced-installation-methods). + [installation types](/installation/#about-installation-methods). link: /common-tasks/general/#backups aliases: - backups @@ -305,37 +307,28 @@ Home Assistant Container is a standalone container-based installation of Home Assistant Core. Any [OCI](https://opencontainers.org/) compatible runtime can be used, but the documentation focus is on Docker. - link: /installation/#advanced-installation-methods + link: /installation/#about-installation-methods - term: Home Assistant Core definition: >- Home Assistant Core is the Python program at the heart of Home Assistant. It - is part of all of the four installation types and can be run on various - operating systems. It can be installed standalone (without Home Assistant - Supervisor), using a Virtual Environment (typically referred to as Home - Assistant Core installation method) or as a container using Docker - (typically referred to as Home Assistant Container installation method). - link: /installation/#advanced-installation-methods - excerpt: > - Home Assistant Core is the heart of Home Assistant itself. It is a Python - program that powers every installation type, but can be installed - standalone. + is part of all installation types. It can be installed standalone (without Home Assistant + Supervisor) as a container using Docker (this is typically referred to as the Home Assistant + Container installation method). For development, Core can also be run using a Virtual + Environment (previously referred as the Home Assistant Core installation method. + For production setup, the [Home Assistant Core installation method is deprecated](https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/). - term: Home Assistant Supervised definition: >- - Home Assistant Supervised is a full UI managed home automation ecosystem + The Home Assistant Supervised installation method is a full UI managed home automation ecosystem that runs the Home Assistant Core program, the Home Assistant Supervisor and add-ons. It comes pre-installed on Home Assistant OS, but can be installed standalone on Debian Linux systems. It leverages Docker, which is managed by - the Home Assistant Supervisor. - excerpt: > - Home Assistant Supervised is the full Home Assistant ecosystem, without the - Home Assistant Operating System. - link: /installation/#advanced-installation-methods + the Home Assistant Supervisor. The + [Home Assistant Supervised installation method is deprecated](https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/). - term: Home Assistant Supervisor definition: >- The Home Assistant Supervisor is a program that manages a Home Assistant installation, taking care of installing and updating Home Assistant, add-ons, itself, and, if used, updating the Home Assistant Operating System. - link: /installation/#advanced-installation-methods - term: Home Assistant Operating System definition: >- Home Assistant OS, the Home Assistant Operating System, is an embedded, @@ -345,11 +338,6 @@ add-ons. Home Assistant Supervisor keeps it up to date, removing the need for you to manage an operating system. Home Assistant Operating System is the recommended installation method for most users. - excerpt: > - Home Assistant OS, the Home Assistant Operating System, is an embedded, - minimalistic, operating system designed to run the Home Assistant ecosystem. - It is the recommended installation method for most users. - link: /installation/#advanced-installation-methods - term: Host definition: >- A device that can communicate with other devices on a network. During setup diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index 455fbf68abe..4f3ecefe080 100644 --- a/source/_docs/automation/troubleshooting.markdown +++ b/source/_docs/automation/troubleshooting.markdown @@ -11,11 +11,11 @@ Many automations can be tested directly in the automation editor UI. ### Running the entire automation -In the three dots menu in the automation list or automation editor UI, select the **Run** button. This will execute all of the {% term actions %}, while skipping all {% term triggers %} and {% term conditions %}. This lets you test the full sequence of actions, as if the automation was triggered and all conditions were true. Note that any [trigger ID](/docs/automation/trigger/#trigger-id) used in your triggers will not be active when you test this way. The Trigger ID or any data passed by in the `trigger` data in conditions or actions can't be tested directly this way. +In the three dots menu in the automation list or automation editor UI, select the **Run actions** button. This will execute all of the {% term actions %}, while skipping all {% term triggers %} and {% term conditions %}. This lets you test the full sequence of actions, as if the automation was triggered and all conditions were true. Note that any [trigger ID](/docs/automation/trigger/#trigger-id) used in your triggers will not be active when you test this way. The Trigger ID or any data passed by in the `trigger` data in conditions or actions can't be tested directly this way. You can also trigger an automation manually. This can test the conditions as if the automation was triggered by an event. Navigate to {% my developer_services title="**Developer tools** > **Actions**" %}. In the **Action** drop-down, select **Automation: Trigger**, then **Choose entity** to select the automation you are testing. Toggle whether to skip the conditions, then **Perform action**. If needed, additional `trigger` or other data can be added in the YAML view for testing. The [trigger](/docs/automation/trigger/) page has more information about data within the trigger. -Testing with complex triggers, conditions, and variables can be difficult. Note that using the **Run** button will skip all triggers and conditions, while **Developer Tools** can be used with or without checking conditions. +Testing with complex triggers, conditions, and variables can be difficult. Note that using the **Run actions** button will skip all triggers and conditions, while **Developer Tools** can be used with or without checking conditions. ### Running individual actions or conditions diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index 77811b8ca69..b7e7d543460 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -8,14 +8,10 @@ related: title: Storing credentials in `secrets.yaml` file - docs: /common-tasks/general/#backups title: Creating and restoring backups - - docs: /integrations/backup/docs/tools/dev-tools/#reloading-the-yaml-configuration - title: Creating backups for Home Assistant Container and Core - docs: /docs/tools/dev-tools/#reloading-the-yaml-configuration title: Reloading the YAML configuration from developer tools - docs: /common-tasks/os/#configuring-access-to-files title: Configuring file access on the Operating System - - docs: /common-tasks/supervised/#configuring-access-to-files - title: Configuring file access on Supervised - docs: docs/configuration/troubleshooting/ title: Troubleshooting the configuration --- @@ -31,7 +27,7 @@ Example of a configuration.yaml file, accessed using the File editor add-on on a ## Editing `configuration.yaml` -How you edit your `configuration.yaml` file depends on your editor preferences and the [installation method](/installation/#advanced-installation-methods) you used to set up Home Assistant. Follow these steps: +How you edit your `configuration.yaml` file depends on your editor preferences and the [installation method](/installation/#about-installation-methods) you used to set up Home Assistant. Follow these steps: 1. [Set up file access](#to-set-up-access-to-the-files-and-prepare-an-editor). 2. [Locate the config directory](#to-find-the-configuration-directory). @@ -41,18 +37,13 @@ How you edit your `configuration.yaml` file depends on your editor preferences a ### To set up access to the files and prepare an editor Before you can edit a file, you need to know how to access files in Home Assistant and setup an editor. -File access depends on your [installation method](/installation/#advanced-installation-methods). If you use {% term "Home Assistant Operating System" %} or {% term "Home Assistant Supervised" %}, you can use editor add-ons, for example, but not if you use {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %}. +File access depends on your [installation method](/installation/#about-installation-methods). If you use {% term "Home Assistant Operating System" %}, you can use editor add-ons, for example. If you use {% term "Home Assistant Container" %}, add-ons are not available. -To set up file access, follow the steps for your [installation method](/installation/#advanced-installation-methods): +To set up file access on the Home Assistant Operating System, follow these steps: -- [Configure file access on the Operating System](/common-tasks/os/#configuring-access-to-files): - - If you are unsure which option to choose, install the [file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on). +- If you are unsure which option to choose, install the [file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on). - Alternatively, use the [Studio Code Server add-on](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on). This editor offers live syntax checking and auto-fill of various Home Assistant entities. But it looks more complex than the file editor. - If you prefer to use a file editor on your computer, use the [Samba add-on](/common-tasks/os/#installing-and-using-the-samba-add-on). -- [Configure file access on Supervised](/common-tasks/supervised/#configuring-access-to-files): - - Using the [File editor add-on](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on). - - Using the [Studio Code Server add-on](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on). - - Using the [Samba add-on](/common-tasks/supervised/#installing-and-using-the-samba-add-on). ### To find the configuration directory @@ -67,7 +58,6 @@ To set up file access, follow the steps for your [installation method](/installa - Unless you changed the file structure, the default is as follows: - - {% term "Home Assistant Operating System" %}: the `configuration.yaml` is in the `/config` folder of the installation. - {% term "Home Assistant Container" %}: the `configuration.yaml` is in the config folder that you mounted in your container. - - {% term "Home Assistant Core" %}: the `configuration.yaml` is in the config folder passed to the `hass` command (default is `~/.homeassistant`). 3. Once you located the config folder, you can edit your `configuration.yaml` file. {% note %} @@ -80,12 +70,10 @@ If you have watched any videos about setting up Home Assistant using `configurat After changing configuration or automation files, you can check if the configuration is valid. A configuration check is also applied automatically when you reload the configuration or when you restart Home Assistant. -The method for running a configuration check depends on your [installation type](/installation/#advanced-installation-methods). Check the common tasks for your installation type: +The method for running a configuration check depends on your [installation type](/installation/#about-installation-methods). Check the common tasks for your installation type: - [Configuration check on Operating System](/common-tasks/os/#configuration-check) -- [Configuration check on Supervised](/common-tasks/supervised/#configuration-check) - [Configuration check on Container](/common-tasks/container/#configuration-check) -- [Configuration check on Core](/common-tasks/core/#configuration-check) ## Reloading the configuration to apply changes diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown index 225abcf2517..a7f92485008 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -24,7 +24,7 @@ Here's the summary of what you *must* do to secure your Home Assistant system: ## Remote access -If you want secure remote access, the easiest option is to use [Home Assistant Cloud](/cloud/) by which you also [support](https://www.nabucasa.com/about/) the founders of Home Assistant. +If you want secure remote access, the easiest option is to use [Home Assistant Cloud](/cloud/) by which you also support the [Open Home Foundation](https://www.openhomefoundation.org), which develops Home Assistant, ESPHome and much more. Another option is to use TLS/SSL via the add-on [Duck DNS](/integrations/duckdns/) integrating Let's Encrypt. diff --git a/source/_docs/locked_out.md b/source/_docs/locked_out.md index bca337d5190..5132314b321 100644 --- a/source/_docs/locked_out.md +++ b/source/_docs/locked_out.md @@ -4,9 +4,9 @@ description: "Options for regaining access" related: - docs: /common-tasks/os/#listing-all-users-from-the-command-line title: Listing all usernames via command line - - url: https://yellow.home-assistant.io/guides/factory-reset/ + - url: https://support.nabucasa.com/hc/en-us/articles/25463622043165 title: Reset the Yellow - - url: https://green.home-assistant.io/guides/reset/ + - url: https://support.nabucasa.com/hc/en-us/articles/25161225495837 title: Reset the Green --- @@ -25,10 +25,10 @@ You are the **owner** of the Home Assistant server and you cannot login because - you are using the {% term "Home Assistant Operating System" %} - you have access to the Home Assistant server. 2. Open a terminal connection to Home Assistant: - - If you are using a Home Assistant Green, follow these steps [to access the console](https://green.home-assistant.io/guides/use-terminal/). + - If you are using a Home Assistant Green, follow these steps [to access the console](https://support.nabucasa.com/hc/en-us/articles/25153288092829). - If you are using a Home Assistant Yellow, follow these steps: - - [to access the console from Windows](https://yellow.home-assistant.io/guides/use-serial-console-windows/) - - [to access the console from Linux or macOS](https://yellow.home-assistant.io/guides/use-serial-console-linux-macos/). + - [to access the console from Windows](https://support.nabucasa.com/hc/en-us/articles/25454894609693) + - [to access the console from Linux or macOS](https://support.nabucasa.com/hc/en-us/articles/25454972435357). - If you are using another system, connect keyboard and monitor. The procedure might be similar the one used for Green. - If you are using a Home Assistant OVA (virtualization image): - Access the system console by opening the terminal through your virtualization platform's interface (for example, Proxmox, VMware, VirtualBox). @@ -72,9 +72,9 @@ Use this procedure only if the following conditions are met: 1. If you are using a Home Assistant Yellow or Green, refer to their documentation. - If you are using a Home Assistant Yellow, refer to the following procedure: - - [Resetting the owner password on Home Assistant Yellow](https://yellow.home-assistant.io/faq/#i-forgot-the-owner-password-for-home-assistant-how-can-i-reset-it) + - [Resetting the owner password on Home Assistant Yellow](https://support.nabucasa.com/hc/en-us/articles/25455301907997) - If you are using a Home Assistant Green, refer to the following procedure: - - [Resetting the owner password on Home Assistant Green](https://green.home-assistant.io/faq/#i-forgot-the-owner-password-for-the-home-assistant-green-how-can-i-reset-it) + - [Resetting the owner password on Home Assistant Green](https://support.nabucasa.com/hc/en-us/articles/25142896227357) 2. If you are not using a Yellow or Green: Connect to the console of the Home Assistant server: - If you are using a virtual machine, connect to your virtual machine console. - If you are using another board, connect a keyboard and monitor to your device and access the terminal. The procedure is likely very similar to the one described for the Home Assistant Green. @@ -115,8 +115,8 @@ If you lose the password associated with the owner account and the steps above d - If you have an external backup with an administrator account of which you still know the login credentials, you can restore that backup. - If you do not have a backup, resetting the device will erase all data. -- If you have a Home Assistant Green, [reset the Green](https://green.home-assistant.io/guides/reset/). -- If you have a Home Assistant Yellow, [reset the Yellow](https://yellow.home-assistant.io/guides/factory-reset/). +- If you have a Home Assistant Green, [reset the Green](https://support.nabucasa.com/hc/en-us/articles/25161225495837). +- If you have a Home Assistant Yellow, [reset the Yellow](https://support.nabucasa.com/hc/en-us/articles/25463622043165). ## Recovering data for Home Assistant (including Supervised) diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 2f331de65a8..7f822190be9 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -171,7 +171,7 @@ This procedure has been tested with the following modules: 1. Make sure the module is properly seated on the Home Assistant Yellow. ![Aeotec Z-Pi 7 on Home Assistant Yellow](/images/docs/z-wave/zpi-7-yellow.jpg). -2. Carefully [close the case](https://yellow.home-assistant.io/guides/add-ssd-existing-installation/#reassembling-top-part) and power up Home Assistant Yellow. +2. Carefully [close the case](https://support.nabucasa.com/hc/en-us/articles/25606333033501) (see Reassembling your Home Assistant Yellow section) and power up Home Assistant Yellow. 3. Follow the procedure on [setting up a Z-Wave JS server](/integrations/zwave_js/#setting-up-a-z-wave-js-server). 1. In step 2, follow the manual setup steps to install the Z-Wave integration. 2. in Step 4, you will be prompted to choose a **Device path**. Choose **ttyAMA0**. diff --git a/source/_faq/unique_id.markdown b/source/_faq/unique_id.markdown index daaf22ef890..ecd1ad80b62 100644 --- a/source/_faq/unique_id.markdown +++ b/source/_faq/unique_id.markdown @@ -10,7 +10,7 @@ If you try to access the configuration dialog for an entity in your Home Assista This means that this entity does not have a unique identification, e.g., a serial number or another identifier that is guaranteed to be static and never changes. As a result, the normal editing process that allows you to change various settings through the user interface (such as the entity ID, icon, friendly name, etc.) is not possible here. -Typically, you'll see this when you create entities manually using YAML, but it can also appear if the integration that provides this entity, cannot determine a unique ID. This however is not an error, but just a limitation of the integration you use. A few selected integrations (such as [`template`](/integrations/template/) and [`mqtt`](/integrations/mqtt/)) allow the user to define a unique ID. +Typically, you'll see this when you create entities manually using YAML, but it can also appear if the integration that provides this entity cannot determine a unique ID. This is not an error, but rather a limitation of the integration you use. A few selected integrations (such as [`template`](/integrations/template/) and [`mqtt`](/integrations/mqtt/)) allow you to define a unique ID. ### Used where? @@ -36,4 +36,12 @@ Typically, you'll see this when you create entities manually using YAML, but it In case your entity has no unique ID and therefore cannot be changed through the UI, there are some [manual customization options](/docs/configuration/customizing-devices) directly through YAML files. +### Can I add a unique ID myself? + +No, as an end-user, you cannot add a unique ID to an entity that doesn't have one. Unique IDs are a feature that must be provided by the integration itself. This is because the unique ID needs to be persistent across restarts and should consistently identify the same physical device or service. + +If an integration currently doesn't provide unique IDs for its entities, this means the integration could potentially be modernized to include this capability. However, providing unique IDs is not currently a mandatory requirement for all integrations. + +The Home Assistant project always welcomes code contributions to enhance integrations with this capability. If you're interested in improving an integration to provide unique IDs, you can contribute code to the Home Assistant project. For more information on contributing, please visit the [developer documentation](https://developers.home-assistant.io/docs/development_index). + In case you want to read more about unique IDs, head over to this [developer documentation page](https://developers.home-assistant.io/docs/entity_registry_index/). diff --git a/source/_includes/asides/docs_sitemap.html b/source/_includes/asides/docs_sitemap.html index cd21ce1aca3..578fdbe0521 100644 --- a/source/_includes/asides/docs_sitemap.html +++ b/source/_includes/asides/docs_sitemap.html @@ -276,9 +276,9 @@
  • {% icon "bitcoin-icons:node-hardware-filled" %} Official hardware
  • diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index dd8a3652fac..89897d3a2a6 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -9,8 +9,8 @@
  • {% active_link /installation/ Installation %} {% if root == 'installation' %}