github vaadin/flow 24.9.19
Vaadin Flow 24.9.19

5 hours ago

Changes since 24.9.18

All changes

New features

  • Expose application properties via Options for TypeScriptBootstrapModifier consumers (#24073) (CP: 24.10) (#24267) (CP: 24.9)
    Commit · Pull request

    TypeScriptBootstrapModifier implementations (e.g., Copilot) need access to application properties to conditionally modify bootstrap TypeScript. Currently, the Copilot script is injected in dev mode regardless of whether Copilot is enabled in the project configuration.
    Add withApplicationConfiguration to Options and property accessor methods (getApplicationStringProperty,getApplicationBooleanProperty) that return Optional.empty() when configuration is unavailable (build time). Wire ApplicationConfiguration from DevModeInitializer.

Fixes #24055

Fixes

  • Load Image/IFrame sources when disabled (CP: 24.10) (#24365) (CP: 24.9)
    Commit · Pull request · Issue

    When an Image or IFrame backed by a DownloadHandler lives inside a disabled component, the browser receives a 403 and the resource never loads. Image.setSrc(DownloadHandler) and IFrame.setSrc(DownloadHandler) now allow the resource to be served regardless of the owner's enabled state, since these sources are fetched passively as part of rendering rather than as a user action.

  • NPE when web push subscription is expired (CP: 24.10) (#24311) (CP: 24.9)
    Commit · Pull request

    When the push service reports a subscription as expired, WebPush.sendNotification threw NullPointerException instead of the intended WebPushException.
    Remove a leftover reference to an unassigned HttpResponse local variable that was no longer populated after the migration to com.interaso.webpush.
    Fixes #24306

  • Install pnpm deps in hoisted mode + declare @babel/types (#24288) (CP: 24.9)
    Commit · Pull request

    Switches pnpm install to hoisted (flat npm-style) layout so transitive npm deps (@babel/types, @lit/reactive-element, cookie, set-cookie-parser, @preact/signals-react/runtime) are always reachable from project root, eliminating the vite-basics IT hang and similar symptoms.

  • Wrong existence check in getStaticResource (CP: 25.0) (#24285) (CP: 24.9)
    Commit · Pull request

    On Jetty 12.1.9, requests for static resources packaged inside a JAR (e.g. vaadinPush.js from flow-push) fail with FileSystemNotFoundException. VaadinServletService.getStaticResource verifies the URL returned by ServletContext.getResource via Path.of(url.toURI()), which for a jar:file:...!/entry URI requires the JAR's NIO FileSystem to already be mounted in the JVM-wide cache. Jetty 12.1.8 incidentally kept those filesystems mounted during resource resolution; 12.1.9 no longer does, so getFileSystem throws and the existing catch (URISyntaxException) lets the unchecked exception escape, producing HTTP 500.
    Probe the URL with URL.openStream() instead. JarURLConnection and FileURLConnection use java.util.jar.JarFile / java.io.File directly and are independent of the NIO FileSystems cache, so the check works uniformly for file: and jar:file: URLs and on every Jetty 12 build. The catch is broadened to IOException, covering both missing files (the original Jetty 12 workaround) and missing JAR entries.

Don't miss a new flow release

NewReleases is sending notifications on new releases.