Commit Graph
615 Commits
Author SHA1 Message Date
adrianbonpin 0bb8c205f9 feat: add anti-cheat, playability, steam reviews, and community suggestions to game details page 2026-04-30 20:13:08 +08:00
adrianbonpin fa613dd1c3 Create saved filters component 2026-04-30 20:00:23 +08:00
adrianbonpin bf58394cf0 feat(components): create CommunitySuggestionForm component 2026-04-30 19:58:49 +08:00
adrianbonpin 89cf09d771 feat: Create Steam Reviews embed component 2026-04-30 19:56:50 +08:00
adrianbonpin 7ca90d8fe2 feat: add PlayabilityBadge component 2026-04-30 19:55:10 +08:00
adrianbonpin ec47be0c2b fix: add cn utility and fix import path in AntiCheatBadge 2026-04-30 19:53:58 +08:00
adrianbonpin 971173a3a6 feat: add AntiCheatBadge component 2026-04-30 19:52:26 +08:00
adrianbonpin 32d197113e feat: extend games listing API with new filters and sort options
Add 8 new filter parameters to GET /api/games/listing:
- minFps/maxFps: filter games with benchmarks in FPS range
- fsrSupport: filter games that have FSR entries
- protonNative: filter by proton status (proton/native/both)
- antiCheatStatus: filter by anti-cheat support status
- playabilityStatus: filter by playability (great/playable/needs_tweaks/unplayable)
- steamReviewScore: minimum Steam review score threshold
- isFree: filter free-to-play games
- hasMultiplayer: filter games with multiplayer support

Add 4 new sort options:
- performance: sort by average FPS (subquery)
- popularity: sort by recommendationsTotal
- release_date: sort by releaseDate
- steam_reviews: sort by steamReviewScore

Also returns additional fields in response: isFree, releaseDate,
steamReviewScore, recommendationsTotal, playabilityStatus,
onlineMultiplayerStatus.
2026-04-30 19:50:38 +08:00
adrianbonpin e7cc4d6a2e feat: add Saved Filters CRUD API
- Create lib/api/saved-filters.ts with GET, POST, PATCH, DELETE endpoints
- All endpoints require authentication via requireAuth guard
- Users can only access their own saved filters
- Register savedFilterRoutes in lib/api/index.ts
2026-04-30 19:42:55 +08:00
adrianbonpin 09fde413b9 feat: add community suggestions API with CRUD, moderation, and Discord webhook notifications
- POST /api/community-suggestions - submit suggestion (auth required)
- GET /api/community-suggestions/game/:gameId - list suggestions for a game
- GET /api/community-suggestions/pending - moderation view (contributor/admin)
- PATCH /api/community-suggestions/:suggestionId/review - approve/reject
- Discord webhook notification on new suggestions
- Route registered in API index and app router
2026-04-30 19:38:44 +08:00
adrianbonpin f9617bf586 feat: add Steam Reviews display API with caching
- Create lib/api/steam-reviews.ts with in-memory cache (1hr TTL)
- Proxy endpoint for fetching Steam reviews by game ID
- Supports offset/limit/language query params
- Registers route in API index and app router
2026-04-30 19:32:35 +08:00
adrianbonpin 6853c8247b feat: add Steam review fetching to game sync 2026-04-30 19:27:43 +08:00
adrianbonpin 051c5c22df feat: add playability calculation API
- Auto-calculate playability from benchmark data (FPS, anti-cheat, upscaler dependency)
- Manual override by admins/contributors
- Clear override to revert to auto-calculated
- Three endpoints: /calculate/:gameId, /override/:gameId, /clear-override/:gameId
- Calculation logic: great (≥55 FPS, no upscaler), playable (≥30 FPS), needs_tweaks (≥20 FPS), unplayable (<20 FPS or anti-cheat unsupported)
2026-04-30 19:22:27 +08:00
adrianbonpin 4cfd046953 feat: create saved filters table 2026-04-30 19:16:45 +08:00
adrianbonpin 4c0284ef9e fix: add onDelete set null to reviewedBy FK 2026-04-30 19:14:45 +08:00
adrianbonpin 4e324fa6e0 feat: create community suggestions table 2026-04-30 19:07:54 +08:00
adrianbonpin 33b0198506 fix: add notNull constraints to playability fields 2026-04-30 19:04:02 +08:00
adrianbonpin d21e83897f feat: add playability fields to games and platform support schemas 2026-04-30 18:59:38 +08:00
adrianbonpin 09bf8f64d6 fix: use pgEnum for steamReviewSentiment 2026-04-30 18:50:48 +08:00
adrianbonpin 5dfd8db578 feat: add steam review fields to games schema 2026-04-30 18:46:18 +08:00
adrianbonpin bce1e812b5 chore: bump version to 2026.0.9 2026-04-29 13:02:26 +08:00
adrianbonpin b435712b9c docs: overhaul README with architecture overview, badges, and complete setup guide 2026-04-29 12:59:42 +08:00
adrianbonpin c54e332a9e feat: enable recursive comment threading up to 3 levels deep 2026-04-29 12:52:26 +08:00
adrianbonpin 171cbaaeee feat: enable recursive comment threading up to 3 levels deep 2026-04-29 12:46:57 +08:00
adrianbonpin 5db88b25cb fix: add syncCompleted reset, Escape key handler, and a11y attributes to sync overlay 2026-04-29 12:44:02 +08:00
adrianbonpin b2be929f63 fix: sync modal now fills viewport via portal and persists after completion 2026-04-29 12:26:08 +08:00
adrianbonpin e49908cd73 feat: add sync progress visualization with real-time status updates 2026-04-29 12:01:29 +08:00
adrianbonpin d79a2605ed fix: resolve type errors and lint warnings in sync system 2026-04-29 11:46:35 +08:00
adrianbonpin a4cf2636e7 feat: add image validation and SteamGridDB fallback to game stub creation 2026-04-29 11:36:38 +08:00
adrianbonpin caae92ca4f fix: clear selection on pagination/search, add error handling for bulk sync 2026-04-29 11:32:25 +08:00
adrianbonpin 1215aca41a feat: add checkbox selection and bulk sync to manage games page 2026-04-29 11:25:00 +08:00
adrianbonpin 06e811613d fix: add bulk sync limit (100), fix N+1 queries, improve route ordering and responses 2026-04-29 11:19:19 +08:00
adrianbonpin 5d388f6f49 feat: add sync API endpoints (single + bulk) 2026-04-29 10:58:21 +08:00
adrianbonpin 3388d3225a fix: use exponential backoff for sync retry instead of fixed 7-day interval 2026-04-29 10:55:21 +08:00
adrianbonpin 5227b1fd90 feat: enhance sync with error tracking, image validation, and SteamGridDB fallback 2026-04-29 10:44:49 +08:00
adrianbonpin 861ac7dfdc schema: add sync error tracking columns to games table 2026-04-29 10:33:53 +08:00
adrianbonpin 133a4a9cc2 fix: resolve lint warnings - remove unused imports and fix type annotations 2026-04-29 01:47:11 +08:00
adrianbonpin 7903c9fbbd Tasks 12-13: Fix release date input to type=date, add sort direction toggle to games page 2026-04-29 01:45:04 +08:00
adrianbonpin 8a063bfb6c fix: include benchmark games in device filter and exclude soft-deleted entries from search
Task 10: Device filter now combines games with platform support entries
AND games with performance entries for the selected hardware, instead of
only checking gamePlatformSupport. This ensures games that have benchmarks
but no explicit platform support entry still appear in filtered results.

