Skip to content

AstroEco is Contributing…

Display your GitHub pull requests using astro-loader-github-prs

withastro/starlight

Description

Update the Catppuccin theme href to https://starlight.catppuccin.com/

withastro/astro

Changes

  • The google config was not passed to the unifont provider (reported on Discord)

Testing

N/A

Docs

Changeset, withastro/docs#11484

withastro/starlight

Description

This PR is a bit of a blast from the past, as it fixes an issue I initially spotted in Astro Docs almost a year ago when copying headings with either double click (select a word) or triple click (select a paragraph/logical unit) with a different behavior between browsers.

Chrome

Double clicking and copying a heading with a single word or the last word of a multiple words heading will inject Section in the clipboard text.

For example, going to this page and double clicking and copying the heading Usage will copy UsageSection instead of Usage. Double clicking and copying the word icons in the heading Customize icons will copy iconsSection instead of icons.

Triple clicking is working as expected.

Firefox

Triple clicking a heading and copying will inject the entire heading anchor link screen reader text in the clipboard text.

For example, going to this page and triple clicking and copying the heading Customize icons will copy Customize iconsSection titled “Customize icons” instead of Customize icons.

Safari

Double clicking and copying a heading with a single word or the last word of a multiple words heading will inject Section in the clipboard text.

For example, going to this page and double clicking and copying the heading Usage will copy UsageSection instead of Usage. Double clicking and copying the word icons in the heading Customize icons will copy iconsSection instead of icons.

Triple clicking is working as expected.

Changes

The good thing is that I also fixed the issue in withastro/docs#8015 at the time. This PR uses the same approach to fix the issue in Starlight. The original PR contains a breakdown of various approaches I tried and why I used the one I did so I'm not going to repeat it here.

withastro/astro

Changes

When running the latest version of create-astro with pnpm, I'm getting the following error:

▲  error Error
▲  error Dependencies failed to install, please run pnpm install to install them manually after setup.
✔  Project initialized!
■ Template copied
■ Dependencies installed

After adding some logging, the underlying issue seems to be:

ERR_PNPM_MISSING_PACKAGE_NAME  `pnpm add` requires the package name

In #13395, the install() function was updated to use pnpm add instead of pnpm install without a changeset so it ended up being released 2 days ago with version 4.11.2. This PR reverts that change.

The install() function seems to only be meant to install all dependencies (and never a single package) so I'm not sure if there is a reason I'm potentially missing for the change or not.

Testing

I tested locally using node create-astro.mjs but I don't know how to force a specific package manager with this method so I temporarily hardcoded pnpm. Without the fix, I properly reproduced the error. After the fix, the issue seems to be resolved.

Looks like most of the tests for create-astro are using dryRun: true so not sure if/how we should add a test for this.

Docs

This is a bug fix that does not require any documentation change.

withastro/astro

Changes

Testing

No tests needed, I think?

Docs

Docs will need to mention that the SvgComponent component is available for use, similar to the mentions of other types like ImageMetadata.

/cc @withastro/maintainers-docs for feedback!

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.7.4

Patch Changes

withastro/astro

Changes

Currently the action API context is created by destructuring the unused properties of the context object. This was causing warnings to be logged because it copies by value, meaning the session get method was being called.

This PR switches to using Object.create and getOwnPropertyDescriptors, which preserves the accessors on the object, menaing the session getter isn't called unless the user accesses it.

Fixes #13644

Testing

Tested with the repro for #13644

Docs

withastro/astro

Changes

  • In #13594 in order to avoid too many preloads, I filtered the font sources so there are less
  • However, this was not the right fix. Instead we want to preserve all sources but only add the first one to be preloaded

Testing

Manual

Docs

Changeset

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight-tailwind@4.0.1

Patch Changes

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.7.3

Patch Changes

  • #13643 67b7493 Thanks @tanishqmanuja! - Fixes a case where the font face src format would be invalid when using the experimental fonts API

  • #13639 23410c6 Thanks @florian-lefebvre! - Fixes a case where some font families would not be downloaded when using the same font provider several times, using the experimental fonts API

withastro/astro

Changes

Fixes issue: #13642

Testing

Docs

withastro/starlight

Description

Fixes a small mistake in the new content in pages.mdx

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

create-astro@4.11.2

Patch Changes

withastro/astro

Changes

  • Closes #13637
  • Unifont deduplicates providers based on the provider name. However in our case the same provider can be called with a different config (eg. adobe), so we have some logic to hash the config and dedupe
  • However, the logic AND the tests were wrong because in certain cases, the family provider name was not assigned a value and as such, the family could not be resolved by unifont

Testing

Tests updated + manual

Docs

Changeset

withastro/astro

Changes

A trivial text change so I can add the proper changeset this time 😅

(Follow up to #13603 which added the minimal template, but didn't trigger an update to the create-astro package)

Testing

No tests.

Docs

When this is released, I can improve instructions to the tutorial in docs

withastro/starlight

Description

The Starlight Tailwind compatibility package restores only some crucial styles from Tailwind Preflight instead of using it entirely.

This previous version of the Tailwind compatibility package used to restore a rule resetting all border styles to allow adding a border to an element by just adding a border-width.

The new version is no longer restoring this rule (which still exists in Tailwind v4) which could cause updating users to have default borders on their buttons. This PR adds it back to the compatibility package.

For example, this issue was initially reported while updating the Cloudflare Docs, here is how it looks with Tailwind v4 without the fix and with the fix:

Before After
SCR-20250417-issh SCR-20250417-itin
withastro/astro

Changes

  • RFC feedback
  • Before this PR, we were generating 1 fallback @font-face definition based on the first font file we found for a given family
  • However, it wasn't great because the fallback would only be accurate for a given weight/style which was defeating its purpose
  • Now we generate a fallback for each weight/style
  • Fixes a few cases where useless duplicate fallbacks could be created

Testing

Tests updated, tested manually

Docs

Changeset

withastro/astro

Changes

Closes #13633

A check was modified, but it turns out that it was required, in fact the tests introduced in #13598 still pass

Testing

Added a new test case

Docs

N/A

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight-tailwind@4.0.0

Major Changes

  • #2322 f14eb0c Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.34.0

    Please use the @astrojs/upgrade command to upgrade your project:

    npx @astrojs/upgrade
  • #2322 f14eb0c Thanks @HiDeoo! - Adds support for Tailwind v4, drops support for Tailwind v3.

    ⚠️ BREAKING CHANGE: Tailwind v3 is no longer supported. Tailwind v4 support in Astro is now provided using a Vite plugin and the Astro Tailwind integration is no longer required.

    1. Remove the Astro Tailwind integration. The Astro Tailwind integration is no longer required with Tailwind v4.

       // astro.config.mjs
       import { defineConfig } from "astro/config";
       import starlight from "@astrojs/starlight";
      -import tailwind from "@astrojs/tailwind";
      
       export default defineConfig({
         integrations: [
           starlight({
             title: "Docs with Tailwind",
             customCss: ["./src/tailwind.css"],
           }),
      -    tailwind({ applyBaseStyles: false }),
         ],
       });
    2. Install Tailwind v4. Install the latest version of the tailwindcss and @tailwindcss/vite packages.

      Use the astro add tailwind command to install and configure both packages:

      npx astro add tailwind
    3. Update Tailwind base styles. Tailwind CSS base styles needs to be updated for Tailwind v4 and also to use Starlight Tailwind CSS.

      /* src/tailwind.css */
      -@tailwind base;
      -@tailwind components;
      -@tailwind utilities;
      +@layer base, starlight, theme, components, utilities;
      +
      +@import '@astrojs/starlight-tailwind';
      +@import 'tailwindcss/theme.css' layer(theme);
      +@import 'tailwindcss/utilities.css' layer(utilities);
      +
      +@theme {
      +	/*
      +	Configure your Tailwind theme that will be used by Starlight.
      +	https://starlight.astro.build/guides/css-and-tailwind/#styling-starlight-with-tailwind
      +	*/
      +}
      +
      +/*
      +Add additional Tailwind styles to this file:
      +https://tailwindcss.com/docs/adding-custom-styles#using-custom-css
      +*/
    4. Update Tailwind customizations. If you previously customized your Tailwind theme configuration in the tailwind.config.mjs file, such customizations are now defined through CSS using the @theme block in your Tailwind base styles.

      1. Locate existing customizations in your tailwind.config.mjs file. The following example defines customizations for the accent colors, gray scale, and font families used by Starlight:

        // tailwind.config.mjs
        import starlightPlugin from '@astrojs/starlight-tailwind';
        import colors from 'tailwindcss/colors';
        
        /** @type {import('tailwindcss').Config} */
        export default {
          content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
          theme: {
            extend: {
              colors: {
                // Custom accent colors.
                accent: colors.fuchsia,
                // Custom gray scale.
                gray: colors.slate,
              },
              fontFamily: {
                // Custom text font.
                sans: ['"Atkinson Hyperlegible"'],
                // Custom code font.
                mono: ['"IBM Plex Mono"'],
              },
            },
          },
          plugins: [starlightPlugin()],
        };
      2. The above customizations can be migrated to the new @theme block in the file containing your Tailwind base styles as follows:

        /* src/tailwind.css */
        @layer base, starlight, theme, components, utilities;
        
        @import '@astrojs/starlight-tailwind';
        @import 'tailwindcss/theme.css' layer(theme);
        @import 'tailwindcss/utilities.css' layer(utilities);
        
        @theme {
          /* Custom accent colors. */
          --color-accent-50: var(--color-fuchsia-50);
          --color-accent-100: var(--color-fuchsia-100);
          --color-accent-200: var(--color-fuchsia-200);
          --color-accent-300: var(--color-fuchsia-300);
          --color-accent-400: var(--color-fuchsia-400);
          --color-accent-500: var(--color-fuchsia-500);
          --color-accent-600: var(--color-fuchsia-600);
          --color-accent-700: var(--color-fuchsia-700);
          --color-accent-800: var(--color-fuchsia-800);
          --color-accent-900: var(--color-fuchsia-900);
          --color-accent-950: var(--color-fuchsia-950);
          /* Custom gray scale. */
          --color-gray-50: var(--color-slate-50);
          --color-gray-100: var(--color-slate-100);
          --color-gray-200: var(--color-slate-200);
          --color-gray-300: var(--color-slate-300);
          --color-gray-400: var(--color-slate-400);
          --color-gray-500: var(--color-slate-500);
          --color-gray-600: var(--color-slate-600);
          --color-gray-700: var(--color-slate-700);
          --color-gray-800: var(--color-slate-800);
          --color-gray-900: var(--color-slate-900);
          --color-gray-950: var(--color-slate-950);
          /* Custom text font. */
          --font-sans: 'Atkinson Hyperlegible';
          /* Custom code font. */
          --font-mono: 'IBM Plex Mono';
        }

    We recommend checking your site’s appearance when upgrading to make sure there are no style regressions caused by this change.

    For full details about upgrading from Tailwind v3 to v4, see the official upgrade guide.

@astrojs/starlight-markdoc@0.4.0

Minor Changes

  • #3033 8c19678 Thanks @delucis! - Adds support for generating clickable anchor links for headings.

    By default, the Starlight Markdoc preset now includes a default heading node, which renders an anchor link beside headings in your Markdoc content.

    If you want to disable this new feature, pass headingLinks: false in your Markdoc config:

    export default defineMarkdocConfig({
      // Disable the default heading anchor link support
      extends: [starlightMarkdoc({ headingLinks: false })],
    });

    ⚠️ BREAKING CHANGE: The minimum supported peer version of Starlight is now v0.34.0.

    Please update Starlight and the Starlight Markdoc preset together:

    npx @astrojs/upgrade

@astrojs/starlight@0.34.0

Minor Changes

  • #2322 f14eb0c Thanks @HiDeoo! - Groups all of Starlight's CSS declarations into a single starlight cascade layer.

    This change allows for easier customization of Starlight's CSS as any custom unlayered CSS will override the default styles. If you are using cascade layers in your custom CSS, you can use the @layer CSS at-rule to define the order of precedence for different layers including the ones used by Starlight.

    We recommend checking your site’s appearance when upgrading to make sure there are no style regressions caused by this change.

  • #3122 3a087d8 Thanks @delucis! - Removes default attrs and content values from head entries parsed using Starlight’s schema.

    Previously when adding head metadata via frontmatter or user config, Starlight would automatically add values for attrs and content if not provided. Now, these properties are left undefined.

    This makes it simpler to add tags in route middleware for example as you no longer need to provide empty values for attrs and content:

    head.push({
      tag: 'style',
      content: 'div { color: red }'
    - attrs: {},
    });
    head.push({
      tag: 'link',
    - content: ''
      attrs: { rel: 'me', href: 'https://example.com' },
    });

    This is mostly an internal API but if you are overriding Starlight’s Head component or processing head entries in some way, you may wish to double check your handling of Astro.locals.starlightRoute.head is compatible with attrs and content potentially being undefined.

  • #3033 8c19678 Thanks @delucis! - Adds support for generating clickable anchor links for headings.

    By default, Starlight now renders an anchor link beside headings in Markdown and MDX content. A new <AnchorHeading> component is available to achieve the same thing in custom pages built using <StarlightPage>.

    If you want to disable this new Markdown processing set the markdown.headingLinks option in your Starlight config to false:

    starlight({
      title: 'My docs',
      markdown: {
        headingLinks: false,
      },
    }),

    ⚠️ BREAKING CHANGE: The minimum supported version of Astro is now v5.5.0.

    Please update Starlight and Astro together:

    npx @astrojs/upgrade
  • #2322 f14eb0c Thanks @HiDeoo! - Removes Shiki css-variables theme fallback.

    ⚠️ Breaking change:

    Previously, Starlight used to automatically provide a fallback theme for Shiki, the default syntax highlighter built into Astro if the configured Shiki theme was not github-dark.

    This fallback was only relevant when the default Starlight code block renderer, Expressive Code, was disabled and Shiki was used. Starlight no longer provides this fallback.

    If you were relying on this behavior, you now manually need to update your Astro configuration to use the Shiki css-variables theme to match the previous behavior.

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
    + markdown: {
    +   shikiConfig: {
    +     theme: 'css-variables',
    +   },
    + },
    });

    Additionally, you can use custom CSS to control the appearance of the code blocks. Here are the previously used CSS variables for the fallback theme:

    :root {
      --astro-code-foreground: var(--sl-color-white);
      --astro-code-background: var(--sl-color-gray-6);
      --astro-code-token-constant: var(--sl-color-blue-high);
      --astro-code-token-string: var(--sl-color-green-high);
      --astro-code-token-comment: var(--sl-color-gray-2);
      --astro-code-token-keyword: var(--sl-color-purple-high);
      --astro-code-token-parameter: var(--sl-color-red-high);
      --astro-code-token-function: var(--sl-color-red-high);
      --astro-code-token-string-expression: var(--sl-color-green-high);
      --astro-code-token-punctuation: var(--sl-color-gray-2);
      --astro-code-token-link: var(--sl-color-blue-high);
    }

Patch Changes

  • #3118 77a1104 Thanks @delucis! - Fixes passing imported SVGs to the frontmatter prop of the <StarlightPage> component in Astro ≥5.7.0
withastro/astro

