diff --git a/.github/workflows/quality-gate.yml b/.github/workflows/quality-gate.yml index 4bb22c3..73a6eec 100644 --- a/.github/workflows/quality-gate.yml +++ b/.github/workflows/quality-gate.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' cache: yarn - run: yarn install --frozen-lockfile diff --git a/eslint.config.js b/eslint.config.js index 1fe7a30..c0df244 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -3,7 +3,10 @@ import typescript from '@typescript-eslint/eslint-plugin'; import typescriptParser from '@typescript-eslint/parser'; import reactHooks from 'eslint-plugin-react-hooks'; import jsxA11y from 'eslint-plugin-jsx-a11y'; -import importPlugin from 'eslint-plugin-import'; +// eslint-plugin-import-x: maintained fork of eslint-plugin-import that supports +// ESLint 10 (the original 2.x crashes on import/order — removed getTokenOrCommentAfter). +// Registered under the `import` plugin key so all `import/*` rule names stay unchanged. +import importPlugin from 'eslint-plugin-import-x'; import prettier from 'eslint-plugin-prettier'; import prettierConfig from 'eslint-config-prettier'; @@ -38,6 +41,7 @@ export default [ crypto: 'readonly', btoa: 'readonly', TextEncoder: 'readonly', + URL: 'readonly', URLSearchParams: 'readonly', alert: 'readonly', // DOM types diff --git a/package.json b/package.json index d37cd92..bde4b74 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,10 @@ "format:check": "prettier --check src/", "check-all": "yarn type-check && yarn lint && yarn format:check" }, + "resolutions": { + "vite": "8.1.2", + "rolldown": "1.1.3" + }, "browserslist": { "production": [ ">0.2%", @@ -65,14 +69,14 @@ "@vitest/ui": "4.1.9", "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import-x": "^4.17.1", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "5.5.6", "eslint-plugin-react-hooks": "^7.1.1", "jsdom": "29.1.1", "prettier": "3.8.4", "typescript": "^6.0.3", - "vite": "8.1.0", + "vite": "8.1.2", "vitest": "4.1.9" } } diff --git a/src/components/status/HealthPage.tsx b/src/components/status/HealthPage.tsx index fd0f734..a4ae7d0 100644 --- a/src/components/status/HealthPage.tsx +++ b/src/components/status/HealthPage.tsx @@ -210,8 +210,9 @@ function HealthPage() {

- how this is gathered: four independent sources. your browser pings each - site live for response time; continuous uptime and incidents come from{' '} + how this is gathered: four independent sources. your browser pings + each site live for response time; continuous uptime and incidents come + from{' '} {' '} (a 5-minute cron writing to a public gist); per-deploy verification — - proof the new build is actually serving traffic end-to-end — comes from{' '} + proof the new build is actually serving traffic end-to-end — comes + from{' '} watchtron - ; and the deployments / infrastructure tabs read the github actions and - digitalocean apis. + ; and the deployments / infrastructure tabs read the github actions + and digitalocean apis.

{/* Overall Status Summary */} @@ -385,8 +387,8 @@ function HealthPage() {

each service shows a live response time (measured from your browser now), continuous uptime from uptime-monitor's - 5-minute checks, and the last verified deploy from watchtron (✓ = - the new build was proven serving end-to-end). + 5-minute checks, and the last verified deploy from watchtron (✓ + = the new build was proven serving end-to-end).