From 04547eca5bc6b8c1b3b95398ccc49c870a68c34c Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:24:43 -0700 Subject: [PATCH 1/6] fix(security): skip allowedDomains header check for prerendered routes (#17078) --- .../fix-prerender-allowed-domains-warning.md | 5 ++ packages/astro/src/core/fetch/fetch-state.ts | 2 +- .../app/prerender-allowed-domains.test.ts | 80 +++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .changeset/fix-prerender-allowed-domains-warning.md create mode 100644 packages/astro/test/units/app/prerender-allowed-domains.test.ts diff --git a/.changeset/fix-prerender-allowed-domains-warning.md b/.changeset/fix-prerender-allowed-domains-warning.md new file mode 100644 index 000000000000..e4460bbe3668 --- /dev/null +++ b/.changeset/fix-prerender-allowed-domains-warning.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes a spurious `Astro.request.headers` warning on prerendered pages when `security.allowedDomains` is configured. The internal `allowedDomains` header validation now skips prerendered routes, since they use synthetic requests with no real headers. diff --git a/packages/astro/src/core/fetch/fetch-state.ts b/packages/astro/src/core/fetch/fetch-state.ts index c11a912c80eb..c4e0efdcbf84 100644 --- a/packages/astro/src/core/fetch/fetch-state.ts +++ b/packages/astro/src/core/fetch/fetch-state.ts @@ -290,7 +290,7 @@ export class FetchState implements AstroFetchState { // allowedDomains — without it, forwarded headers are never trusted // and the validation is a no-op. This avoids header lookups on the // hot path for the vast majority of apps. - if (pipeline.manifest.allowedDomains && pipeline.manifest.allowedDomains.length > 0) { + if (pipeline.manifest.allowedDomains && pipeline.manifest.allowedDomains.length > 0 && !this.routeData?.prerender) { this.#applyForwardedHeaders(); } diff --git a/packages/astro/test/units/app/prerender-allowed-domains.test.ts b/packages/astro/test/units/app/prerender-allowed-domains.test.ts new file mode 100644 index 000000000000..77b9d8f12462 --- /dev/null +++ b/packages/astro/test/units/app/prerender-allowed-domains.test.ts @@ -0,0 +1,80 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; +import { FetchState } from '../../../dist/core/fetch/fetch-state.js'; +import { createRouteData } from '../mocks.ts'; +import { createBasicPipeline, SpyLogger } from '../test-utils.ts'; + +describe('FetchState with allowedDomains and prerendered routes', () => { + it('does not access request.headers for prerendered routes', () => { + const spy = new SpyLogger(); + const pipeline = createBasicPipeline({ + logger: spy, + manifest: { + allowedDomains: [{ hostname: 'example.com' }], + }, + }); + + const routeData = createRouteData({ + route: '/', + prerender: true, + }); + + // Set up a request with a headers trap (mimics createRequest with isPrerendered: true) + const request = new Request('http://localhost:4321/'); + let headersAccessed = false; + const originalHeaders = request.headers; + Object.defineProperty(request, 'headers', { + get() { + headersAccessed = true; + return originalHeaders; + }, + }); + + new FetchState(pipeline, request, { + routeData, + addCookieHeader: false, + clientAddress: undefined, + locals: undefined, + prerenderedErrorPageFetch: fetch, + waitUntil: undefined, + }); + + assert.equal(headersAccessed, false, 'request.headers should not be accessed for prerendered routes'); + }); + + it('accesses request.headers for non-prerendered routes when allowedDomains is set', () => { + const spy = new SpyLogger(); + const pipeline = createBasicPipeline({ + logger: spy, + manifest: { + allowedDomains: [{ hostname: 'example.com' }], + }, + }); + + const routeData = createRouteData({ + route: '/', + prerender: false, + }); + + const request = new Request('http://localhost:4321/'); + let headersAccessed = false; + const originalHeaders = request.headers; + Object.defineProperty(request, 'headers', { + get() { + headersAccessed = true; + return originalHeaders; + }, + }); + + new FetchState(pipeline, request, { + routeData, + addCookieHeader: false, + clientAddress: undefined, + locals: undefined, + prerenderedErrorPageFetch: fetch, + waitUntil: undefined, + }); + + assert.equal(headersAccessed, true, 'request.headers should be accessed for non-prerendered routes'); + }); +}); From 6c6c9744fbbb75ccb1c6ffac312bb5cdd4d6d2db Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" Date: Mon, 15 Jun 2026 17:26:20 +0000 Subject: [PATCH 2/6] [ci] format --- packages/astro/src/core/fetch/fetch-state.ts | 6 +++++- .../test/units/app/prerender-allowed-domains.test.ts | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/astro/src/core/fetch/fetch-state.ts b/packages/astro/src/core/fetch/fetch-state.ts index c4e0efdcbf84..e7312e51c4eb 100644 --- a/packages/astro/src/core/fetch/fetch-state.ts +++ b/packages/astro/src/core/fetch/fetch-state.ts @@ -290,7 +290,11 @@ export class FetchState implements AstroFetchState { // allowedDomains — without it, forwarded headers are never trusted // and the validation is a no-op. This avoids header lookups on the // hot path for the vast majority of apps. - if (pipeline.manifest.allowedDomains && pipeline.manifest.allowedDomains.length > 0 && !this.routeData?.prerender) { + if ( + pipeline.manifest.allowedDomains && + pipeline.manifest.allowedDomains.length > 0 && + !this.routeData?.prerender + ) { this.#applyForwardedHeaders(); } diff --git a/packages/astro/test/units/app/prerender-allowed-domains.test.ts b/packages/astro/test/units/app/prerender-allowed-domains.test.ts index 77b9d8f12462..bfc23cdbf1b1 100644 --- a/packages/astro/test/units/app/prerender-allowed-domains.test.ts +++ b/packages/astro/test/units/app/prerender-allowed-domains.test.ts @@ -39,7 +39,11 @@ describe('FetchState with allowedDomains and prerendered routes', () => { waitUntil: undefined, }); - assert.equal(headersAccessed, false, 'request.headers should not be accessed for prerendered routes'); + assert.equal( + headersAccessed, + false, + 'request.headers should not be accessed for prerendered routes', + ); }); it('accesses request.headers for non-prerendered routes when allowedDomains is set', () => { @@ -75,6 +79,10 @@ describe('FetchState with allowedDomains and prerendered routes', () => { waitUntil: undefined, }); - assert.equal(headersAccessed, true, 'request.headers should be accessed for non-prerendered routes'); + assert.equal( + headersAccessed, + true, + 'request.headers should be accessed for non-prerendered routes', + ); }); }); From 74888e7296854eb36b87e54167b670ecdd8b414e Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Mon, 15 Jun 2026 13:50:46 -0400 Subject: [PATCH 3/6] Update changeset baseBranch from next to main (#17085) --- .changeset/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/config.json b/.changeset/config.json index 902828cfe8b7..be86265817aa 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,7 +4,7 @@ "commit": false, "linked": [], "access": "public", - "baseBranch": "origin/next", + "baseBranch": "origin/main", "updateInternalDependencies": "patch", "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true From d426b67b1239a82bf001d23ac8e418fea6861be1 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Mon, 15 Jun 2026 11:12:48 -0700 Subject: [PATCH 4/6] Fix non-ASCII prerendered routes ignoring trailingSlash: never in @astrojs/node (#17054) * fix(node): decode URI before filesystem lookup for non-ASCII prerendered routes * changeset --------- Co-authored-by: ematipico Co-authored-by: Matthew Phillips --- .changeset/odd-poems-dress.md | 5 ++++ .../integrations/node/src/serve-static.ts | 6 ++++- ...340\270\252\340\270\224\340\270\265.astro" | 11 ++++++++ .../node/test/trailing-slash.test.ts | 25 +++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 .changeset/odd-poems-dress.md create mode 100644 "packages/integrations/node/test/fixtures/trailing-slash/src/pages/\340\270\252\340\270\247\340\270\261\340\270\252\340\270\224\340\270\265.astro" diff --git a/.changeset/odd-poems-dress.md b/.changeset/odd-poems-dress.md new file mode 100644 index 000000000000..99384a5c892d --- /dev/null +++ b/.changeset/odd-poems-dress.md @@ -0,0 +1,5 @@ +--- +'@astrojs/node': patch +--- + +Fixes an issue where Astro files with non-ASCII characters in their name weren't correctly served after the build. diff --git a/packages/integrations/node/src/serve-static.ts b/packages/integrations/node/src/serve-static.ts index d42191bd1400..09029bdc15bc 100644 --- a/packages/integrations/node/src/serve-static.ts +++ b/packages/integrations/node/src/serve-static.ts @@ -58,7 +58,11 @@ export function createStaticHandler( } const [urlPath, urlQuery] = fullUrl.split('?'); - const { isDirectory } = resolveStaticPath(client, app.removeBase(urlPath)); + let fsPath = app.removeBase(urlPath); + try { + fsPath = decodeURI(fsPath); + } catch {} + const { isDirectory } = resolveStaticPath(client, fsPath); const hasSlash = urlPath.endsWith('/'); let pathname = urlPath; diff --git "a/packages/integrations/node/test/fixtures/trailing-slash/src/pages/\340\270\252\340\270\247\340\270\261\340\270\252\340\270\224\340\270\265.astro" "b/packages/integrations/node/test/fixtures/trailing-slash/src/pages/\340\270\252\340\270\247\340\270\261\340\270\252\340\270\224\340\270\265.astro" new file mode 100644 index 000000000000..4d1ca26e5f53 --- /dev/null +++ "b/packages/integrations/node/test/fixtures/trailing-slash/src/pages/\340\270\252\340\270\247\340\270\261\340\270\252\340\270\224\340\270\265.astro" @@ -0,0 +1,11 @@ +--- +export const prerender = true; +--- + + + สวัสดี + + +

สวัสดี

+ + \ No newline at end of file diff --git a/packages/integrations/node/test/trailing-slash.test.ts b/packages/integrations/node/test/trailing-slash.test.ts index ef375823761d..12b0d4f3f3c4 100644 --- a/packages/integrations/node/test/trailing-slash.test.ts +++ b/packages/integrations/node/test/trailing-slash.test.ts @@ -316,6 +316,31 @@ describe('Trailing slash', () => { assert.equal(res.status, 200); assert.equal($('h1').text(), 'One'); }); + + it('Can render prerendered non-ASCII route without trailing slash', async () => { + const res = await fetch( + `http://${server.host}:${server.port}/${encodeURI('สวัสดี')}`, + { redirect: 'manual' }, + ); + const html = await res.text(); + const $ = cheerio.load(html); + + assert.equal(res.status, 200); + assert.equal($('h1').text(), 'สวัสดี'); + }); + + it('Redirects prerendered non-ASCII route with trailing slash', async () => { + const res = await fetch( + `http://${server.host}:${server.port}/${encodeURI('สวัสดี')}/`, + { redirect: 'manual' }, + ); + + assert.equal(res.status, 301); + assert.equal( + res.headers.get('location'), + `/${encodeURI('สวัสดี')}`, + ); + }); }); }); describe('Ignore', async () => { From c188e855164c068b20cb47530e7ba5dad951b0b5 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" Date: Mon, 15 Jun 2026 18:15:41 +0000 Subject: [PATCH 5/6] [ci] format --- .../node/test/trailing-slash.test.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/integrations/node/test/trailing-slash.test.ts b/packages/integrations/node/test/trailing-slash.test.ts index 12b0d4f3f3c4..a135a3b10495 100644 --- a/packages/integrations/node/test/trailing-slash.test.ts +++ b/packages/integrations/node/test/trailing-slash.test.ts @@ -318,10 +318,9 @@ describe('Trailing slash', () => { }); it('Can render prerendered non-ASCII route without trailing slash', async () => { - const res = await fetch( - `http://${server.host}:${server.port}/${encodeURI('สวัสดี')}`, - { redirect: 'manual' }, - ); + const res = await fetch(`http://${server.host}:${server.port}/${encodeURI('สวัสดี')}`, { + redirect: 'manual', + }); const html = await res.text(); const $ = cheerio.load(html); @@ -330,16 +329,12 @@ describe('Trailing slash', () => { }); it('Redirects prerendered non-ASCII route with trailing slash', async () => { - const res = await fetch( - `http://${server.host}:${server.port}/${encodeURI('สวัสดี')}/`, - { redirect: 'manual' }, - ); + const res = await fetch(`http://${server.host}:${server.port}/${encodeURI('สวัสดี')}/`, { + redirect: 'manual', + }); assert.equal(res.status, 301); - assert.equal( - res.headers.get('location'), - `/${encodeURI('สวัสดี')}`, - ); + assert.equal(res.headers.get('location'), `/${encodeURI('สวัสดี')}`); }); }); }); From 0d862d5a22c9430ae52b6bc289029c7640c2a1ab Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Mon, 15 Jun 2026 13:33:43 -0700 Subject: [PATCH 6/6] [ci] release (beta) (#17082) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/pre.json | 3 ++ examples/advanced-routing/package.json | 4 +- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-multiple/package.json | 2 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 4 +- examples/integration/package.json | 2 +- examples/minimal/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 4 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/with-markdoc/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 29 +++++++++++ packages/astro/package.json | 2 +- packages/integrations/node/CHANGELOG.md | 6 +++ packages/integrations/node/package.json | 2 +- pnpm-lock.yaml | 54 ++++++++++----------- 30 files changed, 94 insertions(+), 56 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0fd60a838ac0..8aa11527fc1a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -39,11 +39,14 @@ "experimental-background-dev", "expose-get-fetch-state", "fix-dev-port-vite-restart", + "fix-prerender-allowed-domains-warning", "font-data-subset-field", "goofy-tigers-like", + "odd-poems-dress", "plenty-meals-wonder", "remove-db-cli-command", "rusty-compilers-only", + "satteri-default-markdown-processor", "seven-pots-begin", "silly-spoons-write", "social-paws-take", diff --git a/examples/advanced-routing/package.json b/examples/advanced-routing/package.json index 675ca955a358..ca9335cafd9c 100644 --- a/examples/advanced-routing/package.json +++ b/examples/advanced-routing/package.json @@ -13,8 +13,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/node": "^11.0.0-beta.1", - "astro": "^7.0.0-beta.3", + "@astrojs/node": "^11.0.0-beta.2", + "astro": "^7.0.0-beta.4", "hono": "^4.12.14" } } diff --git a/examples/basics/package.json b/examples/basics/package.json index 8a194c87f4e4..b55322e88ed6 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -13,6 +13,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index fb411268fd7e..d07e8ff85889 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -16,7 +16,7 @@ "@astrojs/mdx": "^7.0.0-beta.2", "@astrojs/rss": "^4.0.18", "@astrojs/sitemap": "^3.7.3", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "sharp": "^0.34.3" } } diff --git a/examples/component/package.json b/examples/component/package.json index 0638ef4b0c3b..be8a74da748f 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -18,7 +18,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" }, "peerDependencies": { "astro": "^5.0.0 || ^6.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index 8ac9029e202b..0f58d1032530 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@astrojs/react": "^6.0.0-beta.1", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "^4.1.0" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index c9510fce20f9..c4885f9ea028 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -16,6 +16,6 @@ "@astrojs/alpinejs": "^1.0.0-beta.1", "@types/alpinejs": "^3.13.11", "alpinejs": "^3.15.8", - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 5ec3f2d7fec0..628c74791bbe 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -20,7 +20,7 @@ "@astrojs/vue": "^7.0.0-beta.1", "@types/react": "^18.3.28", "@types/react-dom": "^18.3.7", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "preact": "^10.28.4", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 8b88955f02be..e6b73cfb10a1 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -15,7 +15,7 @@ "dependencies": { "@astrojs/preact": "^6.0.0-beta.1", "@preact/signals": "^2.8.1", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "preact": "^10.28.4" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index c09f559a72ef..b27229a7c661 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -16,7 +16,7 @@ "@astrojs/react": "^6.0.0-beta.1", "@types/react": "^18.3.28", "@types/react-dom": "^18.3.7", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index e05e5d509c77..5ffb6fbb4615 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@astrojs/solid-js": "^7.0.0-beta.1", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "solid-js": "^1.9.11" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index f3bc8dad5388..d9eea3d955ca 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@astrojs/svelte": "^9.0.0-beta.3", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "svelte": "^5.53.5" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 5c7b6ebf1617..c5c913208587 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@astrojs/vue": "^7.0.0-beta.1", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "vue": "^3.5.29" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index 4107276e855d..ad9344ddff84 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -13,7 +13,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/node": "^11.0.0-beta.1", - "astro": "^7.0.0-beta.3" + "@astrojs/node": "^11.0.0-beta.2", + "astro": "^7.0.0-beta.4" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 2c998e4bda3b..e95858404ad7 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -18,7 +18,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index dc6de4214d33..9e3c124e015b 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -13,6 +13,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index d6b70dd09fdf..0db3794043d7 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -13,6 +13,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 623ba2019fac..073d20f7e1d8 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,9 +14,9 @@ "server": "node dist/server/entry.mjs" }, "dependencies": { - "@astrojs/node": "^11.0.0-beta.1", + "@astrojs/node": "^11.0.0-beta.2", "@astrojs/svelte": "^9.0.0-beta.3", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "svelte": "^5.53.5" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index a98f9427da88..b64182948d2b 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -9,7 +9,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "sass": "^1.97.3", "sharp": "^0.34.3" }, diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index 56c54bdce94f..109e41ab3801 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/node": "^22.10.6", - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" }, "engines": { "node": ">=22.12.0" diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index d182e0e692b2..7cdebb316511 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -14,6 +14,6 @@ }, "dependencies": { "@astrojs/markdoc": "^2.0.0-beta.1", - "astro": "^7.0.0-beta.3" + "astro": "^7.0.0-beta.4" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index b314b1e01936..f531a112d39f 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -15,7 +15,7 @@ "dependencies": { "@astrojs/mdx": "^7.0.0-beta.2", "@astrojs/preact": "^6.0.0-beta.1", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "preact": "^10.28.4" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 594b44699939..2aca3d5b5f1d 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -15,7 +15,7 @@ "dependencies": { "@astrojs/preact": "^6.0.0-beta.1", "@nanostores/preact": "^1.0.0", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "nanostores": "^1.1.1", "preact": "^10.28.4" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 74962b987a36..e19bea5bb7b5 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -16,7 +16,7 @@ "@astrojs/mdx": "^7.0.0-beta.2", "@tailwindcss/vite": "^4.2.1", "@types/canvas-confetti": "^1.9.0", - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "canvas-confetti": "^1.9.4", "tailwindcss": "^4.2.1", "vite": "^8.0.13" diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index afca611f0e3f..8298de9d58c0 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -14,7 +14,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^7.0.0-beta.3", + "astro": "^7.0.0-beta.4", "vitest": "^5.0.0-beta.2" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index 1c1830b5760b..1305d02a740c 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,33 @@ # astro +## 7.0.0-beta.4 + +### Major Changes + +- [#16966](https://github.com/withastro/astro/pull/16966) [`6650ec2`](https://github.com/withastro/astro/commit/6650ec24e81bb9fdf2fcec3dc07154b94d41cb61) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Makes Sätteri the default Markdown processor + + Astro now renders `.md` files with `satteri()` from `@astrojs/markdown-satteri`, its native Markdown pipeline, instead of the remark/rehype pipeline. `@astrojs/markdown-remark` is no longer installed by default. + + To keep using the remark/rehype pipeline, install `@astrojs/markdown-remark` and set it as your processor: + + ```js + // astro.config.mjs + import { defineConfig } from 'astro/config'; + import { unified } from '@astrojs/markdown-remark'; + + export default defineConfig({ + markdown: { + processor: unified(), + }, + }); + ``` + + The deprecated `markdown.remarkPlugins`, `markdown.rehypePlugins`, and `markdown.remarkRehype` options still work, but now require `@astrojs/markdown-remark` to be used. + +### Patch Changes + +- [#17078](https://github.com/withastro/astro/pull/17078) [`04547ec`](https://github.com/withastro/astro/commit/04547eca5bc6b8c1b3b95398ccc49c870a68c34c) Thanks [@astrobot-houston](https://github.com/astrobot-houston)! - Fixes a spurious `Astro.request.headers` warning on prerendered pages when `security.allowedDomains` is configured. The internal `allowedDomains` header validation now skips prerendered routes, since they use synthetic requests with no real headers. + ## 7.0.0-beta.3 ### Major Changes @@ -243,6 +271,7 @@ - [#15819](https://github.com/withastro/astro/pull/15819) [`cafec4e`](https://github.com/withastro/astro/commit/cafec4e23365061491103dfce2e889a15cf86f27) Thanks [@delucis](https://github.com/delucis)! - Fixes `--port` flag being ignored after a Vite-triggered server restart (e.g. when a `.env` file changes) - [#16434](https://github.com/withastro/astro/pull/16434) [`ee079d4`](https://github.com/withastro/astro/commit/ee079d4c7f143076b84d663c832911009a077c7f) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where i18n domains would return 404 when `trailingSlash` is set to `never`. + ## 6.4.7 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index 8d13a4ac3c21..8e4f1aeb13d1 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "7.0.0-beta.3", + "version": "7.0.0-beta.4", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/packages/integrations/node/CHANGELOG.md b/packages/integrations/node/CHANGELOG.md index ae5b7c34a66d..df9a4630738c 100644 --- a/packages/integrations/node/CHANGELOG.md +++ b/packages/integrations/node/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/node +## 11.0.0-beta.2 + +### Patch Changes + +- [#17054](https://github.com/withastro/astro/pull/17054) [`d426b67`](https://github.com/withastro/astro/commit/d426b67b1239a82bf001d23ac8e418fea6861be1) Thanks [@astrobot-houston](https://github.com/astrobot-houston)! - Fixes an issue where Astro files with non-ASCII characters in their name weren't correctly served after the build. + ## 11.0.0-beta.1 ### Patch Changes diff --git a/packages/integrations/node/package.json b/packages/integrations/node/package.json index d1c53f45c538..4333e0b22441 100644 --- a/packages/integrations/node/package.json +++ b/packages/integrations/node/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/node", "description": "Deploy your site to a Node.js server", - "version": "11.0.0-beta.1", + "version": "11.0.0-beta.2", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2ca2247ff35..d40fd3e5f533 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -191,10 +191,10 @@ importers: examples/advanced-routing: dependencies: '@astrojs/node': - specifier: ^11.0.0-beta.1 + specifier: ^11.0.0-beta.2 version: link:../../packages/integrations/node astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro hono: specifier: ^4.12.14 @@ -203,7 +203,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/blog: @@ -218,7 +218,7 @@ importers: specifier: ^3.7.3 version: link:../../packages/integrations/sitemap astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro sharp: specifier: ^0.34.3 @@ -227,7 +227,7 @@ importers: examples/component: devDependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/container-with-vitest: @@ -236,7 +236,7 @@ importers: specifier: ^6.0.0-beta.1 version: link:../../packages/integrations/react astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -267,7 +267,7 @@ importers: specifier: ^3.15.8 version: 3.15.8 astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/framework-multiple: @@ -294,7 +294,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.28) astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro preact: specifier: ^10.28.4 @@ -324,7 +324,7 @@ importers: specifier: ^2.8.1 version: 2.8.2(preact@10.29.0) astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro preact: specifier: ^10.28.4 @@ -342,7 +342,7 @@ importers: specifier: ^18.3.7 version: 18.3.7(@types/react@18.3.28) astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -357,7 +357,7 @@ importers: specifier: ^7.0.0-beta.1 version: link:../../packages/integrations/solid astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro solid-js: specifier: ^1.9.11 @@ -369,7 +369,7 @@ importers: specifier: ^9.0.0-beta.3 version: link:../../packages/integrations/svelte astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro svelte: specifier: ^5.53.5 @@ -381,7 +381,7 @@ importers: specifier: ^7.0.0-beta.1 version: link:../../packages/integrations/vue astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro vue: specifier: ^3.5.29 @@ -390,40 +390,40 @@ importers: examples/hackernews: dependencies: '@astrojs/node': - specifier: ^11.0.0-beta.1 + specifier: ^11.0.0-beta.2 version: link:../../packages/integrations/node astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/minimal: dependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/ssr: dependencies: '@astrojs/node': - specifier: ^11.0.0-beta.1 + specifier: ^11.0.0-beta.2 version: link:../../packages/integrations/node '@astrojs/svelte': specifier: ^9.0.0-beta.3 version: link:../../packages/integrations/svelte astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro svelte: specifier: ^5.53.5 @@ -432,7 +432,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro sass: specifier: ^1.97.3 @@ -447,7 +447,7 @@ importers: specifier: ^22.19.0 version: 22.19.19 astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/with-markdoc: @@ -456,7 +456,7 @@ importers: specifier: ^2.0.0-beta.1 version: link:../../packages/integrations/markdoc astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro examples/with-mdx: @@ -468,7 +468,7 @@ importers: specifier: ^6.0.0-beta.1 version: link:../../packages/integrations/preact astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro preact: specifier: ^10.28.4 @@ -483,7 +483,7 @@ importers: specifier: ^1.0.0 version: 1.0.0(nanostores@1.1.1)(preact@10.29.0) astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro nanostores: specifier: ^1.1.1 @@ -504,7 +504,7 @@ importers: specifier: ^1.9.0 version: 1.9.0 astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro canvas-confetti: specifier: ^1.9.4 @@ -519,7 +519,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^7.0.0-beta.3 + specifier: ^7.0.0-beta.4 version: link:../../packages/astro vitest: specifier: ^5.0.0-beta.2