AstroEco is Contributing…
Display your GitHub pull requests using astro-loader-github-prs

Changes
- Instead of silently ignoring lower priority routes in case of conflicts, we show a warning for each occurrence.
- Closes #9832
Testing
New tests reproduce the conflicts and check the warning and error.
Docs
I think the only docs changes are for the experimental flag and error message, which IIRC are generated from the JSDocs, so no changes to be sent separately on Docs.

fix the problem, we need to ensure that any potentially dangerous characters in the stringified headings are properly escaped before embedding them in the generated JavaScript code. The best way to do this is to escape characters such as <
, >
, /
, \
, and certain Unicode line/paragraph separators, as well as control characters, in the output of JSON.stringify(headings)
. This can be achieved by defining an escapeUnsafeChars
function (as in the example) and applying it to the stringified headings before constructing the export statement. The change should be made in packages/integrations/mdx/src/rehype-collect-headings.ts
, specifically on line 8, and the function should be defined in the same file or imported if already available.
Description
This PR adds the starlight-github-alerts
plugin to the documentation plugin showcase.

Changes
When deciding whether a module update needs a full reload, we check if the module is present in the client module graph. If it isn't, then it's SSR-only and needs a full reload. Currently when editing styles it invalidates both client and SSR modules. However because the SSR module includes an inline
flag and the client module doesn't, the HMR check incorrectly thinks it is a server-only module that needs a full reload.
This PR filters out these inline modules so that a full reload isn't triggered. The non-inline version is also invalidated, so it still triggers HMR, but without triggering a full reload.
Fixes #14196
Testing
Adds an e2e test. Previously there were several e2e test for HMR styles, but none of them were the simple case of an inline style with no imports.
Docs

