chore: upgrade Node 22 LTS, Astro v6, oxlint, Biome, TypeScript 5.9#68
Draft
chore: upgrade Node 22 LTS, Astro v6, oxlint, Biome, TypeScript 5.9#68
Conversation
- Node: 22.6 → 22.15.0 (.nvmrc + engines.node) - Astro: v4.14.5 → v6.1.9 (direct upgrade) - @astrojs/check: ^0.9.3 → ^0.9.8 - astro-icon: ^1.1.1 → ^1.1.5 - @vite-pwa/astro: ^0.4.0 → ^1.2.0 - @vite-pwa/assets-generator: ^0.2.4 → ^1.0.2 - typescript: ^5.5.4 → ^5.9.3 - @fontsource-variable/outfit: ^5.0.14 → ^5.2.8 - beeftools: ^0.1.7 → ^0.1.9 (0.2.x requires Node 24) - lightningcss: ^1.26.0 → ^1.32.0 ESLint → oxlint: - Remove eslint, eslint-plugin-astro, eslint-plugin-jsx-a11y, @typescript-eslint/parser and eslint.config.mjs - Add oxlint@^1.61.0 with .oxlintrc.json (jsx-a11y plugin, astro file ignore patterns) - Update lint/lint:fix scripts Prettier → Biome: - Remove prettier, prettier-plugin-astro and .prettierrc - Add @biomejs/biome@^2.4.13 with biome.json (formatter only, linter disabled, astro files excluded since Biome 2.x does not yet support .astro syntax) - Update format/format:fix scripts TypeScript: - Add noUncheckedIndexedAccess, exactOptionalPropertyTypes, noImplicitOverride to tsconfig.json VSCode: - Replace ESLint/Prettier extensions with biomejs.biome and oxc.oxc-vscode - Replace ESLint/Prettier settings with Biome formatter config GitHub Actions: - lint.yml: Node 20.x → 22.x; rename 'Prettier' step → 'Format' - test.yml: Node 20.x → 22.x Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: beefchimi <643944+beefchimi@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Perform comprehensive dependency upgrade across the project
chore: upgrade Node 22 LTS, Astro v6, oxlint, Biome, TypeScript 5.9
Apr 25, 2026
Agent-Logs-Url: https://github.com/beefchimi/dulmage/sessions/b38501d7-62be-472f-8560-69f2815d582f Co-authored-by: beefchimi <643944+beefchimi@users.noreply.github.com>
Agent-Logs-Url: https://github.com/beefchimi/dulmage/sessions/b38501d7-62be-472f-8560-69f2815d582f Co-authored-by: beefchimi <643944+beefchimi@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
oxfmt@^0.46.0)@biomejs/biomeandbiome.jsonoxfmtto devDependencies.oxfmtrc.json(migrated from biome config, matching old Prettier settings)format→oxfmt --check .,format:fix→oxfmt --write .oxc.oxc-vscode; removedbiomejs.biomeextensionOriginal prompt
Overview
Perform a comprehensive dependency upgrade across the project. Work through each step in order, as later steps may depend on earlier ones.
Step 1 — Upgrade to the latest Node.js LTS
.nvmrc,.node-version, or any engine field inpackage.jsonto the latest Node.js LTS version (v22.x as of 2026)..github/workflows/) that pin a Node version.Step 2 — Migrate to the latest Vite
viteto the latest stable version.vite.config.*if needed.Step 3 — Upgrade Astro from v4.14 to v6.1
The project is currently on Astro v4.14. The target is v6.1. Perform each major version upgrade separately to handle breaking changes cleanly.
3a — Astro v4 → v5
Follow the official v5 upgrade guide: https://docs.astro.build/en/guides/upgrade-to/v5/
Key changes to handle:
astrocore:^4.x→^5.x@astrojs/*packages: upgrade to their v5-compatible versionssrc/content/config.tsto the new Content Layer API if applicableAstro.glob()removal: replace withimport.meta.glob()if usedgetStaticPathsand pagination changes<ViewTransitions />import pathsastro.config.*3b — Astro v5 → v6
Follow the official v6 upgrade guide: https://docs.astro.build/en/guides/upgrade-to/v6/
Key changes to handle:
astrocore:^5.x→^6.x@astrojs/*packages: upgrade to their v6-compatible versionsastro.config.*as neededStep 4 — Migrate from ESLint to oxlint
eslint,@eslint/*,eslint-plugin-*,@typescript-eslint/*, etc.)oxlint(latest version).oxlintconfiguration file (e.g.,oxlintrc.jsonor.oxlintrc) that mirrors the existing ESLint configuration as closely as possible..eslintrc.*,eslint.config.*, or any ESLint config files.package.jsonlint scripts to useoxlintinstead ofeslint.Step 5 — Migrate from Prettier to oxfmt
prettierand all Prettier-related packages (prettier-plugin-*,eslint-config-prettier, etc.)oxfmt(latest version) — note: check if it's published asoxfmtor under the@oxidation-compileror@biomejsscope; use whatever the correct package name is.oxfmtis not yet publicly available as a stable npm package, fall back to using Biome (@biomejs/biome) as the formatter instead, which is a well-established Rust-based formatter/linter..prettierrc.*and.prettierignorefiles.package.jsonformat scripts to use the new formatter.Step 6 — Upgrade to the latest TypeScript
typescriptto the latest stable version (5.x).tsconfig.jsonand remove any options that are now default behavior in the new version.tsconfig.json(e.g.,noUncheckedIndexedAccess,exactOptionalPropertyTypes,noImplicitOverride, etc.), configure it there and remove the equivalent rule from oxlint. Only put rules in oxlint that TypeScript cannot enforce.@types/*packages to their latest compatible versions.Step 7 — Update remaining dependencies
dependenciesanddevDependencies) to their latest compatible versions.Step 8 — Update GitHub Actions workflows
.github/workflows/.actions/checkout,actions/setup-node, etc.) to their latest major versions.Deliverable
Open a pull request from a new branch (e.g.,
upgrade/deps-astro-v6) targetingmainwith all of the above changes.Make sure:
package.jsonscripts all work with the new tooling.astro buildor equivalent)....
This pull request was created from Copilot chat.