Changes since 25.0.9
Fixes
-
Prevent deletion of app-shell-imports by frontend cleanup task (#24118) (CP: 25.0)
Commit · Pull requestTaskRemoveOldFrontendGeneratedFilesdeletes files in the frontend generated folder that are not recognized as known generated files. Theapp-shell-imports.jsandapp-shell-imports.d.tsfiles were missing from the known files list, causing them to be deleted whenvaadinPrepareFrontendruns without the index generation task, for example when IntelliJ IDEA triggers a Gradle compilation while the dev server is running with hot deploy. AddAPP_SHELL_IMPORTS_NAMEandAPP_SHELL_IMPORTS_D_TS_NAMEto the known files list. Also improve test coverage by verifying all known file types, including Hilla generated files. Related to #24108 -
Add package.json overrides for workbox dependencies (#24008) (CP:25.0)
Commit · Pull requestCherry-pick of 90eb196 from main, adapted for 25.0: - Files in flow-build-tools/ on main mapped to flow-server/ on 25.0 - JUnit 5 assertions/annotations converted to JUnit 4 - temporaryFolder.getRoot() preserved (JUnit 4 TemporaryFolder) - Removed checkJacksonCompatibility test (method not on 25.0) - Kept vaadinBundlesPlugin import (25.0-specific) ---------
-
Add popover attribute to system error container (#24093) (CP: 25.0)
Commit · Pull requestThis PR cherry-picks changes from the original PR #24093 to branch 25.0. --- #### Original PR description > E.g. Dialog can obscure the message > > Fixes #24094 >
-
Filter hop-by-hop headers in dev server proxy (#24092) (CP: 25.0)
Commit · Pull requestThe dev server proxy in
AbstractDevServerRunnerforwarded all HTTP headers between the browser and the Vite dev server, including hop-by-hop headers that must not be forwarded by a proxy per RFC 9110 Section 7.6.1. It also forwarded the upstream Content-Length which may not match the actual bytes after HttpURLConnection decoding, causing broken responses on some servlet containers. This change filters hop-by-hop headers and Content-Length from proxied requests and responses, and avoids closing the output stream aftersendError(). Related to #23564 -
Preserve slot attribute for initially invisible elements (#24037) (CP: 25.0)
Commit · Pull requestThis PR cherry-picks changes from the original PR #24037 to branch 25.0. --- #### Original PR description > When a component is set invisible before being attached, Flow's client-side binding skips all attribute binding. This means structural attributes like "slot" are never applied to the DOM, breaking CSS selectors that depend on them (e.g. Aura theme's structural selectors for AppLayout drawer). > > On the server side,
StateNode.collectChanges()now emits the slot attribute even for invisible nodes, without consuming the feature's change tracker so the full attribute set is still sent on visibility change. On the client side, >SimpleElementBindingStrategyapplies the slot attribute to the DOM during initial bind of invisible elements. The attribute name is defined once inNodeProperties.SLOT_ATTRIBUTEand referenced by both server and client. > > Fixes vaadin/web-components#11212 --------- -
Add missing
registerStylesimport to generated app-shell-imports.js (#23975)
Commit · Pull request · IssueThe generated
app-shell-imports.jsfile was missing theTHEMABLE_MIXIN_IMPORTline (import { css, unsafeCSS, registerStyles }), causingReferenceError: registerStyles is not definedat startup in production mode when@CssImportwiththemeForwas used on anAppShellConfigurator. Also ensures import statements are moved to the top of the generated app shell file, consistent with other generated import files. -
Prevent duplicated CSS imports in web component generated file (#23984)
Commit · Pull request · IssueWhen a CSS file is referenced by both a regular component and a WebComponentExporter (or AppShellConfigurator), the generated web component imports file contained duplicate import statements and duplicate style registrations for the same CSS. This happened because the web component output merges multiple independently generated files, and the existing string-based deduplication could not recognize that two imports for the same file were equivalent. The fix detects duplicate CSS file imports after merging and unifies their variable references so that identical style registrations are properly deduplicated, while preserving distinct registrations when the same CSS file is intentionally used with different configurations.