Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
4978165
fix(cloudflare): exclude starlight from SSR dep optimization (#16151)
matthewp Mar 30, 2026
9a50757
[ci] release (#16152)
astrobot-houston Mar 30, 2026
ade6f51
refactor(mdx): more unit tests, less integrations (#16158)
ematipico Mar 31, 2026
12602a9
fix: stop CSS traversal at page boundaries (#16116)
riderx Mar 31, 2026
34c6b3a
[ci] format
ematipico Mar 31, 2026
358f826
fix(content): clear stale asset imports on content collection entry u…
dataCenter430 Mar 31, 2026
de669f0
fix(core): append assetQueryParams to inter-chunk JS imports (#15964)…
tmimmanuel Mar 31, 2026
6b6751d
[ci] format
matthewp Mar 31, 2026
34b5f13
chore: move unit tests to ts (#16157)
ematipico Mar 31, 2026
a9138ab
[ci] format
ematipico Mar 31, 2026
d0fe1ec
fix(vercel): edge middleware next() drops HTTP method and body (#16170)
bittoby Mar 31, 2026
4eec0f1
test: don't use tmp fixtures (#16177)
ematipico Apr 1, 2026
1d1448c
fix(preact): pre-optimize @preact/signals to prevent dev reload flaki…
matthewp Apr 1, 2026
b51f297
Preserve head metadata in Cloudflare dev rendering (#16161)
matthewp Apr 1, 2026
a0a49e9
fix(cloudflare): ensure HMR works when `prerenderEnvironment` is set …
rururux Apr 1, 2026
a7e7567
Include injected routes when determining whether renderers are needed…
matthewp Apr 1, 2026
7454854
fix(astro): Fix `isHTMLString` check failing in multi-realm environme…
rururux Apr 1, 2026
814406d
fix(underscore-redirects): respect trailingSlash config in redirects …
alexanderniebuhr Apr 1, 2026
402193e
[ci] format
alexanderniebuhr Apr 1, 2026
b5b8093
[ci] release (#16159)
astrobot-houston Apr 1, 2026
7610ba4
Fix periods in URLs with trailing slashes causing 404s in dev server …
Desel72 Apr 1, 2026
fffd290
docs(language-tools): mention js/ts settings namespace in vscode (#16…
Misrilal-Sah Apr 1, 2026
3cd1b16
fix(e2e): remove bogus Node.js import breaking actions-blog tests (#1…
matthewp Apr 2, 2026
080d867
test: increase testing coverage (#16189)
ematipico Apr 2, 2026
604f939
[ci] format
ematipico Apr 2, 2026
6d5469e
Preserve Cloudflare miniflare instance across dev server config resta…
matthewp Apr 2, 2026
21f9fe2
fix(astro): remove unused re-exports causing Vite build warning (#16197)
SchahinRohani Apr 2, 2026
23425e2
Fix trailingSlash for extensionless endpoints in static builds (#16193)
matthewp Apr 3, 2026
fa8033b
Unblock smoke tests: exclude astro-og-canvas@0.11.0 from minimumRelea…
matthewp Apr 4, 2026
5557dca
feat: erasableSyntaxOnly (#15719)
florian-lefebvre Apr 6, 2026
a2b9eeb
fix: react 19 ssr aito injection preload link (#16224)
fkatsuhiro Apr 6, 2026
73cbb9c
[ci] format
matthewp Apr 6, 2026
2c9bf5e
[ci] release (#16182)
astrobot-houston Apr 6, 2026
756e7be
fix(cloudflare): exclude queue consumers from prerender worker (#16225)
travisbreaks Apr 7, 2026
1da523d
refactor: port tests to ts (#16243)
ematipico Apr 7, 2026
7c65c04
fix: stream Fragment sync siblings before async children resolve (#16…
dataCenter430 Apr 7, 2026
c2a52d6
[ci] format
ematipico Apr 7, 2026
44fd3b8
Port 8 unit test files from JavaScript to TypeScript (#16249)
AmarReddy4 Apr 7, 2026
79d86b8
chore: adapt code to upstream deprecation (#16192)
alexanderniebuhr Apr 8, 2026
922ff31
refactor: migrate blog template to use new astro font loading api (#1…
alexanderdombroski Apr 8, 2026
39a4c43
[ci] format
florian-lefebvre Apr 8, 2026
5bcd03c
fix(assets): resolve Picture TDZ error when combined with content ren…
Desel72 Apr 8, 2026
686c312
Revives UnoCSS in dev mode when used with the client router (#16242)
martrapp Apr 8, 2026
0d278ac
[ci] format
martrapp Apr 8, 2026
34df955
chore: inline dlv dependency (#16259)
gameroman Apr 8, 2026
337d3aa
[ci] format
ematipico Apr 8, 2026
fab9c00
chore: upgrade biome (#16246)
ematipico Apr 8, 2026
dabd2a8
[ci] format
ematipico Apr 8, 2026
673a871
[ci] release (#16244)
astrobot-houston Apr 8, 2026
d198e82
test: port 16 routing unit tests to TypeScript (#16266)
barry3406 Apr 9, 2026
ba18015
[ci] format
ematipico Apr 9, 2026
92fc030
refactor(core): rename logger internal types (#16271)
ematipico Apr 9, 2026
7fe40bc
Bump @qwik.dev/partytown to v0.13.2 (#16265)
ChrisLaRocque Apr 10, 2026
b06eabf
Consolidate inline script escaping into shared utility (#16303)
matthewp Apr 13, 2026
b5c2fba
Skip actions server-output validation when an adapter is configured (…
matthewp Apr 13, 2026
e030bd0
Fix .svelte files in node_modules with Cloudflare prerenderEnvironmen…
matthewp Apr 13, 2026
5f3085b
[ci] format
matthewp Apr 13, 2026
bb4586a
fix: avoid full-reload in scss modules (#14924)
aralroca Apr 13, 2026
1945a93
[ci] release (#16281)
astrobot-houston Apr 13, 2026
94048f2
fix(dev): preserve --port flag after Vite-triggered server restart (#…
Arecsu Apr 14, 2026
a0c1c86
fix: add checkout step back to mergeability check (#15783)
iCiaran Apr 14, 2026
c1404b7
refactor: unit tests that are integration tests (#16280)
ematipico Apr 14, 2026
a81dd3e
Surface console output from workerd during Cloudflare prerendering (#…
matthewp Apr 14, 2026
0fcd04c
fix(core): svg via f=svg (#16316)
ematipico Apr 14, 2026
940afd5
Fix static asset error responses including immutable cache headers (#…
matthewp Apr 14, 2026
a43eb4b
Use redirect: manual in Cloudflare image binding transform (#16320)
matthewp Apr 15, 2026
75bb9f5
test: add unit test for dlv util (#16262)
gameroman Apr 15, 2026
c62516b
fix: netrify image validation (#16027)
fkatsuhiro Apr 15, 2026
8abc6ec
[ci] format
ematipico Apr 15, 2026
71e4bc2
Add nightly Semgrep security scanning workflow (#16205)
FredKSchott Apr 15, 2026
8c8980d
ci: cron job semgrep (#16336)
ematipico Apr 15, 2026
8ddb800
Update github-actions (#16146)
renovate[bot] Apr 15, 2026
eca29c1
[ci] release (#16314)
astrobot-houston Apr 15, 2026
f9cbdea
chore: add rule for detecting incorrect imports (#16343)
ematipico Apr 16, 2026
5ed467f
refactor: migrate react tests to typescript (#16318)
ocavue Apr 16, 2026
03d532e
refactor: migrate custom 404 tests to typescript (#16350)
ocavue Apr 16, 2026
95b0913
refactor: migrate vue tests to typescript (#16349)
ocavue Apr 16, 2026
184700c
fix(deps): update language tools (#16230)
renovate[bot] Apr 16, 2026
80300ea
chore: fix lock file (#16352)
ocavue Apr 16, 2026
245f300
refactor: migrate sitemap tests to typescript (#16353)
ocavue Apr 16, 2026
7d26cd7
fix: stabilize client build output filenames across runs (#16348)
ocavue Apr 16, 2026
e0b240e
changeset: add changeset for telemetry changes (#16257)
gameroman Apr 16, 2026
2dd13fa
refactor: migrate alpinejs tests to typescript (#16354)
ocavue Apr 16, 2026
5b0fdaa
fix(core): fix append of assetQueryParams to inter-chunk JS *dynamic*…
jmurty Apr 16, 2026
69c2453
refactor: migrate markdoc tests to typescript (#16355)
ocavue Apr 16, 2026
747a5b3
refactor: migrate astro-rss tests to typescript (#16357)
ocavue Apr 16, 2026
d012bfe
fix(dev): Passing on allowedDomains configuration. (#16317)
das-peter Apr 16, 2026
37e008f
refactor: migrate svelte tests to typescript (#16351)
ocavue Apr 16, 2026
811015d
chore: remove lone fixtures (#16363)
ematipico Apr 16, 2026
a6866a7
fix(core): clean chunk name (#16367)
ematipico Apr 16, 2026
ec89d39
refactor: migrate telemetry tests to typescript (#16358)
ocavue Apr 16, 2026
bb0ff91
refactor(astro): migrate error tests to typescript (#16377)
ocavue Apr 17, 2026
21cc4dd
refactor(upgrade): migrate tests to typescript (#16372)
ocavue Apr 17, 2026
77beb7e
fix(netlify): correct test describe signature (#16371)
ocavue Apr 17, 2026
dc8a01d
chore: reduce fixtures by merging them (#16364)
ematipico Apr 17, 2026
7134aa0
feat: tweak issue auto-triage (#16284)
Princesseuh Apr 17, 2026
009c421
[ci] format
Princesseuh Apr 17, 2026
6e5bc17
chore: absorb tests into others (#16365)
ematipico Apr 17, 2026
217c5b3
perf(core): cache crawl result (#16381)
ematipico Apr 17, 2026
ba2dbf1
refactor(astro): correct Fixture type signatures in test-utils (#16380)
ocavue Apr 17, 2026
5a84551
Improves Vue scoped style handling in DEV mode during client router n…
martrapp Apr 17, 2026
71c93ca
[ci] format
martrapp Apr 17, 2026
50f0dce
refactor(mdx): migrate tests to typescript (#16359)
ocavue Apr 17, 2026
fad154f
refactor(vercel): migrate tests to typescript (#16360)
ocavue Apr 17, 2026
688044f
chore(deps): update `@types/node` (#16362)
ocavue Apr 17, 2026
63c5c85
[ci] release (#16356)
astrobot-houston Apr 18, 2026
f42fed2
refactor(node): migrate unit tests to typescript (#16388)
maximslo Apr 19, 2026
28a7de8
refactor(remark): migrate tests to typescript (#16392)
ocavue Apr 20, 2026
a002540
fix(i18n): respect trailingSlash config in domain routing (#16022)
mathieumaf Apr 20, 2026
8e13469
refactor(mdx): add SpyIntegrationLogger for test (#16384)
ocavue Apr 20, 2026
9ed6b75
refactor: remove PRERENDER env variable in tests (#16391)
ocavue Apr 20, 2026
7649542
refactor(underscore-redirects): migrate tests to typescript (#16374)
ocavue Apr 20, 2026
763dcda
refactor(cloudflare): migrate tests to typescript (#16378)
ocavue Apr 20, 2026
0f24c22
refactor(astro): migrate css tests to typescript (#16393)
ocavue Apr 20, 2026
be72fd0
refactor(internal-helpers): migrate tests to typescript (#16401)
ocavue Apr 20, 2026
05e70f7
refactor(netlify): migrate tests to typescript (#16395)
ocavue Apr 20, 2026
cf074b3
refactor(astro): migrate ssr tests to typescript (#16394)
ocavue Apr 20, 2026
23ebee5
refactor(node): migrate tests to typescript (#16376)
ocavue Apr 20, 2026
46633f5
refactor(create-astro): migrate tests to typescript (#16400)
ocavue Apr 20, 2026
f31a80d
refactor(db): migrate tests to typescript (#16403)
ocavue Apr 20, 2026
35ea294
refactor(astro): migrate e2e tests to typescript (#16402)
ocavue Apr 20, 2026
32b361d
refactor(astro): migrate 39 tests to typescript (#16405)
ocavue Apr 20, 2026
eda80ea
refactor(astro): migrate 9 tests to typescript (#16410)
ocavue Apr 21, 2026
1886e7a
[ci] format
ematipico Apr 21, 2026
3852adc
refactor(astro): migrate dev tests to typescript (#16408)
ocavue Apr 21, 2026
868566c
refactor(astro): migrate content tests to typescript (#16409)
ocavue Apr 21, 2026
1c477aa
refactor(astro): migrate 10 tests to typescript (#16411)
ocavue Apr 21, 2026
72e9faa
refactor(astro): migrate 19 tests to typescript (#16414)
ocavue Apr 21, 2026
c085cb2
refactor(vercel): remove duplicated test files (#16416)
ocavue Apr 21, 2026
3bdc4ac
refactor(astro): migrate core-image tests to typescript (#16413)
ocavue Apr 21, 2026
8a13969
refactor(astro): migrate 4 tests to typescript (#16427)
ocavue Apr 21, 2026
41d8a8c
Merge remote-tracking branch 'origin/main' into chore/merge-main-next
ematipico Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 21 additions & 7 deletions .agents/skills/triage/comment.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,38 @@ Generate and return a GitHub comment following the template below.

The **Fix** line in the template has three possible forms. Choose the one that matches the triage outcome:

1. **You created a fix:** Use `I was able to fix this issue.` and include the suggested fix link.
1. **You created a fix:** Use `I found a potential fix for this issue.` and include the suggested fix link. Avoid claiming certainty, even if the fix passes tests, frame it as a suggestion that needs human review.
2. **The issue is already fixed on main** (e.g. the user is on an older major version and the bug doesn't reproduce on current main): Use `This issue has already been fixed.` and tell the user how to get the fix (e.g. upgrade). Link the relevant upgrade guide if applicable: [v6](https://docs.astro.build/en/guides/upgrade-to/v6/), [v5](https://docs.astro.build/en/guides/upgrade-to/v5/).
3. **You could not find or create a fix:** Use `I was unable to find a fix for this issue.` and give guidance or a best guess at where the fix might be.
3. **Low-confidence or no fix:** Use `I wasn't able to find a fix, but I identified some areas that may be relevant.` and list the files/code paths that seem related. Frame this as a jumping-off point for a human, not a diagnosis. If a failing test was added, mention it.
4. **No leads at all:** Use `I was unable to determine the cause of this issue.` This should be rare, only use it when you genuinely have nothing useful to point to.

### "Priority" Instructions

The **Priority** line communicates the severity of this issue to maintainers. Its goal is to answer the question: **"How bad is it?"**

Select exactly ONE priority label from the `priorityLabels` arg. Use the label descriptions to guide your decision, combined with the triage report's root cause and impact analysis. Render it in bold, with the `- ` prefix removed, like this: `**Priorty P2: Has Workaround.** Then, follow it with 1-2 sentences explaining _why_ you chose that priority. Answer: "who is likely to be affected and under what conditions?". If you are unsure, use your best judgment based on the label descriptions and the triage findings.
Select exactly ONE priority label from the `priorityLabels` arg. Use the label descriptions to guide your decision, combined with the triage report's root cause and impact analysis. Render it in bold, with the `- ` prefix removed, like this: `**Priority P2: Has Workaround.**` Then, follow it with 1-2 sentences explaining _why_ you chose that priority. Answer: "who is likely to be affected and under what conditions?". If you are unsure, use your best judgment based on the label descriptions and the triage findings.

**Priority calibration — err on the side of lower priority:**

- **Experimental/unstable features** should almost never be higher than P3. Users of experimental features accept instability. (e.g. a broken option in `experimental.fonts`)
- **Niche adapter/integration combos** (e.g. MDX + Svelte + Cloudflare) are typically P3 or lower unless they affect a core workflow.
- **P4 vs P5** — the key question is breadth: how many typical Astro users would hit this in a standard workflow? (e.g. P4: wrong output for a common routing pattern; P5: `astro build` crashes for most projects)
- **P2: Has Workaround vs P2: Nice to Have** — pick based on whether something behaves unexpectedly (but circumventable) vs. simply a convenience gap (e.g. Has Workaround: unexpected behavior with a way to restructure around it; Nice to Have: cosmetic issue in an error message). If there is no workaround at all, consider P3 or higher instead.
- **When selecting between similar labels**, always refer to their descriptions in `priorityLabels` to make the final call.
- **When in doubt, go lower.** A P3 that gets bumped up by a maintainer is much better than a P5 that causes false alarm.

### Template

The comment must start with an at-a-glance summary, followed by short explanations, then the full report in a collapsible section. Keep the top section scannable, a maintainer should understand the status in under 5 seconds and be able to quickly jump into fixing the issue.

```markdown
**[I was able to reproduce this issue. / I was unable to reproduce this issue.]** [2-3 sentences describing the root cause, result, and key observations.]
- **Reproduced:** [Yes / No / Skipped — reason]
- **Exploration:** [Yes / No / Partial / Already fixed on main] [If `branchName` is non-null: — [View branch](https://github.com/withastro/astro/compare/{branchName}?expand=1)]
- **Priority:** [See "Priority" Instructions above. Keep to one line explaining why this priority was chosen, who is likely to be affected, and under what conditions (this section should answer the question: "how bad is it?")]

**[See "Fix" Instructions above.]** [1-2 sentences describing the solution, where/when it was already fixed, or guidance on where a fix might be.] [If `branchName` is non-null: [View Suggested Fix](https://github.com/withastro/astro/compare/{branchName}?expand=1)]
[2-3 sentences describing the root cause or key observations, or where/when it was already fixed. Be specific about what's happening and where in the codebase.]

**[See "Priority" Instructions above.]** [1-2 sentences explaining why this priority was chosen, who is likely to be affected, and under what conditions (this section should answer the question: "how bad is it?")]
**[See "Fix" Instructions above.]** [1-2 sentences describing the fix in more detail: what was changed, guidance on where a fix might be, or relevant code areas.]

<details>
<summary><em>Full Triage Report</em></summary>
Expand All @@ -61,7 +75,7 @@ Select exactly ONE priority label from the `priorityLabels` arg. Use the label d

</details>

_This report was made by an LLM. Mistakes happen, check important info._
_This report was made by an LLM. The analysis may be wrong, and the potential fix might not work, but is intended as a starting point for exploring the issue._
```

## Result
Expand Down
5 changes: 5 additions & 0 deletions .agents/skills/triage/diagnose.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ Iterate until you understand:
- What data is being passed
- Where the logic diverges from expected behavior

Once done, **revert all instrumentation** before moving on. Use `git checkout -- <file>` to remove your `console.log` additions from `packages/`. Debug logs must not leak into downstream steps.

## Step 4: Identify Root Cause

Once you understand the issue, document:
Expand All @@ -75,6 +77,9 @@ Consider:
- Is this a regression from a recent change?
- Does this affect other similar use cases?
- Are there edge cases to consider?
- Never suggest removing a user's dependency (adapters, framework integrations, features like MDX or DB) as a fix, those are things the user needs. The fix must work within the user's existing stack and expected feature-set.

**Tone calibration:** Describe the root cause factually, not dramatically. Avoid language that overstates impact ("critical flaw", "fundamentally broken", "severe vulnerability") unless the evidence genuinely supports it. A missing null check is a missing null check, not a "critical oversight in the rendering pipeline." The diagnosis should help a maintainer understand what's wrong, guiding them towards a fix, not alarm them.

## Step 5: Write Output

Expand Down
15 changes: 14 additions & 1 deletion .agents/skills/triage/fix.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,19 @@ Read `report.md` from the `triageDir` directory to understand:
- The suggested approach
- Any edge cases to consider

**Skip if prerequisites unmet:** Check `report.md`: If bug not reproduced/skipped OR diagnosis confidence is `low`/`null` OR no root cause found → append "FIX SKIPPED: [reason]" to `report.md` and return `fixed: false`.
**Skip if prerequisites unmet:** Check `report.md`: If bug was not reproduced or was skipped → append "FIX SKIPPED: Not reproduced" to `report.md` and return `fixed: false`. Do NOT attempt a fix based on guesswork when you cannot reproduce or diagnose the issue.

**Low-confidence path:** If diagnosis confidence is `low` or `null`, or no clear root cause was found → do NOT attempt a code fix. Instead:

1. Identify the most likely area(s) of the codebase related to the issue (files, functions, code paths).
2. If possible, write a failing test that demonstrates the expected behavior described in the issue. Place it alongside existing tests for that area.
3. If you identified specific code paths, add brief inline comments (prefixed `// TRIAGE:`) near the most relevant lines in `packages/` to help the implementor orient quickly. Keep to 2-3 comments max — these are signposts, not a diagnosis.
4. Append to `report.md`: the areas you identified, why they seem relevant, and any failing test or comments you added.
5. Return `fixed: false`.

This "breadcrumb" approach is more useful to maintainers than a wrong fix.

**High-confidence path:** If diagnosis confidence is `medium` or `high` and a clear root cause was identified → proceed with implementing a fix as described in the steps below.

**Note:** The repo may be messy from previous steps. Check `git status` and either work from the current state or `git reset --hard` to start clean.

Expand All @@ -55,6 +67,7 @@ Make changes in `packages/` source files. Follow these principles:
- Only change what's necessary to fix the bug
- Don't refactor unrelated code
- Don't add new features
- **Never "fix" an issue by removing a user's dependency.** Removing an adapter (Cloudflare, Netlify, Vercel, etc.), framework integration (Svelte, React, Vue, etc.), or feature (MDX, DB, etc.) is not a fix, these are things the user needs. The fix must work within the user's existing stack or expected feature set.

**Consider edge cases:**

Expand Down
5 changes: 5 additions & 0 deletions .changeset/two-eels-live.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fixes an issue where i18n domains would return 404 when `trailingSlash` is set to `never`.
11 changes: 7 additions & 4 deletions .flue/workflows/issue-triage/WORKFLOW.ts
Original file line number Diff line number Diff line change
Expand Up @@ -241,19 +241,22 @@ export default async function triage(
const triageResult = await runTriagePipeline(flue, issueNumber, issueDetails);
let isPushed = false;

// If a successful fix was created, push the fix up to a new branch on GitHub.
// Push the fix branch if there are meaningful changes (fix, failing test, etc.).
// The comment we post below will reference that branch, then a maintainer can choose to:
// - checkout that branch locally, using the fix as a starting point
// - create a PR from that branch entirely in the GH UI
// - ignore it completely
if (triageResult.fixed) {
{
const diff = await flue.shell('git diff main --stat');
if (diff.stdout.trim()) {
const status = await flue.shell('git status --porcelain');
if (status.stdout.trim()) {
await flue.shell('git add -A');
const defaultMessage = triageResult.fixed
? 'fix(auto-triage): automated fix'
: 'test(auto-triage): failing test and investigation notes';
await flue.shell(
`git commit -m ${JSON.stringify(triageResult.commitMessage ?? 'fix(auto-triage): automated fix')}`,
`git commit -m ${JSON.stringify(triageResult.commitMessage ?? defaultMessage)}`,
);
}
const pushResult = await flue.shell(`git push -f origin ${branch}`);
Expand All @@ -274,7 +277,7 @@ export default async function triage(
result: v.pipe(
v.string(),
v.description(
'Return only the GitHub comment body generated from the template, following the included template directly. This returned comment must start with "**I was able to reproduce this issue.**" or "**I was unable to reproduce this issue.**"',
'Return only the GitHub comment body generated from the template, following the included template directly. This returned comment must start with the bullet-point summary (- **Reproduced:** ...)',
),
),
});
Expand Down
7 changes: 7 additions & 0 deletions .github/scripts/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"composite": true,
"allowJs": true
}
}
17 changes: 15 additions & 2 deletions .github/workflows/check-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,23 @@ jobs:
with:
files: |
.changeset/**/*.md

# Intentionally ran after the changed-files step so the github API is used to identify
# changed files rather than a local git diff, this is more reliable for pull requests
# originating from a forked repository.
- name: Checkout files
id: checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.changed-files.outputs.any_changed == 'true'
with:
ref: ${{ github.event.pull_request.head.sha }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
fetch-depth: 1
persist-credentials: false
sparse-checkout: |
.changeset
- name: Check if any changesets contain minor or major changes
id: check
if: steps.blocked.outputs.result != 'true'
if: steps.changed-files.outputs.any_changed == 'true'
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: "pnpm"

- name: Install dependencies
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: "pnpm"

- name: Install dependencies
Expand All @@ -141,7 +141,7 @@ jobs:
run: pnpm run publint

- name: Type-check test files
run: pnpm -C packages/astro run typecheck:tests
run: pnpm run typecheck:tests

test:
name: 'Test (${{ matrix.TEST_SUITE.name }}): ${{ matrix.os }} (node@${{ matrix.NODE_VERSION }})'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/congrats.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
congrats:
name: congratsbot
if: ${{ github.repository_owner == 'withastro' && github.event.head_commit.message != '[ci] format' }}
uses: withastro/automation/.github/workflows/congratsbot.yml@main
uses: withastro/automation/.github/workflows/congratsbot.yml@a5bd0c5748c4d56e687cdd558064f9ee8adfb1f2 # main
with:
EMOJIS: '🎉,🎊,🧑‍🚀,🥳,🙌,🚀,👏,<:houston_golden:1068575433647456447>,<:astrocoin:894990669515489301>,<:astro_pride:1130501345326157854>'
secrets:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/continuous_benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: "pnpm"

- name: Install dependencies
Expand All @@ -56,7 +56,7 @@ jobs:
timeout-minutes: 15

- name: Run the benchmarks
uses: CodSpeedHQ/action@1c8ae4843586d3ba879736b7f6b7b0c990757fab # v4.12.1
uses: CodSpeedHQ/action@db35df748deb45fdef0960669f57d627c1956c30 # v4.13.1
timeout-minutes: 30
with:
working-directory: ./benchmark
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/diff-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
fetch-depth: 0 # allows the diff action to access git history

- name: Create Diff
uses: e18e/action-dependency-diff@d995338f3b229fe7b2cd82048df5da930f70c7c3 # v1.4.4
uses: e18e/action-dependency-diff@5d3c6ac2ad2de2eaca1dc120c5accfd9590764b6 # v1.5.1
with:
# We’re using this package primarily to track size changes, not as worried about duplicates
duplicate-threshold: 100
2 changes: 1 addition & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
prettier:
if: github.repository_owner == 'withastro'
uses: withastro/automation/.github/workflows/format.yml@main
uses: withastro/automation/.github/workflows/format.yml@a5bd0c5748c4d56e687cdd558064f9ee8adfb1f2 # main
with:
command: "format"
secrets: inherit
20 changes: 20 additions & 0 deletions .github/workflows/issue-close-cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: "Issue: Close Cleanup"

on:
issues:
types: [closed]

jobs:
cleanup-branch:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Delete triage fix branch
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH="flue/fix-${{ github.event.issue.number }}"
# Delete the branch if it exists; ignore errors if it doesn't
gh api "repos/${{ github.repository }}/git/refs/heads/${BRANCH}" \
-X DELETE 2>/dev/null && echo "Deleted branch ${BRANCH}" || echo "No branch ${BRANCH} to clean up"
2 changes: 1 addition & 1 deletion .github/workflows/issue-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: pnpm

- name: Clone Astro Compiler (for debugging)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/preview-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: "pnpm"

- name: Install dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: "pnpm"

- name: Install dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/scripts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
node-version: 24.14.1
cache: "pnpm"

- name: Install dependencies
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/semgrep.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Semgrep OSS scan
on:
pull_request: {}
schedule:
- cron: '0 0 * * 6'
jobs:
semgrep:
name: semgrep-oss
runs-on: ubuntu-latest
container:
image: semgrep/semgrep@sha256:500acf49f5e5785aa89af609b983f0427ac8cd08f7e34146277df6cffb002759 # v1.157.0
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- run: semgrep scan --config=auto
25 changes: 23 additions & 2 deletions biome.jsonc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.4.2/schema.json",
"$schema": "https://biomejs.dev/schemas/2.4.10/schema.json",
"files": {
"includes": [
"**",
Expand Down Expand Up @@ -46,7 +46,8 @@
// Enforce separate type imports for type-only imports to avoid bundling unneeded code
"useImportType": "error",
"useExportType": "error",
"useNumberNamespace": "warn"
"useNumberNamespace": "warn",
"noInferrableTypes": "error"
},
"suspicious": {
// This one is specific to catch `console.log`. The rest of logs are permitted
Expand Down Expand Up @@ -187,6 +188,26 @@
}
}
}
},
{
"includes": ["**/astro/test/**"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["**/src/**"],
"message": "The test should not import the source code. Import the code from the dist/ folder instead."
}
]
}
}
}
}
}
}
]
}
1 change: 1 addition & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export default [
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/dot-notation': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-floating-promises': 'off',
Expand Down
2 changes: 1 addition & 1 deletion examples/basics/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
"astro": "astro"
},
"dependencies": {
"astro": "^6.1.2"
"astro": "^6.1.8"
}
}
1 change: 1 addition & 0 deletions examples/blog/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Inside of your Astro project, you'll see the following folders and files:
```text
├── public/
├── src/
│   ├── assets/
│   ├── components/
│   ├── content/
│   ├── layouts/
Expand Down
Loading
Loading