Changes
We need the App
to be fully extendable and more flexible, so it can be used in other environments that aren't Node.js. At the moment it is exclusively used inside adapters, however, we foresee its usage in dev
and the possibility of build
too.
This PR creates a new abstract BaseApp
that implements all the methods inside the App
class. The only method that must be implemented is createPipeline
.
The function AppPipeline.create
has been dramatically simplified, since many of the arguments that we were passing can be computed from the manifest
, and some other values were hardcoded. AppPipeline
is also exposed because the creation of new "Apps" that extend App
requires the implementation of cratePipeline
. I didn't create a default implementation of createPipeline
because of P
and AppPipeline
(TypeScript doesn't like it). If you know how to fix it, please let me know how.
The method AppPipeline.getModuleForRoute
has been moved inside BasePipeline
. There's a chance we could reuse it.
Testing
This is a refactor, so the entire CI should stay green
Docs
N/A
Website Carbon Calculator introduced a new model for estimating energy usage, so this PR updates the table to use new measurements. Mostly no change in the ratings but the new model estimates lower CO₂ usage than the earlier version.
I had to update the Docus page being tested as their installation guide repeatedly errored out during testing. (They’re also notably the only entry whose CO₂ usage didn’t decrease this time round, presumably because of changes in their recent release.)

Changes
This PR removes the use of ssrLoadModule
in favour of the new way: pulling a runnable environment and use the function runner.import
. Here's the docs: https://vite.dev/guide/api-environment-frameworks.html#runnabledevenvironment
Unfortunately there are few places where we pass the instances of the server, so for my next PR I will refactor those places to accept an environment instead of the instance of the server.
Testing
Current tests should pass
Docs
N/A
Description
This PR adds the starlight-changelogs
to the resources/plugins
page.

Changes
Adds support for enums on the text column for AstroDB
Testing
Not sure if there is a good way to test this, as per the drizzle docs:
You can define { enum: ["value1", "value2"] } config to infer insert and select types, it won’t check runtime values.
So i would assume it would need type testing similar to the last PR I opened for db.
Docs
Currently there is no docs to specific features/options of the different columns, only "shared options"
If docs are required we should also be sure to document any other missing items from our schema.

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/db@0.17.0
Minor Changes
-
#14190
438adab
Thanks @Adammatthiesen! - Adds support for enum support for text columns in Astro DB tables.import { column, defineTable } from 'astro:db'; // Table definition const UserTable = defineTable({ columns: { id: column.number({ primaryKey: true }), name: column.text(), rank: column.text({ enum: ['user', 'mod', 'admin'] }), }, }); // Resulting type definition type UserTableInferInsert = { id: string; name: string; rank: 'user' | 'mod' | 'admin'; };
@astrojs/node@9.4.0
Minor Changes
-
#14188
e3422aa
Thanks @ascorbic! - Adds support for specifying a host to load prerendered error pagesBy default, if a user defines a custom error page that is prerendered, Astro will load it from the same host as the one that the request is made to. This change allows users to specify a different host for loading prerendered error pages. This can be useful in scenarios such as where the server is running behind a reverse proxy or when prerendered pages are hosted on a different domain.
To use this feature, set the
experimentalErrorPageHost
adapter option in your Astro configuration to the desired host URL. For example, if your server is running on localhost and served via a proxy, you can ensure the prerendered error pages are fetched via the localhost URL:import { defineConfig } from 'astro/config'; import node from '@astrojs/node'; export default defineConfig({ adapter: node({ // If your server is running on localhost and served via a proxy, set the host like this to ensure prerendered error pages are fetched via the localhost URL experimentalErrorPageHost: 'http://localhost:4321', }), });
For more information on enabling and using this experimental feature, see the
@astrojs/node
adapter docs.
astro@5.12.9
Patch Changes
-
#14020
9518975
Thanks @jp-knj! - Prevent double-prefixed redirect paths when using fallback and redirectToDefaultLocale togetherFixes an issue where i18n fallback routes would generate double-prefixed paths (e.g.,
/es/es/test/item1/
) whenfallback
andredirectToDefaultLocale
configurations were used together. The fix adds proper checks to prevent double prefixing in route generation. -
#14199
3e4cb8e
Thanks @ascorbic! - Fixes a bug that prevented HMR from working with inline styles
@astrojs/cloudflare@12.6.3
Patch Changes
-
#14066
7abde79
Thanks @alexanderniebuhr! - Refactors the internal solution which powers Astro Sessions when running local development with ˋastro devˋ.The adapter now utilizes Cloudflare's local support for Cloudflare KV. This internal change is a drop-in replacement and does not require any change to your projectct code.
However, you now have the ability to connect to the remote Cloudflare KV Namespace if desired and use production data during local development.
-
Updated dependencies []:
- @astrojs/underscore-redirects@1.0.0

Changes
Currently if a user defines a custom error page that is prerendered, Astro will load it from the same host as the one that the request is made to. i.e. if the user made a request to https://example.com/nonexistent
, Astro will fetch the custom error page from https://example.com/404.html
. This is a problem if the site is running in a container that cannot connect to its own external URL, such as a Docker container that forwards its port. This PR adds a new experimentalErrorPageHost
option to the Node adapter that tells it to use a different host to fetch the page. This can be set to the local host and port to ensure it's loaded from inside the container
Fixes #13874
Testing
Added tests
Docs
This will need docs

Changes
Fix AstroDB asDrizzleTable
and schema conversion to correctly align table types with drizzle-orm
to prevent loss of variables during type inference.
- Closes #13886
Testing
No tests added, this is a type only change to correct previously broken types.
Docs
This fixes previously broken types. No doc changes needed.

This PR contains the following updates:
Package | Change | Age | Confidence |
---|---|---|---|
tinyexec | ^0.3.2 -> ^1.0.1 |
Release Notes
tinylibs/tinyexec (tinyexec)
v1.0.1
What's Changed
- chore: update
exports
map inpackage.json
by @SukkaW in https://github.com/tinylibs/tinyexec/pull/48
New Contributors
- @SukkaW made their first contribution in https://github.com/tinylibs/tinyexec/pull/48
Full Changelog: tinylibs/tinyexec@1.0.0...1.0.1
v1.0.0
What's Changed
- feat: migrate to ESM-only build by @43081j in https://github.com/tinylibs/tinyexec/pull/47
Full Changelog: tinylibs/tinyexec@0.3.2...1.0.0
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 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.

This PR contains the following updates:
Package | Change | Age | Confidence |
---|---|---|---|
solid-js (source) | ^1.9.7 -> ^1.9.8 |
||
svelte (source) | ^5.37.1 -> ^5.38.0 |
||
svelte2tsx (source) | ^0.7.41 -> ^0.7.42 |
Release Notes
sveltejs/svelte (svelte)
v5.38.0
Minor Changes
- feat: allow
await
inside@const
declarations (#16542)
Patch Changes
-
fix: remount at any hydration error (#16248)
-
chore: emit
await_reactivity_loss
infor await
loops (#16521) -
fix: emit
snippet_invalid_export
instead ofundefined_export
for exported snippets (#16539)
v5.37.3
Patch Changes
- fix: reset attribute cache after setting corresponding property (#16543)
v5.37.2
Patch Changes
-
fix: double event processing in firefox due to event object being garbage collected (#16527)
-
fix: add bindable dimension attributes types to SVG and MathML elements (#16525)
-
fix: correctly differentiate static fields before emitting
duplicate_class_field
(#16526) -
fix: prevent last_propagated_event from being DCE'd (#16538)
sveltejs/language-tools (svelte2tsx)
v0.7.42
: svelte2tsx-0.7.42
fix: handle object literal in MustacheTag (https://github.com/sveltejs/language-tools/pull/2805)
Configuration
📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.

Changes
Now a newer version of Vite is being used, and the test works correctly locally, so I want to see if it passes in CI to determine if it’s safe to re-enable it
Testing
Docs
Description
Starlight's sl-line-height
value was applied even for .not-content
. I used the same :not
rule that you have elsewhere, but I wonder if this might not be better:
body :not(.not-content *) {
line-height: var(--sl-line-height);
}
Another possibility might be to set line-height: normal
to .not-content
, whichever you prefer 😄

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/db@0.16.1
Patch Changes
- #14186
9fe883e
Thanks @Adammatthiesen! - Fixes types for optional and primary key columns in Astro DB tables.
@astrojs/netlify@6.5.6
Patch Changes
- #14175
1e1cef0
Thanks @ematipico! - Fixes a bug where the adapter would cause a runtime error when callingastro build
in CI environments.

Changes
This PR bumps netlify deps. I also pinned @netlify/functions
because if upgraded, will generate build errors.
Testing
CI should pass
Docs

Changes
npm is very fussy with peer dependencies, and can easily end up with false positives in its checks when upgrading Astro packages. This is particularly likely when upgrading Astro alongside another package that has a peer dependency on it.
This PR checks to see if installs failed because of a peer dependency issue, and if so retries with the --legacy-peer-deps
flag
Fixes #13884
Testing
Added test, and tested manually with the repro from #13884.
To create the test I needed to add support for mocking the shell function. Module mocking isn't supported in Node < 24, so I did it by allowing an optional shell funciton arg to be passed to the install command.
Docs
Last fetched: | Scheduled refresh: Every Saturday
See Customizing GitHub Activity Pages to configure your own
Inspired by prs.atinux.com