Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
9f1740e
Update to Node 24
gpailler Nov 25, 2025
17e4fa6
Replace npm with pnpm
gpailler Nov 25, 2025
1568b10
Update typescript to latest 5.9.3
gpailler Nov 25, 2025
e900124
Update vite to latest 7.2.4
gpailler Nov 25, 2025
38395c7
Update from eslint/prettier to latest biome 2.3.7
gpailler Nov 25, 2025
1e4943d
Biome: format
gpailler Nov 25, 2025
6f3f91e
Biome: lint:fix
gpailler Nov 25, 2025
29f31b1
Update react to latest 19.2.0 + update all react dependencies
gpailler Nov 25, 2025
60cdd6b
Update remaining small dependencies to the latest version
gpailler Nov 25, 2025
922787a
Move some dependencies to dev
gpailler Nov 25, 2025
1c7e619
Switch to maintained @dr.pogodin/react-helmet to fix an error in the …
gpailler Nov 25, 2025
5a0537c
Fix several issues in Buckets.tsx to properly display the buckets wit…
gpailler Nov 25, 2025
19a80c7
Biome linter fix: Useless React Fragments
gpailler Nov 25, 2025
e0031f2
Biome linter fix: Static-only class
gpailler Nov 25, 2025
3b014e3
Biome linter fix: Double equals (== vs ===)
gpailler Nov 25, 2025
3488ec8
Biome linter fix: Reorder usings
gpailler Nov 25, 2025
f8aeca0
Biome linter fix: Missing radix parameter in parseInt
gpailler Nov 25, 2025
4e299b6
Biome linter fix: String template preference
gpailler Nov 25, 2025
94ec2cf
Biome linter fix: Add noDangerouslySetInnerHtml exception
gpailler Nov 25, 2025
723017a
Biome linter fix: Array index as key
gpailler Nov 25, 2025
8b169fb
Remove remaining eslint ignore comments
gpailler Nov 25, 2025
78d078e
Fix errors reported in the console when opening search options
gpailler Nov 25, 2025
597d53a
Biome linter fix: Fixing CSS descending specificity error
gpailler Nov 25, 2025
740aa51
Biome linter fix: fix both ColorSchemeProvider issues by moving the t…
gpailler Nov 25, 2025
5369d4c
Biome linter fix: move sortResults outside the component (since it do…
gpailler Nov 25, 2025
8ff6b50
Biome linter fix: Wrap clearDelayBeforeSubmitTimeout in useCallback a…
gpailler Nov 25, 2025
5bab906
Biome linter fix: Fix any type in request-idle-callback.ts + fix unus…
gpailler Nov 25, 2025
d2d6775
Biome linter fix: idleCallbackId is a ref and doesn't need to be in t…
gpailler Nov 25, 2025
c9576e8
Bump version to 0.2.1
gpailler Nov 25, 2025
7f3832e
Replace setSortIndex with setSortDirection (wrong copy/paste)
gpailler Nov 26, 2025
981eddc
Don't mutate the original array and return a sorted copy instead
gpailler Nov 26, 2025
665bb71
Move recommended extension in the customizations/vscode section
gpailler Nov 26, 2025
6247fe1
Use --frozen-lockfile on CI to strictly honor the lockfile
gpailler Nov 26, 2025
399f160
Wrap state updates in useEffect hooks to prevents potential issues wi…
gpailler Nov 26, 2025
2654bb9
Perform local sort of the buckets
gpailler Nov 26, 2025
1b821ae
Split bundle in chunks to allow parallel download by the browser
gpailler Nov 26, 2025
646b20e
Remove unused abortControllerRef
gpailler Nov 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 23 additions & 27 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
{
"name": "ScoopInstaller web frontend (Node.js & TypeScript)",
// Use TypeScript + Node 16
"image": "mcr.microsoft.com/devcontainers/typescript-node:16",
"forwardPorts": [
3000
],
"portsAttributes": {
"3000": {
"label": "Vite dev server",
"onAutoForward": "openBrowser"
}
},
"extensions": [
"dbaeumer.vscode-eslint"
],
"customizations": {
"codespaces": {
"openFiles": [
"src/App.tsx"
]
}
},
// Install required modules
"updateContentCommand": "npm ci",
// Start dev server
"postAttachCommand": "npm run dev"
}
"name": "ScoopInstaller web frontend (Node.js & TypeScript)",
// Use TypeScript + Node 24
"image": "mcr.microsoft.com/devcontainers/typescript-node:24",
"forwardPorts": [3000],
"portsAttributes": {
"3000": {
"label": "Vite dev server",
"onAutoForward": "openBrowser"
}
},
"customizations": {
"vscode": {
"extensions": ["biomejs.biome"]
},
"codespaces": {
"openFiles": ["src/App.tsx"]
}
},
// Install required modules
"updateContentCommand": "corepack enable && pnpm install --frozen-lockfile",
// Start dev server
"postAttachCommand": "pnpm run dev"
}
58 changes: 0 additions & 58 deletions .eslintrc.json

