Update homeassistant-frontend submodule to 20260312.0#923
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the frontend build toolchain dependency on Gulp to the latest patch release and refreshes the Yarn lockfile accordingly.
Changes:
- Bump
gulpfrom5.0.0to5.0.1inpackage.json. - Update
yarn.lockto reflect the new resolved versions of Gulp and related transitive dependencies.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| package.json | Pins gulp to 5.0.1 (patch upgrade). |
| yarn.lock | Updates lockfile resolutions/checksums for gulp and related transitive deps (e.g., gulp-cli, vinyl-fs, glob-stream, liftoff, vinyl). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Updates the HA frontend submodule from 20250109.0 to 20260312.0, bringing in upstream dependency updates including gulp 5.0.1 which fixes Node 20+ compatibility (gulp-cli 3.1.0 handles async ESM). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
a07e91d to
8d91271
Compare
71ffbb1 to
37a62f0
Compare
There was a problem hiding this comment.
Pull request overview
This PR updates the homeassistant-frontend submodule to 20260312.0 and adjusts HACS frontend code/build/CI to remain compatible with upstream frontend component and build-script changes.
Changes:
- Migrates UI components to upstream replacements (e.g., menu/dropdown, spinner, dialog footer/button patterns).
- Updates build scripts to match upstream build-script API changes (e.g.,
polymer_dir→root_dir) and adds a dummy icon metadata output for rspack resolution. - Updates tooling/CI to newer Node/Yarn and refreshes dependency versions for the new frontend baseline.
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/localize/languages/en.json | Minor localization text capitalization update. |
| src/hacs.ts | Fetches/schedules brands access token during HACS init. |
| src/entrypoint.ts | Removes old compatibility/polymer imports; switches to append-ha-style. |
| src/dashboards/hacs-repository-dashboard.ts | Replaces HA menu components with ha-dropdown equivalents and updates open/anchor behavior. |
| src/dashboards/hacs-dashboard.ts | Same dropdown migration; updates brands URL options usage. |
| src/components/dialogs/hacs-form-dialog.ts | Migrates dialog actions to ha-dialog-footer + ha-button and uses headerTitle. |
| src/components/dialogs/hacs-download-dialog.ts | Migrates spinner and dialog footer/actions to new components. |
| src/components/dialogs/hacs-custom-repositories-dialog.ts | Migrates dialog header/actions to headerTitle + ha-dialog-footer + ha-button. |
| script/gulp/rspack.cjs | Updates HA build-script path API usage (root_dir). |
| script/gulp/paths.cjs | Updates HA paths wiring (root_dir). |
| script/gulp/app.js | Wraps dummy icon generation task to also write iconMetadata.json. |
| package.json | Updates dependencies/devDependencies and Yarn version pointer. |
| .yarnrc.yml | Updates Yarn release path. |
| .github/workflows/test.yml | Updates CI Node version to 22. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
37a62f0 to
8491c1e
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 15 out of 16 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Adapt to upstream component renames and removals: - ha-circular-progress → ha-spinner - ha-menu/ha-md-menu-item → ha-dropdown/ha-dropdown-item - ha-button-menu → ha-dropdown - createCloseHeading() → ha-dialog header-title attribute - resources/compatibility and @polymer/polymer removed - resources/ha-style → resources/append-ha-style Build system fixes: - polymer_dir → root_dir in paths.cjs and rspack.cjs - Remove isHassioBuild (removed upstream) - Write dummy iconMetadata.json for rspack resolution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
8491c1e to
5ac39b6
Compare
|
@loganrosen, any reason this is still in draft? |
| haPaths.polymer_dir = paths.root_dir; | ||
| haPaths.root_dir = paths.home_assistant_frontend_root; | ||
| let haRspackContents; | ||
| try { |
There was a problem hiding this comment.
why is this in try/catch?
should it not just fail on issues?
There was a problem hiding this comment.
It still fails on issues. This is try/finally, not try/catch: createRspackConfig errors are not caught or converted to success. The finally only restores the temporary haPaths.root_dir override so a failed config build does not leave the shared HA build-script paths pointed at the wrong root for later tasks.
| // Compat needs to be first import | ||
| import "../homeassistant-frontend/src/resources/compatibility"; | ||
|
|
There was a problem hiding this comment.
Are these no longer need?
If so, please elaborate.
There was a problem hiding this comment.
Yes, these are no longer needed with the updated HA frontend submodule. The upstream app/authorize/onboarding entrypoints now import append-ha-style instead of the old ha-style resource, and the legacy compatibility/Polymer synthetic-click setup is no longer part of the current upstream entrypoint pattern.
| } | ||
|
|
||
| private async _initHacs(): Promise<void> { | ||
| fetchAndScheduleBrandsAccessToken(this.hass); |
There was a problem hiding this comment.
Im not sure this one make sense, should this not be something set global for ha, and not for ha and all iframe panels?
There was a problem hiding this comment.
Good point. I moved this out of the shared HACS base element and into the root <hacs-frontend> element initialization instead.
HACS still needs to initialize it in its own bundle because this code imports brandsUrl from the bundled HA frontend helper, whose token is module-scoped. The HA parent app initializes its own copy globally via connection-mixin, but that does not populate the HACS iframe bundle copy.
|
@ludeeus this is still draft because I am not confident enough yet that the submodule update works end-to-end, and I do not have a clear full testing path for it. I can validate the build path, but I have not proven the runtime behavior across the full HACS iframe/frontend flow. |
Updates the HA frontend submodule from 20250109.0 to 20260312.0 (latest release), and updates HACS source code for compatibility.
Submodule update
Brings in 14 months of upstream changes including gulp 5.0.1, which fixes Node 20+ compatibility (
gulp-cli@3.1.0handles async ESM modules).HACS source compatibility fixes
Adapts to upstream component renames and removals:
ha-circular-progress→ha-spinnerha-menu/ha-md-menu-item→ha-dropdown/ha-dropdown-itemha-button-menu→ha-dropdownmwc-button+slot="primaryAction"/slot="secondaryAction"→ha-button+ha-dialog-footer slot="footer"createCloseHeading()→ha-dialogheader-titleattributeresources/compatibilityand@polymer/polymerremovedresources/ha-style→resources/append-ha-stylebrandsUrluseFallbackoption removed (API changed to local endpoint)Build system fixes
polymer_dir→root_dirinpaths.cjsandrspack.cjsisHassioBuildparam (removed upstream)iconMetadata.jsonfor rspack resolutionCI
Tested on a live HA 2026.3.3 instance — dashboard, menus, download dialog, and repository pages all work correctly.