Task 11: The benchmark count query (bCounts) in unified search now filters
out soft-deleted performance entries using isRemoved = false. The pCounts
and perfStats queries already had this filter; only bCounts was missing it.
2026-04-29 01:43:37 +08:00
adrianbonpin dfae540fd4 feat(manage): add manual resync button for games 2026-04-29 01:39:58 +08:00
adrianbonpin b64e55157e fix: add horizontal scroll to benchmarks table, add hard delete functionality
- Wrap table in overflow-x-auto container with min-w-[800px] to prevent overflow on smaller screens
- Add hard delete (purge) button to actions column for each benchmark entry
- Add confirmation dialog for permanent deletion with warning
- Add handleHardDelete handler that calls DELETE /api/admin/performance/:id/hard-delete
- Add DELETE endpoint for hard-deleting performance entries from the database
- Expand confirmAction state type to include 'hardDelete'
2026-04-29 01:38:29 +08:00
adrianbonpin 2fed5a3964 feat: improve users management UI with card-based layout 2026-04-29 01:34:59 +08:00
adrianbonpin f7d825f5b3 tasks 5 & 6: update /admin UI refs to /manage, full-width manage layout 2026-04-29 01:33:07 +08:00
adrianbonpin 6642501b91 refactor: rename admin to manage in layout, sidebar, and redirects 2026-04-29 01:31:44 +08:00
adrianbonpin b68bf36bff refactor: rename admin route group to manage 2026-04-29 01:25:00 +08:00
adrianbonpin fcfcce614a chore: fix lint and type errors from feature bundle implementation 2026-04-29 00:54:39 +08:00
adrianbonpin 2101dfef08 feat: compare page with game selector, stats comparison, and charts 2026-04-29 00:45:16 +08:00
adrianbonpin 0f0176ae39 feat: add compare API endpoints for games and presets 2026-04-29 00:36:21 +08:00
adrianbonpin 0a6f5ac8d2 feat: non-Steam game edit page and edit button on game details 2026-04-29 00:32:44 +08:00
adrianbonpin b8173bd8f8 feat: non-Steam game editing API, createdBy tracking, and source badges in search 2026-04-29 00:16:43 +08:00