Changes

  • Improves the generated fallback name. It now takes names with quotes into account by removing the quotes to avoid creating invalid strings
  • Refactors font face declaration generation so the logic is shared
  • Improves the quality of fallbacks by pulling system metrics (RFC feedback):
    • I didn't notice that initially but to get better fallbacks, you need to provide the metrics of the target font file (done by reading the font file) as well as the metrics of the fallback font (system font eg. Arial)
    • So now, the metrics of system fonts used as fallbacks are put in a constant to avoid having to add the @capsizecss/metrics package (which is huge and was removed in #13626)
  • Makes changes to implementation copied from nuxt/fonts and capsize to simplify things

Testing

Tests added

Docs

Changesets

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.7.2

Patch Changes

withastro/starlight

Description

  • Removes default values for attrs and content from the schema used to parse head entries (previously these were {} and "" respectively).
  • This makes it simpler to add new entries directly to the parsed head array without types saying you must set these default values.
  • Made this a minor as it could technically be breaking for users or plugins who are overriding or processing head in some way, although for the average site this should be basically an internal API change.
  • No docs change needed as we already document head by linking to HeadConfig, which shows these properties as optional.
withastro/astro

Changes

Testing

Added

Docs

Changeset

withastro/astro

Changes

Upgraded drizzle-orm to latest v0.42.0

Testing

Docs

Changeset

withastro/starlight

Description

  • Closes #3114
  • Changes how we mock Astro’s image() schema function to account for the new SVG import shape which is stable in Astro 5.7.0
withastro/astro

Changes

  • Exposes virtual module on the client

Testing

Using the preview release

Docs

Changeset

withastro/astro

Changes

  • RFC feedback
  • Removes @capsizecss/metrics because it's heavy. Instead, we read the font files directly
  • Simplifies the cache util

Testing

Should pass

Docs

Changeset

withastro/astro

Changes

  • According to capo, preload link should come before style tags
  • Updated after feedback on the RFC

Testing

N/A

Docs

Changeset

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.7.1

Patch Changes

withastro/astro

Changes

Use the | (string & {}) trick to ensure that key autocomplete always works

Testing

Docs

withastro/astro

Changes

  • Fixed mistake in changelog
withastro/astro

Changes

The 5.7.0 changelog includes <h2> headings in the sessions details which is inconsistent with other headings in the changelog and is breaking some automated tooling that attempts to display a version’s notes (see e.g. this Renovate PR: withastro/astro.build#1529)

Testing

n/a

Docs

n/a

withastro/astro

Changes

As per #13607, redirects had a regression with relative redirects introduced in #12979. This PR fixes it.

Fixes #13607

Testing

  • Unit tests
  • Tested with my local side project using the new changes

Docs

/cc @withastro/maintainers-docs for feedback! This was never documented but always worked since early versions of Astro so as mentioned by @ematipico on #13607 we should probaly update the docs. Happy to have a stab at it if you want too.

withastro/starlight

{ minHeadingLevel: 2; maxHeadingLevel: 3; } was throwing an error.

Changed it to { minHeadingLevel: 2, maxHeadingLevel: 3 } and it worked fine.

Description

  • Closes #
  • What does this PR change? Give us a brief description.
  • Did you change something visual? A before/after screenshot can be helpful.
withastro/astro

Changes

This adds the @message property (and message to the ErrorData object) for one of the new error messages. @florian-lefebvre or someone please correct/verify the actual content!

Testing

Not tested, but the @message property is the one that generates the error message block in docs. Without it, we only get a "What went wrong?" section. (This might also affect the error message people see?)

e.g. without: (we had one slip by earlier!)
image

vs most other error messages:
image

Docs

All for docs!

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.7.0

Minor Changes

  • #13527 2fd6a6b Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.

    Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:

    ---
    export const prerender = false; // Not needed with 'server' output
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    Configuring session storage

    Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.

    If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the session configuration option:

    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel';
    
    export default defineConfig({
      adapter: vercel(),
      session: {
        driver: 'upstash',
      },
    });

    Using sessions

    Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.

    In pages and components, you can access the session using Astro.session:

    ---
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    In endpoints, actions, and middleware, you can access the session using context.session:

    export async function GET(context) {
      const cart = await context.session.get('cart');
      return Response.json({ cart });
    }

    If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be undefined and an error will be logged in the console:

    ---
    export const prerender = true;
    const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined
    ---

    Upgrading from Experimental to Stable

    If you were previously using the experimental API, please remove the experimental.session flag from your configuration:

    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    
    export default defineConfig({
       adapter: node({
         mode: "standalone",
       }),
    -  experimental: {
    -    session: true,
    -  },
    });

    See the sessions guide for more information.

  • #12775 b1fe521 Thanks @florian-lefebvre! - Adds a new, experimental Fonts API to provide first-party support for fonts in Astro.

    This experimental feature allows you to use fonts from both your file system and several built-in supported providers (e.g. Google, Fontsource, Bunny) through a unified API. Keep your site performant thanks to sensible defaults and automatic optimizations including fallback font generation.

    To enable this feature, configure an experimental.fonts object with one or more fonts:

    import { defineConfig, fontProviders } from "astro/config"
    
    export default defineConfig({
        experimental: {
            fonts: [{
                provider: fontProviders.google(),
          `      name: "Roboto",
                cssVariable: "--font-roboto",
            }]
        }
    })

    Then, add a <Font /> component and site-wide styling in your <head>:

    ---
    import { Font } from 'astro:assets';
    ---
    
    <Font cssVariable="--font-roboto" preload />
    <style>
      body {
        font-family: var(--font-roboto);
      }
    </style>

    Visit the experimental Fonts documentation for the full API, how to get started, and even how to build your own custom AstroFontProvider if we don't yet support your preferred font service.

    For a complete overview, and to give feedback on this experimental API, see the Fonts RFC and help shape its future.

  • #13560 df3fd54 Thanks @ematipico! - The virtual module astro:config introduced behind a flag in v5.2.0 is no longer experimental and is available for general use.

    This virtual module exposes two sub-paths for type-safe, controlled access to your configuration:

    • astro:config/client: exposes config information that is safe to expose to the client.
    • astro:config/server: exposes additional information that is safe to expose to the server, such as file and directory paths.

    Access these in any file inside your project to import and use select values from your Astro config:

    // src/utils.js
    import { trailingSlash } from 'astro:config/client';
    
    function addForwardSlash(path) {
      if (trailingSlash === 'always') {
        return path.endsWith('/') ? path : path + '/';
      } else {
        return path;
      }
    }

    If you were previously using this feature, please remove the experimental flag from your Astro config:

    // astro.config.mjs
    export default defineConfig({
    -  experimental: {
    -    serializeConfig: true
    -  }
    })

    If you have been waiting for feature stabilization before using configuration imports, you can now do so.

    Please see the astro:config reference for more about this feature.

  • #13578 406501a Thanks @stramel! - The SVG import feature introduced behind a flag in v5.0.0 is no longer experimental and is available for general use.

    This feature allows you to import SVG files directly into your Astro project as components and inline them into your HTML.

    To use this feature, import an SVG file in your Astro project, passing any common SVG attributes to the imported component.

    ---
    import Logo from './path/to/svg/file.svg';
    ---
    
    <Logo <Logo width={64} height={64} fill="currentColor" />

    If you have been waiting for stabilization before using the SVG Components feature, you can now do so.

    If you were previously using this feature, please remove the experimental flag from your Astro config:

    import { defineConfig } from 'astro'
    
    export default defineConfig({
    -  experimental: {
    -    svg: true,
    -  }
    })

    Additionally, a few features that were available during the experimental stage were removed in a previous release. Please see the v5.6.0 changelog for details if you have not yet already updated your project code for the experimental feature accordingly.

    Please see the SVG Components guide in docs for more about this feature.

Patch Changes

  • #13602 3213450 Thanks @natemoo-re! - Updates the Audit dev toolbar app to automatically strip data-astro-source-file and data-astro-source-loc attributes in dev mode.

  • #13598 f5de51e Thanks @dreyfus92! - Fix routing with base paths when trailingSlash is set to 'never'. This ensures requests to '/base' are correctly matched when the base path is set to '/base', without requiring a trailing slash.

  • #13603 d038030 Thanks @sarah11918! - Adds the minimal starter template to the list of create astro options

    Good news if you're taking the introductory tutorial in docs, making a minimal reproduction, or just want to start a project with as little to rip out as possible. Astro's minimal (empty) template is now back as one of the options when running create astro@latest and starting a new project!

@astrojs/cloudflare@12.5.0

Minor Changes

  • #13527 2fd6a6b Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.

    Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:

    ---
    export const prerender = false; // Not needed with 'server' output
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    Configuring session storage

    Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.

    If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the session configuration option:

    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel';
    
    export default defineConfig({
      adapter: vercel(),
      session: {
        driver: 'upstash',
      },
    });

    Using sessions

    Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.

    In pages and components, you can access the session using Astro.session:

    ---
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    In endpoints, actions, and middleware, you can access the session using context.session:

    export async function GET(context) {
      const cart = await context.session.get('cart');
      return Response.json({ cart });
    }

    If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be undefined and an error will be logged in the console:

    ---
    export const prerender = true;
    const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined
    ---

    Upgrading from Experimental to Stable

    If you were previously using the experimental API, please remove the experimental.session flag from your configuration:

    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    
    export default defineConfig({
       adapter: node({
         mode: "standalone",
       }),
    -  experimental: {
    -    session: true,
    -  },
    });

    See the sessions guide for more information.

Patch Changes

  • Updated dependencies []:
    • @astrojs/underscore-redirects@0.6.0

@astrojs/markdoc@0.14.0

Minor Changes

  • #13578 406501a Thanks @stramel! - The SVG import feature introduced behind a flag in v5.0.0 is no longer experimental and is available for general use.

    This feature allows you to import SVG files directly into your Astro project as components and inline them into your HTML.

    To use this feature, import an SVG file in your Astro project, passing any common SVG attributes to the imported component.

    ---
    import Logo from './path/to/svg/file.svg';
    ---
    
    <Logo <Logo width={64} height={64} fill="currentColor" />

    If you have been waiting for stabilization before using the SVG Components feature, you can now do so.

    If you were previously using this feature, please remove the experimental flag from your Astro config:

    import { defineConfig } from 'astro'
    
    export default defineConfig({
    -  experimental: {
    -    svg: true,
    -  }
    })

    Additionally, a few features that were available during the experimental stage were removed in a previous release. Please see the v5.6.0 changelog for details if you have not yet already updated your project code for the experimental feature accordingly.

    Please see the SVG Components guide in docs for more about this feature.

@astrojs/netlify@6.3.0

Minor Changes

  • #13527 2fd6a6b Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.

    Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:

    ---
    export const prerender = false; // Not needed with 'server' output
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    Configuring session storage

    Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.

    If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the session configuration option:

    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel';
    
    export default defineConfig({
      adapter: vercel(),
      session: {
        driver: 'upstash',
      },
    });

    Using sessions

    Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.

    In pages and components, you can access the session using Astro.session:

    ---
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    In endpoints, actions, and middleware, you can access the session using context.session:

    export async function GET(context) {
      const cart = await context.session.get('cart');
      return Response.json({ cart });
    }

    If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be undefined and an error will be logged in the console:

    ---
    export const prerender = true;
    const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined
    ---

    Upgrading from Experimental to Stable

    If you were previously using the experimental API, please remove the experimental.session flag from your configuration:

    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    
    export default defineConfig({
       adapter: node({
         mode: "standalone",
       }),
    -  experimental: {
    -    session: true,
    -  },
    });

    See the sessions guide for more information.

Patch Changes

  • Updated dependencies []:
    • @astrojs/underscore-redirects@0.6.0

@astrojs/node@9.2.0

Minor Changes

  • #13527 2fd6a6b Thanks @ascorbic! - The experimental session API introduced in Astro 5.1 is now stable and ready for production use.

    Sessions are used to store user state between requests for on-demand rendered pages. You can use them to store user data, such as authentication tokens, shopping cart contents, or any other data that needs to persist across requests:

    ---
    export const prerender = false; // Not needed with 'server' output
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    Configuring session storage

    Sessions require a storage driver to store the data. The Node, Cloudflare and Netlify adapters automatically configure a default driver for you, but other adapters currently require you to specify a custom storage driver in your configuration.

    If you are using an adapter that doesn't have a default driver, or if you want to choose a different driver, you can configure it using the session configuration option:

    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel';
    
    export default defineConfig({
      adapter: vercel(),
      session: {
        driver: 'upstash',
      },
    });

    Using sessions

    Sessions are available in on-demand rendered pages, API endpoints, actions and middleware.

    In pages and components, you can access the session using Astro.session:

    ---
    const cart = await Astro.session.get('cart');
    ---
    
    <a href="/checkout">🛒 {cart?.length ?? 0} items</a>

    In endpoints, actions, and middleware, you can access the session using context.session:

    export async function GET(context) {
      const cart = await context.session.get('cart');
      return Response.json({ cart });
    }

    If you attempt to access the session when there is no storage driver configured, or in a prerendered page, the session object will be undefined and an error will be logged in the console:

    ---
    export const prerender = true;
    const cart = await Astro.session?.get('cart'); // Logs an error. Astro.session is undefined
    ---

    Upgrading from Experimental to Stable

    If you were previously using the experimental API, please remove the experimental.session flag from your configuration:

    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    
    export default defineConfig({
       adapter: node({
         mode: "standalone",
       }),
    -  experimental: {
    -    session: true,
    -  },
    });

    See the sessions guide for more information.

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@changesets/cli (source) ^2.28.1 -> ^2.29.2 age adoption passing confidence
@libsql/client (source) ^0.15.2 -> ^0.15.4 age adoption passing confidence
@playwright/test (source) 1.51.1 -> 1.52.0 age adoption passing confidence
@tailwindcss/vite (source) ^4.1.3 -> ^4.1.4 age adoption passing confidence
eslint (source) ^9.24.0 -> ^9.25.0 age adoption passing confidence
open ^10.1.0 -> ^10.1.1 age adoption passing confidence
open-props ^1.7.14 -> ^1.7.15 age adoption passing confidence
package-manager-detector ^1.1.0 -> ^1.2.0 age adoption passing confidence
publint (source) ^0.3.10 -> ^0.3.12 age adoption passing confidence
shiki (source) ^3.2.1 -> ^3.2.2 age adoption passing confidence
smol-toml ^1.3.1 -> ^1.3.3 age adoption passing confidence
svelte (source) ^5.25.7 -> ^5.28.1 age adoption passing confidence
tailwindcss (source) ^4.1.3 -> ^4.1.4 age adoption passing confidence
typescript-eslint (source) ^8.29.0 -> ^8.30.1 age adoption passing confidence
vite (source) ^6.2.6 -> ^6.3.2 age adoption passing confidence
zod (source) ^3.24.2 -> ^3.24.3 age adoption passing confidence

Release Notes

changesets/changesets (@​changesets/cli)

v2.29.2

Compare Source

Patch Changes

v2.29.1

Compare Source

v2.29.0

Compare Source

Minor Changes
libsql/libsql-client-ts (@​libsql/client)

v0.15.4

Compare Source

  • Bump to latest libsql package.

v0.15.3

Compare Source

  • Bump to latest libsql package.
microsoft/playwright (@​playwright/test)

v1.52.0

Compare Source

tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.1.4

Compare Source

Added
  • Add experimental @tailwindcss/oxide-wasm32-wasi target for running Tailwind in browser environments like StackBlitz (#​17558)
Fixed
  • Ensure color-mix(…) polyfills do not cause used CSS variables to be removed (#​17555)
  • Ensure color-mix(…) polyfills create fallbacks for theme variables that reference other theme variables (#​17562)
  • Fix brace expansion in declining ranges like {10..0..5} and {0..10..-5} (#​17591)
  • Work around a Chrome rendering bug when using the skew-* utilities (#​17627)
  • Ensure container query variant names can contain hyphens (#​17628)
  • Ensure shadow-inherit, inset-shadow-inherit, drop-shadow-inherit, and text-shadow-inherit inherit the shadow color (#​17647)
  • Ensure compatibility with array tuples used in fontSize JS theme keys (#​17630)
  • Ensure folders with binary file extensions in their names are scanned for utilities (#​17595)
  • Upgrade: Convert fontSize array tuple syntax to CSS theme variables (#​17630)
eslint/eslint (eslint)

v9.25.0

Compare Source

sindresorhus/open (open)

v10.1.1

Compare Source


argyleink/open-props (open-props)

v1.7.15

Compare Source

antfu-collective/package-manager-detector (package-manager-detector)

v1.2.0

Compare Source

   🚀 Features
    View changes on GitHub
publint/publint (publint)

v0.3.12

Compare Source

Patch Changes
  • Fix shebang check to allow spaces after the #! (#​183)

v0.3.11

Compare Source

Patch Changes
  • Update EXPORTS_GLOB_NO_DEPRECATED_SUBPATH_MAPPING message and severity to error (#​179)

  • Add a new warning when the "exports" or "imports" field contain a fallback array as most tooling will only the pick the first value that can be parsed, and other tooling may work differently leading to inconsistent behaviors (#​180)

shikijs/shiki (shiki)

v3.2.2

Compare Source

   🚀 Features
    View changes on GitHub
squirrelchat/smol-toml (smol-toml)

v1.3.3

Compare Source

Follow up of v1.3.2, where the package is published in JavaScript instead of nocode. 🚀

image

v1.3.2

Compare Source

Fixes the issue reported in #​37 -- the library would fail to parse a document containing a one-line string, with an escaped double-quote, preceded by an escaped backslash, such as key = "value \\\" value".

Apologies for the lack of proper v1.3.1 tag; this release addressed GHSA-pqhp-25j4-6hq9 by adding a maximum depth while parsing.

Additionally, releases are now published to NPM with provenance attestations

What's Changed

  • fix: improve string end detection when preceded by an escaped backslash by @​cyyynthia
  • fix: enforce maximum depth when parsing/stringifying by @​cyyynthia

Full Changelog: squirrelchat/smol-toml@v1.3.0...v1.3.2

sveltejs/svelte (svelte)

v5.28.1

Compare Source

Patch Changes
  • fix: ensure <svelte:boundary> properly removes error content in production mode (#​15793)

  • fix: update_version after delete if source is undefined and prop in target (#​15796)

  • fix: emit error on wrong placement of the :global block selector (#​15794)

v5.28.0

Compare Source

Minor Changes
  • feat: partially evaluate more expressions (#​15781)

v5.27.3

Compare Source

Patch Changes
  • fix: use function declaration for snippets in server output to avoid TDZ violation (#​15789)

v5.27.2

Compare Source

Patch Changes
  • chore: use pkg.imports for common modules (#​15787)

v5.27.1

Compare Source

Patch Changes
  • chore: default params for html blocks (#​15778)

  • fix: correct suggested type for custom events without detail (#​15763)

  • fix: Throw on unrendered snippets in dev (#​15766)

  • fix: avoid unnecessary read version increments (#​15777)

v5.27.0

Compare Source

Minor Changes
  • feat: partially evaluate certain expressions (#​15494)
Patch Changes
  • fix: relax :global selector list validation (#​15762)

v5.26.3

Compare Source

Patch Changes
  • fix: correctly validate head snippets on the server (#​15755)

  • fix: ignore mutation validation for props that are not proxies in more cases (#​15759)

  • fix: allow self-closing tags within math namespace (#​15761)

v5.26.2

Compare Source

Patch Changes
  • fix: correctly validate undefined snippet params with default value (#​15750)

v5.26.1

Compare Source

Patch Changes
  • fix: update state_referenced_locally message (#​15733)

v5.26.0

Compare Source

Minor Changes
  • feat: add css.hasGlobal to compile output (#​15450)
Patch Changes
  • fix: add snippet argument validation in dev (#​15521)

v5.25.12

Compare Source

Patch Changes
  • fix: improve internal_set versioning mechanic (#​15724)

  • fix: don't transform reassigned state in labeled statement in $derived (#​15725)

v5.25.11

Compare Source

Patch Changes
  • fix: handle hydration mismatches in await blocks (#​15708)

  • fix: prevent ownership warnings if the fallback of a bindable is used (#​15720)

v5.25.10

Compare Source

Patch Changes
  • fix: set deriveds as CLEAN if they are assigned to (#​15592)

  • fix: better scope :global() with nesting selector & (#​15671)

v5.25.9

Compare Source

Patch Changes
  • fix: allow $.state and $.derived to be treeshaken (#​15702)

  • fix: rework binding ownership validation (#​15678)

v5.25.8

Compare Source

Patch Changes
  • fix: address untracked_writes memory leak (#​15694)
typescript-eslint/typescript-eslint (typescript-eslint)

v8.30.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.30.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.29.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

vitejs/vite (vite)

v6.3.2

Compare Source

v6.3.1

Compare Source

v6.3.0

Compare Source

colinhacks/zod (zod)

v3.24.3

Compare Source

Commits:


Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/starlight

Description

  • Closes #3108
  • This PR updates the version of the package astro-expressive-code from v0.40 to v0.41. This also replaces Shiki v1 dependencies with Shiki v3.
withastro/astro

Changes

  • (Potentially) fixes a regression introduced by #13519
  • User on Discord reported a build failure introduced between 5.6.0 and 5.6.1. The cause seemed to be astro-icon chunks, which should only be prerendered, were leaking into the server bundle.
    Looking through the commits, the only suspicious commit seems to be #13519, which ported over the following lines.
  • Originally, this change was introduced by an ecosystem patch to improve Rolldown compat, but we don't have insight into what bug was being fixed. We're asking around for the context!
  • Patch changeset added

Testing

Going to confirm the fix with a preview release, but it would be a good idea to make a prerender chunk test to prevent future regressions

Docs

N/A, bug fix

withastro/starlight

Description

This PR updates the comparison data of different docs frameworks visible on the environmental impact page with up-to-date 12. April 2025 data fetches.

There are some things to consider:

  • Shall we include all these frameworks or leave some out to make the table smaller? If we drop some, which ones?
  • Either the Zola calculation is bugged or really respectable, which is very plausible cause it's built with Rust :)
withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight-markdoc@0.3.1

Patch Changes

@astrojs/starlight@0.33.2

Patch Changes

withastro/starlight

Updates Astro and related dependencies across the monorepo.

A lot of these are just development versions, but these two changes theoretically impact users:

  • Updates to @astrojs/mdx, @astrojs/sitemap, and astro-expressive-code in the core Starlight package. The new versions were already covered by our ^ range, but this change ensures people update to the latest versions. Particularly important for the MDX integration as we had some reports of errors for users upgrading Astro, which included a newer version of @astrojs/markdown-remark that conflicted with the older @astrojs/mdx.

  • A loosening of our peer dependency version range for @astrojs/markdoc in the Starlight Markdoc preset. This adds support for the newer 0.13.x releases of @astrojs/markdoc.

withastro/astro

Changes

Update the list of available choices when running create astro to include the minimal starter.

This is useful for people taking the introductory tutorial in docs, creating minimal reproductions, and for experienced users starting projects from scratch.

In particular, it avoids needing to document workarounds to installing the minimal template for the tutorial via a template flag. (For example, Powershell users cannot follow the command as provided. This leads to them choosing the wrong template at the start of the tutorial, and is confusing when their code doesn't match the tutorial instructions.)

Closes Docs Issue withastro/docs#10843

Testing

Not tested!

Docs

The tutorial docs will be updated (simplified) to no longer require installing the minimal starter using a template flag. (Can be updated separately, as the existing instructions will still work.)

withastro/starlight

Description

This PR fixes a regression in #2927 where I entirely skipped over the logic to include the description and links to language alternates for multilingual websites to the <head> of the page.

withastro/astro

Changes

  • To support the Audit dev toolbar app, Astro's compiler injects data-astro-source-file and data-astro-source-loc attributes on every element in dev mode.
  • In this PR, the Audit app has been updated to extract the data from these attributes, store them in a WeakMap that is keyed by each Element, and then remove the attributes.
  • This should improve the dev mode experience by simplifying the markup when inspecting the page.
  • Changeset added.

Impact

This admittedly might break some third-party dev toolbar apps that rely on these annotations. Ideally we would expose a public API to get the annotation info for an element.

Searching all of GitHub for data-astro-source-file yields a decent number of repos, but the vast majority of uses are workarounds to remove the attributes.

Testing

Tested manually because it involves dev mode-specific client-side script behavior, which would be flaky to run in CI.

Docs

As far as I can tell, this is an internal API that we've never documented!

These attributes were added in #9016 and first released in astro@3.5.0 in November 2023. I assume users have gotten used to ignoring them, but they're still visual noise. Since this approach allows us to reduce noise without removing functionality, I think we should.

withastro/astro

Changes

  • Adds jsdocs

Testing

Docs

withastro/astro

Changes

Closes: #13585

  • What does this change?

Fixes routing with base paths when trailingSlash is set to 'never', ensuring requests to '/base' are correctly matched when the base path is set to '/base'. The fix also maintains compatibility with rewrites, with all rewrite tests passing successfully.

Testing

I've added 2 🤏🏻 tests 🫡

Docs

withastro/astro

Changes

  • Addresses feedback from T&D
  • Renames Font component family to cssVariable
  • Renames font configuration automaticFallback to optimizedFallbacks

Testing

Should pass

Docs

RFC updated

withastro/astro

Changes

Update vite to 6.2.6 to fix GHSA-356w-63v5-8wf4

Testing

should pass

Docs

N/A

withastro/starlight

Description

withastro/astro

Changes

  • Updates unifont
  • Filters fonts so we avoid useless fallbacks
  • The patch is removed because it's being contributed upstream (unjs/unifont#154) and it only works in the context of the repo, not once published on NPM

Testing

Manual

Docs

Changeset

withastro/starlight

Description

  • This PR adds the website Starlight Changelog which is built upon Starlog template from Astro to the community content page.
  • I'm not sure tho, if the Articles and Reviews section is the right place to add this website...
withastro/astro

Changes

Testing

  1. Tested with a modified version of the benchmark script that included 10,000 svg files.
  2. Tested against the real-world cloudflare-docs repo, where the original bug report was surfaced. It generates 5K+ page and has 1100+ .svg files. Before this change, I got an OOM error. After this change, I was able to build the site successfully. See Discord thread for full fix verification updates

Docs

Bug fix only

withastro/astro

Changes

Avoiding preserve data-astro-* attrs other than data-astro-transition and data-astro-transition-fallback when using swapRootAttributes #135577

Fixes #13577

Testing

Running packages/astro/e2e/view-transitions.test.js

Docs

It' s a patch
martrapp: bug fix, n/a

withastro/starlight

Description

This PR replaces all z.B. and z. B. with the consistent and recommended spelling notation1, z.&nbsp;B..
Therefore the i18nIgnore, because this should not mark pages as completed in any way.
Request review from native speaker (@delucis?)!

Footnotes

  1. Wiktionary: https://de.wiktionary.org/wiki/z._B.

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight@0.33.1

Patch Changes

  • #3088 1885049 Thanks @HiDeoo! - Fixes a regression in Starlight version 0.33.0 that caused the description and links to language alternates for multilingual websites to be missing from the <head> of the page.

  • #3065 463adf5 Thanks @HiDeoo! - Updates the social configuration option TSDoc example to match the shape of the expected value.

withastro/starlight

Description

Following the changes in #3025, this PR updates the social configuration option TSDoc example to reflect the new format.

The example content is the same one as the documentation.

Before After
SCR-20250408-ngpa SCR-20250408-ngsh
withastro/astro

Loads '-extras' for CSS, JS and PHP to add more tokens for styling.

Changes

When highlighting CSS, JS and PHP with Prism load the -extras for these to add additional tokens.

CSS example:

code[class*="language-"] .token {
...
}

Without css-extras:

<span class="token selector">
    code[class*="language-"] .token
</span>

With css-extras:

<span class="token selector">
    code
    <span class="token attribute">
        <span class="token punctuation">[</span>
        <span class="token attr-name">class</span>
        <span class="token operator">*=</span>
        <span class="token attr-value">"language-"</span>
        <span class="token punctuation">]</span>
    </span>
    <span class="token class">.token</span>
</span>

Testing

Tested with a local project using pnpm link.

Docs

I don't believe this will break anything since it seems to just add some extras <span class="token ..."></span> inside
the existing ones. Any theme styling applied to outer existing <span>s would still apply even if not using the extra inner ones.

withastro/astro

Changes

Unflagging the SVG Component feature!

Testing

Ran against the test fixture

Docs

Will need to remove this section from the experimental docs and likely move it to the standard location
/cc @withastro/maintainers-docs for feedback!

withastro/starlight

Description

  • This PR replaces translations of the English word icon from the German translation Icon to Symbol so it is consistent across all pages. Therefore the i18nIgnore, because this should not mark pages as completed in any way.
  • This is a follow-up PR of #2949 where Chris and I agreed on making the translation consistent the other way around (initially I wanted to replace all Symbol with Icon, but Wikipedia says, Symbol is the generally more acceptable translation of icon
  • I again ask a native speaker to review this PR, maybe @delucis wants to step up again and help out as always 💜 (I think I didn't miss any Icons with my global VS Code search...)
withastro/starlight

Note

This is a replacement for #2714, which was relying on #2722 having been merged and shouldn't have been relying on it. See #2714 (comment).

Description

  • Closes #2696
  • What does this PR change? #2704 improved the cosmetic of focus ring in site title, however there were a couple of remaining issues as described here. This PR eliminates the overflow: hidden and applies min-width to ensure the title-wrapper is constrained to available space by flexbox. Additionally, it styles the title text (if its displayed) with elipses providing an improved UI so that text is no longer abruptly cut-off but rather gives an indication that there is more text that just isn't visible. If a logo is present, it will be automatically scaled and therefore doesn't require a container with overflow: hidden. Tested in Edge, Chrome & Firefox.
  • Did you change something visual? A before/after screenshot can be helpful.

With a forced outline of 10px solid green:

Before Desktop:
image

Before Mobile:
image

After Desktop:
image

After Mobile:
image

Important

In performing testing on this PR, I identified other issues related to the way the header is displayed with large images and/or long text. Will create a separate issue to track those. Created #2715.

withastro/astro

Changes

Currently, each server island includes a script to load its own content. That includes quite a bit of logic that could be shared between islands. This PR extracts that into a function that can be reused by each island, and includes it only once. This runtime script is defined as a classic, non-module script so that we can guarantee that it has always executed before any of the module scripts runs.

Testing

Added and updated tests

Docs

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight@0.33.0

Minor Changes

  • #3026 82deb84 Thanks @HiDeoo! - Fixes a potential list styling issue if the last element of a list item is a <script> tag.

    ⚠️ BREAKING CHANGE:

    This release drops official support for Chromium-based browsers prior to version 105 (released 30 August 2022) and Firefox-based browsers prior to version 121 (released 19 December 2023). You can find a list of currently supported browsers and their versions using this browserslist query.

    With this release, Starlight-generated sites will still work fine on those older browsers except for this small detail in list item styling, but future releases may introduce further breaking changes for impacted browsers, including in patch releases.

  • #3025 f87e9ac Thanks @delucis! - Makes social configuration more flexible.

    ⚠️ BREAKING CHANGE: The social configuration option has changed syntax. You will need to update this in astro.config.mjs when upgrading.

    Previously, a limited set of platforms were supported using a shorthand syntax with labels built in to Starlight. While convenient, this approach was less flexible and required dedicated code for each social platform added.

    Now, you must specify the icon and label for each social link explicitly and you can use any of Starlight’s built-in icons for social links.

    The following example shows updating the old social syntax to the new:

    - social: {
    -   github: 'https://github.com/withastro/starlight',
    -   discord: 'https://astro.build/chat',
    - },
    + social: [
    +   { icon: 'github', label: 'GitHub', href: 'https://github.com/withastro/starlight' },
    +   { icon: 'discord', label: 'Discord', href: 'https://astro.build/chat' },
    + ],
  • #2927 c46904c Thanks @HiDeoo! - Adds the head route data property which contains an array of all tags to include in the <head> of the current page.

    Previously, the <Head> component was responsible for generating a list of tags to include in the <head> of the current page and rendering them.
    This data is now available as Astro.locals.starlightRoute.head instead and can be modified using route data middleware.
    The <Head> component now only renders the tags provided in Astro.locals.starlightRoute.head.

  • #2924 6a56d1b Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: Ensures that the <Badge> and <Icon> components no longer render with a trailing space.

    In Astro, components that include styles render with a trailing space which can prevent some use cases from working as expected, e.g. when using such components inlined with text. This change ensures that the <Badge> and <Icon> components no longer render with a trailing space.

    If you were previously relying on that implementation detail, you may need to update your code to account for this change. For example, considering the following code:

    <Badge text="New" />
    Feature

    The rendered text would previously include a space between the badge and the text due to the trailing space automatically added by the component:

    New Feature
    

    Such code will now render the badge and text without a space:

    NewFeature
    

    To fix this, you can add a space between the badge and the text:

    - <Badge text="New" />Feature
    + <Badge text="New" /> Feature
  • #2727 7c8fa30 Thanks @techfg! - Updates mobile menu toggle styles to display a close icon while the menu is open

Patch Changes

withastro/astro

Changes

  • Google and Fontsource unifont providers download too much files if a variable font is present
  • Until unjs/unifont#108 is addressed, this adds a patch

Testing

Manual

Docs

N/A

withastro/astro

Changes

  • Removes the default provider to reduce confusion and improve consistency
  • Now, google must be used like fontProviders.google()
  • Simplifies the code by a lot

Testing

Updated

Docs

RFC updated

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@libsql/client (source) ^0.15.1 -> ^0.15.2 age adoption passing confidence
@preact/signals (source) ^2.0.2 -> ^2.0.3 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.17 -> ^4.1.3 age adoption passing confidence
@types/react-dom (source) ^18.3.5 -> ^18.3.6 age adoption passing confidence
eslint (source) ^9.23.0 -> ^9.24.0 age adoption passing confidence
fast-xml-parser ^5.0.9 -> ^5.2.0 age adoption passing confidence
preact (source) ^10.26.4 -> ^10.26.5 age adoption passing confidence
publint (source) ^0.3.9 -> ^0.3.10 age adoption passing confidence
remark-rehype ^11.1.1 -> ^11.1.2 age adoption passing confidence
sass ^1.86.0 -> ^1.86.3 age adoption passing confidence
svelte (source) ^5.25.3 -> ^5.25.7 age adoption passing confidence
tailwindcss (source) ^4.0.17 -> ^4.1.3 age adoption passing confidence
turbo (source) ^2.4.4 -> ^2.5.0 age adoption passing confidence
typescript (source) ^5.8.2 -> ^5.8.3 age adoption passing confidence
typescript (source) ~5.8.2 -> ~5.8.3 age adoption passing confidence
typescript-eslint (source) ^8.28.0 -> ^8.29.0 age adoption passing confidence
vitest (source) ^3.0.9 -> ^3.1.1 age adoption passing confidence

Release Notes

preactjs/signals (@​preact/signals)

v2.0.3

Compare Source

Patch Changes
tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.1.3

Compare Source

Fixed
  • Show warning when using unsupported bare value data type in --value(…) (#​17464)
  • PostCSS: Ensure changes to the input CSS file don't generate stale output when using Turbopack (#​17554)
  • Ensure classes are detected in Ruby's %w syntax in Slim templates (#​17557)

v4.1.2

Compare Source

Fixed
  • Don't rely on the presence of @layer base to polyfill @property (#​17506)
  • Support setting multiple inset shadows as arbitrary values (#​17523)
  • Fix drop-shadow-* utilities that are defined with multiple shadows (#​17515)
  • PostCSS: Fix race condition when two changes are queued concurrently (#​17514)
  • PostCSS: Ensure files containing @tailwind utilities are processed (#​17514)
  • Ensure the color-mix(…) polyfill creates fallbacks even when using colors that cannot be statically analyzed (#​17513)
  • Fix slow incremental builds with @tailwindcss/vite and @tailwindcss/postscss (especially on Windows) (#​17511)
  • Vite: Fix missing CSS file in Qwik setups (#​17533)

v4.1.1

Compare Source

Fixed
  • Disable padding in @source inline(…) brace expansion (#​17491)
  • Inject polyfills after @import and body-less @layer (#​17493)
  • Ensure @tailwindcss/cli does not contain an import for jiti (#​17502)

v4.1.0

Compare Source

Added
  • Add details-content variant (#​15319)
  • Add inverted-colors variant (#​11693)
  • Add noscript variant (#​11929, #​17431)
  • Add items-baseline-last and self-baseline-last utilities (#​13888, #​17476)
  • Add pointer-none, pointer-coarse, and pointer-fine variants (#​16946)
  • Add any-pointer-none, any-pointer-coarse, and any-pointer-fine variants (#​16941)
  • Add safe alignment utilities (#​14607)
  • Add user-valid and user-invalid variants (#​12370)
  • Add wrap-anywhere, wrap-break-word, and wrap-normal utilities (#​12128)
  • Add @source inline(…) and @source not inline(…) (#​17147)
  • Add @source not "…" (#​17255)
  • Add text-shadow-* utilities (#​17389)
  • Add mask-* utilities (#​17134)
  • Add bg-{position,size}-* utilities for arbitrary values (#​17432)
  • Add shadow-*/<alpha>, inset-shadow-*/<alpha>, drop-shadow-*/<alpha>, and text-shadow-*/<alpha> utilities to control shadow opacity (#​17398, #​17434)
  • Add drop-shadow-<color> utilities (#​17434)
  • Improve compatibility with older versions of Safari and Firefox (#​17435)
Fixed
  • Follow symlinks when resolving @source directives (#​17391)
  • Don't scan ignored files for classes when changing an ignored file triggers a rebuild using @tailwindcss/cli (#​17255)
  • Support negated content rules in legacy JavaScript configuration (#​17255)
  • Interpret syntax like @("@&#8203;")md:… as @md:… in Razor files (#​17427)
  • Disallow top-level braces, top-level semicolons, and unbalanced parentheses and brackets in arbitrary values (#​17361)
  • Ensure the --theme(…) function still resolves to the CSS variables when using legacy JS plugins (#​17458)
  • Detect used theme variables in CSS module files (#​17433, #​17467)
Changed
  • Ignore node_modules by default (can be overridden by @source … rules) (#​17255)
  • @source rules that include file extensions or point inside node_modules/ folders no longer consider your .gitignore rules (#​17255)
  • Deprecate bg-{left,right}-{top,bottom} in favor of bg-{top,bottom}-{left,right} utilities (#​17378)
  • Deprecate object-{left,right}-{top,bottom} in favor of object-{top,bottom}-{left,right} utilities (#​17437)
eslint/eslint (eslint)

v9.24.0

Compare Source

NaturalIntelligence/fast-xml-parser (fast-xml-parser)

v5.2.0

Compare Source

v5.1.0

Compare Source

  • feat: declare package as side-effect free (#​738) (By Thomas Bouffard)
  • fix cjs build mode
  • fix builder return type to string

5.0.9 / 2025-03-14

  • fix: support numeric entities with values over 0xFFFF (#​726) (By Marc Durdin)
  • fix: update strnum to fix parsing 0 if skiplike option is used

5.0.8 / 2025-02-27

  • fix parsing 0 if skiplike option is used.
    • updating strnum dependency

5.0.7 / 2025-02-25

5.0.6 / 2025-02-20

5.0.5 / 2025-02-20

  • fix parsing of string starting with 'e' or 'E' by updating strnum

5.0.4 / 2025-02-20

  • fix CLI to support all the versions of node js when displaying library version.
  • fix CJS import in v5
    • by fixing webpack config

5.0.3 / 2025-02-20

  • Using strnum ESM module
    • new fixes in strum may break your experience

5.0.2 / 2025-02-20

  • fix: include CommonJS resources in the npm package #​714 (By Thomas Bouffard)
  • fix: move babel deps to dev deps

5.0.1 / 2025-02-19

  • fix syntax error for CLI command

5.0.0 / 2025-02-19

  • ESM support
    • no change in the functionality, syntax, APIs, options, or documentation.

4.5.2 / 2025-02-18

  • Fix null CDATA to comply with undefined behavior (#​701) (By Matthieu BOHEAS)
  • Fix(performance): Update check for leaf node in saveTextToParentTag function in OrderedObjParser.js (#​707) (By ...)
  • Fix: emit full JSON string from CLI when no output filename specified (#​710) (By Matt Benson)

4.5.1 / 2024-12-15

  • Fix empty tag key name for v5 (#​697). no impact on v4
  • Fixes entity parsing when used in strict mode (#​699)

4.5.0 / 2024-09-03

  • feat #​666: ignoreAttributes support function, and array of string or regex (By ArtemM)

4.4.1 / 2024-07-28

4.4.0 / 2024-05-18

  • fix #​654: parse attribute list correctly for self closing stop node.
  • fix: validator bug when closing tag is not opened. (#​647) (By Ryosuke Fukatani)
  • fix #​581: typings; return type of tagValueProcessor & attributeValueProcessor (#​582) (By monholm)

4.3.6 / 2024-03-16

4.3.5 / 2024-02-24

  • code for v5 is added for experimental use

4.3.4 / 2024-01-10

4.3.3 / 2024-01-10

  • Remove unnecessary regex

4.3.2 / 2023-10-02

4.3.1 / 2023-09-24

  • revert back "Fix typings for builder and parser to make return type generic" to avoid failure of existing projects. Need to decide a common approach.

4.3.0 / 2023-09-20

4.2.7 / 2023-07-30

  • Fix: builder should set text node correctly when only textnode is present (#​589) (By qianqing)
  • Fix: Fix for null and undefined attributes when building xml (#​585) (#​598). A null or undefined value should be ignored. (By Eugenio Ceschia)

4.2.6 / 2023-07-17

4.2.5 / 2023-06-22

  • change code implementation

4.2.4 / 2023-06-06

  • fix security bug

4.2.3 / 2023-06-05

  • fix security bug

4.2.2 / 2023-04-18

  • fix #​562: fix unpaired tag when it comes in last of a nested tag. Also throw error when unpaired tag is used as closing tag

4.2.1 / 2023-04-18

  • fix: jpath after unpaired tags

4.2.0 / 2023-04-09

  • support updateTag parser property

4.1.4 / 2023-04-08

  • update typings to let user create XMLBuilder instance without options (#​556) (By Patrick)
  • fix: IsArray option isn't parsing tags with 0 as value correctly #​490 (#​557) (By Aleksandr Murashkin)
  • feature: support oneListGroup to group repeated children tags udder single group

4.1.3 / 2023-02-26

  • fix #​546: Support complex entity value

4.1.2 / 2023-02-12

  • Security Fix

4.1.1 / 2023-02-03

  • Fix #​540: ignoreAttributes breaks unpairedTags
  • Refactor XML builder code

4.1.0 / 2023-02-02

  • Fix '<' or '>' in DTD comment throwing an error. (#​533) (By Adam Baker)
  • Set "eNotation" to 'true' as default

4.0.15 / 2023-01-25

  • make "eNotation" optional

4.0.14 / 2023-01-22

  • fixed: add missed typing "eNotation" to parse values

4.0.13 / 2023-01-07

4.0.12 / 2022-11-19

  • fix typescript

4.0.11 / 2022-10-05

  • fix #​501: parse for entities only once

4.0.10 / 2022-09-14

4.0.9 / 2022-07-10

  • fix #​470: stop-tag can have self-closing tag with same name
  • fix #​472: stopNode can have any special tag inside
  • Allow !ATTLIST and !NOTATION with DOCTYPE
  • Add transformTagName option to transform tag names when parsing (#​469) (By Erik Rothoff Andersson)

4.0.8 / 2022-05-28

4.0.7 / 2022-03-18

  • support CDATA even if tag order is not preserved
  • support Comments even if tag order is not preserved
  • fix #​446: XMLbuilder should not indent XML declaration

4.0.6 / 2022-03-08

  • fix: call tagValueProcessor only once for array items
  • fix: missing changed for #​437

4.0.5 / 2022-03-06

  • fix #​437: call tagValueProcessor from XML builder

4.0.4 / 2022-03-03

  • fix #​435: should skip unpaired and self-closing nodes when set as stopnodes

4.0.3 / 2022-02-15

4.0.2 / 2022-02-04

  • builder supports suppressUnpairedNode
  • parser supports ignoreDeclaration and ignorePiTags
  • fix: when comment is parsed as text value if given as <!--> ... #​423
  • builder supports decoding &

4.0.1 / 2022-01-08

  • fix builder for pi tag
  • fix: support suppressBooleanAttrs by builder

4.0.0 / 2022-01-06

  • Generating different combined, parser only, builder only, validator only browser bundles
  • Keeping cjs modules as they can be imported in cjs and esm modules both. Otherwise refer esm branch.

4.0.0-beta.8 / 2021-12-13

  • call tagValueProcessor for stop nodes

4.0.0-beta.7 / 2021-12-09

  • fix Validator bug when an attribute has no value but '=' only
  • XML Builder should suppress unpaired tags by default.
  • documents update for missing features
  • refactoring to use Object.assign
  • refactoring to remove repeated code

4.0.0-beta.6 / 2021-12-05

  • Support PI Tags processing
  • Support suppressBooleanAttributes by XML Builder for attributes with value true.

4.0.0-beta.5 / 2021-12-04

  • fix: when a tag with name "attributes"

4.0.0-beta.4 / 2021-12-02

  • Support HTML document parsing
  • skip stop nodes parsing when building the XML from JS object
  • Support external entites without DOCTYPE
  • update dev dependency: strnum v1.0.5 to fix long number issue

4.0.0-beta.3 / 2021-11-30

  • support global stopNodes expression like "*.stop"
  • support self-closing and paired unpaired tags
  • fix: CDATA should not be parsed.
  • Fix typings for XMLBuilder (#​396)(By Anders Emil Salvesen)
  • supports XML entities, HTML entities, DOCTYPE entities

⚠️ 4.0.0-beta.2 / 2021-11-19

  • rename attrMap to attibutes in parser output when preserveOrder:true
  • supports unpairedTags

⚠️ 4.0.0-beta.1 / 2021-11-18

  • Parser returns an array now
    • to make the structure common
    • and to return root level detail
  • renamed cdataTagName to cdataPropName
  • Added commentPropName
  • fix typings

⚠️ 4.0.0-beta.0 / 2021-11-16

  • Name change of many configuration properties.
    • attrNodeName to attributesGroupName
    • attrValueProcessor to attributeValueProcessor
    • parseNodeValue to parseTagValue
    • ignoreNameSpace to removeNSPrefix
    • numParseOptions to numberParseOptions
    • spelling correction for suppressEmptyNode
  • Name change of cli and browser bundle to fxparser
  • isArray option is added to parse a tag into array
  • preserveOrder option is added to render XML in such a way that the result js Object maintains the order of properties same as in XML.
  • Processing behaviour of tagValueProcessor and attributeValueProcessor are changes with extra input parameters
  • j2xparser is renamed to XMLBuilder.
  • You need to build XML parser instance for given options first before parsing XML.
  • fix #​327, #​336: throw error when extra text after XML content
  • fix #​330: attribute value can have '\n',
  • fix #​350: attrbiutes can be separated by '\n' from tagname

3.21.1 / 2021-10-31

  • Correctly format JSON elements with a text prop but no attribute props ( By haddadnj )

3.21.0 / 2021-10-25

  • feat: added option rootNodeName to set tag name for array input when converting js object to XML.
  • feat: added option alwaysCreateTextNode to force text node creation (by: @​massimo-ua)
  • ⚠️ feat: Better error location for unclosed tags. (by @​Gei0r)
    • Some error messages would be changed when validating XML. Eg
      • { InvalidXml: "Invalid '[ \"rootNode\"]' found." }{InvalidTag: "Unclosed tag 'rootNode'."}
      • { InvalidTag: "Closing tag 'rootNode' is expected inplace of 'rootnode'." }{ InvalidTag: "Expected closing tag 'rootNode' (opened in line 1) instead of closing tag 'rootnode'."}
  • ⚠️ feat: Column in error response when validating XML
{
  "code": "InvalidAttr",
  "msg":  "Attribute 'abc' is repeated.",
  "line": 1,
  "col": 22
}

3.20.1 / 2021-09-25

  • update strnum package

3.20.0 / 2021-09-10

  • Use strnum npm package to parse string to number
    • breaking change: long number will be parsed to scientific notation.

3.19.0 / 2021-03-14

  • License changed to MIT original
  • Fix #​321 : namespace tag parsing

3.18.0 / 2021-02-05

  • Support RegEx and function in arrayMode option
  • Fix #​317 : validate nested PI tags

3.17.4 / 2020-06-07

  • Refactor some code to support IE11
  • Fix: <tag > space as attribute string

3.17.3 / 2020-05-23

  • Fix: tag name separated by \n \t
  • Fix: throw error for unclosed tags

3.17.2 / 2020-05-23

  • Fixed an issue in processing doctype tag
  • Fixed tagName where it should not have whitespace chars

3.17.1 / 2020-05-19

  • Fixed an issue in checking opening tag

3.17.0 / 2020-05-18

  • parser: fix '<' issue when it comes in aatr value
  • parser: refactoring to remove dependency from regex
  • validator: fix IE 11 issue for error messages
  • updated dev dependencies
  • separated benchmark module to sub-module
  • breaking change: comments will not be removed from CDATA data

3.16.0 / 2020-01-12

  • validaor: fix for ampersand characters (#​215)
  • refactoring to support unicode chars in tag name
  • update typing for validator error

3.15.1 / 2019-12-09

  • validaor: fix multiple roots are not allowed

3.15.0 / 2019-11-23

  • validaor: improve error messaging
  • validator: add line number in case of error
  • validator: add more error scenarios to make it more descriptive

3.14.0 / 2019-10-25

  • arrayMode for XML to JS obj parsing

3.13.0 / 2019-10-02

  • pass tag/attr name to tag/attr value processor
  • inbuilt optional validation with XML parser

3.12.21 / 2019-10-02

  • Fix validator for unclosed XMLs
  • move nimnjs dependency to dev dependency
  • update dependencies

3.12.20 / 2019-08-16

  • Revert: Fix #​167: '>' in attribute value as it is causing high performance degrade.

3.12.19 / 2019-07-28

  • Fix js to xml parser should work for date values. (broken: tagValueProcessor will receive the original value instead of string always) (breaking change)

3.12.18 / 2019-07-27

  • remove configstore dependency

3.12.17 / 2019-07-14

  • Fix #​167: '>' in attribute value

3.12.16 / 2019-03-23

  • Support a new option "stopNodes". (#​150)
    Accept the list of tags which are not required to be parsed. Instead, all the nested tag and data will be assigned as string.
  • Don't show post-install message

3.12.12 / 2019-01-11

  • fix : IE parseInt, parseFloat error

3.12.11 / 2018-12-24

  • fix #​132: "/" should not be parsed as boolean attr in case of self closing tags

3.12.9 / 2018-11-23

  • fix #​129 : validator should not fail when an atrribute name is 'length'

3.12.8 / 2018-11-22

  • fix #​128 : use 'attrValueProcessor' to process attribute value in json2xml parser

3.12.6 / 2018-11-10

3.12.4 / 2018-09-12

  • Fix: include tasks in npm package

3.12.3 / 2018-09-12

  • Fix CLI issue raised in last PR

3.12.2 / 2018-09-11

  • Fix formatting for JSON to XML output
  • Migrate to webpack (PR merged)
  • fix cli (PR merged)

3.12.0 / 2018-08-06

  • Support hexadecimal values
  • Support true number parsing

3.11.2 / 2018-07-23

  • Update Demo for more options
  • Update license information
  • Update readme for formatting, users, and spelling mistakes
  • Add missing typescript definition for j2xParser
  • refactoring: change filenames

3.11.1 / 2018-06-05

  • fix #​93: read the text after self closing tag

3.11.0 / 2018-05-20

  • return defaultOptions if there are not options in buildOptions function
  • added localeRange declaration in parser.d.ts
  • Added support of cyrillic characters in validator XML
  • fixed bug in validator work when XML data with byte order marker

3.10.0 / 2018-05-13

  • Added support of cyrillic characters in parsing XML to JSON

3.9.11 / 2018-05-09

3.3.10 / 2018-04-23

  • fix #​77 : parse even if closing tag has space before '>'
  • include all css & js lib in demo app
  • remove babel dependencies until needed

3.3.9 / 2018-04-18

  • fix #​74 : TS2314 TypeScript compiler error

3.3.8 / 2018-04-17

  • fix #​73 : IE doesn't support Object.assign

3.3.7 / 2018-04-14

3.3.6 / 2018-03-21

  • change arrow functions to full notation for IE compatibility

3.3.5 / 2018-03-15

3.3.4 / 2018-03-14

  • remove dependency on "he" package
  • refactor code to separate methods in separate files.
  • draft code for transforming XML to json string. It is not officially documented due to performance issue.

3.3.0 / 2018-03-05

  • use common default options for XML parsing for consistency. And add parseToNimn method.
  • update nexttodo
  • update README about XML to Nimn transformation and remove special notes about 3.x release
  • update CONTRIBUTING.ms mentioning nexttodo
  • add negative case for XML PIs
  • validate xml processing instruction tags https://github.com/NaturalIntelligence/fast-xml-parser/issues/62
  • nimndata: handle array with object
  • nimndata: node with nested node and text node
  • nimndata: handle attributes and text node
  • nimndata: add options, handle array
  • add xml to nimn data converter
  • x2j: direct access property with tagname
  • update changelog
  • fix validator when single quote presents in value enclosed with double quotes or vice versa
  • Revert "remove unneded nimnjs dependency, move opencollective to devDependencies and replace it
    with more light opencollective-postinstall"
    This reverts commit d47aa71.
  • Merge pull request: https://github.com/NaturalIntelligence/fast-xml-parser/issues/63 from HaroldPutman/suppress-undefined
    Keep undefined nodes out of the XML output : This is useful when you are deleting nodes from the JSON and rewriting XML.

3.2.4 / 2018-03-01

  • fix #​59 fix in validator when open quote presents in attribute value
  • Create nexttodo.md
  • exclude static from bitHound tests
  • add package lock

3.2.3 / 2018-02-28

  • Merge pull request from Delagen/master: fix namespaces can contain the same characters as xml names

3.2.2 / 2018-02-22

  • fix: attribute xmlns should not be removed if ignoreNameSpace is false
  • create CONTRIBUTING.md

3.2.1 / 2018-02-17

  • fix: empty attribute should be parsed

3.2.0 / 2018-02-16

  • Merge pull request : Dev to Master
  • Update README and version
  • j2x:add performance test
  • j2x: Remove extra empty line before closing tag
  • j2x: suppress empty nodes to self closing node if configured
  • j2x: provide option to give indentation depth
  • j2x: make optional formatting
  • j2x: encodeHTMLchat
  • j2x: handle cdata tag
  • j2x: handle grouped attributes
  • convert json to xml
    • nested object
    • array
    • attributes
    • text value
  • small refactoring
  • Merge pull request: Update cli.js to let user validate XML file or data
  • Add option for rendering CDATA as separate property

3.0.1 / 2018-02-09

  • fix CRLF: replace it with single space in attributes value only.

3.0.0 / 2018-02-08

  • change online tool with new changes
  • update info about new options
  • separate tag value processing to separate function
  • make HTML decoding optional
  • give an option to allow boolean attributes
  • change cli options as per v3
  • Correct comparison table format on README
  • update v3 information
  • some performance improvement changes
  • Make regex object local to the method and move some common methods to util
  • Change parser to
    • handle multiple instances of CDATA
    • make triming of value optionals
    • HTML decode attribute and text value
    • refactor code to separate files
  • Ignore newline chars without RE (in validator)
  • validate for XML prolog
  • Validate DOCTYPE without RE
  • Update validator to return error response
  • Update README to add detail about V3
  • Separate xmlNode model class
  • include vscode debug config
  • fix for repeated object
  • fix attribute regex for boolean attributes
  • Fix validator for invalid attributes
    2.9.4 / 2018-02-02
  • Merge pull request: Decode HTML characters
  • refactor source folder name
  • ignore bundle / browser js to be published to npm
    2.9.3 / 2018-01-26
  • Merge pull request: Correctly remove CRLF line breaks
  • Enable to parse attribute in online editor
  • Fix testing demo app test
  • Describe parsing options
  • Add options for online demo
    2.9.2 / 2018-01-18
  • Remove check if tag starting with "XML"
  • Fix: when there are spaces before / after CDATA

2.9.1 / 2018-01-16

  • Fix: newline should be replaced with single space
  • Fix: for single and multiline comments
  • validate xml with CDATA
  • Fix: the issue when there is no space between 2 attributes
  • Fix: https://github.com/NaturalIntelligence/fast-xml-parser/issues/33: when there is newline char in attr val, it doesn't parse
  • Merge pull request: fix ignoreNamespace
    • fix: don't wrap attributes if only namespace attrs
    • fix: use portfinder for run tests, update deps
    • fix: don't treat namespaces as attributes when ignoreNamespace enabled

2.9.0 / 2018-01-10

  • Rewrite the validator to handle large files.
    Ignore DOCTYPE validation.
  • Fix: When attribute value has equal sign

2.8.3 / 2017-12-15

  • Fix: when a tag has value along with subtags

2.8.2 / 2017-12-04

  • Fix value parsing for IE

2.8.1 / 2017-12-01

  • fix: validator should return false instead of err when invalid XML

2.8.0 / 2017-11-29

  • Add CLI option to ignore value conversion
  • Fix variable name when filename is given on CLI
  • Update CLI help text
  • Merge pull request: xml2js: Accept standard input
  • Test Node 8
  • Update dependencies
  • Bundle readToEnd
  • Add ability to read from standard input

2.7.4 / 2017-09-22

  • Merge pull request: Allow wrap attributes with subobject to compatible with other parsers output

2.7.3 / 2017-08-02

  • fix: handle CDATA with regx

2.7.2 / 2017-07-30

  • Change travis config for yarn caching
  • fix validator: when tag property is same as array property
  • Merge pull request: Failing test case in validator for valid SVG

2.7.1 / 2017-07-26

  • Fix: Handle val 0

2.7.0 / 2017-07-25

  • Fix test for arrayMode
  • Merge pull request: Add arrayMode option to parse any nodes as arrays

2.6.0 / 2017-07-14

  • code improvement
  • Add unit tests for value conversion for attr
  • Merge pull request: option of an attribute value conversion to a number (textAttrConversion) the same way as the textNodeConversion option does. Default value is false.

2.5.1 / 2017-07-01

  • Fix XML element name pattern
  • Fix XML element name pattern while parsing
  • Fix validation for xml tag element

2.5.0 / 2017-06-25

  • Improve Validator performance
  • update attr matching regex
  • Add perf tests
  • Improve atrr regex to handle all cases

2.4.4 / 2017-06-08

  • Bug fix: when an attribute has single or double quote in value

2.4.3 / 2017-06-05

  • Bug fix: when multiple CDATA tags are given
  • Merge pull request: add option "textNodeConversion"
  • add option "textNodeConversion"

2.4.1 / 2017-04-14

  • fix tests
  • Bug fix: preserve initial space of node value
  • Handle CDATA

2.3.1 / 2017-03-15

  • Bug fix: when single self closing tag
  • Merge pull request: fix .codeclimate.yml
  • Update .codeclimate.yml - Fixed config so it does not error anymore.
  • Update .codeclimate.yml

2.3.0 / 2017-02-26

  • Code improvement
  • add bithound config
  • Update usage
  • Update travis to generate bundle js before running tests
  • 1.Browserify, 2. add more tests for validator
  • Add validator
  • Fix CLI default parameter bug

2.2.1 / 2017-02-05

  • Bug fix: CLI default option
preactjs/preact (preact)

v10.26.5

Compare Source

Types
Fixes
Maintenance
publint/publint (publint)

v0.3.10

Compare Source

Patch Changes
  • Support custom conditions in "exports" that points to raw TS or TSX files. This configuration is common in monorepo setups where packages refer to the raw files among themselves using a custom condition so custom aliasing isn't needed. (b34ea94)

    With this support, the "types" condition is allowed to come after any exports of the raw TS or TSX files. File existence checks are also disabled for raw TS and TSX files reference as after publish these files may intentionally be not published.

remarkjs/remark-rehype (remark-rehype)

v11.1.2

Compare Source

Types
  • eefd5f1 Fix types for bridge mode with missing overload

Full Changelog: remarkjs/remark-rehype@11.1.1...11.1.2

sass/dart-sass (sass)

v1.86.3

Compare Source

  • Fix a bug introduced in 1.86.1 where Sass fails to resolve paths starting with
    a .. segment.

v1.86.2

Compare Source

  • No user-visible changes.
sveltejs/svelte (svelte)

v5.25.7

Compare Source

Patch Changes
  • fix: ensure clearing of old values happens independent of root flushes (#​15664)

v5.25.6

Compare Source

Patch Changes
  • fix: ignore generic type arguments while creating AST (#​15659)

  • fix: better consider component and its snippets during css pruning (#​15630)

vercel/turborepo (turbo)

v2.5.0

[Compare Source


Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

Changes

Fix build errors being ignored when using concurrency, by using Promise.all instead of Promise.allSettled

Testing

Added a test fixture that throws an error when built.

Docs

N/A (expected behaviour)

withastro/starlight

Added our starlight-full-view-mode community plugin

Description

  • Closes #
  • What does this PR change? Give us a brief description.
  • Did you change something visual? A before/after screenshot can be helpful.

This PR will change the community plugins by adding my own plugin to the website.

Before

image

After

image
withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight@0.32.6

Patch Changes

withastro/astro

Changes

This PR makes astro:config stable.

Testing

Updated the existing tests.

Docs

withastro/docs#11380

/cc @withastro/maintainers-docs for feedback!

withastro/starlight

Description

  • Closes #1239
  • This PR adds built-in support for rendering clickable anchor links alongside headings.

Where does this apply?

  1. For Markdown and MDX files, anchor links are added using rehype plugins. This can be disabled with markdown: { headingLinks: false } in Starlight config.
  2. For Markdoc files, anchor links are added with a custom renderer for the heading node. This can be disabled by passing { headingLinks: false } to the Starlight Markdoc preset.
  3. In Astro components, anchor links can be added with a new <AnchorHeading> component.

The anchor link approach

The HTML mark-up approach the anchor links follow is based on Amber Wilson’s Are your Anchor Links Accessible? blog post. (Thank you for sharing your research, Amber!)

The output looks a little like this:

<div>
  <h2 id="a-heading">A heading</h2>
  <a href="#a-heading">
    <span class="sr-only">Section titled “A heading”</span>
    <svg>...</svg>
  </a>
</div>
  • The <a> link is placed after the heading element rather than inside it or even wrapping it as some sites do. This ensures that the heading doesn’t contain any additional text (for screenreaders listing headings for example) and also avoids the potentially confusing situation of a link which links to itself.
  • The accessible “Section titled…” label uses Starlight’s internationalization APIs so it can be localized.
  • The heading and link are wrapped in a <div> so that we can position the icon link inline at the end of the heading as desired.
  • There are more notes about the actual styles for the layout in anchor-links.css in this PR.

To-do

  • Write tests for the rehype plugins.
  • Write tests to assert that component and plugin markup matches.
  • Fix the use of rehypeSlug and use Astro’s built-in heading slugger instead.
  • Add changesets
withastro/astro

Changes

  • Addresses feedback from Chris
  • With this PR, we don't throw an error in dev if a local font file used is deleted. Instead we show a warning in the terminal
  • Allows to remove a bunch of code

Testing

Updated and manual

Docs

N/A

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.6.2

Patch Changes

  • #13606 793ecd9 Thanks @natemoo-re! - Fixes a regression that allowed prerendered code to leak into the server bundle.

  • #13576 1c60ec3 Thanks @ascorbic! - Reduces duplicate code in server islands scripts by extracting shared logic into a helper function.

  • #13588 57e59be Thanks @natemoo-re! - Fixes a memory leak when using SVG assets.

  • #13589 5a0563d Thanks @ematipico! - Deprecates the asset utility function emitESMImage() and adds a new emitImageMetadata() to be used instead

    The function
    emitESMImage() is now deprecated. It will continue to function, but it is no longer recommended nor supported. This function will be completely removed in a next major release of Astro.

    Please replace it with the new functionemitImageMetadata() as soon as you are able to do so:

    - import { emitESMImage } from "astro/assets/utils";
    + import { emitImageMetadata } from "astro/assets/utils";

    The new function returns the same signature as the previous one. However, the new function removes two deprecated arguments that were not meant to be exposed for public use: _watchMode and experimentalSvgEnabled. Since it was possible to access these with the old function, you may need to verify that your code still works as intended with emitImageMetadata().

  • #13596 3752519 Thanks @jsparkdev! - update vite to latest version to fix CVE

  • #13547 360cb91 Thanks @jsparkdev! - Updates vite to the latest version

  • #13548 e588527 Thanks @ryuapp! - Support for Deno to install npm pacakges.

    Deno requires npm prefix to install packages on npm. For example, to install react, we need to run deno add npm:react. But currently the command executed is deno add react, which doesn't work. So, we change the package names to have an npm prefix if you are using Deno.

  • #13587 a0774b3 Thanks @robertoms99! - Fixes an issue with the client router where some attributes of the root element were not updated during swap, including the transition scope.

@astrojs/db@0.14.11

Patch Changes

@astrojs/alpinejs@0.4.6

Patch Changes

@astrojs/cloudflare@12.4.1

Patch Changes

@astrojs/markdoc@0.13.4

Patch Changes

@astrojs/mdx@4.2.4

Patch Changes

@astrojs/netlify@6.2.6

Patch Changes

@astrojs/preact@4.0.9

Patch Changes

@astrojs/react@4.2.4

Patch Changes

@astrojs/solid-js@5.0.8

Patch Changes

@astrojs/svelte@7.0.10

Patch Changes

@astrojs/vue@5.0.10

Patch Changes

@astrojs/studio@0.1.7

Patch Changes

withastro/astro
withastro/astro

Changes

  • Adds support for entrypoints in local families variants.src: path relative to the root, urls and package imports are now supported
  • Adds support for font techs: variants.src can also contain objects with url (same rules as line above) and optional tech
  • Fixes a bug where default fallbacks would not be applied

Testing

Updated

Docs

RFC updated

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.6.1

Patch Changes

withastro/astro

Changes

  • Addresses feedback from Chris
  • Updates the shape of the local font family: src becomes variants, src.paths becomes variants.src
  • Moves the transforms to resolveFontFamily so they also apply to fonts added through integrations

Testing

Updated

Docs

RFC updated

withastro/astro

Changes

  • Deno requires a prefix when installing packages
  • So, if you use Deno as your package manager, prepend npm: to the library name

Before deno task astro add react

image

After deno task astro add react

image

Testing

It was manually tested on local. We can install and try out this PR's astro.

Docs

I think Astro don't officially supports Deno as a package manager, so I'll write about it if necessary.

withastro/astro

Changes

Update vite to 6.2.5 to resolve GHSA-xcj6-pq6g-qj4x

Testing

should pass

Docs

N/A

withastro/astro

Changes

Updating to the latest 1.6.0 which fixes the issue and brings in some optimizations to the regexes it uses.
Fixes #13496

Testing

Added a test to assert that there were no empty attributes ="" in the resultant html with an SVG known to produce it.

Docs

Not necessary as this is just a bug fix.

withastro/astro

Changes

  • Addresses feedback from the API bash
  • Removes the as prop. Instead, we generate a new nameWithHash (hash computed from the family config object) property to avoid conflicts if the same font name is specified more than once
  • Adds a new required cssVariable property. That gives control to the user and avoids having to guess. There's minimal validation, that should handle most mistakes
  • It simplifies a lot of things by removing some checks and errors that are now unecessary

Testing

Manual and automated

Docs

RFC updated

withastro/astro

Changes

Updates the formatting of the changeset for the SVG API breaking changes

Testing

no tests, just docs

Docs

only docs!

withastro/starlight

Description

This is rather a question / discussion of the decision why the isFallback type is defined as type true instead of boolean:

export interface Route extends LocaleData {
/** Content collection entry for the current page. Includes frontmatter at `data`. */
entry: StarlightDocsEntry;
/** Locale metadata for the page content. Can be different from top-level locale values when a page is using fallback content. */
entryMeta: LocaleData;
/** @deprecated Migrate to the new Content Layer API and use `id` instead. */
slug: string;
/** The slug or unique ID if using the `legacy.collections` flag. */
id: string;
/** True if this page is untranslated in the current language and using fallback content from the default locale. */
isFallback?: true;
[key: string]: unknown;
}

This has the consequence that my editor gives me the warning (when I use <StarlightPage>:

image

My var isFallback is of type boolean:

image

I'm not sure if this is an oversight or has a specific reason, therefore I'm creating this as a draft PR...

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.6.0

Minor Changes

  • #13403 dcb9526 Thanks @yurynix! - Adds a new optional prerenderedErrorPageFetch option in the Adapter API to allow adapters to provide custom implementations for fetching prerendered error pages.

    Now, adapters can override the default fetch() behavior, for example when fetch() is unavailable or when you cannot call the server from itself.

    The following example provides a custom fetch for 500.html and 404.html, reading them from disk instead of performing an HTTP call:

    return app.render(request, {
      prerenderedErrorPageFetch: async (url: string): Promise<Response> => {
        if (url.includes("/500")) {
            const content = await fs.promises.readFile("500.html", "utf-8");
            return new Response(content, {
              status: 500,
              headers: { "Content-Type": "text/html" },
            });
        }
        const content = await fs.promises.readFile("404.html", "utf-8");
          return new Response(content, {
            status: 404,
            headers: { "Content-Type": "text/html" },
          });
    });

    If no value is provided, Astro will fallback to its default behavior for fetching error pages.

    Read more about this feature in the Adapter API reference.

  • #13482 ff257df Thanks @florian-lefebvre! - Updates Astro config validation to also run for the Integration API. An error log will specify which integration is failing the validation.

    Now, Astro will first validate the user configuration, then validate the updated configuration after each integration astro:config:setup hook has run. This means updateConfig() calls will no longer accept invalid configuration.

    This fixes a situation where integrations could potentially update a project with a malformed configuration. These issues should now be caught and logged so that you can update your integration to only set valid configurations.

  • #13405 21e7e80 Thanks @Marocco2! - Adds a new eagerness option for prefetch() when using experimental.clientPrerender

    With the experimental clientPrerender flag enabled, you can use the eagerness option on prefetch() to suggest to the browser how eagerly it should prefetch/prerender link targets.

    This follows the same API described in the Speculation Rules API and allows you to balance the benefit of reduced wait times against bandwidth, memory, and CPU costs for your site visitors.

    For example, you can now use prefetch() programmatically with large sets of links and avoid browser limits in place to guard against over-speculating (prerendering/prefetching too many links). Set eagerness: 'moderate' to take advantage of First In, First Out (FIFO) strategies and browser heuristics to let the browser decide when to prerender/prefetch them and in what order:

    <a class="link-moderate" href="/nice-link-1">A Nice Link 1</a>
    <a class="link-moderate" href="/nice-link-2">A Nice Link 2</a>
    <a class="link-moderate" href="/nice-link-3">A Nice Link 3</a>
    <a class="link-moderate" href="/nice-link-4">A Nice Link 4</a>
    ...
    <a class="link-moderate" href="/nice-link-20">A Nice Link 20</a>
    <script>
      import { prefetch } from 'astro:prefetch';
      const linkModerate = document.getElementsByClassName('link-moderate');
      linkModerate.forEach((link) => prefetch(link.getAttribute('href'), { eagerness: 'moderate' }));
    </script>
  • #13482 ff257df Thanks @florian-lefebvre! - Improves integrations error handling

    If an error is thrown from an integration hook, an error log will now provide information about the concerned integration and hook

Patch Changes

  • #13539 c43bf8c Thanks @ascorbic! - Adds a new session.load() method to the experimental session API that allows you to load a session by ID.

    When using the experimental sessions API, you don't normally need to worry about managing the session ID and cookies: Astro automatically reads the user's cookies and loads the correct session when needed. However, sometimes you need more control over which session to load.

    The new load() method allows you to manually load a session by ID. This is useful if you are handling the session ID yourself, or if you want to keep track of a session without using cookies. For example, you might want to restore a session from a logged-in user on another device, or work with an API endpoint that doesn't use cookies.

    // src/pages/api/cart.ts
    import type { APIRoute } from 'astro';
    
    export const GET: APIRoute = async ({ session, request }) => {
      // Load the session from a header instead of cookies
      const sessionId = request.headers.get('x-session-id');
      await session.load(sessionId);
      const cart = await session.get('cart');
      return Response.json({ cart });
    };

    If a session with that ID doesn't exist, a new one will be created. This allows you to generate a session ID in the client if needed.

    For more information, see the experimental sessions docs.

  • #13488 d777420 Thanks @stramel! - BREAKING CHANGE to the experimental SVG Component API only

    Removes some previously available prop, attribute, and configuration options from the experimental SVG API. These items are no longer available and must be removed from your code:

    • The title prop has been removed until we can settle on the correct balance between developer experience and accessibility. Please replace any title props on your components with aria-label:

      - <Logo title="My Company Logo" />
      + <Logo aria-label="My Company Logo" />
    • Sprite mode has been temporarily removed while we consider a new implementation that addresses how this feature was being used in practice. This means that there are no longer multiple mode options, and all SVGs will be inline. All instances of mode must be removed from your project as you can no longer control a mode:

      - <Logo mode="inline" />
      + <Logo />
      import { defineConfig } from 'astro'
      
      export default defineConfig({
        experimental: {
      -    svg: {
      -      mode: 'sprite'
      -    },
      +   svg: true
        }
      });
    • The default role is no longer applied due to developer feedback. Please add the appropriate role on each component individually as needed:

      - <Logo />
      + <Logo role="img" /> // To keep the role that was previously applied by default
    • The size prop has been removed to better work in combination with viewBox and additional styles/attributes. Please replace size with explicit width and height attributes:

      - <Logo size={64} />
      + <Logo width={64} height={64} />
withastro/astro

Changes

Adds support for loading a session by ID

Adds a new session.load() method to the experimental session API that allows you to load a session by ID. In normal use a session is loaded automatically from the session cookie. This method allows a session to be loaded manually instead. This has been requested in the RFC, and is useful for cases where the session ID has been persisted somewhere other than the browser cookie. For example, a session ID might be stored in a user database. This would allow that user's session to be loaded when logging-in on another device or in a different browser. It would also allow a session to be loaded in an API when cookies can't be set, such as when loading across domains.

Testing

Added tests

Docs

I will do a separate docs PR

withastro/astro

Changes

  • Depends on #13515
  • In development, only log if there's an error. That also means the download font error is not thrown anymore so someone with connectivity issues can keep developing
  • During builds, only one log is added to show something fonts related is happening

Testing

Manual

Docs

N/A

withastro/astro

Changes

  • Depends on #13533
  • Passes the family name as is. If the family name should contain wrapping quotes, then it has to be passed in the config (eg. family: '"Roboto"')

Testing

N/A

Docs

N/A

withastro/astro

Changes

  • Feedback from the API bash. Renames defineFontProvider to defineAstroFontProvider to avoid the confusion with defineFontProvider from unifont
  • Depends on #13515

Testing

N/A

Docs

Later

withastro/astro

Changes

This PR unflags the session API. Aside from removing the flag, this changes some of the details of how session configuration is validated, because of them no longer being opt-in. Previously, if a user had enabled the flag and not configured a driver we would throw when validating the config We can no longer do this because we don't know if the sessions will be used. Instead, we use a getter for the session object in context and the Astro global. Previously this would just be undefined. Now it also logs a warning if accessed, explaining why it is undefined. As well as doing this when there is no driver, it will catch attempts to access it in prerendered pages. This would previously fail with a headers error when it tried to set a cookie. It now fails earlier, with a more helpful error message.

Testing

The configuration tests have mostly been removed, as they no longer apply. Other tests have been updated to remove flags.

Docs

This will have a lot of docs changes, to come later.

withastro/astro

Changes

Update vite to 6.2.4 to resolve GHSA-4r4m-qw57-chr8

Testing

should pass

Docs

N/A

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@preact/signals (source) ^2.0.1 -> ^2.0.2 age adoption passing confidence
@types/react (source) ^18.3.19 -> ^18.3.20 age adoption passing confidence
svelte (source) ^5.23.2 -> ^5.25.3 age adoption passing confidence

Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@codspeed/vitest-plugin (source) 4.0.0 -> 4.0.1 age adoption passing confidence
@libsql/client (source) ^0.15.0 -> ^0.15.1 age adoption passing confidence
@preact/signals (source) ^2.0.1 -> ^2.0.2 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.15 -> ^4.0.17 age adoption passing confidence
@types/estree (source) ^1.0.6 -> ^1.0.7 age adoption passing confidence
@types/react (source) ^18.3.19 -> ^18.3.20 age adoption passing confidence
@types/semver (source) ^7.5.8 -> ^7.7.0 age adoption passing confidence
eslint (source) ^9.22.0 -> ^9.23.0 age adoption passing confidence
svelte (source) ^5.23.2 -> ^5.25.3 age adoption passing confidence
tailwindcss (source) ^4.0.15 -> ^4.0.17 age adoption passing confidence
typescript-eslint (source) ^8.27.0 -> ^8.28.0 age adoption passing confidence

Release Notes

CodSpeedHQ/codspeed-node (@​codspeed/vitest-plugin)

v4.0.1

Compare Source

What's Changed

New Contributors

Full Changelog: CodSpeedHQ/codspeed-node@v4.0.0...v4.0.1

libsql/libsql-client-ts (@​libsql/client)

v0.15.1

Compare Source

  • Bump to latest libsql package.
eslint/eslint (eslint)

v9.23.0

Compare Source

typescript-eslint/typescript-eslint (typescript-eslint)

v8.28.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.


Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

Changes

getStaticPaths() is run in another scope, that makes it impossible to access Astro render context. For some use cases of implementing getStaticPaths(), it becomes necessary to know the routePattern to calculate the params and props for each page route.

For example imagine you have a route [...locale]/[files]/[slug].astro and you want to implement a getStaticPaths() that,

  • provides the current [...locale]
  • provides [files] according to the locale, so you can have a path translation
  • provides a slugified version of the pages title as [slug]
  • calculate all translations of a page so you can offer a language switcher that directly links the user to the other language.

To lookup what [files] should be substituted with, you need to parse the routePattern as well as for calculating the translations.

This change provides routePattern via GetStaticPathsOptions. It isn't a breaking change as whoever wants to consume it can, but doesn't need to.

A workaround would be calculating this props during rendering of the actual page. For each render getCollection() needs to be invoked again. Then I would also wonder why props are returned from getStaticPaths() after all.

Example code

[...locale]/[files]/[slug].astro
import { C } from "../../../site.config";

export const getStaticPaths: GetStaticPaths = async ({ routePattern }) => {
  const filesCollection = await getCollection("files");

  return translationPaths(filesCollection, {
    routePattern: routePattern,
    defaultLocale: C.DEFAULT_LOCALE,
    segmentTranslations: C.SEGMENT_TRANSLATIONS,
  });
};
site.config.ts
export const C = {
  LOCALES: ["de-CH", "zh-CN"],
  DEFAULT_LOCALE: "de-CH" as const,
  SEGMENT_TRANSLATIONS: {
    "de-CH": {
      files: "dateien",
    },
    "zh-CN": {
      files: "files",
    },
  },
};
translation-path.ts
import { GetStaticPathsResult } from "astro";
import limax from "limax";
import { checkI18nLoaderCollection } from "../schemas/i18n-loader-schema";
import { buildPath, parseRoutePattern, SegmentTranslations } from "../utils/route";

type Config = {
  routePattern: string;
  segmentTranslations: SegmentTranslations;
  defaultLocale: string;
  localeParamName?: string;
  slugParamName?: string;
  titleDataKey?: string;
};

const defaultConfig = {
  localeParamName: "locale",
  slugParamName: "slug",
  titleDataKey: "title",
};

function getSegmentTranslations(segments: SegmentTranslations, locale: string) {
  if (!segments[locale]) throw new Error(`No slugs found for locale ${locale}`);
  return segments[locale];
}

export function translationPaths(collection: unknown[], config: Config): GetStaticPathsResult {
  checkI18nLoaderCollection(collection);
  const { routePattern, segmentTranslations, defaultLocale, localeParamName, slugParamName, titleDataKey } = { ...defaultConfig, ...config };
  const route = parseRoutePattern(routePattern);

  route.forEach((segment, index) => {
    if (
      segment.param &&
      segment.value !== localeParamName &&
      index !== route.length - 1 &&
      !Object.values(segmentTranslations).every((translation) => translation[segment.value])
    ) {
      throw new Error(`No slugs found for route segment ${segment.value}`);
    }
  });

  return collection.map((entry) => {
    const segments = getSegmentTranslations(segmentTranslations, entry.data.locale);
    const translationId = entry.data.translationId;

    const entryTranslations = collection.filter((entry) => entry.data.translationId === translationId);

    const translations = entryTranslations.reduce(
      (previous, current) => {
        const segmentValues = getSegmentTranslations(segmentTranslations, current.data.locale);
        segmentValues[localeParamName] = defaultLocale === current.data.locale ? "" : current.data.locale;
        const slugValue = titleDataKey ? (current.data as Record<string, string | undefined>)[titleDataKey] : undefined;
        if (slugValue) {
          segmentValues[slugParamName] = limax(slugValue);
        }
        return {
          ...previous,
          [current.data.locale]: buildPath(route, segmentValues),
        };
      },
      {} as Record<string, string>
    );

    return {
      params: {
        ...segments,
      },
      props: {
        translationId,
        translations,
      },
    };
  });
}

Testing

I don't know how to test this. I'm very happy to add tests, if you can point me in the right direction.

Docs

/cc @withastro/maintainers-docs for feedback!

The new options should be mentioned in https://docs.astro.build/en/reference/routing-reference/#getstaticpaths.

withastro/astro

Changes

Testing

Should pass

Docs

N/A. No changeset since it's a refactor

withastro/astro

Changes

  • Fixes a case where automatic fallbacks cannot be used with local fonts on node because FileReader is not implemented. Depends on seek-oss/capsize#223

Testing

Manual

Docs

N/A

withastro/astro

Changes

  • We now throw an error if the response from a font file download is not successful

Testing

N/A

Docs

N/A

withastro/astro

Changes

  • After discussing with @delucis, we came to the conclusion that having sans-serif as a default fallback makes sense so users can benefit from automatic fallback generation by default

Testing

N/A

Docs

Will be documented properly alongside all defaults

withastro/astro

Changes

  • Addresses some of the feedback from the API bash
  • Updates the config to be an array at experimental.fonts
  • Updates the config so providers are passed directly to families
  • Updates the config so the local font provider is inferred if src is provided
  • Updates how font providers are initialized to be smarter
  • Updates the FontProvider interface so it doesn't require a name anymore

Testing

Updated. This PR simplifies types tests a lot

Docs

RFC updated. Docs update will come later, after more feedback from the API bash has been addressed

withastro/astro

Changes

Adds support for automatically-provisioning session storage for Cloudflare KV

Automatically configures Cloudflare KV storage when experimental sessions are enabled

If the experimental.session flag is enabled when using the Cloudflare adapter, Astro will automatically configure the session storage using the Cloudflare KV driver. You can still manually configure the session storage if you need to use a different driver or want to customize the session storage configuration. If you want to use sessions, you will need to create the KV namespace and declare it in your wrangler config. You can do this using the Wrangler CLI:

npx wrangler kv namespace create SESSION

This will log the id of the created namespace. You can then add it to your wrangler.json/wrangler.toml file like this:

// wrangler.json
{
  "kv_namespaces": [
    {
      "binding": "SESSION",
      "id": "<your kv namespace id here>"
    }
  ]
}

By default it uses the binding name SESSION, but if you want to use a different binding name you can do so by passing the sessionKVBindingName option to the adapter. For example:

import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
  output: 'server',
  site: `http://example.com`,
  adapter: cloudflare({
    platformProxy: {
      enabled: true,
    },
    sessionKVBindingName: 'MY_SESSION',
  }),
  experimental: {
    session: true,
  }
});

Testing

Adds fixture and test suite. To try it on your own site, use the preview release of @astrojs/cloudflare

Docs

Needs updated docs

lin-stephanie/astro-antfustyle-theme

Description

  • New /shorts page
  • Update CardView, CardItem comps
withastro/starlight

Description

Initially reported in Discord by Chris and Sarah, this PR fixes a list styling issue that can happen when the last child element of a list item is a script tag.

This can naturally happen in Starlight, e.g. in a list of steps where the last element of a step is the first occurence of a set of tabs in the page. The issue is visible in the Starlight documentation of the <Steps> component:

Before After
URL https://starlight.astro.build/components/steps/ https://deploy-preview-3026--astro-starlight.netlify.app/components/steps/
Preview SCR-20250327-kkgd SCR-20250327-kkkr

We cannot really target the built-in tabs component to fix this issue, as we could have more components that could lead to the same issue in the future, or the user could have their own component that triggers the issue.

We also cannot fix this issue if only the last child element of a list item is a script tag, as even if rare, the last n child elements could be script tags too.

This leads to quite the complex selector to try to handle all cases, I tried to comment it as much as possible to make it more understandable.

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/cloudflare@12.4.0

Minor Changes

  • #13514 a9aafec Thanks @ascorbic! - Automatically configures Cloudflare KV storage when experimental sessions are enabled

    If the experimental.session flag is enabled when using the Cloudflare adapter, Astro will automatically configure the session storage using the Cloudflare KV driver. You can still manually configure the session storage if you need to use a different driver or want to customize the session storage configuration. If you want to use sessions, you will need to create the KV namespace and declare it in your wrangler config. You can do this using the Wrangler CLI:

    npx wrangler kv namespace create SESSION

    This will log the id of the created namespace. You can then add it to your wrangler.json/wrangler.toml file like this:

    // wrangler.json
    {
      "kv_namespaces": [
        {
          "binding": "SESSION",
          "id": "<your kv namespace id here>",
        },
      ],
    }

    By default it uses the binding name SESSION, but if you want to use a different binding name you can do so by passing the sessionKVBindingName option to the adapter. For example:

    import { defineConfig } from 'astro/config';
    import cloudflare from '@astrojs/cloudflare';
    export default defineConfig({
      output: 'server',
      site: `http://example.com`,
      adapter: cloudflare({
        platformProxy: {
          enabled: true,
        },
        sessionKVBindingName: 'MY_SESSION',
      }),
      experimental: {
        session: true,
      },
    });

    See the Cloudflare KV docs for more details on setting up KV namespaces.

    See the experimental session docs for more information on configuring session storage.

Patch Changes

  • #13526 ff9d69e Thanks @jsparkdev! - update vite to the latest version

  • Updated dependencies []:

    • @astrojs/underscore-redirects@0.6.0

astro@5.5.6

Patch Changes

  • #13429 06de673 Thanks @ematipico! - The ActionAPIContext.rewrite method is deprecated and will be removed in a future major version of Astro

  • #13524 82cd583 Thanks @ematipico! - Fixes a bug where the functions Astro.preferredLocale and Astro.preferredLocaleList would return the incorrect locales
    when the Astro configuration specifies a list of codes. Before, the functions would return the path, instead now the functions
    return a list built from codes.

  • #13526 ff9d69e Thanks @jsparkdev! - update vite to the latest version

@astrojs/db@0.14.10

Patch Changes

@astrojs/alpinejs@0.4.5

Patch Changes

@astrojs/markdoc@0.13.3

Patch Changes

@astrojs/mdx@4.2.3

Patch Changes

@astrojs/netlify@6.2.5

Patch Changes

  • #13526 ff9d69e Thanks @jsparkdev! - update vite to the latest version

  • Updated dependencies []:

    • @astrojs/underscore-redirects@0.6.0

@astrojs/preact@4.0.8

Patch Changes

@astrojs/react@4.2.3

Patch Changes

@astrojs/solid-js@5.0.7

Patch Changes

@astrojs/svelte@7.0.9

Patch Changes

@astrojs/vue@5.0.9

Patch Changes

@astrojs/studio@0.1.6

Patch Changes

withastro/starlight

Description

  • This PR changes how social links are configured in the Starlight options.

  • It switches from a shorthand object syntax to an array of explicit link items:

    - social: {
    -   github: 'https://github.com/withastro/starlight',
    -   discord: 'https://astro.build/chat',
    - },
    + social: [
    +   { icon: 'github', label: 'GitHub', href: 'https://github.com/withastro/starlight' },
    +   { icon: 'discord', label: 'Discord', href: 'https://astro.build/chat' },
    + ],
  • This is a little unfortunate in that it’s a more verbose configuration approach, but it has a few advantages for long-term maintenance:

    • Icons no longer need dedicated built-in labels and code to be used as social links. Any icon can be used if people want (avoiding us needing to decide what counts as a valid social link and what doesn’t).

    • User control of labels means that less common links can be labelled accurately. For example, we avoided adding an email social icon because the label could vary depending on site language and context. This change allows people to use the existing email icon with a label of their choosing.

    • Following #3024, this should be updated to also support user-installed icons reducing the pressure on Starlight to contain icons for every platform in the known universe.

Not in scope

  • Currently there’s no implementation of localized labels for social links in this PR. There are a few obstacles to implementing that nicely at the moment, and given labels are already not localizable (and for many cases don’t require it where the label is a platform name), we decided to skip that until we refactor some internals to make it easier to support that elegantly.

Also considered

  • I also considered whether some hybrid of our current shorthand syntax and the new explicit syntax could make sense to keep config for common platforms terse, but I decided the slightly less verbose syntax didn’t justify users needing to understand two subtly different link shapes (e.g. some icons not needing an explicit label).
withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight@0.32.5

Patch Changes

withastro/astro

Changes

  • Closes #13503
  • Dynamically imports actions in SSR

Testing

Adds a cloudflare test

Docs

N/A

withastro/astro

Changes

Handles module not found errors thrown when importing the dist/server/entry.mjs file. If the file itself is missing, the existing error will still be thrown

Testing

Manually. This was replicated by modifying a build output to import a missing package.

Docs

N/A

withastro/starlight

Description

This PR will add SourceHut as an option in the social config. See discussion: #3008 (comment)

withastro/starlight

Description

As I noticed myself, the current documentation does not point out that Starlight's custom middleware may or may not conflict with Astro's middleware.

Related discussion: #3017 (pls comment your thoughts there, this PR is just an example)

withastro/starlight

This PR adds Substack's icon to the social links list.

Substack's icon in Starlight site's header

Optimized SVG with SVGOMG.

withastro/astro

Changes

Upgrades vite to the latest due to a CVE of theirs: GHSA-x574-m823-4x7w

Testing

CI should stay green

Docs

N/A

withastro/starlight

Description

This PR adds a new theme https://github.com/ocavue/starlight-theme-nova to the docs.

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.5.5

Patch Changes

  • #13510 5b14d33 Thanks @florian-lefebvre! - Fixes a case where astro:env secrets used in actions would not be available

  • #13485 018fbe9 Thanks @ascorbic! - Fixes a bug that caused cookies to ignore custom decode function if has() had been called before

  • #13505 a98ae5b Thanks @ematipico! - Updates the dependency vite to the latest.

  • #13483 fc2dcb8 Thanks @ematipico! - Fixes a bug where an Astro adapter couldn't call the middleware when there isn't a route that matches the incoming request.

@astrojs/db@0.14.9

Patch Changes

@astrojs/alpinejs@0.4.4

Patch Changes

@astrojs/cloudflare@12.3.1

Patch Changes

  • #13505 a98ae5b Thanks @ematipico! - Updates the dependency vite to the latest.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@0.6.0

@astrojs/markdoc@0.13.2

Patch Changes

@astrojs/mdx@4.2.2

Patch Changes

@astrojs/netlify@6.2.4

Patch Changes

  • #13505 a98ae5b Thanks @ematipico! - Updates the dependency vite to the latest.

  • Updated dependencies []:

    • @astrojs/underscore-redirects@0.6.0

@astrojs/preact@4.0.7

Patch Changes

@astrojs/react@4.2.2

Patch Changes

@astrojs/solid-js@5.0.6

Patch Changes

@astrojs/svelte@7.0.8

Patch Changes

@astrojs/tailwind@6.0.2

Patch Changes

@astrojs/vue@5.0.8

Patch Changes

@astrojs/studio@0.1.5

Patch Changes

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@playwright/test (source) ^1.51.0 -> ^1.51.1 age adoption passing confidence
@preact/signals (source) 2.0.1 -> 2.0.2 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.12 -> ^4.0.17 age adoption passing confidence
@types/estree (source) ^1.0.6 -> ^1.0.7 age adoption passing confidence
@types/react (source) ^18.3.18 -> ^18.3.20 age adoption passing confidence
@types/semver (source) ^7.5.8 -> ^7.7.0 age adoption passing confidence
astro-remote 0.3.3 -> 0.3.4 age adoption passing confidence
package-manager-detector ^1.0.0 -> ^1.1.0 age adoption passing confidence
rollup (source) ^4.35.0 -> ^4.37.0 age adoption passing confidence
sass ^1.85.1 -> ^1.86.0 age adoption passing confidence
shiki (source) ^3.0.0 -> ^3.2.1 age adoption passing confidence
svelte (source) ^5.22.6 -> ^5.25.3 age adoption passing confidence
tailwindcss (source) ^4.0.12 -> ^4.0.17 age adoption passing confidence
undici (source) ^7.4.0 -> ^7.5.0 age adoption passing confidence
vitest (source) ^3.0.8 -> ^3.0.9 age adoption passing confidence
zod-to-json-schema ^3.24.3 -> ^3.24.5 age adoption passing confidence

Release Notes

preactjs/signals (@​preact/signals)

v2.0.2

Compare Source

Patch Changes
tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.0.17

Compare Source

Fixed
  • Fix an issue causing the CLI to hang when processing Ruby files (#​17383)

v4.0.16

Compare Source

Added
  • Add support for literal values in --value('…') and --modifier('…') (#​17304)
Fixed
  • Fix class extraction followed by ( in Pug (#​17320)
  • Ensure @keyframes for theme animations are emitted if they are referenced following a comma (#​17352)
  • Vite: Ensure that updates to an imported CSS file are properly propagated after updating source files (#​17347)
  • Pre process Slim templates embedded in Ruby files (#​17336)
  • Error when input and output files resolve to the same file when using the CLI (#​17311)
  • Add missing suggestions when --spacing(--value(integer, number)) is used (#​17308)
  • Add ::-webkit-details-marker pseudo to marker variant (#​17362)
natemoo-re/astro-remote (astro-remote)

v0.3.4

Compare Source

Patch Changes
  • e026603: Fixes a memory leak with marked. Please see issue 33 for more details.
rollup/rollup (rollup)

v4.37.0

Compare Source

2025-03-23

Features
  • Support Musl Linux on Riscv64 architectures (#​5726)
  • Handles class decorators placed before the export keyword (#​5871)
Bug Fixes
  • Log Rust panic messages to the console when using the WASM build (#​5875)
Pull Requests

v4.36.0

Compare Source

2025-03-17

Features
  • Extend renderDynamicImport hook to provide information about static dependencies of the imported module (#​5870)
  • Export several additional types used by Vite (#​5879)
Bug Fixes
  • Do not merge chunks if that would create a top-level await cycle between chunks (#​5843)
Pull Requests
sveltejs/svelte (svelte)

v5.25.3

Compare Source

Patch Changes
  • fix: prevent state runes from being called with spread (#​15585)

v5.25.2

Compare Source

Patch Changes
  • feat: migrate reassigned deriveds to $derived (#​15581)

v5.25.1

Compare Source

Patch Changes
  • fix: prevent dev server from throwing errors when attempting to retrieve the proxied value of an iframe's contentWindow (#​15577)

v5.25.0

Compare Source

Minor Changes

v5.24.1

Compare Source

Patch Changes
  • fix: use get in constructor for deriveds (#​15300)

  • fix: ensure toStore root effect is connected to correct parent effect (#​15574)

v5.24.0

Compare Source

Minor Changes
  • feat: allow state created in deriveds/effects to be written/read locally without self-invalidation (#​15553)
Patch Changes
  • fix: check if DOM prototypes are extensible (#​15569)

  • Keep inlined trailing JSDoc comments of properties when running svelte-migrate (#​15567)

  • fix: simplify set calls for proxyable values (#​15548)

  • fix: don't depend on deriveds created inside the current reaction (#​15564)

nodejs/undici (undici)

v7.5.0

Compare Source

What's Changed

New Contributors

Full Changelog: nodejs/undici@v7.4.0...v7.5.0

StefanTerdell/zod-to-json-schema (zod-to-json-schema)

v3.24.5

Compare Source

v3.24.4

Compare Source


Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/starlight

Description

  • Closes #
  • What does this PR change? Give us a brief description.
  • Did you change something visual? A before/after screenshot can be helpful.
withastro/astro

Changes

After discussing with @natemoo-re,

Sprite Mode: We decided it was better to push this off until later. Inlining SVGs alone is a big win for Astro and there are some hurdles to creating a good DX without footguns in adding sprites.

Size Prop: We decided to remove this all together as it is pretty opinionated.

Title Prop: We're good with holding off on this until later as well considering there is a good discussion about how this should be implemented by default. Removing this allows users to control the a11y while we work to provide a better DX.

Default Role Attribute: Similar to above, it isn't obvious what we should apply by default. So we'll remove this in favor of a better solution down the road.

Memory Issue: I highly suspect this was tied to Sprite mode but I can look into it more if it still persists.

Additionally, I added a SVGComponent type that is equivalent to AstroComponentFactory to provide a better DX for passing SVGs down to other Astro components.

References withastro/roadmap#1035

Testing

Ran tests

Docs

Will need to update the docs but will need some help

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Changes

Currently, when a cookie is first parsed from the header the value is cached. This means that if subsequent requests pass a different decode function it will be ignored. This PR changes the behaviour to cache the raw cookie values, and then decode them when getting them. This means the passed decode function will always be used.

Fixes #13078

Testing

Docs

withastro/astro

Changes

Currently there is a strange error on Stackblitz where if the config cannot be loaded because of native addons it fails silently, because it throws an uncatchable error. This PR improves error handling so that those errors can be properly logged. This is not Stackblitz-specific, but does special-case the ERR_DLOPEN_DISABLED error that is thrown. This should be fine, because it's not the sort of error that would ever be recoverable by Vite, as it's due to a setting in Node.

Fixes #13249

Testing

Manually tested on Stackblitz:

https://stackblitz.com/github/ascorbic/withastro-astro-banrd5uv/tree/ascorbic/patch-13439

image

Docs

withastro/starlight

Description

withastro/astro

Changes

Closes #13409

The fixes use the same logic as the dev server. If we can't find a RouteData that matches the incoming request, we seek the /404 route, which we usually have, and pass it to the RenderContext. The RenderContext eventually calls the middleware.

Testing

I added a new test. Hopefully I didn't introduce any regressions

Docs

N/A

withastro/astro

Changes

  • In the config schema, refine and superRefine were only called when validating the user's config
  • With this PR, those validations are moved to another schema, called for the user config (as before) as well as at the end of astro:config:setup for each integration
  • Config related schemas are split in several files for clarity
  • Integrations hooks are refactored
  • Unhandled errors in integration hooks now log which integration and which hook is failing
  • I recommend you review the PR without whitespace changes

Testing

Updated, should pass

Docs

Changeset, no docs update needed I think

withastro/astro

Changes

Fixes #13461 by adding data-astro-rerun

Docs

n.a. / bug fix

withastro/astro

Changes

Generates the correct target URL for external redirects

Fixes #13479

Testing

Added test

Docs

withastro/starlight

Description

  • add my newest plugin to the list
  • modify some other descriptions where I noticed some inconsistencies - mostly dots at end of sentence (please let me know if I should remove those changes if unwanted)
withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@types/react (source) ^18.3.18 -> ^18.3.19 age adoption passing confidence
@vitejs/plugin-vue (source) ^5.2.1 -> ^5.2.3 age adoption passing confidence
@vitejs/plugin-vue-jsx (source) ^4.1.1 -> ^4.1.2 age adoption passing confidence
svelte (source) ^5.22.6 -> ^5.23.2 age adoption passing confidence
vite (source) ^6.2.1 -> ^6.2.2 age adoption passing confidence

Release Notes

vitejs/vite-plugin-vue (@​vitejs/plugin-vue)

v5.2.3

v5.2.2

vitejs/vite-plugin-vue (@​vitejs/plugin-vue-jsx)

v4.1.2

sveltejs/svelte (svelte)

v5.23.2

Compare Source

Patch Changes
  • fix: don't hoist listeners that access non hoistable snippets (#​15534)

v5.23.1

Compare Source

Patch Changes
  • fix: invalidate parent effects when child effects update parent dependencies (#​15506)

  • fix: correctly match :has() selector during css pruning (#​15277)

  • fix: replace undefined with void 0 to avoid edge case (#​15511)

  • fix: allow global-like pseudo-selectors refinement (#​15313)

  • chore: don't distribute unused types definitions (#​15473)

  • fix: add files and group to HTMLInputAttributes in elements.d.ts (#​15492)

  • fix: throw rune_invalid_arguments_length when $state.raw() is used with more than 1 arg (#​15516)

v5.23.0

Compare Source

Minor Changes
  • fix: make values consistent between effects and their cleanup functions (#​15469)
vitejs/vite (vite)

v6.2.2

Compare Source


Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/starlight

As discussed today in Talking & Doc'ing, considering we are at the moment only using Renovate for GitHub Actions updates, we want to mostly rely on new pull requests rather than the dashboard.

This PR disables the Renovate Dashboard.

withastro/astro

Changes

Follow up to #13471 to align linking style with what we’d usually do

Testing

n/a

Docs

/cc @withastro/maintainers-docs for feedback!

withastro/starlight

Description

This PR:

  • Closes #2989
  • Set up default values to the ranking property of merged indexes in pagefind to prevent search collision research between the current site and the sites hosting the merged indexes
  • This PR do not changes starlight visual

Test

I've tested locally with 2 variants of the starlight's documentation:

  1. The first variant is the one from the main branch, without any merged indexes nor any modifications
  2. The second one is nearly the same as the one from the main branch, with little modifications:
    1. A markdown file changed, replacing climate impact by climate exchange
    2. And a merge index pointing to the first site on pagefind configuration

To test it I searched for climate exchange (the modified text) on the second site.

Before applying the fix, search shown the original site as first result, and after the fix, modified site was first in search result (due to corp. network policies I can't upload screenshot right now to prove it)

Details

I used this script to build and serve locally the 2 variants:

#! /bin/bash

echo "Installing serve globaly"
npm i -g serve

echo "Building the documentation for port 3001"
if [ -d "dist-3001" ]; then
    rm -rf "dist-3001"
fi
pnpm build
mv dist dist-3001

echo "Changing the content of the documentation"
sed -i 's/climate impact/climate exchange/' src/content/docs/environmental-impact.md
sed -i '52i\ \t\t\tpagefind: { indexWeight: 2.0, mergeIndex: [{ bundlePath: "http://localhost:3001/pagefind/", indexWeight: 0.5, }] },' astro.config.mjs


echo "Building the documentation for port 3002"
if [ -d "dist-3002" ]; then
    rm -rf "dist-3002"
fi
pnpm build
mv dist dist-3002

echo "Serving the 2 sites"
serve -l 3001 --cors ./dist-3001 &
serve -l 3002 --cors ./dist-3002
withastro/astro

Changes

  • Updates the Tailwind integration README to show it is deprecated and remove links to docs which are no longer useful

Testing

n/a — docs only

Docs

cc @withastro/maintainers-docs for feedback!

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight@0.32.4

Patch Changes

@astrojs/starlight-tailwind@3.0.1

Patch Changes

withastro/starlight

Description

  • What does this PR change? Updates the peer dep. I made it a patch since v6 doesn't change anything compared to v5
withastro/astro

Changes

Unlike other frameworks, by default, preact and svelte don't replace the target element content when rendering (via render or mount) respectively. This caused fallback content to remain when using client:only. This PR empties the target element before rendering.

Fixes #12513

Testing

Added e2e tests

Docs

withastro/astro

Changes

  • There was a regression in #13401 that made impossible to provide an object without a provider for a family
  • This PR moves some things around to have types working properly

Testing

Updates the types tests

Docs

N/A

withastro/starlight

This PR should hopefully disable packageManager updates.

withastro/starlight

Description

This aims to fix the GitHub labeler action that runs for every PR for compatibility with v5.

Their docs are pretty bad, but IIUC, they introduced different match types which means we need to use a changed-files key for each of our existing labels.

withastro/starlight

Based on https://docs.renovatebot.com/docker/#disable-all-docker-renovation, this PR disables all Docker renovations, e.g. like this one #2981

withastro/astro

Changes

  • Now generates types for the Font component family prop
  • Fixes a bug where the map passed to the virtual module was not using family.as if provided

Testing

Updated + manual

Docs

N/A

withastro/astro

Changes

Currently the Cloudflare adapter attempts to move the _redirects and _routes.json files out of the base dir into the root when a base value is set in the config. This fails, because the files are already created in the root. This PR removes that code path.

Fixes #13162

Testing

Adds tests

Docs

withastro/starlight

This seems like a useful plugin but isn't listed to easily discovered. So I'm raising this PR.

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/cloudflare@12.3.0

Minor Changes

Patch Changes

  • #13463 d5ad591 Thanks @ascorbic! - Fixes a bug that caused builds to fail when a base directory is configured

  • Updated dependencies []:

    • @astrojs/underscore-redirects@0.6.0

astro@5.5.4

Patch Changes

@astrojs/preact@4.0.6

Patch Changes

@astrojs/svelte@7.0.7

Patch Changes

@astrojs/tailwind@6.0.1

Patch Changes

  • #13471 020c542 Thanks @delucis! - Updates the README to indicate that the Tailwind integration is deprecated

@astrojs/vercel@8.1.3

Patch Changes

withastro/astro

Changes

Currently if a user has a custom 404.astro or 500.astro we set the correct status code in the response, but not the correct status text, instead leaving the default OK. This PR ensures the correct text is set too.

Fixes #13259

Testing

Added tests

Docs

withastro/astro

Changes

This PR restores the workflow removed in #13435

The workflow is now fixed: tj-actions/changed-files#2464 (comment)

Testing

Once approved, I will merge this PR and trigger again a renovate bot PR so it can pin the actions via digest.

Docs

N/A

withastro/astro

Changes

Due to the recent events that happened with changed-files, this PR enforces the use of the commit digests for our GH actions, instead of a tag.

I also added a group to renovate, so renovate will make a PR to update them all at once.

Testing

Once merged, renovate should update its dependency board. I will trigger a PR

Docs

N/A

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/sitemap@3.3.0

Minor Changes

astro@5.5.3

Patch Changes

  • #13448 91c9503 Thanks @ematipico! - Upgrade to shiki v3

  • #13448 91c9503 Thanks @ematipico! - Handle server.allowedHosts when the value is true without attempting to push it into an array.

  • #13448 91c9503 Thanks @ematipico! - Fixes a bug that caused some very large data stores to save incomplete data.

  • #13448 91c9503 Thanks @ematipico! - Adds a new function called insertPageRoute to the Astro Container API.

    The new function is useful when testing routes that, for some business logic, use Astro.rewrite.

    For example, if you have a route /blog/post and for some business decision there's a rewrite to /generic-error, the container API implementation will look like this:

    import Post from '../src/pages/Post.astro';
    import GenericError from '../src/pages/GenericError.astro';
    import { experimental_AstroContainer as AstroContainer } from 'astro/container';
    
    const container = await AstroContainer.create();
    container.insertPageRoute('/generic-error', GenericError);
    const result = await container.renderToString(Post);
    console.log(result); // this should print the response from GenericError.astro

    This new method only works for page routes, which means that endpoints aren't supported.

  • #13448 91c9503 Thanks @ematipico! - Fixes a bug that caused the astro add command to ignore the --yes flag for third-party integrations

  • #13448 91c9503 Thanks @ematipico! - Prevent bad value in x-forwarded-host from crashing request

  • #13448 91c9503 Thanks @ematipico! - Fix an issue in the Container API, where the renderToString function doesn't render adequately nested slots when they are components.

  • Updated dependencies [91c9503]:

    • @astrojs/markdown-remark@6.3.1

@astrojs/markdoc@0.13.1

Patch Changes

  • Updated dependencies [91c9503]:
    • @astrojs/markdown-remark@6.3.1

@astrojs/mdx@4.2.1

Patch Changes

@astrojs/markdown-remark@6.3.1

Patch Changes

withastro/astro

Reverts #13427

withastro/astro

Changes

Closes #13371

To avoid possible breaking changes with the canonical tag, now the function that creates the HTML redirect accepts a relative location and an absolution location.

Testing

Added a new test. I also tested it manually to make sure that it keeps working as expected.

Docs

N/A

withastro/starlight

Description

  • Closes # - did not create an issue first
  • Add social icon for npm
  • A work of art:
Screenshot 2025-03-18 at 1 55 39 PM

Can't make it any smaller (SVGOMG makes it larger)

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight@0.32.3

Patch Changes

withastro/astro

Changes

Testing

Should still pass

Docs

withastro/docs#11288

withastro/astro

Changes

This follows a RFC review from @matthewp

  • By default, we try to generate automatic fallbacks
  • With this PR, set automaticFallback: false on a family to disable this behaviors

Testing

Adds a test

Docs

RFC has been updated

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
miniflare (source) ^3.20250224.0 -> ^4.20250317.0 age adoption passing confidence

Release Notes

cloudflare/workers-sdk (miniflare)

v4.20250317.0

Compare Source

Minor Changes
Patch Changes

v4.20250310.0

Compare Source

Major Changes

v3.20250310.1

Compare Source

Patch Changes

v3.20250310.0

Compare Source

Patch Changes

Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@libsql/client (source) ^0.14.0 -> ^0.15.0 age adoption passing confidence
@playwright/test (source) 1.51.0 -> 1.51.1 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.12 -> ^4.0.15 age adoption passing confidence
@types/react (source) ^18.3.18 -> ^18.3.19 age adoption passing confidence
alpinejs (source) ^3.14.8 -> ^3.14.9 age adoption passing confidence
fast-xml-parser ^5.0.8 -> ^5.0.9 age adoption passing confidence
nanoid ^5.1.3 -> ^5.1.5 age adoption passing confidence
open-props ^1.7.13 -> ^1.7.14 age adoption passing confidence
package-manager-detector ^1.0.0 -> ^1.1.0 age adoption passing confidence
sass ^1.85.1 -> ^1.86.0 age adoption passing confidence
shiki (source) ^3.0.0 -> ^3.2.1 age adoption passing confidence
svelte (source) ^5.22.6 -> ^5.23.2 age adoption passing confidence
tailwindcss (source) ^4.0.12 -> ^4.0.15 age adoption passing confidence
typescript-eslint (source) ^8.26.1 -> ^8.27.0 age adoption passing confidence
vite (source) ^6.2.1 -> ^6.2.2 age adoption passing confidence
vitest (source) ^3.0.8 -> ^3.0.9 age adoption passing confidence

Release Notes

libsql/libsql-client-ts (@​libsql/client)

v0.15.0

Compare Source

  • Bump to latest libsql package.
microsoft/playwright (@​playwright/test)

v1.51.1

Compare Source

Highlights

https://github.com/microsoft/playwright/issues/35093 - [Regression]: TimeoutOverflowWarning: 2149630.634 does not fit into a 32-bit signed integer
https://github.com/microsoft/playwright/issues/35138 - [Regression]: TypeError: Cannot read properties of undefined (reading 'expectInfo')

Browser Versions

  • Chromium 134.0.6998.35
  • Mozilla Firefox 135.0
  • WebKit 18.4

This version was also tested against the following stable channels:

  • Google Chrome 133
  • Microsoft Edge 133
tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.0.15

Compare Source

v4.0.14

Compare Source

Fixed
  • Do not extract candidates with JS string interpolation ${ (#​17142)
  • Fix extraction of variants containing . character (#​17153)
  • Fix extracting candidates in Clojure/ClojureScript (#​17087)

v4.0.13

Compare Source

Fixed
  • Fix Haml pre-processing (#​17051)
  • Ensure .node and .wasm files are not scanned for utilities (#​17123)
  • Improve performance when scanning JSON files (#​17125)
  • Fix extracting candidates containing dots in Haml, Pug, and Slim pre processors (#​17094, #​17085, #​17113)
  • Don't create invalid CSS when encountering a link wrapped in square brackets (#​17129)
alpinejs/alpine (alpinejs)

v3.14.9

Compare Source

What's Changed
New Contributors

Full Changelog: alpinejs/alpine@v3.14.8...v3.14.9

NaturalIntelligence/fast-xml-parser (fast-xml-parser)

v5.0.9

Compare Source

ai/nanoid (nanoid)

v5.1.5

Compare Source

  • Fixed latest version on npm after 3.x release.

v5.1.4

Compare Source

  • Fixed latest version on npm after 3.x release.
argyleink/open-props (open-props)

v1.7.14

Compare Source

antfu-collective/package-manager-detector (package-manager-detector)

v1.1.0

Compare Source

   🚀 Features
    View changes on GitHub
sass/dart-sass (sass)

v1.86.0

Compare Source

  • Add support for % as an expression in its own right. It will still be parsed
    as the modulo operator when between two other expressions, but in any other
    context it will be an expression whose value is the unquoted string %.

  • Consider attr() to be a special number function that can be used as a
    channel in color functions.

  • Deprecate user-defined functions named type() so that we can eventually
    support the new CSS type() function.

Dart API
  • Increase the minimum Dart SDK to 3.6.0.
typescript-eslint/typescript-eslint (typescript-eslint)

v8.27.0

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

vitest-dev/vitest (vitest)

v3.0.9

Compare Source

   🐞 Bug Fixes
    View changes on GitHub

Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

Changes

  • Fixes: #13342
  • Fix handling of server.allowedHosts when the value is true.
  • Ensures that a boolean true value is accepted without attempting to convert it into an array.

Testing

  • Manually tested by setting allowedHosts: true in astro.config.mjs.
  • Verified that astro info and astro dev no longer throw configuration errors.

Docs

No documentation updates needed as this aligns with existing Vite behavior.

withastro/astro
withastro/astro

Changes

Fixes #13067

In the initial issue, all slots passed to the renderToString function are considered strings, so when we pass them to the renderChild function, the HTML escaper breaks the component.

When a slot is passed to the renderToString function, a new SlotString is created.

I created a SlotString for now, but I don't know if this solution is the best approach (it's my first PR on Astro).
Let me know if it's correct or not. :)

Testing

I added a case inside container-with-vitest\test\Card.test.ts that reproduces the case displayed on the issue here.

Docs

The documentation is already present as mentioned by the initial issue.

withastro/astro

Changes

Refactors the types of ActionAPIContext to not inherit functions from APIContext.

Testing

CI should stay green

Docs

N/A

withastro/astro

Changes

  • If a bad value is provide by this header, we simply ignore it and fallback to the host provided by the host header (if there is one).
  • Fixes #13392

Testing

  • Test added

Docs

N/A, bug fix

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.6.0

Minor Changes

  • #13437 013fa87 Thanks @Vardhaman619! - Handle server.allowedHosts when the value is true without attempting to push it into an array.

Patch Changes

  • #13324 ea74336 Thanks @ematipico! - Upgrade to shiki v3

  • #13372 7783dbf Thanks @ascorbic! - Fixes a bug that caused some very large data stores to save incomplete data.

  • #13358 8c21663 Thanks @ematipico! - Adds a new function called insertPageRoute to the Astro Container API.

    The new function is useful when testing routes that, for some business logic, use Astro.rewrite.

    For example, if you have a route /blog/post and for some business decision there's a rewrite to /generic-error, the container API implementation will look like this:

    import Post from '../src/pages/Post.astro';
    import GenericError from '../src/pages/GenericError.astro';
    import { experimental_AstroContainer as AstroContainer } from 'astro/container';
    
    const container = await AstroContainer.create();
    container.insertPageRoute('/generic-error', GenericError);
    const result = await container.renderToString(Post);
    console.log(result); // this should print the response from GenericError.astro

    This new method only works for page routes, which means that endpoints aren't supported.

  • #13426 565583b Thanks @ascorbic! - Fixes a bug that caused the astro add command to ignore the --yes flag for third-party integrations

  • #13428 9cac9f3 Thanks @matthewp! - Prevent bad value in x-forwarded-host from crashing request

  • #13432 defad33 Thanks @P4tt4te! - Fix an issue in the Container API, where the renderToString function doesn't render adequately nested slots when they are components.

  • Updated dependencies [ea74336]:

    • @astrojs/markdown-remark@6.3.1

@astrojs/sitemap@3.3.0

Minor Changes

@astrojs/markdoc@0.13.1

Patch Changes

  • Updated dependencies [ea74336]:
    • @astrojs/markdown-remark@6.3.1

@astrojs/mdx@4.2.1

Patch Changes

@astrojs/markdown-remark@6.3.1

Patch Changes

withastro/astro

Changes

Ensures that the "x is not an official Astro package" prompt respects the --yes flag

Fixes #13399

Testing

Manually tested.

Docs

withastro/astro

Changes

  • Creates astro errors and uses them

Testing

Updated

Docs

N/A

withastro/astro

Changes

  • Improves vite plugin cleanup

Testing

N/A

Docs

N/A

withastro/astro

Changes

  • Enables styling of sitemap via XSL (eXtensible Styling Language)
  • Passes existing config.xslURL to SiteMapIndexStream Docs Link
    • I assume that a separate config value for sitemap-index.xml is unneeded, as historic examples of XSL for sitemaps handle both the index and map XML files.

Testing

  • I extended the tests that ensured sitemap-0.xml included the XSL to also test that sitemap-index.xml includes it.

Docs

I don't believe the docs need to be updated, as the description of the sitemap plugin's config is the only place I've seen XSL (or xslURL) referenced, and that value's usage doesn't differ in a way that merits documentation. I expected the xslURL value to behave this way already, from the docs.

withastro/astro

Reverts #13347

Closes #13416

Unfortunately that PR created some unwanted regressions, and I am afraid we need to revert it

withastro/starlight

Description

This PR adds found new icons: vscode, zed, vim and jetbrains

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.5.2

Patch Changes

  • #13415 be866a1 Thanks @ascorbic! - Reuses experimental session storage object between requests. This prevents memory leaks and improves performance for drivers that open persistent connections to a database.

  • #13420 2f039b9 Thanks @ematipico! - It fixes an issue that caused some regressions in how styles are bundled.

withastro/astro

Changes

  • Validates the name of the font family, to make sure we can generate a proper css variable name

Testing

Added

Docs

N/A

withastro/astro

Changes

Moves the storage object to a static property on AstroSession, meaning it can be reused between requests. This avoids memory leaks and excessive connections when using drivers that open persistent DB connections.

Fixes #13376

Testing

Tested manually. Passes all session tests.

Docs

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.5.1

Patch Changes

withastro/astro

Changes

Small fix to types

Testing

Docs

withastro/astro

Changes

  • Updates how we read font metrics by switching from fontaine to capsize
  • Capsize was used under the hood by fontaine. But fontaine abstracted it too much so we couldn't do some caching
  • I copied part of fontaine's source which is not tested
  • I updated the code from fontaine so it uses less dependencies, so this PR makes Astro lighter

Testing

Updated

Docs

N/A

withastro/astro

Changes

If Astro detects that sharp is not installed when trying to transform an image it will throw a MissingSharp error. However when this happens during a build, we currently catch it and instead throw a CouldNotTransformImage error, with a message suggesting the image is corrupt. The correct error is buried in the cause. This PR checks if the thrown error is an AstroError, and if so rethrows it rather than throwing a CouldNotTransformImage error. This means that the MissingSharp error is logged correctly.

Testing

Tested manually

Docs

withastro/astro

Changes

  • What does this change?

New PrefetchOptions param eagerness that can be explicitly stated for prefetch() function.

Usecase: letting a browser manage when a page should be prerendered will simplify web site code compared to default behavior (no eagerness passed will automatically default to immediate, causing headcaches if you want to use FIFO strategy available for moderate and conservative args)

Reference doc: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/speculationrules#eagerness

Testing

No tests added, as there weren't for PrefetchOptions

Docs

/cc @withastro/maintainers-docs

prefetch() doc should be updated accordingly to notify users a new option to be passed on

withastro/astro

Changes

Currently if a file is edited in dev, any schema errors will be displayed by the Vite dev server as an UnhandledRejectionError. This is because the schema validation happens in the file watcher, and isn't caught and displayed during the rendering. This ensures that AstroErrors (including InvalidContentEntryDataError) that are caught by the dev server are recognised and displayed directly, rather than as unhandled rejections.

Testing

Tested manually

Docs

withastro/astro

Changes

While working on an adapter, I encountered a scenario where app.match() correctly matches a route, but the dynamic route ultimately returns a 404. In such cases, a prerendered 404 page needs to be served.

Currently, when a prerendered 404 page exists, fetch is used to retrieve it. However, in some environments, it would be useful to provide a custom implementation for fetching the prerendered page.

In my specific use case, I am deploying to a Cloudflare Worker, where not all workers can call themselves. This limitation makes it necessary to have a way to override the default fetch behavior.

This PR introduces support for a user-provided fetch function (string -> Response), which will be used when SSR needs to serve a prerendered 404/500 page.

Testing

  • Added a test for this specific scenario: a server target with a prerendered 404.
  • Updated the test adapter to propagate the custom fetch function.

Docs

withastro/docs#11256

/cc @withastro/maintainers-docs

withastro/astro

Changes

Exposes the functionality implemented in the compiler: withastro/compiler#1055

I added a new experimental flag (name to bikeshed, of course).

Testing

Added a test

Docs

withastro/docs#11211

withastro/astro

Changes

This PR makes a bunch of changes related to the fonts configuration:

  • Extracts schemas to be reused in the Astro config and in types
  • Improves schemas to allow more font options (eg. featureSettings)
  • Adds errors to avoid name conflicts. Consider the errors messages placeholders, we'll refine them once team docs make a proper review
  • I'd like your opinion on a TODO (I added a PR comment as well)

Testing

  • Adds unit tests
  • Disable whitespace sensitivty as I took the opportunity to improve some things in the config validation test

Docs

N/A

withastro/starlight

Description

  • add 6 new icons:

    • VS Code
    • Jetbrains
    • Zed
    • Vim
    • Figma
    • Sketch
  • those icons where optimized with SVGOMG, Number precision: 2

  • Closes #2944 (probably have to manually close, cause discussions dont get closed as issues do...)

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.5.0

Minor Changes

  • #13402 3e7b498 Thanks @ematipico! - Adds a new experimental flag called experimental.preserveScriptOrder that renders <script> and <style> tags in the same order as they are defined.

    When rendering multiple <style> and <script> tags on the same page, Astro currently reverses their order in your generated HTML output. This can give unexpected results, for example CSS styles being overridden by earlier defined style tags when your site is built.

    With the new preserveScriptOrder flag enabled, Astro will generate the styles in the order they are defined:

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        preserveScriptOrder: true,
      },
    });

    For example, the following component has two <style> tags, and both define the same style for the body tag:

    <p>I am a component</p>
    <style>
      body {
        background: red;
      }
    </style>
    <style>
      body {
        background: yellow;
      }
    </style>

    Once the project is compiled, Astro will create an inline style where yellow appears first, and then red. Ultimately, the red background is applied:

    body {
      background: #ff0;
    }
    body {
      background: red;
    }

    When experimental.preserveScriptOrder is set to true, the order of the two styles is kept as it is, and in the style generated red appears first, and then yellow:

    body {
      background: red;
    }
    body {
      background: #ff0;
    }

    This is a breaking change to how Astro renders project code that contains multiple <style> and <script> tags in the same component. If you were previously compensating for Astro's behavior by writing these out of order, you will need to update your code.

    This will eventually become the new default Astro behavior, so we encourage you to add this experimental style and script ordering as soon as you are able! This will help us test the new behavior and ensure your code is ready when this becomes the new normal.

    For more information as this feature develops, please see the experimental script order docs.

  • #13352 cb886dc Thanks @delucis! - Adds support for a new experimental.headingIdCompat flag

    By default, Astro removes a trailing - from the end of IDs it generates for headings ending with
    special characters. This differs from the behavior of common Markdown processors.

    You can now disable this behavior with a new configuration flag:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        headingIdCompat: true,
      },
    });

    This can be useful when heading IDs and anchor links need to behave consistently across your site
    and other platforms such as GitHub and npm.

    If you are using the rehypeHeadingIds plugin directly, you can also pass this new option:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import { rehypeHeadingIds } from '@astrojs/markdown-remark';
    import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source';
    
    export default defineConfig({
      markdown: {
        rehypePlugins: [
          [rehypeHeadingIds, { experimentalHeadingIdCompat: true }],
          otherPluginThatReliesOnHeadingIDs,
        ],
      },
    });
  • #13311 a3327ff Thanks @chrisirhc! - Adds a new configuration option for Markdown syntax highlighting excludeLangs

    This option provides better support for diagramming tools that rely on Markdown code blocks, such as Mermaid.js and D2 by allowing you to exclude specific languages from Astro's default syntax highlighting.

    This option allows you to avoid rendering conflicts with tools that depend on the code not being highlighted without forcing you to disable syntax highlighting for other code blocks.

    The following example configuration will exclude highlighting for mermaid and math code blocks:

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      markdown: {
        syntaxHighlight: {
          type: 'shiki',
          excludeLangs: ['mermaid', 'math'],
        },
      },
    });

    Read more about this new option in the Markdown syntax highlighting configuration docs.

Patch Changes

  • #13404 4e78b4d Thanks @ascorbic! - Fixes a bug in error handling that saving a content file with a schema error would display an "unhandled rejection" error instead of the correct schema error

  • #13379 d59eb22 Thanks @martrapp! - Fixes an edge case where the client router executed scripts twice when used with a custom swap function that only swaps parts of the DOM.

  • #13393 6b8fdb8 Thanks @renovate! - Updates primsjs to version 1.30.0, which adds support for more languages and fixes a security advisory which does not affect Astro.

  • #13374 7b75bc5 Thanks @ArmandPhilippot! - Fixes the documentation of the i18n configuration where manual was presented as a key of routing instead of an available value.

  • #13380 9bfa6e6 Thanks @martrapp! - Fixes an issue where astro:page-load fires before all scripts are executed

  • #13407 0efdc22 Thanks @ascorbic! - Displays correct error message when sharp isn't installed

  • Updated dependencies [cb886dc, a3327ff]:

    • @astrojs/markdown-remark@6.3.0

@astrojs/markdoc@0.13.0

Minor Changes

  • #13352 cb886dc Thanks @delucis! - Adds support for a new experimental.headingIdCompat flag

    By default, Astro removes a trailing - from the end of IDs it generates for headings ending with
    special characters. This differs from the behavior of common Markdown processors.

    You can now disable this behavior with a new configuration flag:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        headingIdCompat: true,
      },
    });

    This can be useful when heading IDs and anchor links need to behave consistently across your site
    and other platforms such as GitHub and npm.

    If you are using the rehypeHeadingIds plugin directly, you can also pass this new option:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import { rehypeHeadingIds } from '@astrojs/markdown-remark';
    import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source';
    
    export default defineConfig({
      markdown: {
        rehypePlugins: [
          [rehypeHeadingIds, { experimentalHeadingIdCompat: true }],
          otherPluginThatReliesOnHeadingIDs,
        ],
      },
    });

Patch Changes

  • Updated dependencies [cb886dc, a3327ff]:
    • @astrojs/markdown-remark@6.3.0

@astrojs/mdx@4.2.0

Minor Changes

  • #13352 cb886dc Thanks @delucis! - Adds support for a new experimental.headingIdCompat flag

    By default, Astro removes a trailing - from the end of IDs it generates for headings ending with
    special characters. This differs from the behavior of common Markdown processors.

    You can now disable this behavior with a new configuration flag:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        headingIdCompat: true,
      },
    });

    This can be useful when heading IDs and anchor links need to behave consistently across your site
    and other platforms such as GitHub and npm.

    If you are using the rehypeHeadingIds plugin directly, you can also pass this new option:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import { rehypeHeadingIds } from '@astrojs/markdown-remark';
    import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source';
    
    export default defineConfig({
      markdown: {
        rehypePlugins: [
          [rehypeHeadingIds, { experimentalHeadingIdCompat: true }],
          otherPluginThatReliesOnHeadingIDs,
        ],
      },
    });

Patch Changes

  • Updated dependencies [cb886dc, a3327ff]:
    • @astrojs/markdown-remark@6.3.0

@astrojs/markdown-remark@6.3.0

Minor Changes

  • #13352 cb886dc Thanks @delucis! - Adds support for a new experimental.headingIdCompat flag

    By default, Astro removes a trailing - from the end of IDs it generates for headings ending with
    special characters. This differs from the behavior of common Markdown processors.

    You can now disable this behavior with a new configuration flag:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        headingIdCompat: true,
      },
    });

    This can be useful when heading IDs and anchor links need to behave consistently across your site
    and other platforms such as GitHub and npm.

    If you are using the rehypeHeadingIds plugin directly, you can also pass this new option:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import { rehypeHeadingIds } from '@astrojs/markdown-remark';
    import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source';
    
    export default defineConfig({
      markdown: {
        rehypePlugins: [
          [rehypeHeadingIds, { experimentalHeadingIdCompat: true }],
          otherPluginThatReliesOnHeadingIDs,
        ],
      },
    });
  • #13311 a3327ff Thanks @chrisirhc! - Adds a new configuration option for Markdown syntax highlighting excludeLangs

    This option provides better support for diagramming tools that rely on Markdown code blocks, such as Mermaid.js and D2 by allowing you to exclude specific languages from Astro's default syntax highlighting.

    This option allows you to avoid rendering conflicts with tools that depend on the code not being highlighted without forcing you to disable syntax highlighting for other code blocks.

    The following example configuration will exclude highlighting for mermaid and math code blocks:

    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      markdown: {
        syntaxHighlight: {
          type: 'shiki',
          excludeLangs: ['mermaid', 'math'],
        },
      },
    });

    Read more about this new option in the Markdown syntax highlighting configuration docs.

withastro/astro

Changes

Use package-manager-detector to replace preferred-pm and which-pm. It includes features of both of those packages with a smaller dependency footprint. It also includes APIs to get the package-manager-specific command strings so we don't have to handle them manually.

NOTE: It's easier to review some of the changes with whitespace disabled for diffs.

Testing

Tested manually through the CLIs. Here's some screenshots:

image image image

Docs

Added a changeset, but this is mostly an internal change and shouldn't change the detected package manager in most project setups.

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
prismjs 1.29.0 -> 1.30.0 age adoption passing confidence

GitHub Vulnerability Alerts

CVE-2024-53382

Prism (aka PrismJS) through 1.29.0 allows DOM Clobbering (with resultant XSS for untrusted input that contains HTML but does not directly contain JavaScript), because document.currentScript lookup can be shadowed by attacker-injected HTML elements.


Release Notes

PrismJS/prism (prismjs)

v1.30.0

Compare Source


Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

Changes

  • What does this change?
  • Be short and concise. Bullet points can help!
  • Before/after screenshots can help as well.
  • Don't forget a changeset! pnpm exec changeset

Testing

Docs

lin-stephanie/astro-antfustyle-theme

Description

This PR updates the Toc.astro to properly support Chinese text anchors. Previously, the anchor links did not account for percent-encoded Chinese characters. As a result, headings containing Chinese text were not correctly recognized.

withastro/astro

Changes

  • Remove trailing spaces from blog example's links.
  • A formatter introduced newlines inside the anchor tags on the blog example's home index.astro page, causing the link to include a trailing space.
  • Not the worst thing, just looks a little unpolished compared to everything else I've experienced getting to know Astro :)
  • I've put the anchor tags on their own lines to avoid this issue, and prevent future formatters from re-introducing the issue (tested with Astro extension's formatter, at least).
  • No changeset because this is in examples/*.

Before

before

After

after

Testing

  • Ran the example locally (cd examples/blog && npm run dev) and it fixes the issue.
  • Ran Astro VS Code extension's formatter, confirmed issue is not re-introduced. (Also tried Prettier's.)

Docs

No docs added - small visual tweak to blog example page links.

withastro/astro

Changes

Closes #13382

Testing

I tested it locally in VSCode. Now the typing error is gone.

Docs

N/A

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@astrojs/svelte (source) ^7.0.5 -> ^7.0.6 age adoption passing confidence
@cloudflare/workers-types ^4.20250303.0 -> ^4.20250310.0 age adoption passing confidence
@netlify/functions ^3.0.0 -> ^3.0.1 age adoption passing confidence
@playwright/test (source) 1.50.1 -> 1.51.0 age adoption passing confidence
@playwright/test (source) ^1.50.1 -> ^1.51.0 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.9 -> ^4.0.12 age adoption passing confidence
acorn ^8.14.0 -> ^8.14.1 age adoption passing confidence
autoprefixer ^10.4.20 -> ^10.4.21 age adoption passing confidence
ci-info ^4.1.0 -> ^4.2.0 age adoption passing confidence
eslint (source) ^9.21.0 -> ^9.22.0 age adoption passing confidence
miniflare (source) ^3.20250214.2 -> ^3.20250224.0 age adoption passing confidence
nanoid ^5.1.2 -> ^5.1.3 age adoption passing confidence
prismjs ^1.29.0 -> ^1.30.0 age adoption passing confidence
publint (source) ^0.3.8 -> ^0.3.9 age adoption passing confidence
rollup (source) ^4.34.9 -> ^4.35.0 age adoption passing confidence
svelte (source) ^5.22.1 -> ^5.22.6 age adoption passing confidence
svelte (source) ^5.21.0 -> ^5.22.6 age adoption passing confidence
svelte2tsx (source) ^0.7.34 -> ^0.7.35 age adoption passing confidence
tailwindcss (source) ^4.0.9 -> ^4.0.12 age adoption passing confidence
typescript-eslint (source) ^8.26.0 -> ^8.26.1 age adoption passing confidence
vite (source) ^6.2.0 -> ^6.2.1 age adoption passing confidence
vitest (source) ^3.0.7 -> ^3.0.8 age adoption passing confidence

Release Notes

withastro/astro (@​astrojs/svelte)

v7.0.6

Compare Source

Patch Changes
cloudflare/workerd (@​cloudflare/workers-types)

v4.20250310.0

Compare Source

netlify/functions (@​netlify/functions)

v3.0.1

Compare Source

Bug Fixes
microsoft/playwright (@​playwright/test)

v1.51.0

Compare Source

tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.0.12

Compare Source

Fixed
  • Vite: Fix url(…) rebasing in transitively imported CSS files (#​16965)
  • PostCSS: Rebase url(…)s in imported CSS files (#​16965)
  • Ensure utilities are sorted based on their actual property order (#​16995)
  • Ensure strings in Pug and Slim templates are handled correctly (#​17000)
  • Ensure classes between } and { are properly extracted (#​17001)
  • Fix razor/cshtml pre-processing (#​17027)
  • Ensure extracting candidates from JS embedded in a PHP string works as expected (#​17031)

v4.0.11

Compare Source

Fixed
  • Ensure classes containing -- are extracted correctly (#​16972)
  • Ensure classes containing numbers followed by dash or underscore are extracted correctly (#​16980)
  • Ensure arbitrary container queries are extracted correctly (#​16984)
  • Ensure classes ending in [ are extracted in Slim templating language (#​16985)
  • Ensure arbitrary variables with data types are extracted correctly (#​16986)

v4.0.10

Compare Source

Added
  • Add col-<number> and row-<number> utilities for grid-column and grid-row (#​15183)
Fixed
  • Ensure not-* does not remove :is(…) from variants (#​16825)
  • Ensure @keyframes are correctly emitted when using a prefix (#​16850)
  • Don't swallow @utility declarations when @apply is used in nested rules (#​16940)
  • Ensure outline-hidden behaves like outline-none outside of forced colors mode (#​16943)
  • Allow !important on CSS variables again (#​16873)
  • Vite: Do not crash when encountering an .svg file with # or ? in the filename (#​16957)
  • Ensure utilities are properly detected within square brackets (#​16306)
  • Ensure utilities are properly detected using Angular's conditional class binding syntax (#​16306)
  • Ensure utilities starting with numbers are properly extracted from Slim templates (#​16306)
  • Discard arbitrary property candidates that have guaranteed-invalid property names (#​16306)
Changed
  • Removed max-w-auto and max-h-auto utilities as they generate invalid CSS (#​16917)
  • Replaced the existing candidate extractor with a brand new extractor to improve maintainability, correctness, and performance (#​16306)
acornjs/acorn (acorn)

v8.14.1

Compare Source

postcss/autoprefixer (autoprefixer)

v10.4.21

Compare Source

watson/ci-info (ci-info)

v4.2.0

Compare Source

v4.1.0
  • support Appcircle PR 1d42c26
  • support AWS CodeBuild PR e6fcdd2
  • add ci.id to return vendor constant 81fd993
eslint/eslint (eslint)

v9.22.0

Compare Source

cloudflare/workers-sdk (miniflare)

v3.20250224.0

Compare Source

Patch Changes
  • #​8338 2d40989 Thanks @​GregBrimble! - feat: Upload _headers and _redirects if present with Workers Assets as part of wrangler deploy and wrangler versions upload.

  • #​8251 da568e5 Thanks @​dependabot! - chore: update dependencies of "miniflare" package

    The following dependency versions have been updated:

    Dependency From To
    workerd 1.20250214.0 1.20250224.0
    @​cloudflare/workers-types ^4.20250214.0 ^4.20250224.0
  • #​8288 cf14e17 Thanks @​CarmenPopoviciu! - feat: Add assets Proxy Worker skeleton in miniflare

    This commit implements a very basic Proxy Worker skeleton, and wires it in the "pipeline" miniflare creates for assets. This Worker will be incrementally worked on, but for now, the current implementation will forward all incoming requests to the Router Worker, thus leaving the current assets behaviour in local dev, the same.

    This is an experimental feature available under the --x-assets-rpc flag: wrangler dev --x-assets-rpc.

  • #​8355 79c7810 Thanks @​GregBrimble! - fix: Add default empty router config for assets in Miniflare

ai/nanoid (nanoid)

v5.1.3

Compare Source

publint/publint (publint)

v0.3.9

Compare Source

Patch Changes
  • Support the formatMessage utility in the browser. It has a new color: 'html' option to highlight important parts with <strong> tags instead of ANSI colors. It also has a new reference: boolean option so the messages are worded in reference of the message location. (e1cfef0)

  • If formatMessage is passed a package.json object with missing keys, the message part that references the value will now fallback to "undefined" instead of completely erroring out. (45962d1)

rollup/rollup (rollup)

v4.35.0

Compare Source

2025-03-08

Features
  • Pass build errors to the closeBundle hook (#​5867)
Pull Requests
sveltejs/svelte (svelte)

v5.22.6

Compare Source

Patch Changes
  • fix: skip log_if_contains_state if only logging literals (#​15468)

  • fix: Add closedby property to HTMLDialogAttributes type (#​15458)

  • fix: null and warnings for local handlers (#​15460)

v5.22.5

Compare Source

Patch Changes
  • fix: memoize clsx calls (#​15456)

  • fix: respect svelte-ignore hydration_attribute_changed on elements with spread attributes (#​15443)

  • fix: always use setAttribute when setting style (#​15323)

  • fix: make style: directive and CSS handling more robust (#​15418)

v5.22.4

Compare Source

Patch Changes
  • fix: never deduplicate expressions in templates (#​15451)

v5.22.3

Compare Source

Patch Changes
  • fix: run effect roots in tree order (#​15446)
sveltejs/language-tools (svelte2tsx)

v0.7.35

Compare Source

  • fix: take other snippets into account when checking for hoistability (#​2668)
  • fix: disambiguate render in module script (#​2667)
  • fix: properly transform $props.id when $props is assigned to props (#​2694)
  • fix: correctly handle unclosed tags with same type tag inside (#​2682)
  • fix: handle booleanish popover (#​2702)
  • perf: cache files during emitDts (#​2701)
typescript-eslint/typescript-eslint (typescript-eslint)

v8.26.1

Compare Source

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

vitejs/vite (vite)

v6.2.1

Compare Source

vitest-dev/vitest (vitest)

v3.0.8

Compare Source

   🐞 Bug Fixes
    View changes on GitHub

Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

Changes

The problem was the the content of the toolbar settings overflowed the toolbar. That made it very hard to read the text it looked broken.

I did a few things:

  1. The text of the last row takes up the whole width of the section
  2. If the content is still too large, the developer can scroll the content of the toolbar

Before

Bildschirmfoto 2025-03-09 um 12 37 03

After

Bildschirmaufnahme.2025-03-09.um.12.35.04.mov

Testing

I did some manual testing, by resizing the window and testing the changes on a real iPhone. I did not any automated tests, because there's now way to test this without a visual test. Please correct me if I'm wrong.

Docs

This change does not need documentation, it doesn't change how users
need to interact with Astro.

withastro/astro

Changes

In typescript/lib/lib.dom.d.ts the ViewTransition interface now includes the types property.
Added the property to our simulated viewTransition object for browsers without native support.

https://discord.com/channels/830184174198718474/1055240348970000454/1346390166356361289

Testing

Compiles without errors after removing the @ts-expect-error comment

Docs

n.a. / upstream change

withastro/astro

Changes

Fixes #12858

The original code to execute scripts after swap() made the assumption that all inline scripts
are directly executed when inserted into the DOM. This is not true for inline module scripts,
which are deferred but still executed in order.
Inline module scripts can not be awaited for with onload.
Thus to be able to wait for the execution of all scripts,
we make sure that the last inline module script
is always followed by an external module script.

Testing

new e2e test

Docs

n.a. / bugfix

withastro/astro

Changes

Fixes #13375

Marks scripts executed on initial page load as executed to prevent their re-execution if they are not replaced with the next call to swap.
This might happen if a custom swap() function only swaps part of the DOM and leaves some original scripts in place.

Testing

added e2e test

Docs

n.a. / bug fix

withastro/astro

Changes

This fixes pop-ups and highlights rendering over the audit list window.

Fixes #11114

Testing

Added e2e test.

Docs

withastro/astro

Changes

This fixes a few race condition bugs that manifested in sites with lots of very large markdown files.

Adds a method to the data store object that returns a promise that resolves when saving to disk is complete.

Resets the #dirty flag before saving to disk. The main cause of #13310 was that debounced saves that happened while the large data store file was being written to disk would be lost because the dirty flag was cleared once the file write was complete, missing the fact that more more entries need writing.

Fixes #13310

Testing

Tested with the #13310 repro

Docs

withastro/starlight

Description

  • Closes #
  • What does this PR change? Give us a brief description.
  • Did you change something visual? A before/after screenshot can be helpful.
withastro/astro

Changes

Those additions should help users that try to use redirects to resolve issues with trailing slashes. Those redirects are not supported ATM. It is quite time consuming to debug those, so having something in the docs about it should save people some time.

More about the issue in #12532 (comment)

Testing

This is a docs change. The test case is in #12532 (comment)

Docs

This is only a docs change.

withastro/starlight

Description

  • Closes #
  • What does this PR change? Adding my starlight site to your showcase :)
  • Did you change something visual?
withastro/astro

Changes

  • This adds an optional as property to a font family
  • The RFC has been updated but TLDR use as if:
    1. You are an integration and want to make sure you don't conflict with fonts declared by the user
    2. Your font name can't be properly converted to a CSS variable name

Testing

Tests updated

Docs

RFC updated

withastro/astro

Changes

This PR removes makeSvgComponent from the exported functions. That function is meant to be used internally and shouldn't be exported.

I added a note at top of the file.

Testing

CI should pass

Docs

N/A

withastro/astro

Changes

  • Adds css variables generations
  • Fixes a bug around fallbacks that impacted css variables
  • RFC has been updated to remove the cssVar prop from the Font component as I'll go with another solution (upcoming PR)

Testing

Adds unit tests

Docs

N/A

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.4.3

Patch Changes

  • #13381 249d52a Thanks @martrapp! - Adds the types property to the viewTransition object when the ClientRouter simulates parts of the View Transition API on browsers w/o native support.

  • #13367 3ce4ad9 Thanks @ematipico! - Adds documentation to various utility functions used for remote image services

  • #13347 d83f92a Thanks @bluwy! - Updates internal CSS chunking behavior for Astro components' scoped styles. This may result in slightly more CSS chunks created, but should allow the scoped styles to only be included on pages that use them.

  • #13388 afadc70 Thanks @ematipico! - Fixes a bug where astro:config/server and astro:config/client had incorrect types.

  • #13355 042d1de Thanks @ematipico! - Adds documentation to the assets utilities for remote service images.

  • #13395 6d1c63f Thanks @bluwy! - Uses package-manager-detector to detect the package manager used in the project

  • #13363 a793636 Thanks @ematipico! - Fixes an issue where the internal function makeSvgComponent was incorrectly exposed as a public API.

  • Updated dependencies [042d1de]:

    • @astrojs/internal-helpers@0.6.1
    • @astrojs/markdown-remark@6.2.1

@astrojs/cloudflare@12.2.4

Patch Changes

  • Updated dependencies [042d1de]:
    • @astrojs/internal-helpers@0.6.1
    • @astrojs/underscore-redirects@0.6.0

@astrojs/markdoc@0.12.11

Patch Changes

  • Updated dependencies [042d1de]:
    • @astrojs/internal-helpers@0.6.1
    • @astrojs/markdown-remark@6.2.1

@astrojs/mdx@4.1.1

Patch Changes

  • Updated dependencies []:
    • @astrojs/markdown-remark@6.2.1

@astrojs/netlify@6.2.3

Patch Changes

  • Updated dependencies [042d1de]:
    • @astrojs/internal-helpers@0.6.1
    • @astrojs/underscore-redirects@0.6.0

@astrojs/node@9.1.3

Patch Changes

  • Updated dependencies [042d1de]:
    • @astrojs/internal-helpers@0.6.1

@astrojs/svelte@7.0.6

Patch Changes

  • #13339 a05e6ab Thanks @Hugos68! - Fixes a case where $props.id() would not be unique across multiple islands

@astrojs/vercel@8.1.2

Patch Changes

  • Updated dependencies [042d1de]:
    • @astrojs/internal-helpers@0.6.1

@astrojs/internal-helpers@0.6.1

Patch Changes

@astrojs/markdown-remark@6.2.1

Patch Changes

  • Updated dependencies [042d1de]:
    • @astrojs/internal-helpers@0.6.1

@astrojs/upgrade@0.5.1

Patch Changes

  • #13395 6d1c63f Thanks @bluwy! - Uses package-manager-detector to detect the package manager used in the project
withastro/astro

Changes

Closes #13264

This PR adds support for Astro.rewrite for the container API. A new method called insertPageRoute has been exposed that will help users to test routes that trigger a possible rewrite.

Testing

I added a new test

Docs

Will create a PR

withastro/astro

Changes

This PR adds the command build:ci to the adapters we recently moved.

That command is used by the ecosystem CI of vite

Testing

Merge it and check with the vite team

Docs

N/A

withastro/starlight

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@astrojs/starlight-markdoc@0.3.0

Minor Changes

  • #2931 10b93b3 Thanks @HiDeoo! - Adds support for the title, frame, and meta fence attributes to code blocks.

    These new optional attributes add support for Expressive Code text & line markers. The following example renders a code block using a terminal frame with a title:

    ```js {% title="editor.exe" frame="terminal" %}
    console.log('Hello, world!');
    ```

    Any other text or line markers should be specified using the meta fence attribute. For example, the following code block renders a code block using the diff syntax combined with the js language syntax highlighting and the markers text highlighted:

    ```diff {% meta="lang=js 'markers'" %}
      function thisIsJavaScript() {
        // This entire block gets highlighted as JavaScript,
        // and we can still add diff markers to it!
    -   console.log('Old code to be removed')
    +   console.log('New and shiny code!')
      }
    ```

    To learn more about all the available options, check out the Expressive Code documentation.

withastro/astro

Changes

  • Simplifies the cache util
  • Removes duplicated loop while resolving font families
  • Extracts code to a new loadFonts function, making it easier to test
  • Extract things outside of the the vite plugin file
  • Moves constants around to fix a circular dependency problem

Testing

Adds a unit test

Docs

N/A

withastro/astro

Changes

  • Adds a new experimental.headingIdCompat flag
  • Uses this to disable sanitizing heading IDs when set
  • Applies to default Markdown processing as well as the Markdoc and MDX integrations
  • Why? Astro currently strips a single trailing - from heading IDs it generates, deviating from the standard github-slugger behavior that is common to many platforms. The aim would be for us to remove this nonstandard behavior entirely in a future major release.

Testing

Added some tests for headings with special characters

Docs

No docs yet, but this will need experimental feature docs if the basic idea is accepted.

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Changes

Vercel only allows images to be generated with widths that are from a configured allowlist. This PR ensures that experimental responsive images only include allowed sizes.

Fixes #13325

Testing

Adds tests

Docs

withastro/astro

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

astro@5.4.2

Patch Changes

@astrojs/db@0.14.8

Patch Changes

  • #13343 a001a75 Thanks @dreyfus92! - Fix Astro DB seed failing when project path contains spaces. This resolves by properly decoding URL pathnames that contain encoded spaces (%20) before passing them to Vite's ssrLoadModule.

  • Updated dependencies []:

    • @astrojs/studio@0.1.4

@astrojs/partytown@2.1.4

Patch Changes

  • #13109 5c0e0ea Thanks @arnottferels! - Adds support for config.lib, which allows changing the destination of the files:

    export default defineConfig({
    	integrations: [partytown({
    		config: {
    +			lib: '/assets/lib/~partytown/';
    		}
    	})]
    })

@astrojs/vercel@8.1.1

Patch Changes

withastro/astro

Changes

In Markdown, the generated attributes in img elements were not being correctly esacaped. This meant that including > or " in the img alt would break the tag. This isn't a security issue because Markdown is trusted, and you can add an actual script tag if you want.

Fixes #13345

Testing

Added test case

Docs

withastro/astro

Changes

Vite 6.2 has builtin support for treeshaking scoped CSS (vitejs/vite#19418) which we can use to replace our internal implementation copy before.

Testing

Existing tests should pass. There's added test in the past from #10291. If CI fails, maybe there's a bug in Vite.

EDIT: The new behaviour will now properly place scoped styles into its own chunk so that it's only loaded by pages that uses the component's scoped styles. This means the CSS is more granular and accurately loaded, but results in slightly more CSS chunks which causes some tests that did not anticipate it to fail. I've made fixes to the tests for these cases.

Docs

n/a. Shouldn't require a changeset as it's an internal refactor.

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence Type Update
@astrojs/solid-js (source) ^5.0.2 -> ^5.0.5 age adoption passing confidence dependencies patch
@astrojs/svelte (source) ^7.0.3 -> ^7.0.5 age adoption passing confidence dependencies patch
@astrojs/vue (source) ^5.0.4 -> ^5.0.7 age adoption passing confidence dependencies patch
@changesets/changelog-github (source) ^0.5.0 -> ^0.5.1 age adoption passing confidence devDependencies patch
@changesets/cli (source) ^2.27.12 -> ^2.28.1 age adoption passing confidence devDependencies minor
@cloudflare/workers-types ^4.20250109.0 -> ^4.20250303.0 age adoption passing confidence dependencies minor
@fontsource/monofett (source) 5.1.1 -> 5.2.5 age adoption passing confidence dependencies minor
@fontsource/montserrat (source) 5.1.1 -> 5.2.5 age adoption passing confidence dependencies minor
@markdoc/markdoc (source) ^0.4.0 -> ^0.5.1 age adoption passing confidence dependencies minor
@netlify/blobs ^8.1.0 -> ^8.1.1 age adoption passing confidence dependencies patch
@tailwindcss/vite (source) ^4.0.3 -> ^4.0.9 age adoption passing confidence dependencies patch
@vercel/analytics (source) ^1.4.1 -> ^1.5.0 age adoption passing confidence dependencies patch
@vercel/nft ^0.29.0 -> ^0.29.2 age adoption passing confidence dependencies patch
CodSpeedHQ/action v3.2.0 -> v3.4.0 age adoption passing confidence action minor
async-listen ^3.0.1 -> ^3.1.0 age adoption passing confidence dependencies minor
eslint (source) ^9.19.0 -> ^9.21.0 age adoption passing confidence devDependencies minor
expect-type ^1.1.0 -> ^1.2.0 age adoption passing confidence devDependencies minor
fs-fixture ^2.7.0 -> ^2.7.1 age adoption passing confidence devDependencies patch
hast-util-select ^6.0.3 -> ^6.0.4 age adoption passing confidence dependencies patch
hast-util-to-html ^9.0.4 -> ^9.0.5 age adoption passing confidence dependencies patch
linkedom ^0.18.7 -> ^0.18.9 age adoption passing confidence devDependencies patch
miniflare (source) ^3.20241230.1 -> ^3.20250214.2 age adoption passing confidence dependencies minor
mrmime ^2.0.0 -> ^2.0.1 age adoption passing confidence dependencies patch
nanoid ^5.0.9 -> ^5.1.2 age adoption passing confidence dependencies minor
nanostores ^0.11.3 -> ^0.11.4 age adoption passing confidence dependencies patch
open-props ^1.7.12 -> ^1.7.13 age adoption passing confidence dependencies patch
postcss (source) ^8.5.1 -> ^8.5.3 age adoption passing confidence dependencies patch
postcss-preset-env (source) ^10.1.3 -> ^10.1.5 age adoption passing confidence devDependencies patch
preact (source) ^10.25.4 -> ^10.26.4 age adoption passing confidence devDependencies minor
preact (source) ^10.25.4 -> ^10.26.4 age adoption passing confidence dependencies minor
prettier (source) ^3.4.2 -> ^3.5.3 age adoption passing confidence devDependencies minor
publint (source) ^0.3.2 -> ^0.3.8 age adoption passing confidence devDependencies patch
remark-gfm ^4.0.0 -> ^4.0.1 age adoption passing confidence dependencies patch
rollup (source) ^4.30.1 -> ^4.34.9 age adoption passing confidence devDependencies patch
rollup (source) ^4.34.2 -> ^4.34.9 age adoption passing confidence devDependencies patch
sass ^1.83.4 -> ^1.85.1 age adoption passing confidence devDependencies minor
sass ^1.83.4 -> ^1.85.1 age adoption passing confidence dependencies minor
solid-js (source) ^1.9.4 -> ^1.9.5 age adoption passing confidence devDependencies patch
solid-js (source) ^1.9.4 -> ^1.9.5 age adoption passing confidence dependencies patch
svelte (source) ^5.19.7 -> ^5.21.0 age adoption passing confidence devDependencies minor
svelte (source) ^5.17.4 -> ^5.21.0 age adoption passing confidence dependencies minor
svelte (source) ^5.19.7 -> ^5.21.0 age adoption passing confidence dependencies minor
tailwindcss (source) ^4.0.3 -> ^4.0.9 age adoption passing confidence dependencies patch
tsconfck (source) ^3.1.4 -> ^3.1.5 age adoption passing confidence dependencies patch
turbo (source) ^2.4.0 -> ^2.4.4 age adoption passing confidence devDependencies patch
typescript (source) ^5.7.3 -> ^5.8.2 age adoption passing confidence devDependencies minor
typescript (source) ^5.7.3 -> ^5.8.2 age adoption passing confidence dependencies minor
typescript (source) ~5.7.3 -> ~5.8.2 age adoption passing confidence devDependencies minor
typescript-eslint (source) ^8.23.0 -> ^8.26.0 age adoption passing confidence devDependencies minor
undici (source) ^7.3.0 -> ^7.4.0 age adoption passing confidence devDependencies minor
unstorage ^1.14.4 -> ^1.15.0 age adoption passing confidence dependencies minor
vite (source) ^6.0.11 -> ^6.2.0 age adoption passing confidence devDependencies patch
vite-plugin-solid ^2.11.1 -> ^2.11.6 age adoption passing confidence dependencies patch
vite-plugin-vue-devtools (source) ^7.7.1 -> ^7.7.2 age adoption passing confidence dependencies patch
vitefu ^1.0.5 -> ^1.0.6 age adoption passing confidence dependencies patch
vitest (source) ^3.0.5 -> ^3.0.7 age adoption passing confidence dependencies patch
vitest (source) ^3.0.5 -> ^3.0.7 age adoption passing confidence devDependencies patch
wrangler (source) ^3.101.0 -> ^3.112.0 age adoption passing confidence devDependencies minor
wrangler (source) ^3.101.0 -> ^3.112.0 age adoption passing confidence dependencies minor
yocto-spinner ^0.2.0 -> ^0.2.1 age adoption passing confidence dependencies patch
zod (source) ^3.24.1 -> ^3.24.2 age adoption passing confidence dependencies patch
zod-to-json-schema ^3.24.1 -> ^3.24.3 age adoption passing confidence dependencies patch

Release Notes

withastro/astro (@​astrojs/solid-js)

v5.0.5

Compare Source

Patch Changes

v5.0.4

Compare Source

Patch Changes

v5.0.3

Compare Source

Patch Changes
  • #​12887 ea603ae Thanks @​louisescher! - Adds a warning message when multiple JSX-based UI frameworks are being used without either the include or exclude property being set on the integration.
withastro/astro (@​astrojs/svelte)

v7.0.5

Compare Source

Patch Changes

v7.0.4

Compare Source

Patch Changes
withastro/astro (@​astrojs/vue)

v5.0.7

Compare Source

Patch Changes

v5.0.6

Compare Source

Patch Changes

v5.0.5

Compare Source

Patch Changes
  • #​12887 ea603ae Thanks @​louisescher! - Adds a warning message when multiple JSX-based UI frameworks are being used without either the include or exclude property being set on the integration.
changesets/changesets (@​changesets/changelog-github)

v0.5.1

Compare Source

Patch Changes
cloudflare/workerd (@​cloudflare/workers-types)

v4.20250303.0

Compare Source

v4.20250224.0

Compare Source

v4.20250214.0

Compare Source

fontsource/font-files (@​fontsource/monofett)

v5.2.5

Compare Source

v5.2.4

Compare Source

v5.2.1

Compare Source

v5.2.0

Compare Source

fontsource/font-files (@​fontsource/montserrat)

[v5.2.5](https://redirect.g


Configuration

📅 Schedule: Branch creation - "* 0-3 * * 1" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

withastro/astro

Changes

adds decodeURIComponent to properly handle the pathname

closes: #13332

Testing

Docs

there's no need to update docs.


Last fetched:  |  Scheduled refresh: Every Saturday

See Customizing GitHub Activity Pages to configure your own

Inspired by prs.atinux.com