Commit Graph
15 Commits
Author SHA1 Message Date
Darkraise 79cc256214 fix: harden downloads, settings, and UI edge cases
- Integrate DownloadRegistry into concurrent download limit
  and clean up timers on removal/clear
- Wrap MetadataSyncService batch deletes in single transaction
- Always re-throw checksum errors in RuffleService to prevent
  verification bypass
- Fix system-settings early return skipping second job update
  when first cron expression is invalid
- Increase DatabaseService hot-reload grace period to 30s
- Add permission guard to metadata sync status endpoint
- Use encodeURIComponent for game launch content URLs
- Clamp limit params to minimum of 1 in jobs routes
- Use non-null assertion for authenticated user permissions
- Fix ConfirmDialog not calling onCancel on overlay dismiss
- Guard FormattedDate against invalid date strings
- Add breadcrumbContext to GameListItem memo comparison
- Fix MetadataUpdateCard stale closure in interval callback
- Move Dockerfile healthcheck to docker-compose for flexibility
- Fix build:analyze script to set VITE_ANALYZE env var
2026-02-11 20:37:06 +07:00
Darkraise 75c69a3210 chore: clean up Docker and build config
- Move health check from Dockerfile to docker-compose
  for easier override
- Remove unused VITE_API_URL build arg from frontend
  Dockerfile
- Simplify build:analyze and check-bundle scripts
- Document PUID/PGID container permissions in
  .env.example
2026-02-10 21:19:25 +07:00
Darkraise ee9c2a296f fix: harden security, improve type safety, and clean up code
- Pin DNS resolution to prevent SSRF rebinding between
  check and connect (GameDataDownloader)
- Fail-closed on realpath failure in GameZipServer
- Zip Slip validation before extraction (RuffleService)
- Escape LIKE wildcards in ActivityService queries
- Sanitize sort order to prevent SQL injection
- Whitelist sort order instead of passing raw user input
- Add headersSent guard to global error handler
- Remove cookie from CGI allowed headers, sanitize
  content-type against null/CR/LF injection
- Revoke refresh tokens on password change and user
  deactivation
- Wrap role/user uniqueness checks in transactions
  (TOCTOU fix)
- Fix concurrent ZIP mount race with deferred promise
  and double-close prevention via _manuallyClosed flag
- Handle client disconnect in collectRequestBody
- Tighten nginx CSP, repeat headers in location blocks,
  hide server version, pin nginx:1.27-alpine
- Fix health check endpoint path in backend Dockerfile
- Use wget instead of curl for frontend health checks
- Replace any types with proper types across backend
  and frontend
- Replace || with ?? for config/form defaults
- Replace hardcoded Tailwind colors with theme tokens
- Replace console.log/error with logger in ErrorReporter
  and ChartErrorBoundary
- Conditionally render AddToPlaylistModal to avoid
  hidden instances
- Add NaN guards for parseInt in GameBrowseLayout
- Standardize query key for publicSettings
- Simplify README to Docker-first quickstart with wiki
  link
- Fix license to GPL-3.0 in backend package.json
- Slow down particle animation speed
- Add Zod max-length limits on playlist/error schemas
- Ensure positive limit in parsePaginationQuery
- Validate settings category param against allowlist
- Fix static/parameterized route ordering in favorites
- Add asyncHandler to game-zip wildcard route
- Close readline/stream on error in getRecentErrors
- Add .catch() on fire-and-forget syncAndReload
- Fix LazyBackgroundImage cleanup on unmount
- Store NetworkStatusIndicator timeout in ref
- Add Flash/SWF condition to random game query
2026-02-09 09:17:18 +07:00
Darkraise 96cf4a5b00 feat: revamp the game serving feature 2026-02-07 23:36:45 +07:00
Darkraise 39f9957670 feat: add nginx proxy for game service in Docker
Routes game content through nginx instead of requiring direct
localhost:22500 access from browser. This enables proper Docker
networking where containers communicate internally.

Changes:
- Add /game-proxy and /gamezip-proxy locations to nginx config
- Add GAME_SERVICE_EXTERNAL_URL config for browser-facing URLs
- Update games route to use external URL config
- Add GAME_SERVICE_HOST env var to frontend container
- Add game-service dependency to frontend in docker-compose
2026-02-02 23:26:52 +07:00
Darkraise 8ab3dc1816 ci: update frontend docker 2026-02-02 17:42:38 +07:00
Darkraise 92c4e7187b ci: update frontend nginx config 2026-02-02 17:25:37 +07:00
Darkraise 77dc45700e ci: use node user by default 2026-02-02 16:54:05 +07:00
Darkraise ee30b40a03 fix: docker permission 2026-02-02 16:43:17 +07:00
Darkraise 9e9a116f7f fix: frontend nginx 2026-02-01 11:14:02 +07:00
Darkraise d5d902f584 fix: backend startup failed 2026-01-31 19:25:24 +07:00
Darkraise 516f160866 fix: build failed 2026-01-31 18:08:54 +07:00
Darkraise 08d76306fe chore: update dockerfile 2026-01-31 17:46:35 +07:00
Darkraise e1a691e497 feat: share playlist feature 2026-01-31 17:29:07 +07:00
Darkraise c7b617cf08 feat: initial features 2026-01-16 23:58:21 +07:00