Release 2.4.0 (#870)

* chore: bump version to v2.4.0-preview

* Bump actions/cache from 4 to 5 (#865)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Increase maximum DB connection pool size (#876)

Increase DB connection timeout

* Disable length limit for DB field PLUGIN_CONFIG.value (#875)

* Bump actions/cache from 4 to 5 (#871)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/download-artifact from 7 to 8 (#882)

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/upload-artifact from 6 to 7 (#881)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/cache from 4 to 5 (#878)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Dont perform scans if no metadata plugins are enabled (#877)

* Dont perform scans if no metadata plugins are enabled

* Fix tests

* Add PluginServiceTest.kt

* Fix Sonar finding

* Fix malformed external links (#886)

* Fix external links being treated as internal

* chore: bump version to v856-malformed-external-links-preview

* Update JVM in Dockerfile to Java 25

* Revert incorrect version update

* Allow loading .jar plugins in development mode (#885)

* Allow loading .jar plugins in development mode

* Remove unnecessary mock

* Fix unit test

* Add unit tests

* Fix/879 add info and reset to config options (#887)

* Fix gog.sh script

* Add "description" property to ConfigProperties.kt
Add InfoPopup.tsx and ResetToDefaultButton.tsx in UI

* Bump actions/download-artifact from 7 to 8 (#891)

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/cache from 4 to 5 (#890)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/upload-artifact from 6 to 7 (#889)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Improve memory usage and performance (#888)

mprove memory usage and performance by:
* Using AOT cache
* Using tuned JAVA_OPTIONS
* Session timeout
* Jetty threadpool
* DB batch size
* DB pool size
* Library scanning
* Make scan-concurrency configurable
* Log retention
* Off-load image processing to disk instead of RAM

* Fix bug in PluginState

* Update dependency version for ksp

* Fix race condition preventing plugins from starting

* Show remaining time (estimation) for library scans

* Add unit test for plugin loading bugfix

* Add unit tests for ImageService calculateBlurHash

* Make username claim configurable (#895)

Add fallbacks to resolve username

* Fix sonar issues (#894)

* Add custom "/sonar" command to GH copilot

* Add Sonar plugin integration

* Fix issues reported by Sonar

* Ignore Sonar warning about AES/ECB

* Add unit tests for GameyfinPluginManager

* Add unit tests for GameService

* Add more unit tests for GameService

* Improve library card layout (#896)

* Fix title not being centered

* Add buttons to scan all libraries

* Disable AVX for AOT cache training

* Improve AOT cache training

* Fix tests

* Change output type of Docker Build CI action

* Increase MAX_WAIT of aot-training to 5min

* Optimize Docker CI pipeline

* Add Sonar badges to README.md

* Add custom metrics (downloads & scans)

* Optimize DB connection & add cache for images

* Adjusted logging on startup

* * Show message on start page when no libraries/games are available
* Disable "Scan" buttons when no metadata plugin is enabled

* Fix thread pinning causing deadlocks

* Pre-populate image cache at startup

* Show "Loading" spinner while loading

* Optimize static file serving (images)

* Switch back to Tomcat (from Jetty)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
Simon
2026-03-13 15:34:06 +01:00
committed by GitHub
parent ecd369cd30
commit 3a932d953f
123 changed files with 6169 additions and 2003 deletions
+114 -114
View File
@@ -1,6 +1,6 @@
{
"name": "gameyfin",
"version": "2.3.3",
"version": "2.4.0-preview",
"type": "module",
"dependencies": {
"@heroui/react": "^2.8.7",
@@ -8,20 +8,20 @@
"@react-stately/data": "^3.12.2",
"@react-types/shared": "^3.28.0",
"@tailwindcss/vite": "4.1.13",
"@vaadin/aura": "25.0.3",
"@vaadin/aura": "25.0.4",
"@vaadin/common-frontend": "0.0.19",
"@vaadin/hilla-file-router": "25.0.4",
"@vaadin/hilla-frontend": "25.0.4",
"@vaadin/hilla-lit-form": "25.0.4",
"@vaadin/hilla-react-auth": "25.0.4",
"@vaadin/hilla-react-crud": "25.0.4",
"@vaadin/hilla-react-form": "25.0.4",
"@vaadin/hilla-react-i18n": "25.0.4",
"@vaadin/hilla-react-signals": "25.0.4",
"@vaadin/react-components": "25.0.3",
"@vaadin/hilla-file-router": "25.0.5",
"@vaadin/hilla-frontend": "25.0.5",
"@vaadin/hilla-lit-form": "25.0.5",
"@vaadin/hilla-react-auth": "25.0.5",
"@vaadin/hilla-react-crud": "25.0.5",
"@vaadin/hilla-react-form": "25.0.5",
"@vaadin/hilla-react-i18n": "25.0.5",
"@vaadin/hilla-react-signals": "25.0.5",
"@vaadin/react-components": "25.0.4",
"@vaadin/vaadin-development-mode-detector": "2.0.7",
"@vaadin/vaadin-lumo-styles": "25.0.3",
"@vaadin/vaadin-themable-mixin": "25.0.3",
"@vaadin/vaadin-lumo-styles": "25.0.4",
"@vaadin/vaadin-themable-mixin": "25.0.4",
"@vaadin/vaadin-usage-statistics": "2.1.3",
"blurhash": "^2.0.5",
"classnames": "^2.5.1",
@@ -37,11 +37,11 @@
"postcss": "^8.5.6",
"postcss-import": "^16.1.1",
"rand-seed": "^2.1.7",
"react": "19.2.3",
"react": "19.2.4",
"react-accessible-treeview": "^2.11.1",
"react-aria-components": "^1.7.1",
"react-confetti-boom": "^1.0.0",
"react-dom": "19.2.3",
"react-dom": "19.2.4",
"react-markdown": "^10.1.0",
"react-player": "^2.16.0",
"react-realtime-chart": "^0.8.1",
@@ -58,21 +58,21 @@
"@preact/signals-react-transform": "0.6.0",
"@rollup/plugin-replace": "6.0.3",
"@rollup/pluginutils": "5.3.0",
"@types/node": "25.0.3",
"@types/react": "19.2.7",
"@types/node": "25.0.10",
"@types/react": "19.2.9",
"@types/react-dom": "19.2.3",
"@types/react-window": "^1.8.8",
"@vaadin/hilla-generator-cli": "25.0.4",
"@vaadin/hilla-generator-core": "25.0.4",
"@vaadin/hilla-generator-plugin-backbone": "25.0.4",
"@vaadin/hilla-generator-plugin-barrel": "25.0.4",
"@vaadin/hilla-generator-plugin-client": "25.0.4",
"@vaadin/hilla-generator-plugin-model": "25.0.4",
"@vaadin/hilla-generator-plugin-push": "25.0.4",
"@vaadin/hilla-generator-plugin-signals": "25.0.4",
"@vaadin/hilla-generator-plugin-subtypes": "25.0.4",
"@vaadin/hilla-generator-plugin-transfertypes": "25.0.4",
"@vaadin/hilla-generator-utils": "25.0.4",
"@vaadin/hilla-generator-cli": "25.0.5",
"@vaadin/hilla-generator-core": "25.0.5",
"@vaadin/hilla-generator-plugin-backbone": "25.0.5",
"@vaadin/hilla-generator-plugin-barrel": "25.0.5",
"@vaadin/hilla-generator-plugin-client": "25.0.5",
"@vaadin/hilla-generator-plugin-model": "25.0.5",
"@vaadin/hilla-generator-plugin-push": "25.0.5",
"@vaadin/hilla-generator-plugin-signals": "25.0.5",
"@vaadin/hilla-generator-plugin-subtypes": "25.0.5",
"@vaadin/hilla-generator-plugin-transfertypes": "25.0.5",
"@vaadin/hilla-generator-utils": "25.0.5",
"@vitejs/plugin-react": "5.1.2",
"@vitejs/plugin-react-swc": "^3.7.0",
"baseline-browser-mapping": "^2.9.19",
@@ -137,87 +137,87 @@
"react-window": "$react-window",
"blurhash": "$blurhash",
"@vaadin/aura": "$@vaadin/aura",
"@vaadin/a11y-base": "25.0.3",
"@vaadin/accordion": "25.0.3",
"@vaadin/app-layout": "25.0.3",
"@vaadin/avatar": "25.0.3",
"@vaadin/avatar-group": "25.0.3",
"@vaadin/button": "25.0.3",
"@vaadin/card": "25.0.3",
"@vaadin/checkbox": "25.0.3",
"@vaadin/checkbox-group": "25.0.3",
"@vaadin/combo-box": "25.0.3",
"@vaadin/component-base": "25.0.3",
"@vaadin/confirm-dialog": "25.0.3",
"@vaadin/context-menu": "25.0.3",
"@vaadin/custom-field": "25.0.3",
"@vaadin/date-picker": "25.0.3",
"@vaadin/date-time-picker": "25.0.3",
"@vaadin/details": "25.0.3",
"@vaadin/dialog": "25.0.3",
"@vaadin/email-field": "25.0.3",
"@vaadin/field-base": "25.0.3",
"@vaadin/field-highlighter": "25.0.3",
"@vaadin/form-layout": "25.0.3",
"@vaadin/grid": "25.0.3",
"@vaadin/horizontal-layout": "25.0.3",
"@vaadin/icon": "25.0.3",
"@vaadin/icons": "25.0.3",
"@vaadin/input-container": "25.0.3",
"@vaadin/integer-field": "25.0.3",
"@vaadin/item": "25.0.3",
"@vaadin/list-box": "25.0.3",
"@vaadin/lit-renderer": "25.0.3",
"@vaadin/login": "25.0.3",
"@vaadin/markdown": "25.0.3",
"@vaadin/master-detail-layout": "25.0.3",
"@vaadin/menu-bar": "25.0.3",
"@vaadin/message-input": "25.0.3",
"@vaadin/message-list": "25.0.3",
"@vaadin/multi-select-combo-box": "25.0.3",
"@vaadin/notification": "25.0.3",
"@vaadin/number-field": "25.0.3",
"@vaadin/overlay": "25.0.3",
"@vaadin/password-field": "25.0.3",
"@vaadin/popover": "25.0.3",
"@vaadin/progress-bar": "25.0.3",
"@vaadin/radio-group": "25.0.3",
"@vaadin/scroller": "25.0.3",
"@vaadin/select": "25.0.3",
"@vaadin/side-nav": "25.0.3",
"@vaadin/split-layout": "25.0.3",
"@vaadin/tabs": "25.0.3",
"@vaadin/tabsheet": "25.0.3",
"@vaadin/text-area": "25.0.3",
"@vaadin/text-field": "25.0.3",
"@vaadin/time-picker": "25.0.3",
"@vaadin/tooltip": "25.0.3",
"@vaadin/upload": "25.0.3",
"@vaadin/router": "2.0.1",
"@vaadin/vertical-layout": "25.0.3",
"@vaadin/virtual-list": "25.0.3"
"@vaadin/a11y-base": "25.0.4",
"@vaadin/accordion": "25.0.4",
"@vaadin/app-layout": "25.0.4",
"@vaadin/avatar": "25.0.4",
"@vaadin/avatar-group": "25.0.4",
"@vaadin/button": "25.0.4",
"@vaadin/card": "25.0.4",
"@vaadin/checkbox": "25.0.4",
"@vaadin/checkbox-group": "25.0.4",
"@vaadin/combo-box": "25.0.4",
"@vaadin/component-base": "25.0.4",
"@vaadin/confirm-dialog": "25.0.4",
"@vaadin/context-menu": "25.0.4",
"@vaadin/custom-field": "25.0.4",
"@vaadin/date-picker": "25.0.4",
"@vaadin/date-time-picker": "25.0.4",
"@vaadin/details": "25.0.4",
"@vaadin/dialog": "25.0.4",
"@vaadin/email-field": "25.0.4",
"@vaadin/field-base": "25.0.4",
"@vaadin/field-highlighter": "25.0.4",
"@vaadin/form-layout": "25.0.4",
"@vaadin/grid": "25.0.4",
"@vaadin/horizontal-layout": "25.0.4",
"@vaadin/icon": "25.0.4",
"@vaadin/icons": "25.0.4",
"@vaadin/input-container": "25.0.4",
"@vaadin/integer-field": "25.0.4",
"@vaadin/item": "25.0.4",
"@vaadin/list-box": "25.0.4",
"@vaadin/lit-renderer": "25.0.4",
"@vaadin/login": "25.0.4",
"@vaadin/markdown": "25.0.4",
"@vaadin/master-detail-layout": "25.0.4",
"@vaadin/menu-bar": "25.0.4",
"@vaadin/message-input": "25.0.4",
"@vaadin/message-list": "25.0.4",
"@vaadin/multi-select-combo-box": "25.0.4",
"@vaadin/notification": "25.0.4",
"@vaadin/number-field": "25.0.4",
"@vaadin/overlay": "25.0.4",
"@vaadin/password-field": "25.0.4",
"@vaadin/popover": "25.0.4",
"@vaadin/progress-bar": "25.0.4",
"@vaadin/radio-group": "25.0.4",
"@vaadin/scroller": "25.0.4",
"@vaadin/select": "25.0.4",
"@vaadin/side-nav": "25.0.4",
"@vaadin/split-layout": "25.0.4",
"@vaadin/tabs": "25.0.4",
"@vaadin/tabsheet": "25.0.4",
"@vaadin/text-area": "25.0.4",
"@vaadin/text-field": "25.0.4",
"@vaadin/time-picker": "25.0.4",
"@vaadin/tooltip": "25.0.4",
"@vaadin/upload": "25.0.4",
"@vaadin/vertical-layout": "25.0.4",
"@vaadin/virtual-list": "25.0.4"
},
"vaadin": {
"dependencies": {
"@vaadin/aura": "25.0.3",
"@vaadin/aura": "25.0.4",
"@vaadin/common-frontend": "0.0.19",
"@vaadin/hilla-file-router": "25.0.4",
"@vaadin/hilla-frontend": "25.0.4",
"@vaadin/hilla-lit-form": "25.0.4",
"@vaadin/hilla-react-auth": "25.0.4",
"@vaadin/hilla-react-crud": "25.0.4",
"@vaadin/hilla-react-form": "25.0.4",
"@vaadin/hilla-react-i18n": "25.0.4",
"@vaadin/hilla-react-signals": "25.0.4",
"@vaadin/react-components": "25.0.3",
"@vaadin/hilla-file-router": "25.0.5",
"@vaadin/hilla-frontend": "25.0.5",
"@vaadin/hilla-lit-form": "25.0.5",
"@vaadin/hilla-react-auth": "25.0.5",
"@vaadin/hilla-react-crud": "25.0.5",
"@vaadin/hilla-react-form": "25.0.5",
"@vaadin/hilla-react-i18n": "25.0.5",
"@vaadin/hilla-react-signals": "25.0.5",
"@vaadin/react-components": "25.0.4",
"@vaadin/vaadin-development-mode-detector": "2.0.7",
"@vaadin/vaadin-lumo-styles": "25.0.3",
"@vaadin/vaadin-themable-mixin": "25.0.3",
"@vaadin/vaadin-lumo-styles": "25.0.4",
"@vaadin/vaadin-themable-mixin": "25.0.4",
"@vaadin/vaadin-usage-statistics": "2.1.3",
"date-fns": "4.1.0",
"lit": "3.3.2",
"react": "19.2.3",
"react-dom": "19.2.3",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-router": "7.12.0"
},
"devDependencies": {
@@ -225,20 +225,20 @@
"@preact/signals-react-transform": "0.6.0",
"@rollup/plugin-replace": "6.0.3",
"@rollup/pluginutils": "5.3.0",
"@types/node": "25.0.3",
"@types/react": "19.2.7",
"@types/node": "25.0.10",
"@types/react": "19.2.9",
"@types/react-dom": "19.2.3",
"@vaadin/hilla-generator-cli": "25.0.4",
"@vaadin/hilla-generator-core": "25.0.4",
"@vaadin/hilla-generator-plugin-backbone": "25.0.4",
"@vaadin/hilla-generator-plugin-barrel": "25.0.4",
"@vaadin/hilla-generator-plugin-client": "25.0.4",
"@vaadin/hilla-generator-plugin-model": "25.0.4",
"@vaadin/hilla-generator-plugin-push": "25.0.4",
"@vaadin/hilla-generator-plugin-signals": "25.0.4",
"@vaadin/hilla-generator-plugin-subtypes": "25.0.4",
"@vaadin/hilla-generator-plugin-transfertypes": "25.0.4",
"@vaadin/hilla-generator-utils": "25.0.4",
"@vaadin/hilla-generator-cli": "25.0.5",
"@vaadin/hilla-generator-core": "25.0.5",
"@vaadin/hilla-generator-plugin-backbone": "25.0.5",
"@vaadin/hilla-generator-plugin-barrel": "25.0.5",
"@vaadin/hilla-generator-plugin-client": "25.0.5",
"@vaadin/hilla-generator-plugin-model": "25.0.5",
"@vaadin/hilla-generator-plugin-push": "25.0.5",
"@vaadin/hilla-generator-plugin-signals": "25.0.5",
"@vaadin/hilla-generator-plugin-subtypes": "25.0.5",
"@vaadin/hilla-generator-plugin-transfertypes": "25.0.5",
"@vaadin/hilla-generator-utils": "25.0.5",
"@vitejs/plugin-react": "5.1.2",
"magic-string": "0.30.21",
"rollup-plugin-brotli": "3.1.0",
@@ -251,6 +251,6 @@
"workbox-build": "7.4.0"
},
"disableUsageStatistics": true,
"hash": "d2c583f908a126db3f53ccbc87688b5089107afb58a87159631dc257a3a279ae"
"hash": "812856fcd393a00f84011d76741a6665711ccb1b42be83fab6d8f480425a45da"
}
}