Breaking Changes & Migration
- The backend now requires plugins to be compiled as ESM: plugins built for the pre-ESM (CommonJS) backend no longer load, and relative imports must include explicit
.jsextensions. -> Rebuild any custom plugins together with the backend (pnpm build), fix relative imports to include.js, and useexport defaultfor the plugin module class. See example plugin for details.
Changes
- Fixed re-indexing overwriting user-defined game titles and sort titles: the indexer now only derives
title/sort_titlefrom the file name when the user has not overridden them, so custom sort titles survive every re-index (startup, scheduled index, integrity checks). - Fixed progress deletion authorization: the permission check now verifies the requesting user's role, so administrators can delete progress entries of other users (previously only the target user's own role was evaluated, which incorrectly blocked admins).
- The server now shuts down gracefully on
SIGTERM/SIGINT, draining in-flight requests and closing the HTTP/HTTPS servers cleanly.