Skip to content

AstroEco is Contributing…

Example: Displaying GitHub pull requests using astro-loader-github-prs

withastro/starlight

Description

  • With this PR all types of badges will be shown directly in the docs which is important to help people chose the right one for their use case.
  • The current status quo is less verbose. But it puts the work on the reader to try out every badge type to see and test it. That is cumbersome, takes time and unnecessary.
  • The visual appeal of the badges should be visible directly.

Deeplink: https://deploy-preview-2881--astro-starlight.netlify.app/guides/sidebar/#badge-variants-and-custom-styling

image

withastro/astro

Changes

  • Currently, experimental.responsiveImages only adds CSS variables to images included via the <Image /> or <Picture /> components.
  • In my other PR #13254, we can only use getImage to transform images.
  • I would like to have getImage participate more fully in the responsive images experiment.
  • Moving the CSS variable logic inside getImage removes a lot of redundant/confusing logic anyways.

Testing

I tested this change by running my personal blog with it on. It provides a better outcome than when getImage is used on its own with this experiment turned on:

BeforeAfter

image

image

Note: the before pic has width: 100% applied to it in page styles. Without that, it looks even worse (no scaling applied based on page size)

Docs

We may need to update the doc page on this (https://docs.astro.build/en/reference/experimental-flags/responsive-images/), as well as the RFC (https://github.com/withastro/roadmap/blob/eff726cec3bf214b42ab13b819ed7b200753509e/proposals/0053-responsive-images.md). Currently, neither make mention of getImage being affected by this experiment.

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Changes

  • Currently, in Markdown files, only local images get passed to the image service
    • This was because the image service only supported local files when it was first released.
  • However, the image service now supports remote images
  • So, this PR adds support for passing remote images in Markdown files to the image service.

Testing

I tested this change by creating a small project with a single allowed remote domain, and rendering markdown files from:

  • a page
  • a content collection

Both approaches work. I can provide these test files if needed, though I'm not sure how we'll want to deal with the fact it'll require an internet connection.

Known Issues

If the remote image is styled in some way, the newly added width and height attributes could mess up that styling. Ideally, we'd like to be able to modify the properties after getImage runs somehow, but seeing as this is also the case for local images transformed using this method too, I think this is more a deficiency in getImage best left addressed by the responsive image experiment.

Docs

If this change goes through, we will need to update this page to reflect that remote images are now supported in markdown files: https://docs.astro.build/en/guides/images/#images-in-markdown-files

/cc @withastro/maintainers-docs for feedback!

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

withastro/astro

Changes

Testing

N/A

Docs

N/A

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

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

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

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/vue@5.0.7

Patch Changes

withastro/astro

Changes

A test is failing because it asserted a message that we recently changed

Testing

Test should pass (checked locally, it passed)

Docs

N/A

withastro/astro

This PR fixes #13033

Changes

After the rewrite, the URL will contain the base path and then the new pathname.

The other issue that was brought up was inconsistencies with trailingSlash and when the base was included in the Astro.rewrite call.

Testing

I have added a new fixture and have added tests to the /tests/rewrite.test.js file that test and ensure the Astro.url pathname always contains the base path. This is tested both with and without the trailingSlash, also with the base being included and excluded in argument of Astro.rewrite.

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.3.0

Minor Changes

  • #13210 344e9bc Thanks @VitaliyR! - Handle HEAD requests to an endpoint when a handler is not defined.

    If an endpoint defines a handler for GET, but does not define a handler for HEAD, Astro will call the GET handler and return the headers and status but an empty body.

  • #13195 3b66955 Thanks @MatthewLymer! - Improves SSR performance for synchronous components by avoiding the use of Promises. With this change, SSR rendering of on-demand pages can be up to 4x faster.

  • #13145 8d4e566 Thanks @ascorbic! - Adds support for adapters auto-configuring experimental session storage drivers.

    Adapters can now configure a default session storage driver when the experimental.session flag is enabled. If a hosting platform has a storage primitive that can be used for session storage, the adapter can automatically configure the session storage using that driver. This allows Astro to provide a more seamless experience for users who want to use sessions without needing to manually configure the session storage.

Patch Changes

  • #13145 8d4e566 Thanks @ascorbic! - ⚠️ BREAKING CHANGE FOR EXPERIMENTAL SESSIONS ONLY ⚠️

    Changes the experimental.session option to a boolean flag and moves session config to a top-level value. This change is to allow the new automatic session driver support. You now need to separately enable the experimental.session flag, and then configure the session driver using the top-level session key if providing manual configuration.

    defineConfig({
      // ...
      experimental: {
    -    session: {
    -      driver: 'upstash',
    -    },
    +    session: true,
      },
    +  session: {
    +    driver: 'upstash',
    +  },
    });

    You no longer need to configure a session driver if you are using an adapter that supports automatic session driver configuration and wish to use its default settings.

    defineConfig({
      adapter: node({
        mode: "standalone",
      }),
      experimental: {
    -    session: {
    -      driver: 'fs',
    -      cookie: 'astro-cookie',
    -    },
    +    session: true,
      },
    +  session: {
    +    cookie: 'astro-cookie',
    +  },
    });

    However, you can still manually configure additional driver options or choose a non-default driver to use with your adapter with the new top-level session config option. For more information, see the experimental session docs.

  • #13101 2ed67d5 Thanks @corneliusroemer! - Fixes a bug where HEAD and OPTIONS requests for non-prerendered pages were incorrectly rejected with 403 FORBIDDEN

@astrojs/netlify@6.2.0

Minor Changes

  • #13194 1b5037b Thanks @dfdez! - Adds includedFiles and excludedFiles configuration options to customize SSR function bundle contents.

    The includeFiles property allows you to explicitly specify additional files that should be bundled with your function. This is useful for files that aren't automatically detected as dependencies, such as:

    • Data files loaded using fs operations
    • Configuration files
    • Template files

    Similarly, you can use the excludeFiles property to prevent specific files from being bundled that would otherwise be included. This is helpful for:

    • Reducing bundle size
    • Excluding large binaries
    • Preventing unwanted files from being deployed
    import { defineConfig } from 'astro/config';
    import netlify from '@astrojs/netlify';
    
    export default defineConfig({
      // ...
      output: 'server',
      adapter: netlify({
        includeFiles: ['./my-data.json'],
        excludeFiles: ['./node_modules/package/**/*', './src/**/*.test.js'],
      }),
    });

    See the Netlify adapter documentation for detailed usage instructions and examples.

  • #13145 8d4e566 Thanks @ascorbic! - Automatically configures Netlify Blobs storage when experimental session enabled

    If the experimental.session flag is enabled when using the Netlify adapter, Astro will automatically configure the session storage using the Netlify Blobs 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.

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

Patch Changes

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

@astrojs/node@9.1.0

Minor Changes

  • #13145 8d4e566 Thanks @ascorbic! - Automatically configures filesystem storage when experimental session enabled

    If the experimental.session flag is enabled when using the Node adapter, Astro will automatically configure session storage using the filesystem driver. You can still manually configure session storage if you need to use a different driver or want to customize the session storage configuration.

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

withastro/astro

Changes

I probably botched the multiple line command, so now I put it one line

Testing

Merge and trigger

Docs

N/A

withastro/astro

Changes

The checkout step was missing lol

Testing

Docs

withastro/astro

Changes

As for now, I want to hardcode the packages. We can iterate about filter once we have pkg.pr.new working.

Testing

Merge and trigger it

Docs

N/A

withastro/astro

Changes

When handling redirects for trailing slashes, we need to skip assets. We do this by checking for a file extension. Previously the Node adapter was using its own regex for this when serving static files, and was missing some edge cases. This PR changes it to use the shared hasFileExtension helper.

Fixes #13222

Testing

Adds test cases

Docs

withastro/astro

Changes

This PR updates the pkg.pr.new to use the same workflow steps used by the previous workflow to "trick" changesets to use the correct ref.

Testing

I copied the same code. IT should work. We should merge the PR and trigger another the workflow again.

Docs

N/A

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

withastro/astro

Changes

This PR revamps the pkg.pr.new that we had disabled.

Changes:

  • triggers the job only on labeled event
  • uses changeset status to retrieve the upcoming releases
  • uses a script to parse the JSON emitted by the previous step, and return a list of packages that have changesets. It returns a string
  • if the previous string is empty, we write a message in the PR saying that no preview release was published
  • if the previous string isn't empty, it's passed to the pkg pr new CLI

Testing

I tested the script locally.
This PR needs to be merged, I will enable the job again, and then open a PR to test it.

Docs

N/A

withastro/astro

Changes

This PR removes a workflow that isn't needed anymore

Testing

N/A

Docs

N/A

withastro/astro

Changes

Resolves this issue #13196

The paginate function allows for readonly arrays.

Testing

Just types were changed.

Docs

Just types were added

withastro/astro

Changes

This pull request is an attempt to solve #13192

Changes the output log statement to log the output and not the buildOutput.
I have added an additional log to show if an adapter is setup for ssr, which is what I believe was the intent of this log line being changed in commit fix(core): add error log for server islands.

-		this.logger.info('build', `output: ${blue('"' + this.settings.config.output + '"')}`);
+		this.logger.info('build', `output: ${blue('"' + this.settings.buildOutput + '"')}`);

Testing

No tests were added as the only changes are to log statements

Docs

withastro/astro

Changes

There are 2 main changes in this PR:

  1. It is now possible to define ISR exclusions as regular expressions.
  2. Routes excluded from ISR do not get _isr route entry in .vercel/output/config.json.

Longer answer with my reasoning:

I am using Astro at www.superside.com and our website has many different API routes. I found it quite inconvenient to add every single one of them to the isr.exclude list manually. I prefer to have this in my astro.config.mjs instead:

isr: {
  exclude: [/^\/api/]
}

We've been using this change via patched node module on production for quite some time without any issue. However, this complicates the process of upgrading Astro for us. Ideally I would love to see this change merged into the source code.

As for the second change: as I was working on a way to make isr.exclude accept regular expressions, I noticed that generated vercel/output/config.json file has a lot of unnecessary entries in it (our website has a many excluded api routes). This change helped me investigate Vercel build outputs.

Testing

I adjusted existing tests to handle new use cases.

Docs

/cc @withastro/maintainers-docs for feedback!

If you accept this PR it would be necessary to mention support for regular expressions support in this section of the docs:
https://docs.astro.build/en/guides/integrations-guide/vercel/#excluding-paths-from-caching

withastro/astro

… implemented

Changes

I've noticed that /_image endpoint doesn't respond nicely (non 404) to HEAD requests. After investigation, I've found that none of server endpoints respond to the HEAD - they respond as 404.

User must explicitly implement export const HEAD to add support for this endpoint or provide export const ALL.

But typically users won't be doing this, since they typically might want just to add some GET handler and thats it. Since HEAD endpoint is useful for various things, for instance, checking if there is a route there but not caring about it's response - this PR adds default HEAD implementation for such cases.

  • In case user would implement it explicitly, their implementation works export const HEAD
  • If there are no export const GET handler - HEAD won't be auto-provided as well
  • If user implemented ALL -> HEAD won't be auto-provided

Testing

  1. TDD: Added test cases, tested before & after
  2. Run examples/ssr/ via npm run dev:
    2.1. fetch('http://localhost:4321/api/products') -> 200 (API endpoint)
    2.2. fetch('http://localhost:4321/api/products', { method: 'HEAD' }) -> before 404, after 200
    2.3. fetch('http://localhost:4321/products/2', { method: 'HEAD' }) -> before 200, after 200 (Page endpoint, not affected)

Docs

Not sure about if docs should be updated.
Personally I'd expect this to work outside the box.

withastro/astro

Changes

  • Adds a basic local provider
  • Updates the main logic to make things work
  • Storage update: unifont has a storage option which is made to work with unstorage (which is already a dependency since sessions were introduced in Astro). Until then, I had a custom storage that matched unstorage API. However, it was too limited (I needed Buffer support for font files) so I switched to a built-in unstorage driver instead of re-inventing the wheel
  • URL proxying: this is not new but I have extracted the logic. The idea is that we get font data from a given provider, and this includes urls to services like google. What we do is we collect those urls, hash them and replace the url in the fonts data with a url we control (/_astro/fonts/${hash}). That allows us to cache things efficiently
  • Local fonts data generation: I followed what Nuxt does here https://github.com/nuxt/fonts/blob/main/src/providers/local.ts#L93-L106

Testing

Manual

Docs

N/A

withastro/astro

Changes

  • Re-export relevant providers from unifont

Testing

Docs

withastro/astro

Changes

  • Renames <Fonts /> to <Font /> to match RFC

Testing

Should still pass

Docs

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence Type Update
@astrojs/compiler (source) ^2.10.3 -> ^2.10.4 age adoption passing confidence dependencies patch
@astrojs/node (source) ^9.0.2 -> ^9.1.0 age adoption passing confidence dependencies minor
@astrojs/solid-js (source) ^5.0.2 -> ^5.0.4 age adoption passing confidence dependencies patch
@astrojs/svelte (source) ^7.0.3 -> ^7.0.4 age adoption passing confidence dependencies patch
@astrojs/vue (source) ^5.0.4 -> ^5.0.6 age adoption passing confidence dependencies patch
@cloudflare/workers-types ^4.20250109.0 -> ^4.20250214.0 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
@netlify/functions ^2.8.0 -> ^2.8.2 age adoption passing confidence dependencies patch
@tailwindcss/vite (source) ^4.0.3 -> ^4.0.6 age adoption passing confidence dependencies patch
@vercel/analytics (source) ^1.4.1 -> ^1.5.0 age adoption passing confidence dependencies minor
@vercel/nft ^0.29.0 -> ^0.29.1 age adoption passing confidence dependencies patch
CodSpeedHQ/action v3.2.0 -> v3.3.1 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.20.1 age adoption passing confidence devDependencies minor
globby ^14.0.2 -> ^14.1.0 age adoption passing confidence devDependencies minor
linkedom ^0.18.7 -> ^0.18.9 age adoption passing confidence devDependencies patch
miniflare (source) ^3.20241230.1 -> ^3.20250204.1 age adoption passing confidence dependencies minor
nanoid ^5.0.9 -> ^5.1.0 age adoption passing confidence dependencies minor
nanostores ^0.11.3 -> ^0.11.4 age adoption passing confidence dependencies patch
postcss (source) ^8.5.1 -> ^8.5.2 age adoption passing confidence dependencies patch
postcss-preset-env (source) ^10.1.3 -> ^10.1.4 age adoption passing confidence devDependencies patch
prettier (source) ^3.4.2 -> ^3.5.1 age adoption passing confidence devDependencies minor
publint (source) ^0.3.2 -> ^0.3.5 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.7 age adoption passing confidence devDependencies patch
rollup (source) ^4.34.2 -> ^4.34.7 age adoption passing confidence devDependencies patch
sass ^1.83.4 -> ^1.85.0 age adoption passing confidence devDependencies minor
sass ^1.83.4 -> ^1.85.0 age adoption passing confidence dependencies minor
svelte (source) ^5.19.7 -> ^5.20.1 age adoption passing confidence devDependencies minor
svelte (source) ^5.17.4 -> ^5.20.1 age adoption passing confidence dependencies minor
svelte (source) ^5.19.7 -> ^5.20.1 age adoption passing confidence dependencies minor
tailwindcss (source) ^4.0.3 -> ^4.0.6 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.2 age adoption passing confidence devDependencies patch
typescript-eslint (source) ^8.23.0 -> ^8.24.0 age adoption passing confidence devDependencies minor
vite (source) ^6.0.11 -> ^6.1.0 age adoption passing confidence devDependencies minor
vite (source) ^6.0.11 -> ^6.1.0 age adoption passing confidence dependencies minor
vite (source) ^6.0.7 -> ^6.1.0 age adoption passing confidence dependencies minor
vite-plugin-vue-devtools (source) ^7.7.1 -> ^7.7.2 age adoption passing confidence dependencies patch
wrangler (source) ^3.101.0 -> ^3.109.1 age adoption passing confidence devDependencies minor
wrangler (source) ^3.101.0 -> ^3.109.1 age adoption passing confidence dependencies minor
zod (source) ^3.24.1 -> ^3.24.2 age adoption passing confidence dependencies patch

Release Notes

withastro/compiler (@​astrojs/compiler)

v2.10.4

Compare Source

Patch Changes
  • 8cae811: Fixes an issue with the conditional rendering of scripts.

    This change updates a v5.0 breaking change when experimental.directRenderScript became the default script handling behavior. If you have already successfully upgraded to Astro v5, you may need to review your script tags again and make sure they still behave as desired after this release. See the v5 Upgrade Guide for more details.

  • 970f085: Fixes an issue when parsing elements inside foreign content (e.g. SVG), when they were inside an expression

  • 6b6a134: Fixes a bug caused by having an extra space in the fragment tag in the TSX output

withastro/astro (@​astrojs/node)

v9.1.0

Compare Source

Minor Changes
  • #​13145 8d4e566 Thanks @​ascorbic! - Automatically configures filesystem storage when experimental session enabled

    If the experimental.session flag is enabled when using the Node adapter, Astro will automatically configure session storage using the filesystem driver. You can still manually configure session storage if you need to use a different driver or want to customize the session storage configuration.

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

v9.0.3

Patch Changes
withastro/astro (@​astrojs/solid-js)

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.4

Compare Source

Patch Changes
withastro/astro (@​astrojs/vue)

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.
cloudflare/workerd (@​cloudflare/workers-types)

v4.20250214.0

Compare Source

markdoc/markdoc (@​markdoc/markdoc)

v0.5.1

Compare Source

What's Changed

Full Changelog: markdoc/markdoc@0.5.0...0.5.1

v0.5.0

Compare Source

What's changed

Full changelog: markdoc/markdoc@0.4.0...0.5.0

netlify/blobs (@​netlify/blobs)

v8.1.1

Compare Source

Bug Fixes
  • add missing eu-central-1, ap-southeast-1 and ap-southeast-2 regions (#​214) (0ca340f)
tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.0.6

Compare Source

Fixed
  • Revert change to no longer include theme variables that aren't used in compiled CSS (#​16403)
Fixed
  • Upgrade: Don't migrate blur to blur-sm when used with Next.js <Image placeholder="blur" /> (#​16405)

v4.0.5

Compare Source

Added
  • Add @theme static option for always including theme variables in compiled CSS (#​16211)
Fixed
  • Remove rogue console.log from @tailwindcss/vite (#​16307)
Changed
  • Don't include theme variables that aren't used in compiled CSS (#​16211)

v4.0.4

Compare Source

Fixed
  • Fix a crash when setting JS theme values to null (#​16210)
  • Ensure escaped underscores in CSS variables in arbitrary values are properly unescaped (#​16206)
  • Ensure that the containers JS theme key is added to the --container-* namespace (#​16169)
  • Ensure theme @keyframes are generated even if an --animation-* variable spans multiple lines (#​16237)
  • Vite: Skip parsing stylesheets with the ?commonjs-proxy flag (#​16238)
  • Fix order-first and order-last for Firefox (#​16266)
  • Fix support for older instruction sets on Linux x64 builds of the standalone CLI (#​16244)
  • Ensure NODE_PATH is respected when resolving JavaScript and CSS files (#​16274)
  • Ensure Node addons are packaged correctly with FreeBSD builds (#​16277)
  • Fix an issue where @variant inside a referenced stylesheet could cause a stack overflow (#​16300)
vercel/analytics (@​vercel/analytics)

v1.5.0

Compare Source

What's Changed

Full Changelog: vercel/analytics@1.4.1...1.5.0

CodSpeedHQ/action (CodSpeedHQ/action)

v3.3.1

Compare Source

What's Changed

🚀 Features
🐛 Bug Fixes

Full Runner Changelog: https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md

v3.3.0

Compare Source

What's Changed

🚀 Features
🐛 Bug Fixes
⚙️ Internals
  • Bump valgrind-codspeed version to 3.24.0-0codspeed1 and change supported systems by @​art049

Full Runner Changelog: https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md

vercel/async-listen (async-listen)

v3.1.0

Compare Source

Features
eslint/eslint (eslint)

v9.20.1

Compare Source

v9.20.0

Compare Source

sindresorhus/globby (globby)

v14.1.0

Compare Source

  • Export isIgnoredByIgnoreFiles and isIgnoredByIgnoreFilesSync functions (#​269) cba8941

WebReflection/linkedom (linkedom)

v0.18.9

Compare Source

v0.18.8

Compare Source

cloudflare/workers-sdk (miniflare)

v3.20250204.1

Compare Source

Patch Changes

v3.20250204.0

Compare Source

Patch Changes
  • #​8032 c80dbd8 Thanks @​dependabot! - chore: update dependencies of "miniflare" package

    The following dependency versions have been updated:

    Dependency From To
    workerd 1.20250129.0 1.20250204.0
    @​cloudflare/workers-types ^4.20250129.0 ^4.20250204.0
  • #​7290 0c0374c Thanks @​emily-shen! - fix: add support for workers with assets when running multiple workers in one wrangler dev instance

    https://github.com/cloudflare/workers-sdk/pull/7251 added support for running multiple Workers in one wrangler dev/miniflare session. e.g. wrangler dev -c wrangler.toml -c ../worker2/wrangler.toml, which among other things, allowed cross-service RPC to Durable Objects.

    However this did not work in the same way as production when there was a Worker with assets - this PR should fix that.

ai/nanoid (nanoid)

v5.1.0

Compare Source

nanostores/nanostores (nanostores)

v0.11.4

Compare Source

postcss/postcss (postcss)

v8.5.2

Compare Source

csstools/postcss-plugins (postcss-preset-env)

v10.1.4

Compare Source

February 12, 2025

prettier/prettier (prettier)

v3.5.1

Compare Source

diff

Fix CLI crash when cache for old version exists (#​17100 by @​sosukesuzuki)

Prettier 3.5 uses a different cache format than previous versions, Prettier 3.5.0 crashes when reading existing cache file, Prettier 3.5.1 fixed the problem.

Support dockercompose and github-actions-workflow in VSCode (#​17101 by @​remcohaszing)

Prettier now supports the dockercompose and github-actions-workflow languages in Visual Studio Code.

v3.5.0

Compare Source

diff

🔗 Release Notes

publint/publint (publint)

v0.3.5

Compare Source

Patch Changes
  • Check the "bin" field if the referenced file exists, has the correct JS format, and can be executed (#​150)

  • Deprecate the deps command. The command has been tricky to maintain and incomplete (e.g. doesn't lint recursively). A separate tool can be used to run publint on dependencies instead, e.g. npx renoma --filter-rules "publint". (#​149)

v0.3.4

[Compare Source](https://redirect.github.com/publint/publint/compare/publint@0.3.3...pub


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 onerror=redirect to Cloudflare image transform params. This will allow images to continue to work after hitting Cloudflare's free limit. (docs)

I am not positive how this impacts sites that don't have the image service set up at all, since it might then load the original image as opposed to just erroring and loading nothing as it does now. If it still applies when the image service is disabled entirely, and shows the underlying image, it could cause some confusion with users not realizing the service isn't turned on.

Testing

None. It's a hardcoded value, and I more want to introduce the idea to see if this should be a configurable value, or just always applied.

Docs

This might be worth mentioning in the docs. I can make a PR to those once this is decided on.

Should this be a configurable? Currently there aren't configurations to the options, though maybe it could work with the Image to offer it if that is the preferred out.

withastro/astro

Changes

Closes #11454

  • Improves SSR performance for rendering synchronous components by avoiding the use of Promise.
image

Testing

  • Added unit tests to ~/packages/astro/test/units/render/rendering.test.js
  • Integrated into own project to validate performance and ensure correctness

Docs

No docs were added as this is specifically performance related refactoring.

withastro/astro

This PR implements the changes previously proposed in withastro/adapters#515, migrated to work within this repository's structure. The core functionality remains the same, with adjustments made to align with this repository.

Changes

When trying Netlify SSR with Astro, I wasn't able to get the included_files option to work. After investigating, I realized that the includeFiles and excludeFiles functionalities, similar to what Vercel provides, were necessary to include additional files during the build process.

In this PR, I have implemented the integration to add these options:

  • Added includeFiles and excludeFiles options to the integration, mirroring Vercel's functionality.
    • includeFiles: Allows users to explicitly specify files or directories to be bundled with their function. Useful for avoiding missing files in production.
    • excludeFiles: Enables users to specify files or directories to be excluded from the deployment. Helps minimize bundle size.
  • All code for these features has been adapted directly from Vercel's integration for consistency and reliability.

Testing

  • Manually tested includeFiles and excludeFiles with various configurations to ensure:
    • Files specified in includeFiles are bundled correctly.
    • Files and directories specified in excludeFiles are omitted as expected.
  • Automated tests added to validate edge cases and typical usage scenarios.
  • Confirmed the implementation behaves identically to Vercel's integration.

Docs

  • Updated astro docs with documentation for includeFiles and excludeFiles on netlify adapter.
  • Added links to Vercel's documentation for further reference:
withastro/astro

Changes

  • Astro 5 made changes to the image endpoint config
  • This PR makes those structure changes in the node adapter
  • For whatever reason, the old state of the config only created issues when built and executed in a docker container

Fixes #13183

Testing

  • Tested locally (with some difficulty) by heavily modifying the SSR example and running it locally in a docker container

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.2.6

Patch Changes

@astrojs/node@9.0.3

Patch Changes

  • #13223 23094a1 Thanks @ascorbic! - Fixes a bug that caused incorrect redirects for static files with numbers in the file extension

@astrojs/vercel@8.0.7

Patch Changes

withastro/astro

Changes

Fixes a typo inside the error message

Testing

CI should stay green

Docs

N/A

withastro/astro

Changes

This PR moves the cloudflare adapter in the monorepo.

There was a test failing, which I updated. I left a TODO in cases we need to fix it.

Testing

CI should pass.

Docs

Will create a PR

withastro/astro

Changes

This aims to add Route Groups, as known from Next.js and requested here: withastro/roadmap#480

Folder names in (parenthesis) should be excluded from the route structure, but their content should not be.

This can especially be helpful with boilerplates to encapsulate some of the logic.

Testing

Some tests should be added for sure. I had a quick look at packages/astro/test/route-manifest.test.js but they are all commented out.

I did some quick manual testing to check that it works as expected, however can't rule out that there have been major oversights since I didn't dig trough the whole codebase.

Docs

Docs should be added for this, probably a small passage in https://docs.astro.build/en/guides/routing/
As this this should not clash with any existing route logic, this could hopefully be kept rather short

withastro/astro

Changes

Automatically configures session storage with the Node and Netlify adapters. If theexperimental.session flag is enabled, the Node adapter will configure fs session storage and Netlify will configure netlify-blobs session storage.

This also changes the experimental.session option to a boolean flag and moves session config to a top-level value. This change is to allow the new automatic session driver support. You now need to separately enable the experimental.session flag, and then configure the session driver using the top-level session key if providing manual configuration.

defineConfig({
  // ...
  experimental: {
-    session: {
-      driver: 'upstash',
-    },
+    session: true,
  },
+  session: {
+    driver: 'upstash',
+  }, 
});

You no longer need to configure a session driver if you are using an adapter that supports automatic session driver configuration and wish to use its default settings.

defineConfig({
  adapter: node({
    mode: "standalone",
  }),
  experimental: {
-    session: {
-      driver: 'fs',
-      cookie: 'astro-cookie',
-    },
+    session: true,
  },
+  session: {
+    cookie: 'astro-cookie',
+  }, 
});

However, you can still manually configure additional driver options or choose a non-default driver to use with your adapter with the new top-level session config option. For more information, see the experimental session docs.

Testing

Added test cases for the Node and Netlify adapters. The Netlify tests use the local mock blobs server.

Docs

Updated the docs for the config options. This adds several new error types, so I have moved session errors into their own section. I will do a separate PR to the docs repo to update the experimental feature page.

withastro/astro

Changes

I added the isRedirect field to the Render context. This can help users avoid running middleware on routes that might just be a redirect.

For example, the Arcjet integration fails if run on a redirect because isPrerendered is false, but clientAddress throws if accessed; however, it would be generally recommended not to run Arcjet on a redirect because it'll run on the final endpoint. With this change, we can recommend users skip Arcjet when isRedirect is true.

Testing

I added a test to the redirects fixture that checks a header that is set by the middleware.

Docs

Yep! I'll add this to the Astro docs for Render context if this is something y'all want to include. 🎉

/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-docsearch@0.6.0

Minor Changes

  • #2578 f895f75 and #2390 f493361 Thanks @HiDeoo and @delucis!
    ⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.32.0

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

    npx @astrojs/upgrade

@astrojs/starlight@0.32.0

Minor Changes

  • #2390 f493361 Thanks @delucis! - Moves route data to Astro.locals instead of passing it down via component props

    ⚠️ BREAKING CHANGE:
    Previously, all of Starlight’s templating components, including user or plugin overrides, had access to a data object for the current route via Astro.props.
    This data is now available as Astro.locals.starlightRoute instead.

    To update, refactor any component overrides you have:

    • Remove imports of @astrojs/starlight/props, which is now deprecated.
    • Update code that accesses Astro.props to use Astro.locals.starlightRoute instead.
    • Remove any spreading of {...Astro.props} into child components, which is no longer required.

    In the following example, a custom override for Starlight’s LastUpdated component is updated for the new style:

    ---
    import Default from '@astrojs/starlight/components/LastUpdated.astro';
    - import type { Props } from '@astrojs/starlight/props';
    
    - const { lastUpdated } = Astro.props;
    + const { lastUpdated } = Astro.locals.starlightRoute;
    
    const updatedThisYear = lastUpdated?.getFullYear() === new Date().getFullYear();
    ---
    
    {updatedThisYear && (
    -   <Default {...Astro.props}><slot /></Default>
    +   <Default><slot /></Default>
    )}

    Community Starlight plugins may also need to be manually updated to work with Starlight 0.32. If you encounter any issues, please reach out to the plugin author to see if it is a known issue or if an updated version is being worked on.

  • #2578 f895f75 Thanks @HiDeoo! - Deprecates the Starlight plugin setup hook in favor of the new config:setup hook which provides the same functionality.

    ⚠️ BREAKING CHANGE:

    The Starlight plugin setup hook is now deprecated and will be removed in a future release. Please update your plugins to use the new config:setup hook instead.

    export default {
      name: 'plugin-with-translations',
      hooks: {
    -   'setup'({ config }) {
    +   'config:setup'({ config }) {
          // Your plugin configuration setup code
        },
      },
    };
  • #2578 f895f75 Thanks @HiDeoo! - Exposes the built-in localization system in the Starlight plugin config:setup hook.

    ⚠️ BREAKING CHANGE:

    This addition changes how Starlight plugins add or update translation strings used in Starlight’s localization APIs.
    Plugins previously using the injectTranslations() callback function from the plugin config:setup hook should now use the same function available in the i18n:setup hook.

    export default {
      name: 'plugin-with-translations',
      hooks: {
    -   'config:setup'({ injectTranslations }) {
    +   'i18n:setup'({ injectTranslations }) {
          injectTranslations({
            en: {
              'myPlugin.doThing': 'Do the thing',
            },
            fr: {
              'myPlugin.doThing': 'Faire le truc',
            },
          });
        },
      },
    };
  • #2858 2df9d05 Thanks @XREvo! - Adds support for Pagefind’s multisite search features

  • #2578 f895f75 Thanks @HiDeoo! - Adds a new HookParameters utility type to get the type of a plugin hook’s arguments.

  • #2578 f895f75 Thanks @HiDeoo! - Adds a new useTranslations() callback function to the Starlight plugin config:setup hook to generate a utility function to access UI strings for a given language.

  • #2578 f895f75 Thanks @HiDeoo! - Adds a new absolutePathToLang() callback function to the Starlight plugin config:setup to get the language for a given absolute file path.

Patch Changes

withastro/starlight

Description

  • Closes #2856
  • It add more configuration option to pagefind, by allowing mergeIndex
  • No visual changes had been made with this update.

This had been tested locally with 2 instances :

  • one on port 3000 and the other on port 3001
  • with this configuration
export default defineConfig({
	... ,
	integrations: [
		starlight({
			...,
			pagefind: {
				indexWeight: 2.0,
				mergeIndex: [{
					bundlePath: 'http://localhost:3001/pagefind/',
					indexWeight: 0.5,
				}]
			},
		}),
	],
});
  • and network panel show that both sites where queried for search
    image

What's next

  • Completing the doc to let users known that they can use it (i'll do it in the the next days)
withastro/starlight

Description

  • Updates Vitest from 3.0.1 to 3.0.5
  • Motivated by GHSA-9crc-q9x8-hgqq
  • The vulnerability doesn’t really impact us, but still thought we should update if possible
lin-stephanie/astro-antfustyle-theme

Description

This PR introduces Typst as an underlying math rendering engine. Typst is a modern and lightweight (syntactically) alternative to LaTeX. Supporting Typst will benefit those who are comfortable working with Typst instead of LaTeX.

Render math equations with Katex:

Rendering Math Equations Using Katex

Render math equations with Typst:

Rendering Math Equations Using Typst

Katex rendering engine and Typst rendering engine are not coexistent. Users need to choose their preferred engine in the config.

DISCLAIMER: I am a JS / TS newbie, please feel free to point out if I have done anything wrong, or even modify it directly :)

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.2.5

Patch Changes

  • #13133 e76aa83 Thanks @ematipico! - Fixes a bug where Astro was failing to build an external redirect when the middleware was triggered

  • #13119 ac43580 Thanks @Hacksore! - Adds extra guidance in the terminal when using the astro add tailwind CLI command

    Now, users are given a friendly reminder to import the stylesheet containing their Tailwind classes into any pages where they want to use Tailwind. Commonly, this is a shared layout component so that Tailwind styling can be used on multiple pages.

withastro/astro

Changes

Closes #13120

The fix is inside RenderContext, and now check if the route that we are about to render is an external redirect. If it is, we skip the whole middleware chain, and render the redirect straight away.

I checked with Matt and Florian, and they agree with the proposed solution.

Testing

I added a new test and fixture based on the reproduction provided.

Docs

N/A

withastro/astro

Changes

#13111 removed special handling for endpoint trailing slashes, because they broke trailignSlash=always. However this caused a regression for endpoints that include a file extension. This PR changes the handling for endpoints that include a file extension, to always use trailingSlash: "ignore". This means it will match with and without the extension. I've done it liek this rather than setting to never, because that would be a breakign change. Currently file-based endpoints do obey trailing slash rules, even with file extensions. This is probably a mistake (who wants /sitemap.xml/), but some may rely on it so we'll move any change to Astro 6.

Fixes #13128

Testing

Adds tests

Docs

withastro/astro

Changes

Multiple trailing slashes are supposed to be collapsed before applying trailing slash rules. However a regex mistake meant that it was also matching duplicate slashes that weren't trailing. This would have been a minor problem, except that in dev is was incorrectly matching against the full URL including query params, not just the path. This meant that duplicate slashes were collapsed in query params too, which is a problem when you might have https://.

This PR fixes both issues: corrects the traailing slash helper to only match trailing slashes, and ensures that the dev matching is applied to the pathname without query params

Testing

Adds a lot of tests for both dev and SSR to cover these.

Fixes #13127

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.2.4

Patch Changes

  • #13130 b71bd10 Thanks @ascorbic! - Fixes a bug that caused duplicate slashes inside query params to be collapsed

  • #13131 d60c742 Thanks @ascorbic! - Ignores trailing slashes for endpoints with file extensions in the route

  • Updated dependencies [b71bd10]:

    • @astrojs/internal-helpers@0.5.1

@astrojs/markdoc@0.12.9

Patch Changes

  • Updated dependencies [b71bd10]:
    • @astrojs/internal-helpers@0.5.1

@astrojs/preact@4.0.4

Patch Changes

@astrojs/internal-helpers@0.5.1

Patch Changes

  • #13130 b71bd10 Thanks @ascorbic! - Fixes a bug that meant that internal as well as trailing duplicate slashes were collapsed
withastro/astro

Changes

This PR fixes a typo in the JSDoc: WrakMap should be WeakMap

Testing

N/A

Docs

N/A

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
tailwindcss (source) ^3.4.17 -> ^4.0.3 age adoption passing confidence

Release Notes

tailwindlabs/tailwindcss (tailwindcss)

v4.0.3

Compare Source

Fixed
  • Fix incorrect removal of @import url(); (#​16144)

v4.0.2

Compare Source

Fixed
  • Only generate positive grid-cols-* and grid-rows-* utilities (#​16020)
  • Ensure escaped theme variables are handled correctly (#​16064)
  • Ensure we process Tailwind CSS features when only using @reference or @variant (#​16057)
  • Refactor gradient implementation to work around prettier/prettier#17058 (#​16072)
  • Vite: Ensure hot-reloading works with SolidStart setups (#​16052)
  • Vite: Fix a crash when starting the development server in SolidStart setups (#​16052)
  • Vite: Don't rebase URLs that appear to be aliases (#​16078)
  • Vite: Transform <style> blocks in HTML files (#​16069)
  • Prevent camel-casing CSS custom properties added by JavaScript plugins (#​16103)
  • Do not emit @keyframes in @theme reference (#​16120)
  • Discard invalid declarations when parsing CSS (#​16093)
  • Do not emit empty CSS rules and at-rules (#​16121)
  • Handle @variant when at the top-level of a stylesheet (#​16129)

v4.0.1

Compare Source

Added
  • Include :open pseudo-class in existing open variant (#​15349)
Fixed
  • Remove invalid min-w/h-none utilities (#​15845)
  • Discard CSS variable shorthand utilities that don't use valid CSS variables (#​15738)
  • Ensure font-size utilities with none modifier have a line-height set e.g. text-sm/none (#​15921)
  • Ensure font-size utilities with unknown modifier don't generate CSS (#​15921)
  • Don’t suggest font weight utilities more than once (#​15857)
  • Suggest container query variants (#​15857)
  • Disable bare value suggestions when not using the --spacing variable (#​15857)
  • Ensure suggested classes are properly sorted (#​15857)
  • Don’t look at .gitignore files outside initialized repos (#​15941)
  • Find utilities when using the Svelte class shorthand syntax across multiple lines (#​15974)
  • Find utilities when using the Angular class shorthand syntax (#​15974)
  • Find utilities when using functions inside arrays (#​15974)
  • Ensure that @tailwindcss/browser does not pollute the global namespace (#​15978)
  • Ensure that tailwind-merge is not scanned when using the Vite plugin (#​16005)
  • Ensure CSS theme variables are available within shadow roots (#​15975)
  • Fix crash when project lives in the / directory (#​15988)
  • Ensure custom variants have a non-empty selector list (#​16009)
  • Upgrade: Ensure JavaScript config files on different drives are correctly migrated (#​15927)
  • Upgrade: Migrate leading-[1] to leading-none (#​16004)
  • Upgrade: Do not migrate arbitrary leading utilities to bare values (#​16004)

v4.0.0

Compare Source

Added

Start using Tailwind CSS v4.0 today by installing it in a new project, or playing with it directly in the browser on Tailwind Play.

For existing projects, we've published a comprehensive upgrade guide and built an automated upgrade tool to get you on the latest version as quickly and painlessly as possible.

For a deep-dive into everything that's new, check out the announcement post.


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 these updates 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
@playwright/test (source) 1.50.0 -> 1.50.1 age adoption passing confidence
@playwright/test (source) ^1.50.0 -> ^1.50.1 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.1 -> ^4.0.3 age adoption passing confidence
@types/html-escaper (source) 3.0.2 -> 3.0.4 age adoption passing confidence
preferred-pm (source) ^4.1.0 -> ^4.1.1 age adoption passing confidence
rollup (source) ^4.32.1 -> ^4.34.2 age adoption passing confidence
semver ^7.7.0 -> ^7.7.1 age adoption passing confidence
svelte (source) ^5.19.6 -> ^5.19.7 age adoption passing confidence
tailwindcss (source) ^4.0.1 -> ^4.0.3 age adoption passing confidence
turbo (source) ^2.3.4 -> ^2.4.0 age adoption passing confidence
typescript-eslint (source) ^8.22.0 -> ^8.23.0 age adoption passing confidence
vite-plugin-solid ^2.11.0 -> ^2.11.1 age adoption passing confidence
vitest (source) ^3.0.4 -> ^3.0.5 age adoption passing confidence
which-pm (source) ^3.0.0 -> ^3.0.1 age adoption passing confidence

Release Notes

microsoft/playwright (@​playwright/test)

v1.50.1

Compare Source

tailwindlabs/tailwindcss (@​tailwindcss/vite)

v4.0.3

Compare Source

Fixed
  • Fix incorrect removal of @import url(); (#​16144)

v4.0.2

Compare Source

Fixed
  • Only generate positive grid-cols-* and grid-rows-* utilities (#​16020)
  • Ensure escaped theme variables are handled correctly (#​16064)
  • Ensure we process Tailwind CSS features when only using @reference or @variant (#​16057)
  • Refactor gradient implementation to work around prettier/prettier#17058 (#​16072)
  • Vite: Ensure hot-reloading works with SolidStart setups (#​16052)
  • Vite: Fix a crash when starting the development server in SolidStart setups (#​16052)
  • Vite: Don't rebase URLs that appear to be aliases (#​16078)
  • Vite: Transform <style> blocks in HTML files (#​16069)
  • Prevent camel-casing CSS custom properties added by JavaScript plugins (#​16103)
  • Do not emit @keyframes in @theme reference (#​16120)
  • Discard invalid declarations when parsing CSS (#​16093)
  • Do not emit empty CSS rules and at-rules (#​16121)
  • Handle @variant when at the top-level of a stylesheet (#​16129)
rollup/rollup (rollup)

v4.34.2

Compare Source

2025-02-04

Bug Fixes
  • Fix an issue where not all usages of a function were properly detected (#​5827)
Pull Requests

v4.34.1

Compare Source

2025-02-03

Bug Fixes
  • Ensure throwing objects includes the entire object (#​5825)
Pull Requests

v4.34.0

Compare Source

2025-02-01

Features
  • Tree-shake unused properties in object literals (re-implements #​5420) (#​5737)
Pull Requests

v4.33.0

Compare Source

2025-02-01

Features
  • Correctly detect literal value of more negated expressions (#​5812)
Bug Fixes
  • Use the correct with/assert attribute key in dynamic imports (#​5818)
  • Fix an issue where logical expressions were considered to have the wrong value (#​5819)
Pull Requests
npm/node-semver (semver)

v7.7.1

Compare Source

Bug Fixes
sveltejs/svelte (svelte)

v5.19.7

Compare Source

Patch Changes
  • chore: remove unused code from signal logic (#​15195)

  • fix: encounter svelte:element in blocks as sibling during pruning css (#​15165)

vercel/turborepo (turbo)

v2.4.0: Turborepo v2.4.0

Compare Source

What's Changed

Docs
@​turbo/repository
Examples
Changelog

New Contributors

Full Changelog: vercel/turborepo@v2.3.4...v2.4.0

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

v8.23.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.

solidjs/vite-plugin-solid (vite-plugin-solid)

v2.11.1

Patch Changes
  • c5ddd03: Fix vite6 environment detection
vitest-dev/vitest (vitest)

v3.0.5

Compare Source

🚀 Features
🐞 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/starlight

Description

withastro/astro

Changes

Making it more clear that a user action is required after onboarding to tailwind v4.

twitter thread: https://x.com/Hacksore/status/1885490439437857143

Testing

built locally and ran node astro.js add tailwind in the packages/astro dir.
image

Docs

N/A

withastro/starlight

Description

This PR fixes a few UI issues related to the Pagefind UI.

Note that I'm not super happy with the changesets, I think I didn't manage to get the right balance between what is changed and the level of detail in the changeset, maybe even 1 changeset could be enough? Happy to iterate on this based on feedback.

Unknown CSS variable

This issue was the first one reported in #2840. This PR removes the unknown CSS variable (--pagefind-ui-primary) and now uses the desired one (--sl-color-text) which was already the color used when the browser was falling back to the default color when the variable was not defined.

The --pagefind-ui-primary variable is used in 2 places in Pagefind, the first one being the "Load more results" button:

Dark Theme Light Theme
Before SCR-20250131-jxqm SCR-20250131-jxti
After SCR-20250131-nlol SCR-20250131-nlpp

The second place is the checkbox background color when using filters where some extra CSS was added to fix the tick color:

Dark Theme Light Theme
Before SCR-20250131-nqvc SCR-20250131-nqwc
After SCR-20250131-nrhn SCR-20250131-nrip

Ultimately, some changes could be made upstream to avoid this issue and rely on accent colors for the checkbox and should be beneficial for all Pagefind users as it's also an issue with a default Pagefind setup.

Metadata

When using the Pagefind metadata feature, the UI was broken. I tried to use the same UI as inline code at the moment for the tags.

Dark Theme Light Theme
Before SCR-20250131-ohaq SCR-20250131-ohbk
After SCR-20250131-oogb SCR-20250131-oohr

This PR improves the UI but as usual when it comes to UI, that's not my strong suit so happy to iterate on this based on feedback/suggestions.

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.2.3

Patch Changes

  • #13113 3a26e45 Thanks @unprintable123! - Fixes the bug that rewrite will pass encoded url to the dynamic routing and cause params mismatch.

  • #13111 23978dd Thanks @ascorbic! - Fixes a bug that caused injected endpoint routes to return not found when trailingSlash was set to always

  • #13112 0fa5c82 Thanks @ematipico! - Fixes a bug where the i18n middleware was blocking a server island request when the prefixDefaultLocale option is set to true

withastro/astro

Changes

rewrite will first decode pathname before passing it to dynamic routing.

Fixes #13098

Testing

Add test cases for dynamic routing. Only static mode rewrite is tested.

Docs

withastro/astro

Changes

Back in the day, endpoints were special-cased to ignore trailing slash rules and always have it set to ignore. This turned out to break things, so it was removed for file-based endpoint routes in #9597. However injected endpoints were left out of that fix, meaning there was still the bug for them.

Fixes #13105

Testing

Added tests

Docs

withastro/astro

Adds customization for the default ~partytown copy file folder in @astrojs/partytown during the astro:build:done hook.

Changes

  • Adds support for overriding copyLibFiles.dest in the astro:build:done hook using the lib option in astro.config.*.
  • If lib is not specified, it defaults to ~partytown.
  • Removes the leading "/" from the lib value to match the behavior of fileURLToPath.

Testing

If no tests added, explain why.

I didn't add tests because I'm still figuring out how testing works. But I tested it locally by running astro build, and the copy file from Partytown is being copied correctly. The logic seems to work well.

Docs

/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.2.2

Patch Changes

  • #13106 187c4d3 Thanks @ascorbic! - Fixes a bug that caused peer dependency errors when running astro add tailwind
withastro/astro

Changes

Special-cases tailwind to ensure it doesn't install the integration package, which is deprecated. Previously it was always installing the integration package, even though it was also always added to the dependencies list. This changes it to only install the listed deps. It also adds an integrationName field, because in logs it was confusing having it log @astrojs/tailwind when that package wasn't actually installed.

Fixes #13097

Testing

There are currently no tests for atro add. It's a tough one to test without some kind of mocking for the package manager, so I'll leave it for now, beacuse this bug is affecting lots of users.

Docs

withastro/astro

Changes

Fixes #13079
Fixes #13104
Fixes #13103

Also ensure that HTTP method CONNECT gets origin checked as well (it was previously wrongly omitted because only POST, PUT, PATCH, DELETE were previously checked).

Inspired by @joshmkennedy's PR #13100

Testing

Add test for HEAD getting correct HTTP response 200 (this would have failed prior to his prior)

Docs

Pure bug fix, no docs changes necessary

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.2.1

Patch Changes

  • #13095 740eb60 Thanks @ascorbic! - Fixes a bug that caused some dev server asset requests to return 404 when trailingSlash was set to "always"
withastro/astro

Changes

Skips internal Vite requests when checking trailing slashes

Fixes #13094

Testing

Adding tests now

Docs

withastro/astro

Changes

  • Closes PLT-2756
  • Adds a basic Fonts component
  • Adds the virtual module and most of the "core features"
    • resolving providers
    • resolving fonts data
    • caching
    • dev/build handling
  • Updates the config

Testing

Manual + automated

Docs

N/A

withastro/starlight

These were 404s for me

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/tailwind@6.0.0

Major Changes

  • #13049 2ed4bd9 Thanks @florian-lefebvre! - Deprecates the integration

    Tailwind CSS now offers a Vite plugin which is the preferred way to use Tailwind 4 in Astro. Please uninstall @astrojs/tailwind and follow the Tailwind documentation for manual installation.

    This updated major version is only provided as a convenience for existing projects until they are able to migrate to the new plugin. It offers no additional functionality and is no longer recommended, but may continue to be used in your projects until it is removed entirely.

astro@5.2.0

Minor Changes

  • #12994 5361755 Thanks @ascorbic! - Redirects trailing slashes for on-demand pages

    When the trailingSlash option is set to always or never, on-demand rendered pages will now redirect to the correct URL when the trailing slash doesn't match the configuration option. This was previously the case for static pages, but now works for on-demand pages as well.

    Now, it doesn't matter whether your visitor navigates to /about/, /about, or even /about///. In production, they'll always end up on the correct page. For GET requests, the redirect will be a 301 (permanent) redirect, and for all other request methods, it will be a 308 (permanent, and preserve the request method) redirect.

    In development, you'll see a helpful 404 page to alert you of a trailing slash mismatch so you can troubleshoot routes.

  • #12979 e621712 Thanks @ematipico! - Adds support for redirecting to external sites with the redirects configuration option.

    Now, you can redirect routes either internally to another path or externally by providing a URL beginning with http or https:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      redirects: {
        '/blog': 'https://example.com/blog',
        '/news': {
          status: 302,
          destination: 'https://example.com/news',
        },
      },
    });
  • #13084 0f3be31 Thanks @ematipico! - Adds a new experimental virtual module astro:config that exposes a type-safe subset of your astro.config.mjs configuration

    The virtual module exposes two sub-paths for 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/dir paths.

    To enable this new virtual module, add the experimental.serializeManifest feature flag to your Astro config:

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

    Then, you can access the module in any file inside your project to import and use 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;
      }
    }

    For a complete overview, and to give feedback on this experimental API, see the Serialized Manifest RFC.

Patch Changes

  • #13049 2ed4bd9 Thanks @florian-lefebvre! - Updates astro add tailwind to add the @tailwindcss/vite plugin instead of the @astrojs/tailwind integration

  • #12994 5361755 Thanks @ascorbic! - Returns a more helpful 404 page in dev if there is a trailing slash mismatch between the route requested and the trailingSlash configuration

  • #12666 037495d Thanks @Thodor12! - Added additional generated typings for the content layer

  • Updated dependencies [5361755, db252e0]:

    • @astrojs/internal-helpers@0.5.0
    • @astrojs/markdown-remark@6.1.0

@astrojs/internal-helpers@0.5.0

Minor Changes

@astrojs/markdown-remark@6.1.0

Minor Changes

  • #12850 db252e0 Thanks @colinbate! - Adds support for TOML frontmatter in .md and .mdx files

    Astro 5.2 automatically identifies the format of your Markdown and MDX frontmatter based on the delimiter used. With +++ as a delimiter (instead of the --- YAML code fence), your frontmatter will automatically be recognized and parsed as TOML.

    This is useful for adding existing content files with TOML frontmatter to your project from another framework such as Hugo.

    TOML frontmatter can also be used with content collections, and files with different frontmatter languages can live together in the same project.

    No configuration is required to use TOML frontmatter in your content files. Your delimiter will indicate your chosen frontmatter language:

    +++
    date = 2025-01-30
    title = 'Use TOML frontmatter in Astro!'
    [author]
    name = 'Colin Bate'
    +++
    
    # Support for TOML frontmatter is here!

@astrojs/markdoc@0.12.8

Patch Changes

  • Updated dependencies [5361755, db252e0]:
    • @astrojs/internal-helpers@0.5.0
    • @astrojs/markdown-remark@6.1.0

@astrojs/mdx@4.0.8

Patch Changes

  • Updated dependencies [db252e0]:
    • @astrojs/markdown-remark@6.1.0
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/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-docsearch@0.5.0

Minor Changes

  • #2822 e56586a Thanks @KianNH! - Adds a new clientOptionsModule plugin option to support configuring unserializable DocSearch options such as resultsFooterComponent().

    See “DocSearch configuration” in the Starlight docs for more details.

withastro/astro

Changes

This PR merges the first implementation of withastro/roadmap#1106

Testing

CI should pass

Docs

/cc @withastro/maintainers-docs for feedback!

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@astrojs/node (source) ^9.0.1 -> ^9.0.2 age adoption passing confidence
@changesets/cli (source) ^2.27.11 -> ^2.27.12 age adoption passing confidence
@playwright/test (source) 1.49.1 -> 1.50.0 age adoption passing confidence
@playwright/test (source) ^1.49.1 -> ^1.50.0 age adoption passing confidence
@tailwindcss/vite (source) ^4.0.0 -> ^4.0.1 age adoption passing confidence
@types/html-escaper (source) ^3.0.2 -> ^3.0.3 age adoption passing confidence
eslint (source) ^9.18.0 -> ^9.19.0 age adoption passing confidence
fs-fixture ^2.6.0 -> ^2.7.0 age adoption passing confidence
linkedom ^0.18.6 -> ^0.18.7 age adoption passing confidence
open-props ^1.7.10 -> ^1.7.12 age adoption passing confidence
p-queue ^8.0.1 -> ^8.1.0 age adoption passing confidence
preferred-pm (source) ^4.0.0 -> ^4.1.0 age adoption passing confidence
rollup (source) ^4.31.0 -> ^4.32.1 age adoption passing confidence
semver ^7.6.3 -> ^7.7.0 age adoption passing confidence
shiki (source) ^1.29.1 -> ^1.29.2 age adoption passing confidence
svelte (source) ^5.19.0 -> ^5.19.6 age adoption passing confidence
tailwindcss (source) ^4.0.0 -> ^4.0.1 age adoption passing confidence
turbo (source) ^2.3.3 -> ^2.3.4 age adoption passing confidence
typescript-eslint (source) ^8.20.0 -> ^8.22.0 age adoption passing confidence
undici (source) ^7.2.3 -> ^7.3.0 age adoption passing confidence
vite-plugin-vue-devtools (source) ^7.7.0 -> ^7.7.1 age adoption passing confidence
vitest (source) ^3.0.2 -> ^3.0.4 age adoption passing confidence
yocto-spinner ^0.1.2 -> ^0.2.0 age adoption passing confidence

Release Notes

withastro/adapters (@​astrojs/node)

v9.0.2

Compare Source

Patch Changes
changesets/changesets (@​changesets/cli)

v2.27.12

Compare Source

Patch Changes
microsoft/playwright (@​playwright/test)

v1.50.0

Compare Source

Test runner

  • New option timeout allows specifying a maximum run time for an individual test step. A timed-out step will fail the execution of the test.

    test('some test', async ({ page }) => {
      await test.step('a step', async () => {
        // This step can time out separately from the test
      }, { timeout: 1000 });
    });
  • New method test.step.skip() to disable execution of a test step.

    test('some test', async ({ page }) => {
      await test.step('before running step', async () => {
        // Normal step
      });
    
      await test.step.skip('not yet ready', async () => {
        // This step is skipped
      });
    
      await test.step('after running step', async () => {
        // This step still runs even though the previous one was skipped
      });
    });
  • Expanded expect(locator).toMatchAriaSnapshot() to allow storing of aria snapshots in separate YAML files.

  • Added method expect(locator).toHaveAccessibleErrorMessage() to assert the Locator points to an element with a given aria errormessage.

  • Option testConfig.updateSnapshots added the configuration enum changed. changed updates only the snapshots that have changed, whereas all now updates all snapshots, regardless of whether there are any differences.

  • New option testConfig.updateSourceMethod defines the way source code is updated when testConfig.updateSnapshots is configured. Added overwrite and 3-way modes that write the changes into source code, on top of existing patch mode that creates a patch file.

    npx playwright test --update-snapshots=changed --update-source-method=3way
  • Option testConfig.webServer added a gracefulShutdown field for specifying a process kill signal other than the default SIGKILL.

  • Exposed testStep.attachments from the reporter API to allow retrieval of all attachments created by that step.

UI updates

  • Updated default HTML reporter to improve display of attachments.
  • New button for picking elements to produce aria snapshots.
  • Additional details (such as keys pressed) are now displayed alongside action API calls in traces.
  • Display of canvas content in traces is error-prone. Display is now disabled by default, and can be enabled via the Display canvas content UI setting.
  • Call and Network panels now display additional time information.

Breaking

Browser Versions

  • Chromium 133.0.6943.16
  • Mozilla Firefox 134.0
  • WebKit 18.2

This version was also tested against the following stable channels:

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

v4.0.1

Compare Source

Added
  • Include :open pseudo-class in existing open variant (#​15349)
Fixed
  • Remove invalid min-w/h-none utilities (#​15845)
  • Discard CSS variable shorthand utilities that don't use valid CSS variables (#​15738)
  • Ensure font-size utilities with none modifier have a line-height set e.g. text-sm/none (#​15921)
  • Ensure font-size utilities with unknown modifier don't generate CSS (#​15921)
  • Don’t suggest font weight utilities more than once (#​15857)
  • Suggest container query variants (#​15857)
  • Disable bare value suggestions when not using the --spacing variable (#​15857)
  • Ensure suggested classes are properly sorted (#​15857)
  • Don’t look at .gitignore files outside initialized repos (#​15941)
  • Find utilities when using the Svelte class shorthand syntax across multiple lines (#​15974)
  • Find utilities when using the Angular class shorthand syntax (#​15974)
  • Find utilities when using functions inside arrays (#​15974)
  • Ensure that @tailwindcss/browser does not pollute the global namespace (#​15978)
  • Ensure that tailwind-merge is not scanned when using the Vite plugin (#​16005)
  • Ensure CSS theme variables are available within shadow roots (#​15975)
  • Fix crash when project lives in the / directory (#​15988)
  • Ensure custom variants have a non-empty selector list (#​16009)
  • Upgrade: Ensure JavaScript config files on different drives are correctly migrated (#​15927)
  • Upgrade: Migrate leading-[1] to leading-none (#​16004)
  • Upgrade: Do not migrate arbitrary leading utilities to bare values (#​16004)
eslint/eslint (eslint)

v9.19.0

Compare Source

privatenumber/fs-fixture (fs-fixture)

v2.7.0

Compare Source

Features
WebReflection/linkedom (linkedom)

v0.18.7

Compare Source

argyleink/open-props (open-props)

v1.7.12

Compare Source

v1.7.11

Compare Source

sindresorhus/p-queue (p-queue)

v8.1.0

Compare Source

rollup/rollup (rollup)

v4.32.1

Compare Source

2025-01-28

Bug Fixes
  • Fix possible crash when optimizing logical expressions (#​5804)
Pull Requests

v4.32.0

Compare Source

2025-01-24

Features
  • Add watch.onInvalidate option to trigger actions immediately when a file is changed (#​5799)
Bug Fixes
  • Fix incorrect urls in CLI warnings (#​5809)
Pull Requests
npm/node-semver (semver)

v7.7.0

Compare Source

Features
Bug Fixes
Documentation
Chores
shikijs/shiki (shiki)

v1.29.2

Compare Source

   🚨 Breaking Changes
   🚀 Features
   🐞 Bug Fixes
    View changes on GitHub
sveltejs/svelte (svelte)

v5.19.6

Compare Source

Patch Changes
  • fix: do not prune selectors like :global(.foo):has(.scoped) (#​15140)

  • fix: don't error on slot prop inside block inside other component (#​15148)

  • fix: ensure reactions are correctly attached for unowned deriveds (#​15158)

  • fix: silence a11y attribute warnings when spread attributes present (#​15150)

  • fix: prevent false-positive ownership validations due to hot reload (#​15154)

  • fix: widen ownership when calling setContext (#​15153)

v5.19.5

Compare Source

Patch Changes
  • fix: improve derived connection to ownership graph (#​15137)

  • fix: correctly look for sibling elements inside blocks and components when pruning CSS (#​15106)

v5.19.4

Compare Source

Patch Changes
  • fix: Add bind:focused property to HTMLAttributes type (#​15122)

  • fix: lazily connect derievds (in deriveds) to their parent (#​15129)

  • fix: disallow $state/$derived in const tags (#​15115)

v5.19.3

Compare Source

Patch Changes
  • fix: don't throw for undefined non delegated event handlers (#​15087)

  • fix: consistently set value to blank string when value attribute is undefined (#​15057)

  • fix: optimise || expressions in template (#​15092)

  • fix: correctly handle novalidate attribute casing (#​15083)

  • fix: expand boolean attribute support (#​15095)

  • fix: avoid double deriveds in component props (#​15089)

  • fix: add check for is attribute to correctly detect custom elements (#​15086)

v5.19.2

Compare Source

Patch Changes
  • fix: address regression with untrack (#​15079)

v5.19.1

Compare Source

Patch Changes
  • fix: omit unnecessary nullish coallescing in template expressions (#​15056)

  • fix: more efficient template effect grouping (#​15050)

  • fix: ensure untrack correctly retains the active reaction (#​15065)

  • fix: initialize files bind on hydration (#​15059)

vercel/turborepo (turbo)

v2.3.4: Turborepo v2.3.4

Compare Source

What's Changed
Docs
create-turbo
@​turbo/codemod
eslint
@​turbo/repository
Examples
Changelog

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

Allow sharp format options (e.g. https://sharp.pixelplumbing.com/api-output#avif)

Testing

I haven't added any tests yet, just opening to see if the feature is desired and this a good approach. However I'm not sure how to test this, trying all combinations would be impossible, maybe mocking to check options are actually passed is an option

Docs

I will add the change to the config reference once the api is decided.

cc @Princesseuh as discussed on Discord

withastro/astro

Hello!

We have a repo where I wanted to use our logo as favicon. SVGs may finally be used directly! 🤗
But we do have to provide PNGs as fallback. And even .ico, to be really safe.

The idea was to then commit just the SVG as asset and single source of truth, and convert that through getImage.

Generating the .ico is kind of special1, but this approach worked, so I figured it'd be pretty much the same for getImage.

Interestingly, however, when we tried to do the same in the component using getImage we would just get the same SVG out, untouched.

I was then able to find #7643 where this was deliberately implemented. From what I understand, other transformation services may not support SVG, but I'm not sure why it would be prevented in Sharp, too?

I couldn't really figure out the rationale, but maybe I'm missing something. Hope this makes sense!

Changes

  • Let Sharp process SVG files

Testing

I tested this against my repo, where I had identified the bug, with the following component:

---
import faviconSrc from "@assets/logo.svg";

const favicon = (size: number) =>
  getImage({
    src: faviconSrc,
    format: "png",
    width: size,
    height: size,
  });

const appleTouchIcon = await favicon(180);
const favicon32 = await favicon(32);
const favicon16 = await favicon(16);
---

<link rel="apple-touch-icon" href={appleTouchIcon.src} />
<link rel="icon" type="image/png" sizes="32x32" href={favicon32.src} />
<link rel="icon" type="image/png" sizes="16x16" href={favicon16.src} />

Docs

I'm not sure whether something should be added to the docs, to be honest, I didn't find anything mentioning that SVG would not be supported as an input to getImage in the docs, but that's the case right now. With this fix, nothing should be mentioned as things should just work out of the box.

Footnotes

  1. https://github.com/sealambda/ostaro/blob/main/src/pages/favicon.ico.ts

withastro/astro

Changes

A bug in the way the patterns were generated meant that if there were multiple wildcard patterns in a path alias, only the first would ever match.

Fixes #13051

Testing

Added test cases

Docs

withastro/astro

Changes

#13029 seems to have introduced a syntax error in an import. This fixes it and adds a biome ignore

Fixes #13057

Testing

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

@astrojs/react@4.2.0

Minor Changes

  • #13036 3c90d8f Thanks @artmsilva! - Adds experimental support for disabling streaming

    This is useful to support libraries that are not compatible with streaming such as some CSS-in-JS libraries. To disable streaming for all React components in your project, set experimentalDisableStreaming: true as a configuration option for @astrojs/react:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    import react from '@astrojs/react';
    
    export default defineConfig({
      integrations: [
        react({
    +      experimentalDisableStreaming: true,
        }),
      ],
    });

astro@5.1.10

Patch Changes

  • #13058 1a14b53 Thanks @ascorbic! - Fixes broken type declaration

  • #13059 e36837f Thanks @ascorbic! - Fixes a bug that caused tsconfig path aliases to break if there was more than one wildcard pattern

  • #13045 c7f1366 Thanks @mtwilliams-code! - Fixes a bug where the some utility functions of the astro:i18n virtual module would return an incorrect result when trailingSlash is set to never

withastro/astro

Changes

Part of proposal withastro/roadmap#1106

This PR does a bit of refactoring in order to extract the correct information to send to the virtual module.

  • The source of truth must be the SSRManifest, because the virtual module information must be preserved even in on-demand pages. This means that the input source of the vite plugin is the SSRManifest. The manifest wasn't available in some of the commands, so I had to use createDevelopmentManifest whenever it was possible.
  • To make the DX pleasant, and provide to the virtual module the same types that are defined in AstroConfig, I created a deserialisation phase, which transforms directories from string to URL, and the i18n strategy to its former configuration.
  • I added new properties to the SSRManifest
  • I renamed the ManifestData type to RoutesList, because it isn't actually a manifest. At some point we manifest and ssrManifest, which was really confusing.

Testing

The current tests should pass. I moved a failing test inside its own fixture, otherwise the valid fixture will never build.

Docs

withastro/astro

Changes

  • Closes PLT-2759
  • Supports tailwind v4 (breaking change, this major only supports v4)
  • Drops support for astro <= 5.0 (we rely on some 5.0 only features)
  • Removes the nesting option as it's supported oob

Testing

Updated, should pass, and tested manually

Docs

Changeset, withastro/docs#10773

lin-stephanie/astro-antfustyle-theme

Description

The icon of :link directive (External URL variant) used favicon.yandex.net to obtain the icon, which is 16 x 16 by default. This PR improves the resolution of icons using Google's API.

withastro/astro

Changes

  • Adds a propType for using a parsed-from-JSON value directly, without reviving sub-objects via tuples. This allows web pages generated by external systems (not Astro) to use Astro islands without needing to encode props containing nested but basic (representable with JSON) data into tuples.

Testing

  • No tests added yet. Wanting to get confirmation on whether Astro maintainers are open to this PR before I spend time on adding tests.

Docs

  • No docs added yet. Wanting to get confirmation on whether Astro maintainers are open to this PR before I spend time on adding docs.
withastro/astro

Changes

fixes #13035
getLocaleRelativeUrl will now return a '/' instead of an empty string in the case of base: '/' and trailingSlash: 'never'.
Changing this behavior of getLocalRelativeUrl caused a similar error in getLocaleAbsoluteUrl for trailingSlash: 'never' because it internaly uses getLocaleRelativeUrl. This is resolved similarly.

Testing

Added tests for both cases - the logic for testing base: '/' had only been testing when trailingSlash:'always'.

Docs

withastro/astro

Changes

This PR fixes #13041

  • It edits only one file, BaseHead.astro, in the Astro blog starter kit. It adds three new lines to that file.
  • It adds a rel link to the (already-existing) /sitemap-index.xml file created by @astrojs/sitemap
  • It adds a rel link to the (already-existing) /rss.xml file created by @astrojs/rss
  • The link to the RSS feed file needs the global SITE_TITLE, so I added a line to the frontmatter to import that.

Testing

I created a personal blog using the Astro blog starter kit and noticed that these rel links were missing, so I added them. It worked.

Docs

No additional documentation is required because of this PR. In fact, I got most of the code for this PR from existing Astro documentation:

withastro/starlight

Description

  • Closes #2806
  • Adds a clientOptionsModule option to the starlightDocSearch plugin.
    • This takes the shape of a path to a JavaScript or TypeScript file which will be imported (if present) and merged with existing options in the starlight/docsearch-config virtual module.
    • If an option exists in both, i.e appId, the option in the clientOptionsModule file will be used.

Considerations

  • Updating documentation

#### DocSearch configuration
The Starlight DocSearch plugin also supports customizing the DocSearch component with the following additional options:
- `maxResultsPerGroup`: Limit the number of results displayed for each search group. Default is `5`.
- `disableUserPersonalization`: Prevent DocSearch from saving a user’s recent searches and favorites to local storage. Default is `false`.
- `insights`: Enable the Algolia Insights plugin and send search events to your DocSearch index. Default is `false`.
- `searchParameters`: An object customizing the [Algolia Search Parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/).

  • Tests

Whilst this is probably not a large enough package to warrant it, I did setup try out setting up Vitest for this package where vitePluginDocSearch is passed in vitest.config.ts but since it would need a lot of work to setup a harness to test starlightDocSearch I opted against including it.

withastro/astro

Changes

  • Added popover to the list of boolean attributes

see: #11342 (comment)

Testing

Docs

withastro/astro

Changes

This pull request introduces a new feature to the React integration by adding an option to disable streaming support. This feature aims to support libraries that are not compatible with streaming, such as Stitches.js. The most important changes include updates to the configuration options and rendering logic.

Testing

Docs

withastro/docs#10761

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Brings back #11513

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.1.9

Patch Changes

  • #12986 8911bda Thanks @wetheredge! - Updates types and dev toolbar for ARIA 1.2 attributes and roles

  • #12892 8f520f1 Thanks @louisescher! - Adds a more descriptive error when a content collection entry has an invalid ID.

  • #13031 f576519 Thanks @florian-lefebvre! - Updates the server islands encoding logic to only escape the script end tag open delimiter and opening HTML comment syntax

  • #13026 1d272f6 Thanks @ascorbic! - Fixes a regression that prevented the import of Markdown files as raw text or URLs.

@astrojs/alpinejs@0.4.3

Patch Changes

withastro/astro

Changes

The fix in #12711 caused a regression for imports for markdown files as static assets using the ?raw param. That only worked accidentally before, but this is the proper fix.

I am just checking the id for ?raw. I realise this could in theory miss cases where there are multiple params, but I'm not aware of any cases where that would be legitimate so didn't think it was worth the cost of adding a full query param parse on every import. I'm open to other opinions on this though.

Fixes #13025

Testing

Added a test case

Docs

withastro/astro

Changes

Add support for standard Content-Type and Content-Disposition http headers in SSG.

This PR is an implementation of this proposal, which seems to be mostly well received.

Why

Currently, middleware in SSR can override the filename or media type of .astro templates using the standard Content-Type and Content-Disposition http headers, and the browser will interpret it correctly. SSG will completely ignore these http headers and produce bad output, inconsistent with SSR. This PR brings SSR and SSG into alignment by adding Content-Type and Content-Disposition support to SSG builds.

This is mostly helpful for middleware that wants to modify the response for .astro templates to be file-based, but is fairly generic can have other uses as well.

Example

if this is returned by middleware when requesting opengraph-image.astro:

return new Response(body, {
  headers: {
    "Content-Type": "image/png", // Would be ignored during an SSG build
    "Content-Disposition": `inline; filename="opengraph-image.png"`,
  },
});
BEFORE AFTER
SSR Response served with Content-Type: image/png no change
SSR Response served with opengraph-image.png filename no change
SSG Response served with Content-Type: text/html Response served with Content-Type: image/png
SSG Response written to opengraph-image/index.html Response written to opengraph-image.png

How this will be used

The main use case I have in mind for this change is an integration that allows people to define opengraph images using .astro templates that result in png images. This is not possible today, but would be trivial if this PR is merged. I have published a proof of concept integration that works in SSR but doesn't work in SSG, but would work everywhere with this PR.

Addressing Discusssion

Using standard http headers

There was some discussion of not using standard http headers. I think we absolutely should use these headers because:

  • it makes SSR/SSG configuration symmetrical.
  • a user might set both the custom configuration AND use the http headers (which already work in SSR today) and we'd have to decide how to handle that, with no good options that are obvious to me.

I feel strongly we should use standard http headers.

Other usecases

There was [some discussion] of other usecases (e.g. withastro/roadmap#643 (comment)) that I haven't tested but should be handled by this feature as-implemented.

Asymmetry between SSR/SSG

There was a conversation about this potentially introducing asymmetry between SSR/SSG.

I think this is a very valid concern, but, while this could be used to introduce asymmetry but it can also be used to fix asymmetry that is impossible to fix today. Example in the discussion.

Concerns

My current implementation has one issue which should either be discussed: if you dynamically use middleware to rewrite where you output the result of a request for a .astro template, the manifest/assets will not be exactly correct. For example, you might rewrite a .astro template to a png image, but the image will not be in the SSR manifest assets. The build asset URLs will reflect the correct output URL though, and I wrote a unit test that captures this.

I am unclear on how these integration hooks (which are the only way I know of to introspect the manifest during a build) are meant to be used, so I have no idea if this is a problem or not. I am unable to fix it though because we discover middleware rewriting AFTER we do the Vite build, which is where the manifest is generated.

Testing

I have added several unit tests to test the basic functionality. I have not extensively tested every edge/error case but would be happy to add more tests if this PR makes it far enough.

Docs

This is a new feature which would require documentation. I have not yet written that documentation but will if I get the provisional go-ahead.

This is a new feature that is unlikely to be incompatible with any existing astro sites. This would break backwards compatibility if someone is using Content-Disposition with .astro templates in SSG today, but since that does nothing and is totally broken, I can't imagine this is in use anywhere. So this should be documentation for a new feature.

This change does cause the existing build.format configuration option to be ignored for non-html astro templates where the filename is overridden, and I have updated the documentation to capture this. (jsdoc comment that backs the Configuration Reference documentation.

withastro/astro

Related to issue #12710 (comment).

Externally loaded AlpineJS component scripts were loaded after Alpine.start() was triggered. Issue started with Astro V5.

Changes

Testing

  • This is a bugfix and integrations do not appear to have tests.

Docs

  • No documentation updates necessary; resolving a bug.
withastro/astro

This reverts commit f64b73c.

Changes

#11513 caused test failures on main

Testing

Docs

withastro/astro

Changes

Upgrades Vite to fix GHSA-vg6x-rcgg-rjx6
This is a breaking change and lots of tests were failing. This PR contains the fix, which is to ensure the host header is set.

Testing

Updates tests

Docs

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@astrojs/node (source) ^9.0.0 -> ^9.0.1 age adoption passing confidence
@solidjs/router ^0.15.2 -> ^0.15.3 age adoption passing confidence
postcss (source) ^8.4.49 -> ^8.5.1 age adoption passing confidence
rollup (source) ^4.30.1 -> ^4.31.0 age adoption passing confidence
sass ^1.83.1 -> ^1.83.4 age adoption passing confidence
shiki (source) ^1.26.2 -> ^1.29.1 age adoption passing confidence
svelte (source) ^5.17.3 -> ^5.19.0 age adoption passing confidence
typescript-eslint (source) ^8.19.1 -> ^8.20.0 age adoption passing confidence
undici (source) ^7.2.1 -> ^7.2.3 age adoption passing confidence

Release Notes

withastro/adapters (@​astrojs/node)

v9.0.1

Compare Source

Patch Changes
solidjs/solid-router (@​solidjs/router)

v0.15.3

Patch Changes
  • 97184e4: more lenient on cache resuming (allow nested promises during hydration)
postcss/postcss (postcss)

v8.5.1

Compare Source

v8.5.0: 8.5 “Duke Alloces”

Compare Source

President Alloces seal

PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS.

@​romainmenke during his work on Stylelint added Input#document in additional to Input#css.

root.source.input.document //=> "<p>Hello</p>
                           //    <style>
                           //    p {
                           //      color: green;
                           //    }
                           //    </style>"
root.source.input.css      //=> "p {
                           //      color: green;
                           //    }"

Thanks to Sponsors

This release was possible thanks to our community.

If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by:

rollup/rollup (rollup)

v4.31.0

Compare Source

2025-01-19

Features
  • Do not immediately quit when trying to use watch mode from within non-TTY environments (#​5803)
Bug Fixes
  • Handle files with more than one UTF-8 BOM header (#​5806)
Pull Requests
sass/dart-sass (sass)

v1.83.4

Compare Source

  • No user-visible changes.

v1.83.3

Compare Source

  • No user-visible changes.

v1.83.2

Compare Source

  • Properly display deprecation IDs for the JS Sass API.

  • Don't display deprecation IDs for user-defined deprecations.

shikijs/shiki (shiki)

v1.29.1

Compare Source

   🚀 Features
    View changes on GitHub

v1.29.0

Compare Source

   🚀 Features
    View changes on GitHub

v1.28.0

Compare Source

   🚀 Features
   🐞 Bug Fixes
    View changes on GitHub

v1.27.2

Compare Source

No significant changes

    View changes on GitHub

v1.27.1

Compare Source

   🚀 Features
    View changes on GitHub

v1.27.0

Compare Source

   🚀 Features
    View changes on GitHub
sveltejs/svelte (svelte)

v5.19.0

Compare Source

Minor Changes
  • feat: Expose ClassValue from svelte/elements (#​15035)
Patch Changes
  • fix: create fewer deriveds for concatenated strings (#​15041)

  • fix: correctly parse leading comments in function binding (#​15020)

v5.18.0

Compare Source

Minor Changes
  • feat: allow <template> elements to contain any child (#​15007)
Patch Changes
  • fix: ensure resume effects are scheduled in topological order (#​15012)

  • fix: bump esrap (#​15015)

  • fix: remove listener on bind_current_time teardown (#​15013)

v5.17.5

Compare Source

Patch Changes
  • feat: allow const tag inside svelte:boundary (#​14993)

  • fix: ensure signal write invalidation within effects is consistent (#​14989)

v5.17.4

Compare Source

Patch Changes
  • fix: never consider inert boundary effects (#​14999)

  • fix: store access on component destroy (#​14968)

  • fix: correctly transform pre with no content (#​14973)

  • fix: wrap each block expression in derived to encapsulate effects (#​14967)

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

v8.20.0

Compare Source

🚀 Features
  • eslint-plugin: [no-misused-spread] add new rule (#​10551)
❤️ Thank You
  • Josh Goldberg ✨

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

nodejs/undici (undici)

v7.2.3

Compare Source

⚠️ Security Release ⚠️

Fixes CVE CVE-2025-22150 GHSA-c76h-2ccp-4975 (embargoed until 22-01-2025).

What's Changed

Full Changelog: nodejs/undici@v7.2.2...v7.2.3

v7.2.2

Compare Source

What's Changed

Full Changelog: nodejs/undici@v7.2.1...v7.2.2


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

Resolve this issue

#7520

The problem solved by this PR is that after setting the base, when pnpm run dev, the src address of the generated script type="module" tag is incorrect,

export default defineConfig({
  base: '/theme141',
})
<script type="module" src="/@vite/client"></script>
<script type="module" src="/@id/astro:scripts/page.js"></script>
<script type="module" src="/node_modules/"></script>

It still starts with/node_modules.

The expectation should start with the value of base,

<script type="module" src="/theme141/@vite/client"></script>
<script type="module" src="/theme141/@id/astro:scripts/page.js"></script>
<script type="module" src="/theme141/node_modules/"></script>

I found that modifying the base of the root node of astro.config.mjs does not work. I need to set vite.base so that it can be parsed correctly.

export default defineConfig({
  // base: '/ theme141',
  vite: {
    base: '/theme141'
  }
})

For example:

When using 127.0.0.1 or localhost, the generated resources can be accessed normally even if the address is incorrect.

But when I resolve a domain name locally

C:\Windows\System32\drivers\etc\hosts
127.0.0.1 example.local

Then when I use example.local/theme141 to access it, there will be a path error. Not setting the root base, only setting vite.base, and then cooperating with my modifications, can make the program run perfectly

Testing

describe('Astro dev with vite.base path', () => {
	let fixture;
	let devServer;
	const headers = {
		'x-astro': 'test',
	};

	before(async () => {
		fixture = await loadFixture({
			root: './fixtures/astro-dev-headers/',
			server: {
				headers,
			},
			vite: {
				base: '/hello'
			}
		});
		await fixture.build();
		devServer = await fixture.startDevServer();
	});

	after(async () => {
		await devServer.stop();
	});

	it('Generated script src get included with vite.base path', async () => {
		const result = await fixture.fetch('/hello');
		const html = await result.text();
		const $ = cheerioLoad(html);
		assert.match($('script').attr('src'), /^\/hello\/@vite\/client$/);
	});
});

Docs

Only needed in Astro Dev

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.31.1

Patch Changes

withastro/astro

Changes

Currently vite-plugin-import-meta-env injects a runtime into any file that includes the string import.meta.env, which enables the use of env vars. Unfortunately this meant it also did this to non-source files such as JSON, CSS and HTML files that include that string. This caused performance issues like #12999, but could also break builds entirely in some cases where the asset wasn't transformed to JS.

This PR filters the file types more comprehensively.

Fixes #12999

Testing

Adds test cases

Docs

withastro/starlight

This PR updates the Vitest version used in the monorepo to version 3.0.1 and unpins us from the 2.1.6 version.

withastro/astro

Changes

  • Fixes #12993
  • Previously, the logic for calculating whether the image is above (below) the flow depends on window.scrollY
  • This will not work when the body element is not scrollable/ not the scrolling container (i.e. window.scrollY always 0)
  • The fix calculates the actual y position by adding offsetTop value of the target element itself and all the offest parent(s)
  • The fix is proposed by @hfournier in #10891

Testing

No tests are added (manual testing is done locally), as I am not familiar with playwright and the fix is trivial. Please help me to add some tests if it is necessary.

Docs

Docs update should not be necessary.

withastro/astro

Changes

Helps with #12824 (not complete fix yet, needs to check cloudflare adapter support)

Removes the ssr.external config as it's forcing them to be externalized even in builds for cloudflare where all dependencies should be bundled by default. (This is a similar change to #10601)

Testing

Existing tests should pass.

Docs

n/a. bug fix.

withastro/astro

Changes

  • Currently, we resolve the actions config to ${srcDir}/actions. That means src/actions.ts is valid, just like src/actions/index.ts. However, typegen was harcoding ${srcDir}/actions/index.ts. This PR updates the types to let TS figure out what file to resolve

Testing

Should still pass

Docs

N/A

withastro/astro

Changes

When the trailingSlash option is set to always or never, on-demand rendered pages will now redirect to the correct URL when the trailing slash is incorrect. This was previously the case for static pages, but now works for on-demand pages as well. There are some exceptions:

  • when the request matches a static path or file, it is not redirected
  • when trailingSlash is ignore then it is not redirected
  • when the request looks like it is for a file, it is not redirected, even if there is no matching file. e.g. a request for a nonexistent /favicon.ico will not redirect to /favicon.ico/
  • requests for paths starting with /_ with not redirect, because these are usually special internal paths

In dev we don't redirect so it's more obvious that a link is incorrect. Instead I have updated the 404 page to give a bit more information if there's a trailing slash mismatch, and suggest goign to the version with the correct slash:

image

Fixes #12532
Fixes #12833
Fixes #11575

Testing

Added a big test suite. Refer to it for more examples.

Docs

This will need 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.1.8

Patch Changes

  • #12998 9ce0038 Thanks @Kynson! - Fixes the issue that audit incorrectly flag images as above the fold when the scrolling container is not body

  • #12990 2e12f1d Thanks @ascorbic! - Fixes a bug that caused references to be incorrectly reported as invalid

  • #12984 2d259cf Thanks @ascorbic! - Fixes a bug in dev where files would stop being watched if the Astro config file was edited

  • #12984 2d259cf Thanks @ascorbic! - Fixes a bug where the content layer would use an outdated version of the Astro config if it was edited in dev

  • #12982 429aa75 Thanks @bluwy! - Fixes an issue where server islands do not work in projects that use an adapter but only have prerendered pages. If an adapter is added, the server island endpoint will now be added by default.

  • #12995 78fd73a Thanks @florian-lefebvre! - Fixes a case where astro:actions types would not work when using src/actions.ts

  • #13011 cf30880 Thanks @ascorbic! - Upgrades Vite

  • #12733 bbf1d88 Thanks @ascorbic! - Fixes a bug that caused the dev server to return an error if requesting "//"

  • #13001 627aec3 Thanks @ascorbic! - Fixes a bug that caused Astro to attempt to inject environment variables into non-source files, causing performance problems and broken builds

@astrojs/db@0.14.6

Patch Changes

@astrojs/alpinejs@0.4.2

Patch Changes

@astrojs/markdoc@0.12.7

Patch Changes

@astrojs/mdx@4.0.7

Patch Changes

@astrojs/preact@4.0.3

Patch Changes

@astrojs/react@4.1.6

Patch Changes

  • #12996 80c6801 Thanks @bluwy! - Removes hardcoded ssr.external: ['react-dom/server', 'react-dom/client'] config that causes issues with adapters that bundle all dependencies (e.g. Cloudflare). These externals should already be inferred by default by Vite when deploying to a server environment.

  • #13011 cf30880 Thanks @ascorbic! - Upgrades Vite

@astrojs/solid-js@5.0.4

Patch Changes

@astrojs/svelte@7.0.4

Patch Changes

@astrojs/tailwind@5.1.5

Patch Changes

@astrojs/vue@5.0.6

Patch Changes

@astrojs/studio@0.1.4

Patch Changes

withastro/astro

Changes

Currently we attempt to validate references in schemas by checking the referenced entry exists. This causes a problem if a new referenced entry is added at the same time as the reference is added, because there can be a race condition where the referenced entry has not yet been added to the store when the reference is validated.

This PR removes that check. This is OK (and we already skip validation if the collection doesn't exist yet) because we also validate at runtime.

Fixes #12680
Fixes #12885

Testing

Adds a test

Docs

withastro/astro

Changes

  • Documentation on AriaAttributes type
  • Added all new roles to AriaRole type
  • Added missing roles from 1.1
    • command, composite, input, landmark, range, roletype, section, sectionhead, select, structure, widget, window

Testing

No relevant tests

Docs

No existing mentions of either in the docs

withastro/astro

Changes

  • In a long session you might navigate between several pages, some contain the script and some not, but nevertheless the script should run a total of 1 time.
  • This also helps with smaller bundled scripts in production, where some are inlined.
  • Keeps track of scripts that have run, either by the src or by the inner text (for inline scripts) and uses that as a key, rather than the data attribute we previously adde.

Testing

  • Updated the existing tests to navigate between more pages.

Docs

N/A, bug fix.

withastro/astro

Changes

This PR makes a number of changes to the way that file watchers work in dev with the content layer. There have been a few bugs related to the way that dev server restarts are handled, which were due to the way we were handling file watchers.

When the Astro config is edited, it restarts the dev container to ensure the site is using the latest config. This was causing several bugs:

  • when the server was restarted, it wasn't re-running the Astro sync. This meant that updates in the config were not reflected in the rendered config, for example changes to Markdown config wouldn't update the rendered content.
  • the existing watcher was destroyed, but because the loaders weren't being re-run, the glob and file event listeners weren't being attached to the new watcher.

This PR correctly passes in the watcher, but has to handle various implications of this:

  • it needs to ensure that the content layer is recreated when the server is restarted, otherwise it will use the old config even when it syncs the content. This fixes #12700
  • it needs to detach the event listeners that the previous loader run added. We can't clear them all, because this is a shared watcher instance. To handle this, we now wrap the watcher with a Proxy that keeps track of which listeners were attached by the content layer, so they can be removed if the content layer is refreshed or disposed of. Fixes #12976
  • it needs to ensure that the files themselves are still being watched, so it now manually adds them to the watcher rather than relying on them still being watched

Testing

Added new test cases

Docs

withastro/astro

Changes

fix #12803

Summary of issue:

  1. Server islands work using endpoints.
  2. It's added if Astro detects a page is being server-rendered, or if pages are configured to server-render by default (output: "server").
  3. However, if the project happens to not set output (defaults to "static"), and all pages in src/pages are statically built (no export const prerender = false), then because of no2, the server island endpoints will not be added.
  4. As a result, the build output is missing the /_server-islands/ handling and fails in the browser.

This PR:

  • Fixes the issue by adding the server islands endpoint whenever it detects an adapter is being used. Should not be a problem for server-based adapters, but for static-based adapters, I believe it's still ok as they can specify in adapterFeaturs.buildOutput: 'static' and Astro will error that server islands won't work if they're used after building.

Testing

This one is a bit hard to write a test for, but I've updated some existing tests to match this new behaviour, and also manually ran the test in the adapters repo against this PR. It affects one Cloudflare test, but IIUC it's not breaking anything and should only require updating the code/test there to refine the output only. (This specific test)

Docs

n/a. bug fix.

withastro/astro

Changes

Testing

Manually, tests added

Docs

N/A

withastro/starlight

Description

As discussed on Discord, this PR exposes a new TypeScript type for built-in icon names: StarlightIcon. This type is a union of all built-in icon names.

When building an Astro component accepting an icon name, you could already use the ComponentProps<typeof Icon>['name'] approach, but importing the Astro component in a TypeScript file, which could also use ESLint with TypeScript type-aware rules, is not trivial.

A common use case is for example a plugin defining its configuration through a Zod schema where an icon name is required. This can now be validated as a string but still provide autocompletion and type checking for the end user using icon: z.string() as z.Schema<StarlightIcon>.

Regarding the documentation change, I think I did the maximum number of changes so it's easy to remove some of them if there are not judged required or good.

withastro/starlight

Description

The PR adds a link to the starlight-to-pdf cli tool for converting Starlight into PDF into the Plugins and Integrations page, Community tools and integrations section.

A solution to the following discussion: Export docs to PDF #964.

lin-stephanie/astro-antfustyle-theme

Description

  • Supports controlling whether links open in the current tab or a new tab via newTab.
  • Supports custom cursor (cursorType) or indicator icon (showNewTabIcon) for new tab links.
  • Updates rehype-external-links configuration.
  • Refactor some components to consistently use the Link component for link generation.

Notes

  • For newTab: Applies to external links created in Markdown / MDX with []() syntax (URLs using http/https) and Link components with external: true.
  • For cursorType and showNewTabIcon: Applies to the same scope as above, but requires external: true and enableNewTabWarning: true for Link components (currently used only in the ListItem component for post redirects)
  • In Markdown / MDX, to apply these settings to directly written <a></a> links, you need to install rehype-raw and configure it before rehype-external-links in plugins/index.ts, but note it may affect astro-expressive-code features.
  • By default, the theme sets all external links to open in the current tab (users can open links in a new tab using [Meta Key] + click). If you set links to open in a new tab, consider providing an advanced warning for accessibility, like using an indicator icon or a custom cursor (a pre-designed SVG cursor is available here).
  • When cursorType is set, style the external-link-cursor class. When showNewTabIcon: true is enabled, style the new-tab-ico class. Customize freely to suit your needs.

Resources

withastro/astro

Changes

Closes PLT-2745

This PR adds support for external directs in the redirects configuration:

  • Added a new error in case the user specify a URL that doesn't start with http:// or https:// or the URL isn't parsable
  • No special handling for patterns. Astro can't know if the external an Astro site, so it's virtually impossible to handle route patterns e.g. [...slug], [slug]
  • No particular handling inside underscore-redirects (apart from tiny refactors)

Testing

Added new tests

Docs

withastro/docs#10704

/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.1.7

Patch Changes

  • #12361 3d89e62 Thanks @LunaticMuch! - Upgrades the esbuild version to match vite

  • #12980 1a026af Thanks @florian-lefebvre! - Fixes a case where setting the status of a page to 404 in development would show the default 404 page (or custom one if provided) instead of using the current page

  • #12182 c30070b Thanks @braden-w! - Improves matching of 404 and 500 routes

  • Updated dependencies [3d89e62]:

    • @astrojs/markdown-remark@6.0.2

@astrojs/markdoc@0.12.6

Patch Changes

  • #12361 3d89e62 Thanks @LunaticMuch! - Upgrades the esbuild version to match vite

  • #12967 0ef1613 Thanks @bluwy! - Fixes rendering components when the nodes.document.render Markdoc config is set to null

  • Updated dependencies [3d89e62]:

    • @astrojs/markdown-remark@6.0.2

@astrojs/mdx@4.0.6

Patch Changes

  • Updated dependencies [3d89e62]:
    • @astrojs/markdown-remark@6.0.2

@astrojs/preact@4.0.2

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.

@astrojs/react@4.1.5

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.

@astrojs/solid-js@5.0.3

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.

@astrojs/vue@5.0.5

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.

@astrojs/markdown-remark@6.0.2

Patch Changes

withastro/astro

Changes

  • Closes #12952, closes #12968
  • Loads env earlier so content layer can access it
  • Moves the vite plugin for import.meta.env

Testing

Adds a test

Docs

N/A

withastro/starlight

Description

Updates EC version again, updating the existing changeset to reflect the latest update.

withastro/starlight

Description

  • Closes #2790
  • This PR updates the right sidebar to use the semantic color name (--sl-color-hairline) instead of an absolute color name (--sl-color-gray-6).
  • This means that when a theme customises the hairline colors, the right sidebar will be automatically use that.
withastro/starlight

Description

  • In several places in our documentation we were still linking to Expressive Code README documents on GitHub that predated the full https://expressive-code.com docs site (and mostly no longer contain the same content as it moved to the website).
  • This PR fixes those links to point to relevant parts of the EC documentation site instead.
withastro/astro

Changes

Found few more misspellings.

Continuation of #10923

withastro/starlight

Description

  • This PR adds links to some recent content about Starlight to the community content page
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.31.0

Minor Changes

  • #2777 88f4214 Thanks @hippotastic! - Updates astro-expressive-code dependency to the latest version (0.40).

    This includes an update to the latest Shiki version (1.26.1), providing access to all current Shiki themes and syntax highlighting languages, and adding the config options shiki.engine, shiki.bundledLangs, shiki.langAlias and removeUnusedThemes. It also adds new style variants to the optional collapsible sections plugin.

    See the Expressive Code release notes for full details.

  • #2736 29a885b Thanks @delucis! - ⚠️ BREAKING CHANGE: The minimum supported version of Astro is now 5.1.5

    Please update Astro and Starlight together:

    npx @astrojs/upgrade
  • #2728 e187383 Thanks @delucis! - Updates minimum Pagefind dependency to v1.3.0, sets new defaults for Pagefind’s ranking options, and adds support for manually configuring the ranking options

    The new ranking option defaults have been evaluated against Starlight’s own docs to improve the quality of search results. See “Customize Pagefind's result ranking” for more details about how they work.

  • #157 23bf960 Thanks @tony-sull! - Adds a print stylesheet to improve the appearance of Starlight docs pages when printed

  • #2728 e187383 Thanks @delucis! - Fixes Pagefind logging to respect the Astro log level. When using Astro’s --verbose or --silent CLI flags, these are now respected by Pagefind as well.

Patch Changes

  • #2792 412effb Thanks @dhruvkb! - Uses semantic var(--sl-color-hairline) for the page sidebar border instead of var(--sl-color-gray-6). This is visually the same as previously but makes it easier to override the hairline color consistently across a site.

  • #2736 29a885b Thanks @delucis! - Updates internal dependencies @astrojs/sitemap and @astrojs/mdx to the latest versions

  • #2782 d9d415b Thanks @delucis! - Fixes a documentation link in the JSDoc comment for the StarlightExpressiveCodeOptions type

  • #2708 442c819 Thanks @delucis! - Fixes colour contrast correction in code blocks

withastro/astro

Changes

fix #12964

It seems like renderTreeNodeToFactoryResult shouldn't be calling itself, but it should re-create the ComponentNode entirely as it handles nested component rendering. Same as how the const slots are constructed below the updated code.

Testing

Added a new test

Docs

n/a. bug fix

withastro/astro

Changes

While the glob loader handles deleting or renaming a file, it didn't previously handle the scenario where a slug was changed inside a file. This PR ensures that the old entry is deleted.

Fixes #12668

Testing

Adds new test cases

Docs

withastro/astro

Changes

Add test for #12959. I couldn't figure out a fix for the react hook error at the meantime so I'm adding the test only for now.

Testing

This adds tests

Docs

n/a

withastro/astro

Changes

  • Fixed the React invalid hook call warning when using MDX and React integrations together in Astro.
  • Updated the check function to correctly render React components using jsx and renderJSX, ensuring hooks are called within the proper context.
  • Removed the direct component invocation (Component({...})), which was causing React hooks to break.
  • Ensured compatibility with both React and MDX components without needing to import React.

Testing

  • Manually tested by navigating between routes to confirm the React hook warning no longer appears.
  • Verified that both React and MDX components render correctly with dynamic props and slots.
  • No automated tests added since this is primarily a runtime integration fix, but manual checks cover the issue.

Docs

  • No documentation updates required since this change is internal and does not affect public APIs.
withastro/astro

Changes

When data has changed in the content layer, the data store needs to write several different files, including the data store itself, asset imports (e.g. images) and module imports (e.g. mdx). These are all in the module graph, so will trigger HMR if changed. #12751 reported that when editing MDX it would reload twice, and the second time would take a long time for large sites. The double reload was because there was initially HMR from the changed MDX module itself. The slow second reload was because it was writing the big imports file itself too, causing Vite to re-parse the whole big graph. This isn't needed, because the imports file itself hasn't changed, just the file it was referring to.

This PR changes the write function to first check the old file content before writing, and skip if it is unchanged.

This does not stop the double-reload in the example. The first update is instant, and is the HMR for the mdx module itself. The second is a full refresh, which is triggered by the data store changing. This in unavoidable, because the data has changed, and may need a full page refresh because we don't know how it's been used. What has been fixed though is that this is much faster, because the big imports file has not been invalidated so I'm going to count this as a fix.

Fixes #12751

Testing

Docs

withastro/starlight

Description

Personally - having some experience with translating the docs - I think that creating .mdx files immediately, instead of renaming later (because often md files end up having to be mdx files because of components) has the benefit for translators, that the changes are better traceable. That's the first reason for this PR.

The second reason is more relatable for the maintainers probably: I think that the new route-data guide should use the Step component instead of having just the numbered list...

I also found a reasonable place in the route-data reference for a component: the slug could have a badge label somewhere. Here I think the change to a .mdx file is not that necessary because the Badge doesn't need to be there, further discussion maybe?

withastro/starlight

Description

  • Updates astro-expressive-code dependency to the latest version (0.39).

    This includes an update to the latest Shiki version (1.26.1), providing access to all current Shiki themes and syntax highlighting languages. It also adds the config options shiki.engine, shiki.bundledLangs, shiki.langAlias and removeUnusedThemes. See the Expressive Code release notes for full details.

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.1.6

Patch Changes

@astrojs/react@4.1.4

Patch Changes

  • #12923 c7642fb Thanks @bluwy! - Removes react-specific entrypoints in optimizeDeps.include and rely on @vitejs/plugin-react to add

@astrojs/solid-js@5.0.2

Patch Changes

@astrojs/upgrade@0.4.3

Patch Changes

  • #12739 1f9571b Thanks @gnify! - Updates displayed data to show both source and target versions
withastro/astro

Changes

close #12958
close #12951

Probably easier to revert for now but we could implement in a different fix for the original issue later on: #12802

Testing

n/a

Docs

n/a

withastro/astro

Changes

This change removes the encryption of {} in the case of a server island with no props. Fixes #12949.

Testing

Added two tests: one test that ensures components with props keep getting them re-encrypted, and one where components without props don't have an empty encryption passed through to them.

Docs

Nominally a bugfix, brings the docs mention of caching in line with reality.

withastro/astro

Changes

I missed the "blocking" attribute of the <link> element.
Added it. Came across missing "disabled" attribute. Added that, too.
Started sorting, but did not complete, because I haven't found "charset" at MDN.

Testing

n/a

Docs

n/a

Improvements of the changeset are welcome as always.

withastro/astro

Changes

fix #12766
cherry pick of #12686

Testing

n/a. We can't test react 19 yet without #12686 (which has other issues). But I tested the repro manually which works with this.

Docs

n/a.

withastro/astro

Changes

The content layer data store is created in a different location according to whether it is running in dev or build, so that it is either cachable or watchable by the fs watcher. These are mutually exclusive for Reasons.
This needs to be the same locaiton for both writing (during sync) and reading (during runtime). Unfortunately knowing which of these we're running is not as simple as it could be, and there have been some bugs that have emerged due to conflicts.

We'd mostly fixed these cases in #12640, but it missed the case where dev was run programatically with NODE_ENV set to something other than development (mostly in a test environment).

Rather than playing whackamole for all of these scenarios, this PR changes the approach so that it never uses NODE_ENV, and always explicitly sets it. Either this is done via the command used (build and sync use production, dev uses development) or at runtime uses Vite's env.command (build uses production, serve uses development). This involved some refactoring around how files are handled by data stores (which was overdue, because it was needlessly complex as it was created when there were different requirements)

Fixes #12652

Testing

Added some tests to the astro mode suite, which helpfully messes around with these options.

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.1.5

Patch Changes

  • #12934 673a518 Thanks @ematipico! - Fixes a regression where the Astro Container didn't work during the build, using pnpm

  • #12955 db447f2 Thanks @martrapp! - Lets TypeScript know about the "blocking" and "disabled" attributes of the <link> element.

  • #12922 faf74af Thanks @adamchal! - Improves performance of static asset generation by fixing a bug that caused image transforms to be performed serially. This fix ensures that processing uses all CPUs when running in a multi-core environment.

  • #12947 3c2292f Thanks @ascorbic! - Fixes a bug that caused empty content collections when running dev with NODE_ENV set

@astrojs/markdoc@0.12.5

Patch Changes

@astrojs/mdx@4.0.5

Patch Changes

  • #12959 3a267f3 Thanks @bluwy! - Reverts 9a3b48c which caused a regression for rendering inline MDX components and MDX files from content collections

@astrojs/react@4.1.3

Patch Changes

withastro/astro

Changes

  • fix error messages rendering incorrectly

before:
image

after:
I don't know how to test it.

Testing

Docs

This change will update docs

withastro/astro

Changes

The Starlog example was missing a viewport meta tag, which was causing issues on mobile devices (media queries not working properly):

image

Adding a default one fixes the issue:

image

Note: I haven't included achangeset as it was said they're not needed for examples.

Testing

By emulating mobile device on Chrome (Toggle device toolbar in dev tools) and on a personal website 🙂
No tests added as this is an example template.

Docs

No updates or changes required - it affects only Starlog example users on mobile devices.

withastro/astro

Changes

This is another fix in the saga of data store race conditions. When we changed the dev fs watcher to not start watching the data store file until after the content layer sync was complete, it was meanign that in some scenarios, newly-created data store files were not triggering a module reload. This PR adds a manual module invalidation at the same time as adding the file to the watcher.

Fixes #12866

Testing

This can't be reproduced when using pnpm (for some unclear reason), but I have manually tested it with the #12866 repro, using npm.

Docs

withastro/astro

Changes

Closes #12931
Closes PLT-2736

The issue was that doing oldRequest.headers during a rewrite was causing the warning to fire, because it triggers the .get method.

This is fixed now by checking the isPrerendered flag.

Also, I updated the method copyRequest to use the internal method copyRequest, which creates the headers object based on isPrenredererd. This should fix cases (not caught, probably) where users could have used Request.headers during a rewrite.

Testing

I tested it locally using the reproduction provided.

Docs

N/A

withastro/astro

Changes

  • pass the original locals data to the render function of 404 pages
  • fixing #12821 (applies to all type of contexts for 404 pages, not only cloudflare)

Docs

  • no doc update required because this is probably expected behavior
withastro/astro

Changes

Closes #12669
Closes PLT-2733

The main issue was that the astro container runtime was pulling vite code, which is a forbidden behaviour. I managed, somehow, to understand that the code that was pulling vite code was coming from manifest/create.ts, so one of its modules (or modules of modules) was imported, eventually importing a runtime vite function.

Unfortunately, I couldn't understand what's the culprit, so instead, I decided to move the functions needed by the container into two separate files.

Also, I tried to remove any occurrence of normalizePath from vite, and used our internal version, which is the same. That should reduce these mistakes in the future.

Testing

I used the production provided, which I didn't build. Now it builds

Docs

N/A

withastro/astro

Changes

Fix #11656

The core of the issue is that sometimes Markdoc AST may return arrays within arrays (in node.children), e.g. in if tags, content within the if tag are grouped as an array. This PR handles that and refactors the rendering code slightly.

Testing

Added tests

Docs

n/a. bug fix

withastro/astro

Changes

Fix biome correctness checks so CI doesn't show them

Testing

n/a

Docs

n/a

withastro/astro

Changes

Closes PLT-2724
Closes #12847

There are two issues:

  • we decoded the pathname multiple times
  • we didn't decode the pathname early in all the pipelines

I tracked down the issue and fixed, I also added some comments to help developers with the code.

Testing

Added a new test to cover the issue that we fixed

Docs

N/A

withastro/astro

Changes

Store remote images in the cache as a standalone file instead of encoding the file as base64 inside of a json file.

  • This improves the storage size of the image cache, as well as decreasing the performance overhead involved in encoding, decoding, reading and writing the base64 blob to a json file.

Automatically upgrade remote cached images to the new format.

  • I've added some extra code to decode images in the old format and write them in the new format. This is optional - removing this section will cause the images to be re-downloaded instead of converted.

Testing

Ran pnpm run test:match "image"

Updated the 'has cache entries' test in core-image.test.js as the change caused it to fail.
The test assumes that .webp.json and .webp files would each result in an output image, however after this change the cache contains two files per remote image leaving the test expecting duplicate outputs. The json files are no longer globbed and are ignored by this test.

Docs

This change should be transparent and not affect behaviour.

withastro/astro

Changes

Responsive images need to include global styles, and currently these are being included even if responsive images are not enabled. This PR adds wrapper components that just add the styles to the main component, and conditionally export these according to whether the flag is enabled. This is temporary until the feature is unflagged.

Alongside #12921, this fixes #12868

Testing

Adds tests to ensure the styles aren't added to sites without the flag enabled. There are existing tests that check that they are added to pages that do have them enabled.

This also adds tests to the MDX integration that were needed for #12921 and are now possible. These check whether the styles are being applied to pages with no images.

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.30.6

Patch Changes

  • #2722 0b206d3 Thanks @techfg! - Fixes display of long site title on mobile

  • #2762 7ab1576 Thanks @HiDeoo! - Prevents the header title from being translated by automatic translation systems.

withastro/astro

Changes

  • Closes PLT-2732
  • Updates the API to accept routes from astro:routes:resolved and assets from astro:build:done
  • Doesn't use config.output as a fallback anymore

Testing

Updated, will need a preview release to test against the adapters repo

Docs

Undocumented, changeset

withastro/astro

Changes

fix #12896
ref #12735 (revert)

  • React: @vitejs/plugin-react will add optimizeDeps.include themselves
  • Vue: Added a comment of why we manually add vue to optimizeDeps.include
  • Solid: Different issue, but I noticed that we don't optimize @astrojs/solid-js/client.js by default like how the other integrations do.

I didn't do this for Preact as we're still pinning to an older version, but once we can update to the latest (tracked #12805), we can also do the same here for it.

Testing

Existing tests should pass

Docs

n/a. bug fix.

withastro/starlight

Description

This PR adds the translate attribute to the header site title to indicates that the element must not be translated.

Although not all browsers recognize this attribute, it is respected by automatic translation systems such as Google Translate, and may also be respected by tools used by human translators. As such it's important that web authors use this attribute to mark content that should not be translated.

For example, commenting the logo configuration option in the Astro config of the Starlight Docs and asking Google Translate to translate the English version of the website to French will result in the following:

SCR-20250107-ovfr

After this PR, the header site title will no longer be translated:

SCR-20250107-ovia
withastro/astro

Changes

Improve static asset generation performance by removing the await in the for loop. This change will allow the p-queue concurrency to limit the number of parallel tasks. Previously, the await in the for loop would cause all asset generation tasks to run serially.

core/build/generate.ts:

for (const [originalPath, transforms] of staticImageList) {
-	await generateImagesForPath(originalPath, transforms, assetsCreationPipeline, queue);
+	queue.add(() => generateImagesForPath(originalPath, transforms, assetsCreationPipeline));
}
await queue.onIdle();
  • Do not await in this for loop so that tasks can execute based on the p-queue concurrency.
  • Do not pass queue to generateImagesForPath.

assets/build/generate.ts:

for (const [_, transform] of transformsAndPath.transforms) {
-	await queue.add(async () => generateImage(transform.finalPath, transform.transform));
+	await generateImage(transform.finalPath, transform.transform);
}
  • Continue processing transforms for a single image serially.
  • Do not queue.add here, prevents unintentional adding to the queue after we expect the queue to be complete await queue.onIdle();

Fixes #12845

Design Decision:

We have 3 source images (A.png, B.png, C.png) and 3 transforms for each:

A1.png A2.png A3.png
B1.png B2.png B3.png
C1.png C2.png C3.png

Option 1

Enqueue all transforms indiscriminantly

|_A1.png   |_B2.png   |_C1.png
|_B3.png   |_A2.png   |_C3.png
|_C2.png   |_A3.png   |_B1.png
  • Advantage: Maximum parallelism, saturate CPU
  • Disadvantage: Spike in context switching

Option 2

Enqueue all transforms, but constrain processing order by source image

|_A3.png   |_B1.png   |_C2.png
|_A1.png   |_B3.png   |_C1.png
|_A2.png   |_B2.png   |_C3.png
  • Advantage: Maximum parallelism, saturate CPU (same as Option 1) in hope to avoid context switching
  • Disadvantage: Context switching still occurs and performance still suffers

Option 3

Enqueue each source image, but perform the transforms for that source image sequentially

\_A1.png   \_B1.png   \_C1.png
 \_A2.png   \_B2.png   \_C2.png
  \_A3.png   \_B3.png   \_C3.png
  • Advantage: Less context switching
  • Disadvantage: If you have a low number of source images with high number of transforms then this is suboptimal.

Best Option:

Option 3. Most projects will have a higher number of source images with a few transforms on each. Even though Option 2 should be faster and should prevent context switching, this was not observed in nascent tests. Context switching was high and the overall performance was half of Option 3.

If looking to optimize further, please consider the following:

  • Avoid queue.add() in an async for loop. Notice the await queue.onIdle(); after this loop. We do not want to create a scenario where tasks are added to the queue after queue.onIdle() resolves. This can break tests and create annoying race conditions.
  • Exposing a concurrency property in astro.config.mjs to allow users to override Node’s os.cpus().length default.
  • Create a proper performance benchmark for asset transformations of projects in varying sizes of source images and transforms.

Testing

No additional tests required.

Docs

Static asset generation performance should increase by os.cpus().length in most Astro projects with assets.

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.30.5

Patch Changes

  • #2757 e7b0e74 Thanks @HiDeoo! - Fixes a UI string translation issue for languages with a region subtag.

  • #2760 aec9edd Thanks @HiDeoo! - Adds 5 new icons: left-caret, up-arrow, down-arrow, download, and cloud-download.

withastro/astro

Changes

Currently the rehype plugin checks if imagePaths is defined when deciding whether to inject the Image import. However since Astro 5, imagePaths is always defined, so the import was always being injected. This PR changes it to check if the list is empty.

Testing

There's a separate issuue related to responsive images that makes this hard to test correctly right now. I'll add tests as part of that.

Docs

withastro/starlight

Description

As discussed on Discord, this PR adds new icons to the Starlight icon set:

Ran all SVGs through SVGOMG to optimize them.

withastro/astro

Changes

fix #12800

Process empty markdown content as remark or rehype plugins may add content or frontmatter that may be used by end-users.

Testing

Added a new test

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

@astrojs/underscore-redirects@0.6.0

Minor Changes

  • #12924 3caa337 Thanks @florian-lefebvre! - Updates how the output is determined in createRedirectsFromAstroRoutes. Since v0.5.0, the output would use the buildOutput property and config.output as a fallback. It no longer uses this fallback.

  • #12924 3caa337 Thanks @florian-lefebvre! - Updates the input requirements of createRedirectsFromAstroRoutes:

    • routeToDynamicTargetMap keys are IntegrationResolvedRoute instead of IntegrationRouteData (obtained from the astro:routes:resolved hook)
    • There's a new assets property, that can be obtained from the astro:build:done hook
    function myIntegration() {
      let routes;
      let buildOutput;
      let config;
    
      return {
        name: 'my-integration',
        hooks: {
          'astro:routes:resolved': (params) => {
            routes = params.routes;
          },
          'astro:config:done': (params) => {
            buildOutput = params.buildOutput;
            config = params.config;
          },
          'astro:build:done': (params) => {
            const redirects = createRedirectsFromAstroRoutes({
              config,
              buildOutput,
              routeToDynamicTargetMap: new Map(routes.map((route) => [route, ''])),
              dir: params.dir,
              assets: params.assets,
            });
          },
        },
      };
    }

astro@5.1.4

Patch Changes

  • #12927 ad2a752 Thanks @ematipico! - Fixes a bug where Astro attempted to decode a request URL multiple times, resulting in an unexpected behaviour when decoding the character %

  • #12912 0c0c66b Thanks @florian-lefebvre! - Improves the config error for invalid combinations of context and access properties under env.schema

  • #12935 3d47e6b Thanks @AirBorne04! - Fixes an issue where Astro.locals coming from an adapter weren't available in the 404.astro, when using the astro dev command,

  • #12925 44841fc Thanks @ascorbic! - Ensures image styles are not imported unless experimental responsive images are enabled

  • #12926 8e64bb7 Thanks @oliverlynch! - Improves remote image cache efficiency by separating image data and metadata into a binary and sidecar JSON file.

  • #12920 8b9d530 Thanks @bluwy! - Processes markdown with empty body as remark and rehype plugins may add additional content or frontmatter

  • #12918 fd12a26 Thanks @lameuler! - Fixes a bug where the logged output path does not match the actual output path when using build.format: 'preserve'

  • #12676 2ffc0fc Thanks @koyopro! - Allows configuring Astro modules TypeScript compilation with the vite.esbuild config

  • #12938 dbb04f3 Thanks @ascorbic! - Fixes a bug where content collections would sometimes appear empty when first running astro dev

  • #12937 30edb6d Thanks @ematipico! - Fixes a bug where users could use Astro.request.headers during a rewrite inside prerendered routes. This an invalid behaviour, and now Astro will show a warning if this happens.

  • #12937 30edb6d Thanks @ematipico! - Fixes an issue where the use of Astro.rewrite would trigger the invalid use of Astro.request.headers

@astrojs/mdx@4.0.4

Patch Changes

  • #12921 aeb7e1a Thanks @ascorbic! - Fixes a bug that caused Image component to be imported on MDX pages that did not include images

  • #12913 9a3b48c Thanks @bluwy! - Makes internal check() function a no-op to allow faster component renders and prevent React 19 component warnings

withastro/starlight

Description

This PR fixes an issue for languages with a region subtag (e.g. zh-CN) where custom UI strings are not properly translated. On top of the linked issue, this issue is also visible in https://starlight.astro.build/zh-cn/components/asides/ where the component.preview label shows "Preview" instead of "预览" even tho a translation exists (same page in the deploy preview link to compare and see the fix).

The issue is related to the fact that the loadTranslations() function loading user translations was not properly updated for Astro v5 changes regarding the id property, which means our userCollections dictionary would contain an zh-cn key instead of zh-CN.

This PR fixes the issue by using the new filePath property instead of the old id property when not using legacy collections.

We had tests supposed to cover this, unfortunately, like I missed this spot during the Astro v5 migration, I also missed updating our mocking helper for dictionaries (mockDict()) like I did for documents (mockDoc()) so everything was passing even tho the issue was present.

withastro/astro

Changes

  • fixes #12910
  • handle build.format: 'preserve' case when logging output path to ensure logged path actually paths the output path
  • previously the getOutputFilename util only did a check for 'file' build format, and otherwise always returned the path as if it was with 'directory' build format

Testing

change is just a logging change which was tested using one of the examples

Docs

no need for docs update

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.30.4

Patch Changes

  • #2747 474c27e Thanks @bbag! - Ensures <Tab> component toggling is stable when smooth scrolling is enabled via custom CSS

  • #2740 0e169c9 Thanks @HiDeoo! - Fixes an issue preventing Pagefind to be disabled using the pagefind frontmatter field.

  • #2732 a10b466 Thanks @Sidnioulz! - Adds Storybook, Confluence and Jira social icons

withastro/astro

Changes

fix #12802

Not completely fixing React 19 support yet, but I think a good step with other perf too.

Testing

Existing tests, especially mdx, should pass

Docs

n/a. refactor

withastro/astro

Changes

  • Improves the config error for invalid combinations of context and access properties under env.schema

Testing

Added test

Docs

N/A

withastro/astro

Changes

  • Closes #12901
  • We only generate a reference instead of the stub, which was overriding the generated types in rare cases

Testing

Should pass

Docs

N/A

withastro/astro

Changes

  • Fixes a regression from #12597

Testing

N/A

Docs

N/A

withastro/astro

Changes

Since #12709, pages that return an empty array from getStaticPaths match every path. This is incorrect, so this PR restores the previous behaviour where an empty list would match no paths.

Fixes #12891

Testing

Adds test

Docs

withastro/astro

Changes

  • In #11271 I used the wrong type for force (copy paste ftw)

Testing

N/A

Docs

N/A

lin-stephanie/astro-antfustyle-theme

Description

  • Support automatic highlighting of corresponding item in Toc based on user's browsing position
  • Ref: #6
withastro/astro

Changes

This PR improves the error messages for IDs in content collections.

IDs in content collections have always been required to be strings, however the error message when passing (for example) a number would look like this:

[ContentLoaderInvalidDataError] todos entry is missing an ID.
Entry missing ID:
{
  "userId": 1,
  "title": "delectus aut autem",
  "completed": false
}

This would even be the case if the original entry looked like this:

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

This PR changes these error messages so that they throw a new and more verbose AstroError based on the Zod validation.
For this to work, the parsing logic had to be moved from the functions return type schema to an external schema, and the validation had to be moved into the simpleLoader function itself due to performance issues with Zod when using z.function().returns(...).

Testing

The changes in this PR should be covered by the existing tests as no behavior has been added or changed.

Docs

/cc @withastro/maintainers-docs for feedback!

A docs PR has been made here

withastro/astro

Changes

  • Adds warnings to all common JSX renderer integrations if multiple known JSX renderer integrations are used at the same time. This is meant to combat the common mistake of not setting the include or exclude options when using multiple UI frameworks together.

Testing

As this is just a warning printed to console, no tests have been added.

Docs

As this is just a warning printed to console, no docs have been added.

withastro/astro

Changes

The generated astro:content runtime includes a render function, which has types that are created using typegen. However these types are missing from the stub types used before the first sync. This PR adds a stub declaration.

Fixes #12837

Testing

Tested a preview build. It's hard to test in the monorepo because it tends to find random content.d.ts files scattered throughout the repo.

Docs

withastro/astro

Changes

  • Fixes #12881 by saving a clone of the set()'d object at time of set()
  • Refactor unflatten and stringify so that the stringify check works for URL objects

I chose to use parse(stringify(value)) instead of anything like structuredClone or trying to get fancy with the store to ensure correctness, the extra parse should not be a significant performance issue unless people start storing pathologically large session data.

Testing

Added a new test in sessions.test.js that fails on main and succeeds on this branch.

That test could probably use a helper function to maintain a "cookie jar" for session, but I don't quite know the cleanest way to do that.

Docs

No update necessary, just a bugfix. However if the powers that be decide #12881 is wontfix, the docs definitely need to be updated to remind users to clone their objects before calling set, or be careful with updating them after doing so.

withastro/starlight

Description

  • Closes: #2746

  • What does this PR change? Give us a brief description.
    This ensures the scroll behavior will be instant as expected whenever clicking a synced tab triggers a window scroll, which fixes the odd "smooth scroll jump" on Starlight sites which use html { scroll-behavior: smooth; } in their global CSS. This provides a nicer UX on sites which use smooth scrolling, where e.g. clicking an item in the ToC smooth scrolls to that section on the page, but clicking a new synced tab doesn't cause an awkward jump as it scrolls to the new tab's position. It should be a non-breaking change to existing Starlight sites since the default scroll behavior is already instant. 🙂

  • Did you change something visual? A before/after screenshot can be helpful.
    Nope, just a tiny quality-of-life improvement for tabs on pages which use smooth scrolling!

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.1.3

Patch Changes

  • #12877 73a0788 Thanks @bluwy! - Fixes sourcemap warning generated by the astro:server-islands Vite plugin

  • #12906 2d89492 Thanks @ascorbic! - Fixes a bug that caused pages that return an empty array from getStaticPath to match every path

  • 011fa0f Thanks @florian-lefebvre! - Fixes a case where astro:content types would be erased when restarting the dev server

  • #12907 dbf1275 Thanks @florian-lefebvre! - Fixes a regression around the server islands route, which was not passed to the adapters astro:build:done hook

  • #12818 579bd93 Thanks @ascorbic! - Fixes race condition where dev server would attempt to load collections before the content had loaded

  • #12883 fbac92f Thanks @kaytwo! - Fixes a bug where responses can be returned before session data is saved

  • #12815 3acc654 Thanks @ericswpark! - Some non-index files that were incorrectly being treated as index files are now excluded

  • #12884 d7e97a7 Thanks @ascorbic! - Adds render() to stub content types

  • #12883 fbac92f Thanks @kaytwo! - Fixes a bug where session data could be corrupted if it is changed after calling .set()

  • #12827 7b5dc6f Thanks @sinskiy! - Fixes an issue when crawlers try to index Server Islands thinking that Server Islands are pages

@astrojs/underscore-redirects@0.5.1

Patch Changes

withastro/astro

Changes

Fix sourcemap warning in server islands plugin

fix #12703

Testing

tested manually

Docs

n/a. bug fix

withastro/astro

Changes

fix #12662

While it's still in beta, I think it's probably the best middleground to make the vitest template work ootb as its the main supported version that works with Vite 6.

Also this fixes the CI fail in main for the vitest example typecheck.

Testing

CI should pass. Also ran the test in with-vitest manually and worked.

Docs

n/a

withastro/astro

Changes

When emulating legacy collections, entries have extra fields applied, such as slug and the render function. Currently getCollection filter functions are being passed the non-emulated version of the entry. This PR ensures that the entry is the same one that is returned from the collection.

Fixes #12873

Testing

Added a test case

Docs

withastro/astro

Changes

  • What does this change?

Ensures that session IDs get regenerated when regenerate() is called. This fixes #12863.

  • Don't forget a changeset! pnpm exec changeset

Testing

Built astro with this change locally and ran it against https://stackblitz.com/edit/github-muwk6ati-gxwf5xkb?file=src%2Fpages%2Findex.astro and it functions as expected (new uuid shown on every refresh).

Docs

Docs should not be needed - this aligns the code's functionality with the current docs.

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
htmlparser2 ^9.1.0 -> ^10.0.0 age adoption passing confidence

Release Notes

fb55/htmlparser2 (htmlparser2)

v10.0.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.

🔕 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

  • Changed the frontmatter parsing in @astrojs/markdown-remark to accept TOML format
  • Uses +++ as the delimiters
  • Doesn't require configuration
    • If the TOML delimiters are used it will parse as TOML
    • Otherwise defaults to YAML

Testing

Updated the frontmatter.test.js file, adding TOML equivalent tests alongside the existing YAML tests. Worth noting that the TOML test run notably faster, owing to the faster parsing

Docs

This is certainly something that should be documented. It allows you to use TOML based frontmatter, which is particularly useful if migrating from Hugo or another system that preferred TOML and you don't want to convert potentially thousands of files.

Works for content collections, or with standalone markdown files.

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Changes

This fixes an issue where the RSS XML file generated by @astrojs/rss is displayed in plaintext due to a faulty Content-Type header by reverting the #12644 pull request.

For more information, you can view the #12828 issue that I filed.

Example screenshots

Before (current, Content-Type header is set to application/rss+xml; charset=utf-8 since astro@5.0.3)

msedge_t86IuPt0Pq

After (manually overriding the Content-Type header to application/xml which was the value used by @astrojs/rss before the PR change)

msedge_pumxsK772k

Testing

A reproducible example can be found here: https://codesandbox.io/p/devbox/kind-hugle-27v5l?on=codesandbox

Or, if you want to reproduce it yourself:

  • Go to https://astro.new and find the Blog template
  • Open the Blog template in CodeSandbox
  • Visit the /rss.xml RSS XML page

You should see the XML page being displayed in plaintext.

Reproducible example screenshot for the "Blog" Template in CodeSandbox

msedge_4MsvTN5VE4

withastro/astro

Changes

Sets X-Robots-Tag: noindex to Server Island headers

Fixes #12806

Testing

Added tests that check X-Robots-Tag: noindex of Server Island in both production and development environments

Docs

No changes needed? This just fixes a bug

withastro/starlight

Description

This PR fixes an issue preventing to disable Pagefind using the pagefind frontmatter field.

With the Astro 5 change to non-boolean HTML attribute values, disabling pagefind using the pagefind frontmatter field would render data-pagefind-body="false" in the HTML instead of omitting the attribute entirely.

withastro/astro

Changes

Currently we're not passing any options to cookie.delete() when destroying a session. This was meaning the cookie wasn't being properly deleted, because when created it passes some default options.

This PR ensures that the same options are passed to both create and delete the cookie.

This bug was reported in a comment on the RFC

Testing

Added test cases

Docs

withastro/astro

Changes

Currently the dev server was started before content layer sync. This caused race conditions such as #12773, where the dev server would try to load a collection before it had synced.
This PR switches the order, waiting for the sync to complete before starting the dev server.

Fixes #12773
Fixes #12866

Testing

Tested with snapshot release.

The PR also has some changes to e2e tests. It seems that quite a few tests relied on the fact that the ordering of the content layer sync gave a bit of time after the dev server started before starting running tests. With this PR there's no longer that delay, causing some test failures. This PR adds a short delay in the test utils after the dev server starts so that the tests pass again.

Docs

withastro/astro

Changes

Myself and @HiDeoo found an issue in his starlight-blog, which I encountered when using the integration in the Biome website.

There are cases now where the resolved paths from rollup contain a query parameter in their URL. This breaks some cases, and this was one of them.

We fixed a similar bug before .

Testing

I tested it with the project where I found the issue. It works now

Docs

N/A

withastro/astro

The previous code would cause file names like index.xml.ts to be treated as index files, when they aren't (the file basename excluding the extension .ts is index.xml, and index should be the index file). To match index files only, match the entire first half of the basename when splitting by the last occurrence of the period/file extension delimiter.

Pedantically this might not be correct -- i.e. some file extensions actually span multiple delimiters, like index.tar.gz. But in that case it's not an index file as well, so I think this is fine.

Fixes #12675

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

This was tested with my website repository that I'm using to migrate to Astro. This may need more tests to make sure it is not a breaking change.

Docs

Possibly -- files that were considered index files may not be and vice versa. Although I think this change should only include files that were previously excluded by the .startswith("index.") check.

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Changes

Astro adds a log when a file isn't created when a Response has not body

Testing

Screenshot 2024-12-23 at 11 14 05

Docs

/cc @withastro/maintainers-docs for feedback!

lin-stephanie/astro-antfustyle-theme

Description

  • Add FEATURE.slideEnterAnim for global slide enter animation control and speed configuration
  • Update BaseLayout to manage data-no-sliding and animation speed via slideEnterAnim
  • Update StandardLayout with isCentered prop, slot-based layout control, and remove redundant styles
  • Remove WideLayout by merging styles into StandardLayout
  • Modify main.css to disable or exclude slide enter animation
  • Unify the slide enter animation's enterStep to 60ms for consistency
withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@preact/signals (source) ^1.3.0 -> ^2.0.0 age adoption passing confidence
@preact/signals (source) 1.3.0 -> 2.0.0 age adoption passing confidence

Release Notes

preactjs/signals (@​preact/signals)

v2.0.0

Compare Source

Major Changes
  • #​604 fea3e8d Thanks @​JoviDeCroock! - Defer all DOM updates by an animation frame, this should make it so
    that any previously synchronous DOM update will be instead delayed by an
    animation frame. This allows Preact to first perform its own render
    cycle and then our direct DOM updates to occur. These will now
    be performed in a batched way which is more performant as the browser
    is prepared to handle these during the animation frame.

    This does impact how Preact based signals are tested, when
    you perform a signal update, you'll need to wrap it in act. In a way
    this was always the case, as a signal update that resulted in
    a Preact state update would require it to be wrapped in act, but
    now this is the norm.

Minor Changes
Patch Changes
  • #​609 8e6e2de Thanks @​JoviDeCroock! - Change timing to a double microtask so we are behind the Preact render queue but can't delay as much as a user-input coming in.

v1.3.1

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 these updates 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

  • This PR fixes an issue where the client-side script injected for server islands would fail if the content-type header was modified from an external source, for example a reverse proxy.

Testing

  • Added a new server island to the server islands tests which sets a header with a media type. The test checks if the island gets inserted even with the media type present (content-type: text/html;charset=utf-8). Normal cases are automatically handled by the other server islands which do not set the header and instead have the default header (content-type: text/html)

Docs

No docs needed as this is a bug fix and doesn't change the default behavior.

withastro/starlight

Description

  • Updates our development versions of Astro to 5.1.1
  • Updates the minimum supported of Astro to 5.1.0
  • This bump is needed for both #2708 and #157
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/underscore-redirects@0.5.0

Minor Changes

astro@5.1.2

Patch Changes

  • #12798 7b0cb85 Thanks @ascorbic! - Improves warning logs for invalid content collection configuration

  • #12781 96c4b92 Thanks @ascorbic! - Fixes a regression that caused default() to not work with reference()

  • #12820 892dd9f Thanks @ascorbic! - Fixes a bug that caused cookies to not be deleted when destroying a session

  • #12864 440d8a5 Thanks @kaytwo! - Fixes a bug where the session ID wasn't correctly regenerated

  • #12768 524c855 Thanks @ematipico! - Fixes an issue where Astro didn't print error logs when Astro Islands were used in incorrect cases.

  • #12814 f12f111 Thanks @ematipico! - Fixes an issue where Astro didn't log anything in case a file isn't created during the build.

  • #12875 e109002 Thanks @ascorbic! - Fixes a bug in emulated legacy collections where the entry passed to the getCollection filter function did not include the legacy entry fields.

  • #12768 524c855 Thanks @ematipico! - Fixes an issue where Astro was printing the incorrect output format when running the astro build command

  • #12810 70a9f0b Thanks @louisescher! - Fixes server islands failing to check content-type header under certain circumstances

    Sometimes a reverse proxy or similar service might modify the content-type header to include the charset or other parameters in the media type of the response. This previously wasn't handled by the client-side server island script and thus removed the script without actually placing the requested content in the DOM. This fix makes it so the script checks if the header starts with the proper content type instead of exactly matching text/html, so the following will still be considered a valid header: text/html; charset=utf-8

  • #12816 7fb2184 Thanks @ematipico! - Fixes an issue where an injected route entrypoint wasn't correctly marked because the resolved file path contained a query parameter.

    This fixes some edge case where some injected entrypoint were not resolved when using an adapter.

@astrojs/rss@4.0.11

Patch Changes

@astrojs/partytown@2.1.3

Patch Changes

  • #12822 1fab2f2 Thanks @stdavis! - Updates the partytown dependency to the new npm org name and latest version.

@astrojs/svelte@7.0.3

Patch Changes

  • #12776 8809b85 Thanks @aminevg! - Fixes an issue where TypeScript couldn't infer the correct types of the server.mjs file

@astrojs/vue@5.0.4

Patch Changes

  • #12776 8809b85 Thanks @aminevg! - Fixes an issue where TypeScript couldn't infer the correct types of the server.mjs file
withastro/astro

Changes

Upgrades Vite to pin esbuild because of evanw/esbuild#4010

Fixes #12796

Testing

Docs

lin-stephanie/astro-antfustyle-theme

Description

  • New /prs page
  • New astro-loader-github-prs dependency
  • Add a new button on the /projects page to navigate to /prs
withastro/astro

Changes

This makes a number of improvements to logging for content layer config errors:

  • warns if glob base dir doesn't exist
  • warns if glob matches no files
  • updates warning for empty collection to be more accurate in content layer era
  • logs a warning if there's an error when loading content config

Fixes #12795

Testing

Added tests

Docs

withastro/starlight

Description

Adds three icons: Storybook, Confluence and Jira

image

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.1.1

Patch Changes

@astrojs/db@0.14.5

Patch Changes

@astrojs/alpinejs@0.4.1

Patch Changes

@astrojs/markdoc@0.12.4

Patch Changes

@astrojs/mdx@4.0.3

Patch Changes

@astrojs/preact@4.0.1

Patch Changes

@astrojs/react@4.1.2

Patch Changes

@astrojs/solid-js@5.0.1

Patch Changes

@astrojs/svelte@7.0.2

Patch Changes

@astrojs/tailwind@5.1.4

Patch Changes

@astrojs/vue@5.0.3

Patch Changes

@astrojs/studio@0.1.3

Patch Changes

withastro/astro

Changes

Fixes a regression where the glob loader is passing the parsed data to the markdown renderer, rather than raw frontmatter. This was breaking plugins.
Fixes #12778

Testing

Add new fixture and test

Docs

withastro/astro

Changes

update JSDoc in packages/astro/src/types/public/common.ts

                next: string | undefined;
                /** url of the first page (if the current page is not the first page) */
                first: string | undefined;
-               /** url of the next page (if the current page in not the last page) */
+               /** url of the last page (if the current page is not the last page) */
                last: string | undefined;
        };
 }
  • 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

I don't think test is needed for this change.

Docs

withastro/astro

Changes

Currently the transform used in reference() is async. This was a change with content collections to allow the store to be loaded. However this caused an issue during JSON schema generation when combined with default(). See withastro/docs#10362 where this reported as part of a docs PR.

This PR updates the transform to instead preload the store and then make the transform itself sync.

Testing

Updated fixture to use the reference().default() syntax that previously broke.

Docs

withastro/astro

This is not against main

Changes

  • Closes PLT-2718
  • Adds some preliminary code to handle passing font providers and families

Testing

Adds some types and config tests

Docs

N/A

withastro/astro

Changes

When using Astro's container API outside of vite/vitest, renderers have to be manually imported and stored inside the container (as per docs).

import reactRenderer from "@astrojs/react/server.js";
import vueRenderer from "@astrojs/vue/server.js";
import mdxRenderer from "@astrojs/mdx/server.js";

const container = await experimental_AstroContainer.create();
container.addServerRenderer({renderer: vueRenderer});
container.addServerRenderer({renderer: mdxRenderer});

container.addServerRenderer({ renderer: reactRenderer });
container.addClientRenderer({ name: "@astrojs/react", entrypoint: "@astrojs/react/client.js" });

However, importing the Vue and Svelte server renderers results in a Typescript error:

import reactRenderer from "@astrojs/react/server.js"; // no error
import vueRenderer from "@astrojs/vue/server.js"; // error: 'vueRenderer' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.
import svelteRenderer from "@astrojs/svelte/server.js"; // error: 'vueRenderer' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.

const container = await experimental_AstroContainer.create();
container.addServerRenderer({renderer: reactRenderer}); // no error
container.addServerRenderer({renderer: vueRenderer}); // error: Argument of type '{ renderer: any; }' is not assignable to parameter of type 'AddServerRenderer'.
container.addServerRenderer({renderer: svelteRenderer}); // error: Argument of type '{ renderer: any; }' is not assignable to parameter of type 'AddServerRenderer'.

This PR fixes the Vue & Svelte server renderer types (server.d.ts) to be more in line with React's types and fix the Typescript errors.

Testing

This was tested with a local project using the above code snippets.
(Could a test be written for the types?)

Docs

No documentation change needed as far as I can tell.

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 4-legacy, this PR will be updated.

Releases

astro@4.16.18

Patch Changes

withastro/starlight

Description

  • This PR updates Starlight’s Pagefind dependency to 1.3.0.
  • Thanks to CloudCannon/pagefind#745 we can now forward Astro’s logging level to Pagefind to reduce (or increase) log verbosity in line with user preference.
  • This PR tweaks Pagefind’s default ranking options to preserve result quality, based on testing with Starlight’s own docs site. We ended up going with the config developed for git-scm.com.
  • It also exposes Pagefind’s ranking configuration for users who want to tweak it.
To-do
  • Consider the bundle size changes
withastro/starlight

Description

  • Closes #2699
  • What does this PR change? Changes the icon used when the menu is open to close ("X") to improve the visual indication that the behavior of clicking the button is different. The current approach is to change the background color and drop the box shadow, however darkening the button gives the appearance that the button is disabled and dropping the box shadow is difficult to discern in dark theme. The state of the button is not changing when the menu opens/closes, only its behavior is which is more commonly represented with a change in icon vs. a change in style.
  • Did you change something visual? A before/after screenshot can be helpful.

Dark Theme

Open Closed
Current image image
Proposed image image

Light Theme

Open Closed
Current image image
Proposed image image
withastro/starlight

Description

image

withastro/starlight

Description

This PR should allow 'farcaster' to be used as an option in the social icons schema. This is so that starlight users can add a social link to their farcaster site (eg. warpcast) like so:

social: {
    ...
    farcaster: 'https://warpcast.com/@someone`
}

Do I need to add a changeset..?

withastro/starlight

Description

  • Closes #2715
  • What does this PR change? Ensure that when site title logo/text extends beyond viewport, the search icon is visible and the mobile menu toggle does not overlay the site title text/logo.
  • Did you change something visual? A before/after screenshot can be helpful.

Splash

  • Before
    image
  • After
    image

Doc

  • Before
    image
  • After
    image
withastro/astro

Changes

  • Adds errors logs when Astro Islands are incorrectly used
    • Absence of an adapter
    • Incorrect buld output
  • Fixes the logs, where the output format was incorrect
  • Adds a new parameter to underscore-redirects package. Since config.output isn't reliable anymore, I added a new field, so we can update the adapters to pass the correct value

Testing

I tested the logs locally.

Docs

/cc @withastro/maintainers-docs for feedback!

withastro/astro

Changes

Currently the content layer cache is invalidated if the content config or Astro version changes. However this causes problems if there are changes in the Astro config that also affect the stored data. This can include things like markdown settings, but potentially lots of other things.

The apporach this PR takes is to hash everything except integrations, adapters and vite config. It switches the digest function to use a safe stringify function in case the Astro config includes circular refs.

Closes #12761

Testing

Adds a test case

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.30.3

Patch Changes

  • #2717 c5fcbb3 Thanks @delucis! - Fixes a list item spacing issue where line break elements (<br>) could receive a margin, breaking layout in Firefox

  • #2724 02d7ac6 Thanks @dionysuzx! - Adds social link support for Farcaster

  • #2635 ec4b851 Thanks @HiDeoo! - Fixes an issue where the language picker in multilingual sites could display the wrong language when navigating between pages with the browser back/forward buttons.

  • #2726 e54ebd5 Thanks @techfg! - Adds icon for phone

withastro/starlight

Description

  • Firefox renders margins applied to <br> unlike other browsers.

  • We had a style which unintentionally applied margin-bottom to <br> inside list items, which would cause odd spacing in lists only in Firefox. For example, in the Astro docs:

    unordered list with irregular spacing of items

  • This PR fixes this by excluding <br> from that style, and also adds <code> to avoid the same issue impacting list items with a last child that is an inline code element.

withastro/astro

…ld:setup hook when target is "client"

Changes

  • Make astro:build:setup hook actually consume and use the updated configuration provided by integrations using the updateConfig function when building for client target.

Testing

Manual tests only for now.

Docs

Complementary changes in docs by @ematipico on withastro/docs#10410
/cc @withastro/maintainers-docs

Closes #12372

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.1.0

Minor Changes

  • #12441 b4fec3c Thanks @ascorbic! - Adds experimental session support

    Sessions are used to store user state between requests for server-rendered pages, such as login status, shopping cart contents, or other user-specific data.

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

    Sessions are available in on-demand rendered/SSR pages, API endpoints, actions and middleware. To enable session support, you must configure a storage driver.

    If you are using the Node.js adapter, you can use the fs driver to store session data on the filesystem:

    // astro.config.mjs
    {
      adapter: node({ mode: 'standalone' }),
      experimental: {
        session: {
          // Required: the name of the unstorage driver
          driver: "fs",
        },
      },
    }

    If you are deploying to a serverless environment, you can use drivers such as redis, netlify-blobs, vercel-kv, or cloudflare-kv-binding and optionally pass additional configuration options.

    For more information, including using the session API with other adapters and a full list of supported drivers, see the docs for experimental session support. For even more details, and to leave feedback and participate in the development of this feature, the Sessions RFC.

  • #12426 3dc02c5 Thanks @oliverlynch! - Improves asset caching of remote images

    Astro will now store entity tags and the Last-Modified date for cached remote images and use them to revalidate the cache when it goes stale.

  • #12721 c9d5110 Thanks @florian-lefebvre! - Adds a new getActionPath() helper available from astro:actions

    Astro 5.1 introduces a new helper function, getActionPath() to give you more flexibility when calling your action.

    Calling getActionPath() with your action returns its URL path so you can make a fetch() request with custom headers, or use your action with an API such as navigator.sendBeacon(). Then, you can handle the custom-formatted returned data as needed, just as if you had called an action directly.

    This example shows how to call a defined like action passing the Authorization header and the keepalive option:

    <script>
      // src/components/my-component.astro
      import { actions, getActionPath } from 'astro:actions';
    
      await fetch(getActionPath(actions.like), {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          Authorization: 'Bearer YOUR_TOKEN',
        },
        body: JSON.stringify({ id: 'YOUR_ID' }),
        keepalive: true,
      });
    </script>

    This example shows how to call the same like action using the sendBeacon API:

    <script>
      // src/components/my-component.astro
      import { actions, getActionPath } from 'astro:actions';
    
      navigator.sendBeacon(
        getActionPath(actions.like),
        new Blob([JSON.stringify({ id: 'YOUR_ID' })], {
          type: 'application/json',
        }),
      );
    </script>

Patch Changes

  • #12786 e56af4a Thanks @ematipico! - Fixes an issue where Astro i18n didn't properly show the 404 page when using fallback and the option prefixDefaultLocale set to true.

  • #12758 483da89 Thanks @delucis! - Adds types for ?url&inline and ?url&no-inline import queries added in Vite 6

  • #12763 8da2318 Thanks @rbsummers! - Fixed changes to vite configuration made in the astro:build:setup integration hook having no effect when target is "client"

  • #12767 36c1e06 Thanks @ascorbic! - Clears the content layer cache when the Astro config is changed

withastro/starlight

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:
image

After:
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/starlight

Description

  • Addresses a colour contrast issue reported in #2693
  • Expressive Code performs colour contrast correction automatically, but we had misconfigured a background colour setting, so Starlight’s default theme was not being properly taken into account in these calculations.
  • This PR fixes that and ensures code blocks have sufficient text contrast.
  • Shout out to @hippotastic for helping with the solution.
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.0.9

Patch Changes

withastro/astro

Changes

Testing

Docs

withastro/astro

Changes

  • Ensures .map files are removed that belong to the server code during the build.
  • Ported from:

Testing

  • Tests added

Docs

N/A, bug fix

withastro/astro

Changes

  • Logging added while working on bug but not removed!
  • Want to get a patch out so users don't see this.

Testing

  • N/A

Docs

  • N/A
withastro/astro

Changes

  • Adds a changeset that was forgotten in #12735
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.0.8

Patch Changes

@astrojs/react@4.1.1

Patch Changes

withastro/astro

Changes

  • During cleanup be sure to remove any .map files created from server JavaScript output. Otherwise these are left in and expose server source code to the client.

Testing

  • Added a new test to our basics fixture.

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.0.7

Patch Changes

withastro/astro

This reverts commit e6b8017.

This change caused source maps to be left in the client folder, exposing them into the server.


Reverting because the old logic was flawed in that it assumed that everything that gets put into the assets folder comes from inside of the vite build and is an "asset" type, but that's not true for sourcemaps. What other sorts of files might be created during the build that we are not cleaning?

lin-stephanie/astro-antfustyle-theme

Description

  • New TocButton comps: Show a button at the bottom-right for screens under 1024px to open TOC panel
  • Modify ToTopButton UI on mobile to align with TocButton
  • Adjust the slide enter animation settings to exclude the TocButton comp
withastro/astro

Changes

Temporarily removes the session.flash() feature. The plan is to re-introduce it a bit later once there has been a bit more work on the API

Testing

Docs

withastro/starlight

Description

  • Closes #2696
  • Adds space inside the title wrapper element to avoid clipping the site title focus indicator

Examples in Firefox, Safari, and Chrome respectively (macOS):

Browser Before After
Firefox Starlight site title with only one edge of the focus ring visible Starlight site title with focus ring fully visible
Safari Starlight site title with only one edge of the focus ring visible Starlight site title with focus ring fully visible
Chrome Starlight site title with only one edge of the focus ring visible Starlight site title with focus ring fully visible
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.30.2

Patch Changes

  • #2702 02d16f3 Thanks @HiDeoo! - Fixes an issue with autogenerated sidebars when using Starlight with Astro's new Content Layer API with directories containing spaces or special characters.

  • #2704 fd16470 Thanks @delucis! - Fixes display of focus indicator around site title

withastro/starlight

Description

This PR is very similar to #2688 but applies the same fix to user-defined autogenerated sidebar group whereas the previous PR only fixed the issue for the default autogenerated sidebar group.

For user-defined autogenerated sidebar groups, before calling treeify(), we filter routes but that filtering was always based on IDs. Similar to #2688, this PR computes an equivalent of legacy IDs before filtering routes when using a loader.

withastro/astro

Changes

  • Updated the upgrade messaging to show both current and target versions
  • Added arrow symbol (→) to visually represent the version change

Before:

@astrojs/tailwind can be updated to v5.1.3

After:

@astrojs/tailwind can be updated v4.0.0 → v5.1.3

Testing

Updated existing test suite by modifying test assertions to verify new message format

Docs

Should be self-explanatory

Additional

Coming from withastro/roadmap#1069

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.30.1

Patch Changes

  • #2688 5c6996c Thanks @HiDeoo! - Fixes an issue with autogenerated sidebars when using Starlight with Astro's new Content Layer API where group names would be sluggified.
withastro/starlight

Description

As reported on Discord, this PR fixes an issue with autogenerated sidebar when using Starlight with Astro's new Content Layer API where nested group names would be sluggified.

I made a mistake two times when porting the treeify() and getBreadcrumbs() functions to Astro v5, the first time when I implemented it and the second time when Chris asked me clarifications about the changes. I convinced myself that these functions were dealing with slugs instead of paths (legacy ID), which is not the case and makes no sense in retrospect.

This PR reverts the changes I made to these functions and now, when using a loader, before sorting and treeifying the routes, it computes a localized file path relative to the collection's root. This mimics the behavior of the legacy ID. I also added a test with an autogenerated sidebar for a folder containing uppercase letters and spaces to make sure it works as expected as we didn't have one before.

withastro/astro

Changes

Adds support for libraries publishing code pre-compiled with the React Compiler

Testing

Don't know enough about astro internals to add a test 🤷

Docs

Don't think docs need to change, support for react-compiler-runtime is just expected to work, same way the react/jsx-runtime is.

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@3.0.0

Major Changes

  • #2612 8d5a4e8 Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.30.0

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

    npx @astrojs/upgrade

Patch Changes

  • #2664 62ff007 Thanks @HiDeoo! - Publishes provenance containing verifiable data to link a package back to its source repository and the specific build instructions used to publish it.

@astrojs/starlight-docsearch@0.4.0

Minor Changes

  • #2612 8d5a4e8 Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.30.0

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

    npx @astrojs/upgrade

Patch Changes

  • #2664 62ff007 Thanks @HiDeoo! - Publishes provenance containing verifiable data to link a package back to its source repository and the specific build instructions used to publish it.

@astrojs/starlight-markdoc@0.2.0

Minor Changes

  • #2612 8d5a4e8 Thanks @HiDeoo! - ⚠️ BREAKING CHANGE: The minimum supported version of Starlight is now 0.30.0

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

    npx @astrojs/upgrade

Patch Changes

  • #2664 62ff007 Thanks @HiDeoo! - Publishes provenance containing verifiable data to link a package back to its source repository and the specific build instructions used to publish it.

@astrojs/starlight@0.30.0

Minor Changes

  • #2612 8d5a4e8 Thanks @HiDeoo! - Adds support for Astro v5, drops support for Astro v4.

    Upgrade Astro and dependencies

    ⚠️ BREAKING CHANGE: Astro v4 is no longer supported. Make sure you update Astro and any other official integrations at the same time as updating Starlight:

    npx @astrojs/upgrade

    Community Starlight plugins and Astro integrations may also need to be manually updated to work with Astro v5. If you encounter any issues, please reach out to the plugin or integration author to see if it is a known issue or if an updated version is being worked on.

    Update your collections

    ⚠️ BREAKING CHANGE: Starlight's internal content collections, which organize, validate, and render your content, have been updated to use Astro's new Content Layer API and require configuration changes in your project.

    1. Move the content config file. This file no longer lives within the src/content/config.ts folder and should now exist at src/content.config.ts.

    2. Edit the collection definition(s). To update the docs collection, a loader is now required:

       // src/content.config.ts
       import { defineCollection } from "astro:content";
      +import { docsLoader } from "@astrojs/starlight/loaders";
       import { docsSchema } from "@astrojs/starlight/schema";
      
       export const collections = {
      -  docs: defineCollection({ schema: docsSchema() }),
      +  docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
       };

      If you are using the i18n collection to provide translations for additional languages you support or override our default labels, you will need to update the collection definition in a similar way and remove the collection type which is no longer available:

       // src/content.config.ts
       import { defineCollection } from "astro:content";
      +import { docsLoader, i18nLoader } from "@astrojs/starlight/loaders";
       import { docsSchema, i18nSchema } from "@astrojs/starlight/schema";
      
       export const collections = {
      -  docs: defineCollection({ schema: docsSchema() }),
      +  docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
      -  i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
      +  i18n: defineCollection({ loader: i18nLoader(), schema: i18nSchema() }),
       };
    3. Update other collections. To update any other collections you may have, follow the “Updating existing collections” section in the Astro 5 upgrade guide.

    If you are unable to make any changes to your collections at this time, including Starlight's default docs and i18n collections, you can enable the legacy.collections flag to upgrade to v5 without updating your collections. This legacy flag exists to provide temporary backwards compatibility, and will allow you to keep your collections in their current state until the legacy flag is no longer supported.

Patch Changes

withastro/starlight

Description

  • Follow up to #2664 to fix the permission to create PRs
withastro/astro

Changes

There were some accessibility issues related to the labels of icons and buttons in our toolbar. This PR should fix it.

Testing

CI should pass

Docs

N/A

withastro/astro

Changes

Fixes a bug caused by the fact that new URL("//", "http://localhost") is invalid: it treats the double slash as an empty protocol-relative URL. This caused a 500 error if there was a request for http://localhost//. Now it handles that type of URL correctly, and also redirects to /. This redirect is only implemented for dev, because support for it in platforms is poor, and needs special handling. For that reason we can defer rto the adapters to handle it.

Fixes #12722

Testing

Adds tests

Docs

withastro/astro

Changes

The tailwind test suite became unstable, this PR should help with that.

Testing

All CI should be green

Docs

N/A

withastro/astro

Changes

  • Addresses #12727 by adding inert to htmlBooleanAttributes

Testing

No functional changes, just adding a missing boolean attribute to be handled in the correct manner.

Docs

Simply addresses a minor defect.

withastro/astro
withastro/starlight

Description

While working in a workflow that involves strict security requirements, I noticed that Starlight public packages do not include any provenance. This PR fixes that by adding a publishConfig block to public packages.

withastro/astro

Changes

  • Removes try/catch around sync in astro check
  • Closes #12724
  • Closes PLT-2709

Testing

Manually

Docs

withastro/starlight

This PR is auto-generated by a GitHub action to update the file icons and file tree definitions available in Starlight.

withastro/astro

Changes

  • Adds a new getActionPath() helper

Testing

Adds a test case

Docs

Changeset and withastro/docs#10353

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.0.6

Patch Changes

@astrojs/db@0.14.4

Patch Changes

withastro/astro

Changes

The data store has to write a number of different files to disk, which are in turn watched by the filesystem watcher. In some very large sites this was causing issues where the watcher would report the changed file before it had finished writing to disk.

This PR changes all data store file operations to use atomic writes: files are first written to a tmp dir, and then moved.

Fixes #12702

Testing

This is hard to reproduce. Tested manually using a reproduction with 50k pages and a deliberately shortened debounce time.

Docs

withastro/astro

Changes

Currently the markdown vite plugin just checks if the id ends in a makrdown extension. This breaks if the id includes a query param. This PR strips the query string before checking.

Fixes #12711

Testing

Added test

Docs

withastro/astro

Changes

Closes #12690

The middleware was always imported during the build, even before its execution.

This PR changes that by assigning a function that does the loading.

Testing

CI should pass. I created a new test case. In the test case the middleware imports a file that throws an error at runtime. In the test case the middleware isn't used because all pages SSR, so no errors should be thrown.

Docs

N/A

withastro/astro

Changes

@astrojs/upgrade checks if it's online by doign a DNS lookup for the registry host. This was broken for registries that have a port in the URL (mostly local ones like Verdaccio) because it was using url.host, which includes the port. This PR fixes that by using url.hostname.

Fixes #12660

Testing

Docs

withastro/astro

Changes

Escapes the genrated keys for content modules imports. They are keyed by the filename, which was meaning builds would fail if they contained some characters.

Testing

Added to fixture

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

@astrojs/react@4.1.0

Minor Changes

astro@5.0.5

Patch Changes

  • #12705 0d1eab5 Thanks @ascorbic! - Fixes a bug where MDX files with certain characters in the name would cause builds to fail

  • #12707 2aaed2d Thanks @ematipico! - Fixes a bug where the middleware was incorrectly imported during the build

  • #12697 1c4a032 Thanks @ascorbic! - Fix a bug that caused builds to fail if an image had a quote mark in its name

  • #12694 495f46b Thanks @ematipico! - Fixes a bug where the experimental feature experimental.svg was incorrectly used when generating ESM images

  • #12658 3169593 Thanks @jurajkapsz! - Fixes astro info copy to clipboard process not returning to prompt in certain cases.

  • #12712 b01c74a Thanks @ascorbic! - Fixes a bug which misidentified pages as markdown if a query string ended in a markdown extension

@astrojs/markdoc@0.12.3

Patch Changes

  • #12694 495f46b Thanks @ematipico! - Fixes a bug where the experimental feature experimental.svg was incorrectly used when generating ESM images

@astrojs/vue@5.0.2

Patch Changes

@astrojs/upgrade@0.4.2

Patch Changes

  • #12706 f6c4214 Thanks @ascorbic! - Fixes a bug that caused registry URLs that specify a port to be incorrectly detected as offline.
withastro/astro

Changes

Correctly quotes the imports for content layer images

Testing

Added to fixture

Docs

withastro/astro

Changes

Currently we're not correctly throwing when images can't be resolved, because we weren't awaiting the result of this.resolve. This meant resolution was failing in unexpected ways, leading to reports such as #12682

Testing

Docs

withastro/astro

Changes

A user that tried to upgrade to Astro v5 detected a memory leak during the build. The issue was discovered by @HiDeoo , and this PR fixes the issue.

The PR passes a boolean called experimentaSvgEnabled down to the three lines that cause the memory leak.

Testing

CI should pass

Docs

N/A

withastro/astro

Changes

Adds support for session data expiry. This includes:

  • a new ttl config option
  • support for a ttl argument to set
  • support for session.flash(), which expires the data after the next request

Testing

Added unit tests

Docs

withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@astrojs/node (source) ^8.3.4 -> ^9.0.0 age adoption passing confidence

Release Notes

withastro/adapters (@​astrojs/node)

v9.0.0

Compare Source

Major Changes
Minor 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
@types/react (source) ^18.3.12 -> ^19.0.3 age adoption passing confidence
@types/react-dom (source) ^18.3.1 -> ^19.0.2 age adoption passing confidence
react (source) ^18.3.1 -> ^19.0.0 age adoption passing confidence
react-dom (source) ^18.3.1 -> ^19.0.0 age adoption passing confidence

Release Notes

facebook/react (react)

v19.0.0

Compare Source

facebook/react (react-dom)

v19.0.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.

🔕 Ignore: Close this PR and you won't be reminded about these updates 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

Closes #12684

React 19 renamed react.element to react.transitional.element. (facebook/react#2881)

@astro/react is updated to take this the new name into account, in addition to supporting the previous one.

Testing

Ran automated tests on React 18.3.1. They still pass. Upgraded to React 19.0.0, then they all fail due to another issue. Using the build from this pr in the stackblitz from #12684 causes it to render fine.

Docs

No changes in user behavior.

withastro/starlight

Description

Related to #1701. There has been a comment expressing a concern about the accessibility of this redesign, but I'm not sure what exactly was the problem. However, I did find it helpful to increase the thickness of the highlight to make it visually stand out more. I tested without colors and still found it pretty easy to tell which entry is selected. However, I do not have any visual impairments, so my word should not be the last here.

This PR removes the bright background of a selected item in the left sidebar and replaces it with an accent text color and an accent line on the left.

Screenshots

Before, desktop:

LightDarkDark without sidebar BG
Scherm­afbeelding 2024-12-07 om 22 53 06 Scherm­afbeelding 2024-12-07 om 22 53 22 Scherm­afbeelding 2024-12-07 om 22 53 31
Scherm­afbeelding 2024-12-07 om 22 53 39 Scherm­afbeelding 2024-12-07 om 22 54 09 Scherm­afbeelding 2024-12-07 om 22 53 58

After, desktop:

LightDarkDark without sidebar BG
Scherm­afbeelding 2024-12-07 om 22 50 13 Scherm­afbeelding 2024-12-07 om 22 50 25 Scherm­afbeelding 2024-12-07 om 22 50 55
Scherm­afbeelding 2024-12-07 om 22 51 13 Scherm­afbeelding 2024-12-07 om 22 51 34 Scherm­afbeelding 2024-12-07 om 22 51 42

Mobile (dark version is identical to desktop):

Scherm­afbeelding 2024-12-07 om 22 55 02 Scherm­afbeelding 2024-12-07 om 22 55 25
withastro/starlight

Description

Related to #1701, but not explicitly proposed there. The original proposal suggests to increase the space between the social icons, but I believe the icons themselves should be larger too.

This PR changes the appearance of social icons and the icons in language/theme selects to be larger. It also increases the touch area of the social icons to align it with the touch area of selects (~44.5px on desktop, ~48px on mobile). Finally, it marginally increases the space between the icon and the label, just something that's been bugging me visually a little bit.

Screenshots

Desktop (light)

BeforeAfter
Scherm­afbeelding 2024-12-07 om 19 22 40 Scherm­afbeelding 2024-12-07 om 19 23 17

Desktop (dark)

BeforeAfter
Scherm­afbeelding 2024-12-07 om 19 22 46 Scherm­afbeelding 2024-12-07 om 19 23 23

Mobile (light)

BeforeAfter
Scherm­afbeelding 2024-12-07 om 19 21 17 Scherm­afbeelding 2024-12-07 om 19 16 59

Mobile (dark)

BeforeAfter
Scherm­afbeelding 2024-12-07 om 19 21 22 Scherm­afbeelding 2024-12-07 om 19 17 12
withastro/astro

Changes

Add React 19 as peer dependency so it can be installed without peer dependency flag

Testing

tested locally but React beta was already supported. This does not update the actual React dev dependency

Docs

does not require a doc update but allows user to upgrade to react 19 stable without peer dependency warnings

withastro/starlight

Description

Related to #1701

Again, building on HiDeoo's experience from the prototype, I made the header the same color as the background and then did the same for the sidebar in dark mode.

Screenshots

Desktop (light)

image

Desktop (dark)

image

Mobile (light)

image

image

image

Mobile (dark)

image

image

image

withastro/starlight

Description

Related to #1701

This PR changes the appearance of aside blocks to make them stand out less. This was done by changing the -low version of the color palette to be less prominent. This change also affected the Card component.

I based my changes off of HiDeoo's WIP branch, but left off some changes:

  • decided not to round the corners of asides, since this is something that should be done separately and consistently
  • decided not to reduce the icon size because it didn't seem necessary
  • instead of using color-mix to add transparency to existing -low colors, I decided to change the low colors to keep consistency
Screenshots of the before/after for asides and cards in dark/light mode
BeforeAfter
Asides (dark)imageimage
Asides (light)image image
Cards (dark) image image
Cards (light) image image
withastro/astro

Changes

I modified compileAstro to reflect the settings in viteConfig.esbuild.

This change ensures that when vite.esbuild.target is specified in the Astro config, it is reflected during the compilation of Astro files. Previously, while the vite.build.target value would affect the build command output of an Astro project, it did not impact the dev command output. As a result, the esbuild target was effectively fixed to esnext. This update addresses and resolves that issue.

For example, by setting the configuration as follows, you can specify the esbuild target during the compilation of Astro files.

// astro.config.mjs
export default {
  vite: {
    esbuild: {
      target: 'es2018',
    },
  },
};

Fixes: The vite.build.target setting does not take effect in dev mode. · Issue #12655

Testing

Added tests with code that includes syntax targeted by esbuild, confirming the following two points:

  • No transformation occurs if esbuild.target is not present in ViteConfig.
  • Transformation occurs if esbuild.target is specified as anything other than esnext in ViteConfig.
    • Tested with esbuild.target set to es2018.

Docs

No documentation changes are necessary.

withastro/astro

Changes

Added 2 extra typings to the content layer generated typings for reference entries.
Whenever you are using referenced collections the output is a combination of collection + id/slug.
However there are no exported typings for this, meaning users either have to create their own typings for this object, or use some way to extract the typing from any of the exposed functions.

I can still change the names of the 2 added typings if someone has better phrasing for it, it's just what I came up with.

Testing

I used the blog example with minor temporary modifications to see if this worked as intended. Screenshots below
2024-12-06 14_18_10-Author astro - astro - Visual Studio Code
2024-12-06 14_18_26-● BlogPost astro - astro - Visual Studio Code

I got no build errors when doing this.

Docs

I do not think this warrants a docs update as this is a relatively niche usecase, only for people that want to pass referenced objects along components. People that are this invested into doing something like this have probably discovered the typings files themselves and are proficient enough with Typescript.

This won't affect anything for the average user.

withastro/astro

Changes

fix #12656

The regex didn't account for file encoded in utf8 with bom. The bom character is now part of the regex.

Also, I'm not sure what I was smoking with #12646, but I supported spaces before the --- which doesn't makes sense as --- should only be used on new lines. This is also fixed here.

Testing

Updated tests reflecting changes above.

Docs

n/a. bug fix.

withastro/starlight

Description

The integration expects an object for its configuration and we assume that this user input is always an object and we unpack it into variables from the integration parameters.

This can lead to confusing error messages when the user inputs an invalid configuration or even no configuration at all, e.g. after running npx astro add starlight.

This PR adds an extra check to ensure that the configuration is an object and throws a more helpful error message if it is not.

image
withastro/astro

xclip process on OS Linux made spawnSync not to return. Further info at Stack Overflow.

Also updated the xclip arguments as per man pages for better familiarity, although the used arguments worked.

Changes

  • Fixes this issue comment.
  • Needs review - not sure if it's a legit fix, as it globaly adds new settings to spawnSync. Could be changed to apply only for xclip if needed.

Testing

Tested locally, with linux and xclip/X11.

Docs

No docs update needed.

withastro/astro

Changes

Closes withastro/adapters#464

Problem: node adapter doesnt pass astro actions request and always redirect this to path with the / in the end

image
image
image

Solution: add trailing slash to actions url in case trailingSlash: "always" to pass node adapter static handler

Testing

Tested with node adapter and add new test for server actions handler

Docs

Probably no need to update docs

withastro/astro

Changes

based on sessions feature branch

This updates the sessions feature to inject the driver import into the manifest, instead of using a virtual module. Using a virtual module breaks edge middleware - even if the feature is not enabled.

Testing

Tested against the Netlify and Node adapters

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.0.4

Patch Changes

@astrojs/markdoc@0.12.2

Patch Changes

@astrojs/mdx@4.0.2

Patch Changes

@astrojs/markdown-remark@6.0.1

Patch Changes

  • #12646 f13417b Thanks @bluwy! - Avoids parsing frontmatter that are not at the top of a file

  • #12570 87231b1 Thanks @GrimLink! - Removes trailing new line in code blocks to prevent generating a trailing empty <span /> tag

  • #12664 a71e9b9 Thanks @bluwy! - Fixes frontmatter parsing if file is encoded in UTF8 with BOM

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 4-legacy, this PR will be updated.

Releases

astro@4.16.17

Patch Changes

  • #12632 e7d14c3 Thanks @ematipico! - Fixes an issue where the checkOrigin feature wasn't correctly checking the content-type header
withastro/astro

Changes

This PR refactors how we internally handle the locals. The use of the symbol on Request has been limited only to the dev server, because that's the only way for adapters to send us locals in dev.

Technically, this isn't a breaking change for the adapters because the App.render function already provides the APIs for passing initial locals. Plus, the RenderContext class already holds the locals when it's created, so it's safe to remove the places where Reflect.set/Reflect.get is used.

The only place where we need to keep the Request usage is a runtime, public API called createContext, which is only used my the edge middleware.

Testing

The CI should pass

Docs

N/A

withastro/astro

Changes

fix #12637

Updates the regex so it only does so.

We should also update the regex used for astro files frontmatter:

export const frontmatterRE = /^---(.*?)^---/ms;

But I prefer to follow up on that separately and fix the markdown case first.

Testing

Added new unit tests to ensure this behaviour.

Docs

n/a. bug fix.

withastro/astro

Changes

According to https://www.rssboard.org/rss-mime-type-application.txt

The default content type for RSS should be application/rss+xml

Testing

Docs

withastro/astro

Changes

astro info copy to clipboard has not been working on Mac because piping the input to pbcopy using execSync seems to not work. This PR fixes that by switching to spawnSync instead of execSync. It also adds a helper to read from the clipboard so we can check it works across platforms, and adds support for a --copy flag to avoid needing to prompt.

Fixes #12639

Testing

Adds a new test suite.

Docs

withastro/astro

Changes

The content layer needs to know if it is running in dev, so that it knows whether to find the datastore in the .astro folder (so it can be watched for changes) or in node_modules (so it is cached between builds in production environments). Previously it was incorrectly detecting this in the Vite plugin by using the isProduction flag, which reports as false in a test enviornment. This PR changes it to instead use the env.command.

Fixes #12612

Testing

Docs

withastro/astro

Changes

  • Upstreams improvements to the Zod error map that we made in Starlight. We initially copied Astro’s error map and then iterated on it. It’s still similar, just with better handling for complex types like unions, and more consistent formatting (e.g. if you look at the changed tests you’ll see we’d report errors where some stuff was wrapped with backticks and other stuff wasn’t within the same error message and that that is now fixed).

  • Updates error handling for user config parse errors to use the error map. With the v5 release, we’re seeing a fair amount of the rather confusing output Invalid input error when people leave output: "hybrid" in their config and this aims to improve that.

    • This also updates the styling for these messages as they can now contain a bit more useful information. Open to feedback/suggestions on the design there. It reuses the Markdown formatter we already use for error rendering and adds some additional details for this specific context.
  • Fixes a broken docs link in one of our error messages.

Example

Example error message with this change when adding output: 'hybrid', experimental: { contentLayer: true } to an astro.config file:

Currently

Error message. The text is cramped together and one error simply reads "output Invalid input"

After this PR

Error message. The text for each issue is spaced out and the same error now reads output: Did not match union.  Expected "static" | "server", received "hybrid"

Testing

  • I’ve updated our existing error message tests to test for the updated message format
  • I manually ran astro dev in the blog example using invalid configurations to test output.

Docs

n/a — error message improvements only

withastro/astro

Changes

In build (and sync() programmatic API), the content layer singleton is disposed since we only usually need to init and sync it once. This could free a bit of memory (but I think not by a lot).

Testing

Existing tests should pass

Docs

n/a. refactor

withastro/astro

Changes

This PR ports a fix of checkOrigin to v4

Testing

CI should pass

Docs

N/A

withastro/astro

Changes

Fixes a bug where the class attribute was rendered twice on images during builds

Fixes #12629

Testing

Adds more tests for images during build, including tests of the raw HTML without cheerio

Docs

withastro/astro

Changes

In Astro DB we eagerly load the virtual module at startup. Currently we load the resolved virtual module ID, which is prefixed with a null byte. This worked fine previously, but fails in Vite 6/Astro 5. This PR changes the import to use the base virtual module ID (astro:db).

Fixes #12474

Testing

Docs

withastro/astro

Changes

Closes #12626

This PR fixes an issue where experimental.svg had incorrect types.

The previous types allowed having an empty object {} but it failed with a boolean value, which how we document it.

This was reported on Discord: https://discord.com/channels/830184174198718474/1313850696126431263

Testing

There was a failing test, which is now fixed

Docs

withastro/astro

Changes

Fixes a regression where images in content layer were not processed if they have uppercase file extensions, because we were using a case-senstitive comparison when checking the format

Fixes #12621

Testing

Added test

Docs

withastro/astro

Changes

This PR updates:

  • the CI message for requesting a reproduction, by sending users straight to stackblitz.
  • the issue template to redirect users straight to stackblitz

Unfortunately, we can't use IDX for reproduction

Testing

N/A

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.0.3

Patch Changes

  • #12641 48ca399 Thanks @ascorbic! - Fixes a bug where astro info --copy wasn't working correctly on macOS systems.

  • #12461 62939ad Thanks @kyr0! - Removes the misleading log message telling that a custom renderer is not recognized while it clearly is and works.

  • #12642 ff18b9c Thanks @ematipico! - Provides more information when logging a warning for accessing Astro.request.headers in prerendered pages

  • #12634 03958d9 Thanks @delucis! - Improves error message formatting for user config and content collection frontmatter

  • #12547 6b6e18d Thanks @mtwilliams-code! - Fixes a bug where URL search parameters weren't passed when using the i18n fallback feature.

  • #12449 e6b8017 Thanks @apatel369! - Fixes an issue where the custom assetFileNames configuration caused assets to be incorrectly moved to the server directory instead of the client directory, resulting in 404 errors when accessed from the client side.

  • #12518 e216250 Thanks @ematipico! - Fixes an issue where SSR error pages would return duplicated custom headers.

  • #12625 74bfad0 Thanks @ematipico! - Fixes an issue where the experimental.svg had incorrect type, resulting in some errors in the editors.

  • #12631 dec0305 Thanks @ascorbic! - Fixes a bug where the class attribute was rendered twice on the image component

  • #12623 0e4fecb Thanks @ascorbic! - Correctly handles images in content collections with uppercase file extensions

  • #12633 8a551c1 Thanks @bluwy! - Cleans up content layer sync during builds and programmatic sync() calls

  • #12640 22e405a Thanks @ascorbic! - Fixes a bug that caused content collections to be returned empty when run in a test environment

  • #12613 306c9f9 Thanks @matthewp! - Fix use of cloned requests in middleware with clientAddress

    When using context.clientAddress or Astro.clientAddress Astro looks up the address in a hidden property. Cloning a request can cause this hidden property to be lost.

    The fix is to pass the address as an internal property instead, decoupling it from the request.

@astrojs/rss@4.0.10

Patch Changes

  • #12644 5b9b618 Thanks @kunyan! - Sends the standard RSS content type response header, with UTF-8 charset

@astrojs/db@0.14.1

Patch Changes

  • #12628 348c71e Thanks @ascorbic! - Fixes a bug that caused an error to be logged about invalid entrypoints

  • Updated dependencies []:

    • @astrojs/studio@0.1.2

@astrojs/upgrade@0.4.1

Patch Changes

  • #12576 19b3ac0 Thanks @apatel369! - Fixes an issue where running upgrade in a directory without astro installed shows a false success message
withastro/astro

User observed that calling actions resulted in an error about not having clientRequest available.

This is because the user had a middleware that cloned the request, which loses all of the symbols.

Changes

  • The fix is to pass the clientAddress directly into the RenderContext. This deprecates the clientAddressSymbol, but we need to keep it for now because some adapters set the clientAddress that way.
  • Note that similar fixes should be done for other symbol usage on the Request object (locals is one).

Testing

  • Middleware added to the client address fixture which recreates the problem.

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.0.2

Patch Changes

withastro/astro

Changes

This PR refactors our benchmarks to use vitest. I was advised by the people who maintain CodSpeed that benchmarks are more reliable because Vite allows them to better rewrite the instrumentation and make the tests more reliable and less flaky.

This isn't possible with tinybench

Testing

CI should pass, and CodSpeed should work

Docs

N/A

withastro/astro

Changes

Currently the types for getEntry exclude undefined if the key passed is a key in the type. This works for the old system where there were types for every entry, but now they are types as Record<string, {//...the type }>, it means any key will match (because they're all strings), meaning the entries are incorrectly returned as not nullable. This PR changes this so that if the key type is string (i.e. the type does not have specific entries), then the return type is nullable.

This is technically a breaking change but I think we can slip it in in 5.0.x

Fixes #12598

Testing

Docs

Our migration guide already says that the types for getEntry have been loosened.

withastro/astro

Changes

Make the link point to the final article url

Testing

N/A

Docs

N/A

withastro/astro

Changes

  • Fixes an issue where some special routes would not be included early enough in the route manifest, and so not passed to the astro:routes:resolved hook
  • I used this opportunity to refactor some things around default routes

Testing

Docs

N/A

withastro/astro

This PR follows up on a post from Chris on Discord.

Vite now issues warnings because of some changes in Sass. This PR fixes that.

Changes

  • Adds @use statements when needed for built-in modules (e.g. sass:color)
  • Replaces all Sass @import with @use (I choose to reuse the filename as namespace... this can be a bit confusing for colors... since we also have color for sass:color.)
  • Moves all top-level declaration before nested rules

Do I need to add a changeset? I wasn't sure since it is an example and not a package.

Testing

Manually by running the example. I haven't seen any changes in the browser so I think everything works as before. And with these changes, no warnings related to Sass in the console!

Docs

N/A, this PR only updates an example to avoid warnings in the console.

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.0.1

Patch Changes

@astrojs/markdoc@0.12.1

Patch Changes

@astrojs/mdx@4.0.1

Patch Changes

@astrojs/svelte@7.0.1

Patch Changes

@astrojs/tailwind@5.1.3

Patch Changes

@astrojs/vue@5.0.1

Patch Changes

@astrojs/web-vitals@3.0.1

Patch Changes

withastro/astro

Changes

Some peer deps ranges still referred to alphas and betas, we don't support those.

Testing

N/A

Docs

N/A

withastro/astro

Changes

The sitemap tests are currently failing because it uses an outdated version of @astrojs/node.

This PR updates it

Testing

CI should pass

Docs

N/A

withastro/astro

Changes

Ensures that the image endpoint is highest priority, by adding it to the start of the route array rather than the end

Testing

Tested locally with repro site

Fixes #12589. Thanks @MathiasGmeiner

Docs

withastro/astro

Changes

This is some super niche change but I think it would be useful.

Chrome DevTools has a Issues tab which detects "A form field element should have an id or name attribute" in Astro's dev toolbar. This pull request adds appropriate name attributes to fix the warnings.

While the warnings do not matter for the dev toolbar itself, it may cause potential confusion and makes it difficult to identify issues in actual pages at a glance.

CleanShot 2024-12-03 at 17 27 48@2x
CleanShot 2024-12-03 at 17 31 33@2x

Testing

Docs

lin-stephanie/astro-antfustyle-theme

Description

  • New /releases page
  • New astro-loader-github-releases dependency
  • New GithubView, GithubItem comps; github.ts, page.css, scheduled-vercel-deploy.yml (Add VERCEL_DEPLOY_HOOK env var to repository secrets for scheduled rebuilds)
  • Update src/config.ts:
    • Add UI.groupView with settings for monorepos, mainLogoOverrides, subLogoMatches for /releases UI
    • Integrate maxGroupColumns and showGroupItemColorOnHover into new UI.groupView
  • Modify .prettierignore to exclude releases.mdx files, preventing unexpected <p> elements in HTML output
withastro/astro

Changes

  • This PR reverts #12557 so that examples are pointing to the latest beta again
  • This PR updates the blog, portfolio, and starlog examples to use the v5 style of content collections

Testing

Tested the changed examples locally and existing tests should still pass.

Docs

No docs, we have enough v5 docs I think! 😁

withastro/astro

Changes

This PR updates the tests to pass

Testing

CI should pass

Docs

N/A

withastro/astro

Changes

  • In dev, inline env in the virtual module
  • Cleans up unused stuff
  • Closes PLT-2684
  • Closes #12618

Testing

  • Tests should still pass
  • Test manually
  • Test on a private project

Docs

N/A

withastro/astro

Changes

Normalises boolean HTML attributes to boolean literals, because Markdoc treats '' as falsy.

Fixes #12409

Testing

Adds a test

Docs

withastro/starlight

Description

This PR moves the @types/js-yaml package into a normal dependency in the @astrojs/starlight package.

Because we export TypeScript files directly in the exports field in a package.json file of the @astrojs/starlight package, we need to include all dependencies' @types/* packages in normal dependencies. Otherwise, we get following errors on type check of, for example, astro.config.ts even with skipLibCheck: true in tsconfig.json:

node_modules/@astrojs/starlight/utils/translations-fs.ts:4:18 - error TS7016: Could not find a declaration file for module 'js-yaml'. '/Users/raviqqe/src/github.com/raviqqe/stak/doc/node_modules/js-yaml/dist/js-yaml.mjs' implicitly has an 'any' type.
  Try `npm i --save-dev @types/js-yaml` if it exists or add a new declaration (.d.ts) file containing `declare module 'js-yaml';`

4 import yaml from 'js-yaml';
withastro/astro

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@bluwy/giget-core ^0.1.1 -> ^0.1.2 age adoption passing confidence
@changesets/cli (source) ^2.27.10 -> ^2.27.11 age adoption passing confidence
@fontsource/monofett (source) 5.1.0 -> 5.1.1 age adoption passing confidence
@fontsource/montserrat (source) 5.1.0 -> 5.1.1 age adoption passing confidence
@playwright/test (source) 1.49.0 -> 1.49.1 age adoption passing confidence
@playwright/test (source) ^1.49.0 -> ^1.49.1 age adoption passing confidence
@preact/signals (source) ^2.0.0 -> ^2.0.1 age adoption passing confidence
@preact/signals (source) 2.0.0 -> 2.0.1 age adoption passing confidence
@rollup/pluginutils (source) ^5.1.3 -> ^5.1.4 age adoption passing confidence
@solidjs/router ^0.15.1 -> ^0.15.2 age adoption passing confidence
@sveltejs/vite-plugin-svelte (source) ^5.0.1 -> ^5.0.3 age adoption passing confidence
@types/alpinejs (source) ^3.13.10 -> ^3.13.11 age adoption passing confidence
@types/canvas-confetti (source) ^1.6.4 -> ^1.9.0 age adoption passing confidence
@types/react (source) ^18.3.12 -> ^18.3.18 age adoption passing confidence
@types/react-dom (source) ^18.3.1 -> ^18.3.5 age adoption passing confidence
@vue/compiler-sfc (source) ^3.5.12 -> ^3.5.13 age adoption passing confidence
alpinejs (source) ^3.14.3 -> ^3.14.8 age adoption passing confidence
debug ^4.3.7 -> ^4.4.0 age adoption passing confidence
es-module-lexer ^1.5.4 -> ^1.6.0 age adoption passing confidence
eslint (source) ^9.15.0 -> ^9.18.0 age adoption passing confidence
fast-glob ^3.3.2 -> ^3.3.3 age adoption passing confidence
fast-xml-parser ^4.5.0 -> ^4.5.1 age adoption passing confidence
hast-util-to-html ^9.0.3 -> ^9.0.4 age adoption passing confidence
linkedom ^0.18.5 -> ^0.18.6 age adoption passing confidence
magic-string ^0.30.14 -> ^0.30.17 age adoption passing confidence
mdast-util-mdx-jsx ^3.1.3 -> ^3.2.0 age adoption passing confidence
node-mocks-http ^1.16.1 -> ^1.16.2 age adoption passing confidence
open-props ^1.7.7 -> ^1.7.10 age adoption passing confidence
p-limit ^6.1.0 -> ^6.2.0 age adoption passing confidence
postcss-preset-env (source) ^10.1.1 -> ^10.1.3 age adoption passing confidence
preact (source) ^10.25.0 -> ^10.25.4 age adoption passing confidence
preact (source) ^10.24.3 -> ^10.25.4 age adoption passing confidence
preact-render-to-string ^6.5.11 -> ^6.5.13 age adoption passing confidence
prettier (source) ^3.4.1 -> ^3.4.2 age adoption passing confidence
publint (source) ^0.2.12 -> ^0.3.2 age adoption passing confidence
react (source) 19.0.0-rc-fb9a90fa48-20240614 -> 19.0.0 age adoption passing confidence
react-dom (source) 19.0.0-rc-fb9a90fa48-20240614 -> 19.0.0 age adoption passing confidence
rollup (source) ^4.27.4 -> ^4.30.1 age adoption passing confidence
sass ^1.81.0 -> ^1.83.1 age adoption passing confidence
sass ^1.80.6 -> ^1.83.1 age adoption passing confidence
shiki (source) ^1.23.1 -> ^1.26.2 age adoption passing confidence
solid-js (source) ^1.9.3 -> ^1.9.4 age adoption passing confidence
svelte (source) ^5.2.9 -> ^5.17.3 age adoption passing confidence
svelte (source) ^5.1.16 -> ^5.17.3 age adoption passing confidence
svelte2tsx (source) ^0.7.22 -> ^0.7.34 age adoption passing confidence
tailwindcss (source) ^3.4.14 -> ^3.4.17 age adoption passing confidence
tailwindcss (source) ^3.4.15 -> ^3.4.17 age adoption passing confidence
tinyexec ^0.3.1 -> ^0.3.2 age adoption passing confidence
typescript (source) ^5.6.3 -> ^5.7.3 age adoption passing confidence
typescript (source) ^5.7.2 -> ^5.7.3 age adoption passing confidence
typescript (source) ~5.7.2 -> ~5.7.3 age adoption passing confidence
typescript-eslint (source) ^8.16.0 -> ^8.19.1 age adoption passing confidence
undici (source) ^7.2.0 -> ^7.2.1 age adoption passing confidence
unstorage ^1.14.0 -> ^1.14.4 age adoption passing confidence
vite-plugin-vue-devtools (source) ^7.6.7 -> ^7.7.0 age adoption passing confidence
vitefu ^1.0.4 -> ^1.0.5 age adoption passing confidence
vitest (source) ^3.0.0-beta.3 -> ^3.0.0-beta.4 age adoption passing confidence
vue (source) ^3.5.12 -> ^3.5.13 age adoption passing confidence
yocto-spinner ^0.1.0 -> ^0.1.2 age adoption passing confidence
zod (source) ^3.23.8 -> ^3.24.1 age adoption passing confidence
zod-to-json-schema ^3.23.5 -> ^3.24.1 age adoption passing confidence

Release Notes

changesets/changesets (@​changesets/cli)

v2.27.11

Compare Source

Patch Changes
fontsource/font-files (@​fontsource/monofett)

v5.1.1

Compare Source

fontsource/font-files (@​fontsource/montserrat)

v5.1.1

Compare Source

microsoft/playwright (@​playwright/test)

v1.49.1

Compare Source

Highlights

https://github.com/microsoft/playwright/issues/33802 - [Bug]: Codegen's Clear button doesn't work if not recordinghttps://github.com/microsoft/playwright/issues/338066 - [Bug]: playwright hangs while waiting for pending navigationhttps://github.com/microsoft/playwright/issues/3378787 - [Bug]: VSC extension isn't capturing all entered tehttps://github.com/microsoft/playwright/issues/33788788 - [Regression]: Double clicking the steps in trace viewer doesn't filter actihttps://github.com/microsoft/playwright/issues/337723772 - [Bug]: aria_snapshot generates invalid yaml when combined with an aria-label attrhttps://github.com/microsoft/playwright/issues/3379133791 - [Bug]: text input with number value raises "container is not iterable" with to_match_aria_snahttps://github.com/microsoft/playwright/issues/33644/33644 - [Bug]: getByRole can't find element with the accessible name from label element when aria-labelledby is nothttps://github.com/microsoft/playwright/issues/33660s/33660 - [Regression]: Unable to open Playwright UI in Dark Mode

Browser Versions
  • Chromium 131.0.6778.33
  • Mozilla Firefox 132.0
  • WebKit 18.2

This version was also tested against the following stable channels:

  • Google Chrome 130
  • Microsoft Edge 130
preactjs/signals (@​preact/signals)

v2.0.1

Compare Source

Patch Changes
  • #​647 655905b Thanks @​jviide! - Ensure that text effects get disposed

  • #​630 4b9144f Thanks @​JoviDeCroock! - Change the way we deal with state settling hooks, when we know we are dealing with hooks that can settle their A -> B -> A state (and wind up at the same value). We should not verbatim rerender in our custom shouldComponentUpdate. Instead we should trust that hooks have handled their own state settling.

rollup/plugins (@​rollup/pluginutils)

v5.1.4

2024-12-15

Updates
  • refactor: replace test with includes (#​1787)
solidjs/solid-router (@​solidjs/router)

v0.15.2

Patch Changes
sveltejs/vite-plugin-svelte (@​sveltejs/vite-plugin-svelte)

v5.0.3

Compare Source

Patch Changes
  • fix errorhandling to work with errors that don't have a code property (#​1054)

v5.0.2

Compare Source

Patch Changes
  • adapt internal handling of warning and error code property to changes in svelte5 (#​1044)
alpinejs/alpine (alpinejs)

v3.14.8

Compare Source

Fixed
  • Fix x-mask triggering update requests on load #​4481

v3.14.7

Compare Source

Fixed

  • Fix x-teleport by removing clone x-ignore #​4469

v3.14.6

Compare Source

Fixed

  • Fix regression on x-ignore when removed #​4458

v3.14.5

Compare Source

Changed

  • Optimize mutation observer to better handle move operations - ref #​4450 #​4451
  • 🐛 Fixes Regression in Mutation handling #​4450

v3.14.4

Compare Source

What's Changed

Full Changelog: alpinejs/alpine@v3.14.3...v3.14.4

guybedford/es-module-lexer (es-module-lexer)

v1.6.0

[Compare Source](https://redirect.github.com/guyb


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

I noticed the last file icons generator run failed.

The issue is related to the fact that when icons are added (or modified) to the Seti UI theme in https://github.com/jesseweed/seti-ui, the font is not automatically updated in their repository and they basically let consumers do it (e.g. that's what Visual Studio Code does).

This PR updates the file icons generator to no longer download files from their GitHub repository, but instead clone the repository, install dependencies, and build the font locally which is then used to generate the icons.

Note that this PR only includes the changes necessary to fix the file icons generator. The icons themselves are not updated in this PR. With these changes, the following icon changes are expected once the script is triggered:

withastro/astro

Changes

This updates the template that generates .astro/actions.d.ts file to make sure types work when moduleResolution: "NodeNext" is used on tsconfig.json.

Testing

I haven't added tests because I am not familiar on how to do so for type tests that require a different tsconfig.json.

Docs

No behavior changes.


Closes #12575

withastro/astro

Changes

Closes #12455

This change fixes an issue where @astrojs/upgrade announces integration updates for already up-to-date packages by removing the prefix from targetVersion while comparing.

Screen.Recording.2024-12-01.at.12.25.46.AM.mov

Testing

Manually Tested

Docs

N/A bug fix


Last fetched:  |  Scheduled refresh: Every Saturday

See Customizing GitHub Activity Pages to configure your own

Inspired by prs.atinux.com