Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: withastro/astro
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: [email protected]
Choose a base ref
...
head repository: withastro/astro
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: [email protected]
Choose a head ref
  • 10 commits
  • 173 files changed
  • 13 contributors

Commits on Apr 9, 2026

  1. Configuration menu
    Copy the full SHA
    d198e82 View commit details
    Browse the repository at this point in the history
  2. [ci] format

    ematipico authored and astrobot-houston committed Apr 9, 2026
    Configuration menu
    Copy the full SHA
    ba18015 View commit details
    Browse the repository at this point in the history
  3. refactor(core): rename logger internal types (#16271)

    Co-authored-by: Princesseuh <[email protected]>
    ematipico and Princesseuh authored Apr 9, 2026
    Configuration menu
    Copy the full SHA
    92fc030 View commit details
    Browse the repository at this point in the history

Commits on Apr 10, 2026

  1. Bump @qwik.dev/partytown to v0.13.2 (#16265)

    Co-authored-by: Emanuele Stoppa <[email protected]>
    ChrisLaRocque and ematipico authored Apr 10, 2026
    Configuration menu
    Copy the full SHA
    7fe40bc View commit details
    Browse the repository at this point in the history

Commits on Apr 13, 2026

  1. Consolidate inline script escaping into shared utility (#16303)

    * Consolidate inline script escaping into shared stringifyForScript utility
    
    Unify the two separate script-embedding escape approaches (defineScriptVars
    and safeJsonStringify) into a single stringifyForScript function in escape.ts.
    Uses a comprehensive < escape strategy rather than pattern-matching specific
    tag sequences, covering all ETAGO variants in one pass.
    
    * Add changeset
    
    * Update changeset description
    
    * Fix stringifyForScript to handle undefined values
    
    * Update astro-directives test assertion for new escape sequence
    matthewp authored Apr 13, 2026
    Configuration menu
    Copy the full SHA
    b06eabf View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b5c2fba View commit details
    Browse the repository at this point in the history
  3. Fix .svelte files in node_modules with Cloudflare prerenderEnvironmen…

    …t: node (#16210)
    
    * fix(cloudflare,svelte): resolve .svelte files in node_modules with prerenderEnvironment: 'node'
    
    Packages that ship .svelte files (e.g. bits-ui) failed with 'Unknown file
    extension .svelte' when using the Cloudflare adapter with
    prerenderEnvironment: 'node'. Two issues caused this:
    
    1. The cf-externals plugin set top-level ssr.noExternal = true, which
       caused vitefu's crawlFrameworkPkgs to return an empty noExternal list
       (it assumed everything was already noExternal). This only applied to
       the ssr environment in Vite 6, leaving the prerender environment
       without the needed noExternal entries.
    
    2. The createNodePrerenderPlugin disabled dep optimization entirely for
       the prerender environment (noDiscovery: true, include: []).
    
    The fix removes ssr.noExternal = true from cf-externals, removes the dep
    optimization override, and has @astrojs/svelte use crawlFrameworkPkgs to
    discover svelte packages and add them to resolve.noExternal for all
    server environments via configEnvironment.
    
    * add changeset
    
    * fix: use fileURLToPath for cross-platform root path
    
    * test: add response body to assertion error for CI debugging
    
    * fix: rename fake-svelte-pkg/dist to src to avoid .gitignore exclusion
    matthewp authored Apr 13, 2026
    Configuration menu
    Copy the full SHA
    e030bd0 View commit details
    Browse the repository at this point in the history
  4. [ci] format

    matthewp authored and astrobot-houston committed Apr 13, 2026
    Configuration menu
    Copy the full SHA
    5f3085b View commit details
    Browse the repository at this point in the history
  5. fix: avoid full-reload in scss modules (#14924)

    * fix: avoid full-reload in scss modules
    
    * fix: improve regex
    
    * fix: ci
    
    * test: add test for modules
    
    * fix(hmr): prevent full-reload for SCSS/CSS module changes
    
    SCSS and CSS module file changes were triggering unnecessary full page
    reloads during development instead of applying HMR updates. This broke
    the developer experience by losing component state and scroll position
    on every style edit.
    
    Root cause: In the `astro:hmr-reload` Vite plugin, style files (CSS,
    SCSS, SASS, LESS, etc.) in the SSR module graph were correctly skipped
    via a regex check, but the handler returned `undefined` instead of an
    empty array. In Vite 6, returning `undefined` from a `hotUpdate` hook
    means "I didn't handle this", causing Vite to propagate through the SSR
    module graph to `.astro` importers. Since `.astro` pages have no HMR
    boundary, this triggered a full page reload.
    
    Changes to `vite-plugin-hmr-reload`:
    
    - Extract `isStyleModule()` helper that checks both `mod.file` and
      `mod.id` (stripping query params like `?inline`, `?used`) against
      the style extension regex. This correctly identifies all style-related
      modules including CSS module variants.
    
    - Return `[]` (empty array) when only style modules were encountered
      in the SSR environment. This tells Vite "handled, nothing to update
      in SSR", preventing the propagation chain that caused full reloads.
      The client environment handles CSS HMR natively through
      framework-specific HMR boundaries (Preact, React, Vue, etc.).
    
    Changes to e2e test fixtures:
    
    - Update the SCSS module HMR test to use a Preact component with
      `client:load` instead of a pure server-rendered Astro page. This
      matches the real-world scenario from the original bug report (issue
      #14869) where Preact + SCSS modules triggered full reloads. CSS
      module HMR requires a client-side framework to re-render components
      with updated class name hashes — pure SSR pages cannot hot-update
      CSS module class names without a full reload.
    
    Closes #14869
    
    * fix(hmr): clarify comment about CSS HMR working for all pages
    
    The previous comment suggested CSS HMR only worked through
    framework-specific boundaries. Vite's built-in style update
    mechanism handles it for all pages, with or without framework
    components (covered by the scss-external test).
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
    
    * update pnpm-lock.yaml
    
    * chore: add changeset for SCSS/CSS module HMR fix
    
    ---------
    
    Co-authored-by: Erika <[email protected]>
    Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
    Co-authored-by: Matthew Phillips <[email protected]>
    Co-authored-by: Matthew Phillips <[email protected]>
    5 people authored Apr 13, 2026
    Configuration menu
    Copy the full SHA
    bb4586a View commit details
    Browse the repository at this point in the history
  6. [ci] release (#16281)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    astrobot-houston and github-actions[bot] authored Apr 13, 2026
    Configuration menu
    Copy the full SHA
    1945a93 View commit details
    Browse the repository at this point in the history
Loading