v2.0.0 put every atlas under /data/<atlas>/, which broke the original
/<atlas>/static/ download links and kept the data out of the modules/
layout the other sites use.
- read tree.json and items.json from /<atlas>/modules/xoonips/ and
link the files under /<atlas>/modules/xoonips/file/
- redirect download.php, the v2.0.0 /data/ paths and the older
/<atlas>/file/ paths with a 301
- send directories without an index.html to the SPA as well: the
atlas directories now exist on disk, and the old rule served them
as a 404
The Vite 4 conversion predates the stack the other converted sites
settled on. Bring it in line without changing any URL.
- Vite 4 with SWC -> Vite 8, React 18 -> 19, TypeScript 5 -> 7,
react-router-dom v6 -> react-router v8
- swap axios -> ky, moment -> date-fns and react-helmet-async ->
@dr.pogodin/react-helmet, and replace react-router-hash-link and
react-spinner-material with local code
- drop xregexp, react-app-polyfill and the node polyfill and
rewrite-all plugins
- mount ../static-contents with sirv in the dev and preview servers,
and split vendor-react from vendor-misc
- keep sanitize.css: the theme was written on top of it, and swapping
it for modern-normalize moves nearly every element
- replace ESLint and Prettier with Biome and fix what it reports:
stable list keys, button types, the shadowed escape/unescape
helpers and the unused LinkImage component