This file was deleted.

18 changes: 12 additions & 6 deletions .github/workflows/build-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:

env:
BUILD_PATH: ${{ github.workspace }}/build
NODE_VERSION: '20'
NODE_VERSION: '24'
VITE_APP_AZURESEARCH_KEY: ${{ secrets.VITE_APP_AZURESEARCH_KEY }}

jobs:
Expand All @@ -21,19 +21,25 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js ${{ env.NODE_VERSION }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "pnpm"

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Code linter
run: npm run lint
run: pnpm run lint

- name: Build Staging Website
run: npm run build
run: pnpm run build
env:
BASE_PATH: /scoopinstaller-dev.github.io/

Expand All @@ -44,7 +50,7 @@ jobs:
path: ${{ env.BUILD_PATH }}

- name: Build Production Website
run: npm run build
run: pnpm run build
env:
BASE_PATH: /

Expand Down
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
5 changes: 0 additions & 5 deletions .prettierrc.json

This file was deleted.

13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,21 @@ cd scoopinstaller.github.io
```

#### Prerequisites
- Install a recent [Node](https://nodejs.org/en/ "Node") version >= 16.0.0, e.g. `scoop install nodejs`
- Run `npm update`
- Install a recent [Node](https://nodejs.org/en/ "Node") version >= 24.0.0, e.g. `scoop install nodejs-lts`
- Install pnpm: `scoop install pnpm` or `npm install -g pnpm`
- Run `pnpm install`

#### Launch the application
- Run `npm run dev`
- Run `pnpm run dev`

Application should run on http://localhost:3000 or https://localhost:5000 to pass CORS checks and query the search database.

#### Build the application
- Run `npm run build`
- Run `pnpm run build`

#### Preview the production build
- Run `npm run preview`
- Run `pnpm run preview`

### Contribute to this project
Pull requests are most welcome!
Please target the `main` branch and run `npm run build` (or at least `npm run lint`) to ensure your changes compile and match the code guidelines.
Please target the `main` branch and run `pnpm run build` (or at least `pnpm run lint`) to ensure your changes compile and match the code guidelines.
51 changes: 51 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.7/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 120
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"noNonNullAssertion": "warn",
"useImportType": "warn"
},
"complexity": {
"noExcessiveCognitiveComplexity": "off",
"noImportantStyles": "off",
"noArguments": "off"
},
"correctness": {
"useExhaustiveDependencies": "warn"
},
"suspicious": {
"noExplicitAny": "warn"
},
"a11y": {
"recommended": true,
"useKeyWithClickEvents": "off",
"useKeyWithMouseEvents": "off",
"noStaticElementInteractions": "off"
}
Comment on lines +36 to +41
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Verify accessibility rule disablement.

Three accessibility rules are explicitly disabled: useKeyWithClickEvents, useKeyWithMouseEvents, and noStaticElementInteractions. For a web project, disabling these rules is a significant regression in accessibility compliance. Confirm this is intentional and not a workaround to silence violations during migration.

If this was disabled due to existing violations in the codebase, consider re-enabling these rules and addressing the violations to maintain or improve accessibility posture.


🏁 Script executed:

#!/bin/bash
# Examine full biome.json to understand configuration context
echo "=== Full biome.json content ==="
find . -name "biome.json" -type f | head -1 | xargs cat

echo ""
echo "=== package.json (Biome version check) ==="
if [ -f "package.json" ]; then
  jq '.devDependencies.biome // .dependencies.biome // "not found"' package.json
else
  echo "package.json not found"
fi

Length of output: 1183


Address disabled accessibility rules in biome.json.

Three accessibility rules are explicitly disabled (lines 38-40): useKeyWithClickEvents, useKeyWithMouseEvents, and noStaticElementInteractions. This directly contradicts the "recommended": true setting within the a11y section and represents a regression for a web project. Additionally, the cognitive complexity rule is disabled (noExcessiveCognitiveComplexity: "off" at line 26), and several other rules are downgraded to "warn" level.

Either document the business/technical justification for these exemptions, or re-enable these rules and address the underlying violations to maintain accessibility posture.

🤖 Prompt for AI Agents
In biome.json around lines 36 to 41 (and note the related cognitive complexity
rule at line 26 and other downgraded rules), the accessibility rules
useKeyWithClickEvents, useKeyWithMouseEvents, and noStaticElementInteractions
are explicitly set to "off" which contradicts "a11y.recommended": true; either
re-enable these rules (set them back to "error" or "warn" as per project policy)
and fix the underlying violations in the codebase, or if there is a justified
exception, add a brief documented justification in the config (or link to an
issue/PR) explaining why each rule is disabled and include an owner and a
remediation plan/timeframe; ensure the biome.json comment or adjacent README
notes the decision and align the cognitive complexity and other downgraded rules
consistently with project standards.

}
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"semicolons": "always",
"trailingCommas": "es5"
}
}
}
Loading