Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
2 changes: 2 additions & 0 deletions webui/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ This change log covers only the frontend library (webui) of Open VSX.
### Dependencies

- Remove the `react-dropzone` dependency; the publish page and the navbar's drop target handle their own drag events, and nothing else imports it
- Remove nine dependencies nothing imports: `clsx`, `prop-types` and `punycode` from the runtime dependencies, and `@types/d3-scale`, `@types/d3-shape`, `@types/prop-types`, `@types/punycode`, `@types/react-transition-group` and `ts-node` from the development ones. All but `@types/punycode` and `ts-node` stay in the tree through MUI or the URL parsers that actually use them, so only those two leave the install
Comment thread
Copilot marked this conversation as resolved.
Outdated
- Bump express from `4.22.1` to `5.2.1` and `@types/express` from `4.17` to `5.0`. Express 4 caps `qs` at `~6.14.0`, which is why a `qs` resolution was needed to move past it; Express 5 declares `^6.14.0`, so that resolution is gone and `qs` resolves to `6.16.0` on its own. The standalone frontend server's catch-all route is now `/{*splat}`, which is how Express 5 spells the `*` it no longer accepts
- Bump @humanfs/node from 0.16.6 to 0.16.8

## [v1.1.2] (20/08/2026)
Expand Down
17 changes: 4 additions & 13 deletions webui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,25 +54,22 @@
"@tanstack/react-query": "^5.101.0",
"@tanstack/react-query-devtools": "^5.101.0",
"clipboard-copy": "^4.0.1",
"clsx": "^1.2.1",
"dompurify": "^3.0.4",
"fetch-retry": "^5.0.6",
"lodash": "^4.17.21",
"luxon": "^3.7.2",
"markdown-it": "^14.1.0",
"markdown-it-anchor": "^9.2.0",
"prop-types": "^15.8.1",
"punycode": "^2.3.0",
"react": "^18.2.0",
"react-avatar-editor": "^15.0.0",
"react-dom": "^18.2.0",
"react-helmet-async": "^2.0.5",
"react-infinite-scroller": "^1.2.6",
"react-router": "^7.18.2"
},
"//resolutions": "@types/react-infinite-scroller declares its @types/react dependency as *, which resolves to v19 and puts a second copy of the React types in the tree; the pin below holds it at 18 until this app moves to React 19",
"resolutions": {
"@types/react": "^18.2.14",
"qs": "^6.14.1"
"@types/react": "^18.2.14"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.3",
Expand All @@ -82,20 +79,15 @@
"@testing-library/jest-dom": "^7.0.0",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/d3-scale": "^4.0",
"@types/d3-shape": "^3.1",
"@types/dompurify": "^3.0.2",
"@types/express": "^4.17.21",
"@types/express": "^5.0.0",
"@types/lodash": "^4.14.195",
"@types/luxon": "^3.7.1",
"@types/markdown-it": "^14.1.0",
"@types/node": "^22.0.0",
"@types/prop-types": "^15.7.0",
"@types/punycode": "^2.1.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"@types/react-infinite-scroller": "^1.2.0",
"@types/react-transition-group": "^4.4.0",
"@typescript-eslint/eslint-plugin": "^8.56.0",
"@typescript-eslint/parser": "^8.56.0",
"@vitejs/plugin-react": "^6.0.4",
Expand All @@ -106,13 +98,12 @@
"eslint-plugin-react": "^7.37.0",
"eslint-plugin-react-refresh": "^0.5.2",
"eslint-plugin-testing-library": "^7.16.2",
"express": "^4.21.0",
"express": "^5.1.0",
"express-rate-limit": "^7.4.0",
"jsdom": "^30.0.0",
"prettier": "^3.8.4",
"rimraf": "^6.1.0",
"rollup-plugin-visualizer": "^7.0.1",
"ts-node": "^10.9.2",
"typescript": "^5.9.0",
"vite": "^8.2.1",
"vitest": "^4.1.10"
Expand Down
5 changes: 3 additions & 2 deletions webui/src/default/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ if (args.indexOf('-ratelimit') != -1) {
const staticPath = path.join(__dirname, '..', '..', 'dist');
app.use(express.static(staticPath));

// Enable react-router by forwarding the main page to all paths that don't match a resource
app.get('*', (req, res) => {
// Enable react-router by forwarding the main page to all paths that don't match a resource.
// The braces make the wildcard match the root path too, which a bare '/*splat' does not.
app.get('/{*splat}', (req, res) => {
res.sendFile(path.join(staticPath, 'index.html'));
});

Expand Down
Loading