Commit Graph
233 Commits
Author SHA1 Message Date
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
adrianbonpin c6d4e7b3d1 feat: non-Steam game submission wizard with SteamGridDB integration 2026-04-29 00:00:10 +08:00
adrianbonpin 74fe0447ee feat: add SteamGridDB proxy API for non-Steam game images 2026-04-28 23:36:00 +08:00
adrianbonpin cc34fd17ef feat: add pinned presets with admin pin/unpin and dedicated section 2026-04-28 23:32:32 +08:00
adrianbonpin 23fa7be89f feat: display system requirements and store stats on game details page 2026-04-28 23:24:33 +08:00
adrianbonpin 799bfbbf31 feat: add system requirements, store stats, and pricing to game schema and steam sync 2026-04-28 23:13:08 +08:00
adrianbonpin 7e2ab978e1 feat: add performance tier and stability scatter charts 2026-04-28 23:08:01 +08:00
adrianbonpin 741c19e840 feat: display 1% low FPS in presets, stats API, and game details 2026-04-28 22:56:43 +08:00
adrianbonpin 4d759160db feat: add 1% low FPS field to benchmark submission wizard 2026-04-28 22:43:46 +08:00
adrianbonpin 943fcff12b feat: add fps_one_percent_low column to performance entries 2026-04-28 22:39:23 +08:00
adrianbonpin ab27ba948f fix: add image fallback chain for missing game covers in search 2026-04-28 22:30:19 +08:00
adrianbonpin 59e3ca338b fix(search): correct PriceTag logic for free pricing
- Return null when price is missing instead of showing 'Free'
- Show green 'Free' badge only when initial === 0 && final === 0
- Show emerald 'Free*' badge with tooltip for promotional free (final === 0, initial > 0)
- Fixes incorrect 'Free' label for games like Days Gone during free weekends
2026-04-28 22:28:01 +08:00
adrianbonpin c91433958b fix: remove SteamOS prefix doubling on osVersion display 2026-04-28 22:26:04 +08:00
adrianbonpin 748a9fa8c8 fix: tiptap duplicate link extension warning + settings editor number inputs to text+inputMode 2026-04-28 10:07:03 +08:00
adrianbonpin d6a9601591 fix: refactor wizard edit mode to use lazy state init instead of effect setState 2026-04-28 09:51:26 +08:00
adrianbonpin d8d0e8f826 fix: use vote-based reputation instead of contributions*10 2026-04-28 09:38:38 +08:00
adrianbonpin a2ff39c1b0 feat: add share and edit links to preset modal, sync URL preset param 2026-04-28 09:32:18 +08:00
adrianbonpin f502d120a7 refactor: replace preset detail modal layoutId morph with bottom sheet slide-up + category crossfade
- Remove layoutId from preset card in game-page-client.tsx and modal in preset-detail-modal.tsx to eliminate text smearing during morph animation.
- Replace modal scale/opacity spring animation with bottom sheet y-slide spring (y: 100% → 0).
- Wrap settings table content in AnimatePresence mode='wait' with keyed motion.div for crossfade when switching categories.
2026-04-28 09:24:08 +08:00
adrianbonpin 1e41531834 fix: improve performance details modal mobile responsiveness 2026-04-28 08:49:14 +08:00
adrianbonpin 45ae0162eb fix: refresh game page data after benchmark deletion 2026-04-28 08:48:01 +08:00
adrianbonpin b4db4d8ab8 feat: redesign admin sidebar with grouped sections
- Add Management and Moderation sections with labeled groups
- Section labels: muted uppercase micro text
- Section dividers: horizontal on desktop, vertical on mobile
- Active state: bg-primary/10 text-primary rounded-lg
- Widen desktop sidebar from md:w-48 to md:w-56
- Add desktop-only Admin Panel header with LayoutDashboardIcon
- Expand nav to cover all 6 admin pages (users, hardware, games,
  reports, benchmarks, comments)
- Update admin layout description to 'Manage your platform'
2026-04-28 08:47:03 +08:00
adrianbonpin 635e9fa46c feat: add admin comments page with search, filters, pagination, remove/restore 2026-04-28 08:39:55 +08:00
adrianbonpin 37c5d87baa Add admin benchmarks page with search, filter tabs, pagination, verify/remove/restore actions 2026-04-28 08:31:36 +08:00
adrianbonpin a109e47f33 feat(admin): add reports admin page with searchable, paginated table 2026-04-28 08:04:17 +08:00
adrianbonpin 2ab4ac5ebc feat: add admin comments API route
- GET /admin/comments: list all comments with pagination, removed filter, and author search
- PATCH /admin/comments/:id/remove: admin-only soft delete
- PATCH /admin/comments/:id/restore: admin-only restore
2026-04-28 07:55:57 +08:00
adrianbonpin 6d27ec03ab Task 2: Admin Performance Entries API Route
- GET /admin/performance — paginated listing with removed/verified/search filters,
  joining games, gameVersions, hardware, and user tables
- PATCH /admin/performance/:id/verify — verify entry (contributor or admin)
- PATCH /admin/performance/:id/remove — soft-delete entry (admin only)
- PATCH /admin/performance/:id/restore — restore entry (admin only)
- Registered route in app/api/[[...slugs]]/route.ts and lib/api/index.ts
2026-04-28 07:52:49 +08:00
adrianbonpin 1108264e4c feat: add admin reports API route
- GET /admin/reports with pagination, status filtering, joins, and batch author name lookup
- PATCH /admin/reports/:id/status to review (soft-delete entry) or dismiss
- Register route in lib/api/index.ts and app/api/[[...slugs]]/route.ts
2026-04-28 07:44:39 +08:00
adrianbonpin 37e51f4d48 fix: gracefaul fallback + force-dynamic for build 2026-04-28 07:14:25 +08:00
adrianbonpin d375112c8e fix: resolve SQL ambiguity in subquery, remove unused imports, fix lint errors 2026-04-28 02:14:13 +08:00
adrianbonpin 175a58b9d5 feat: update sitemap with new pages and game images, add robots.txt disallow rules 2026-04-28 02:10:51 +08:00
adrianbonpin 7bcee83d03 feat: add Contact route to navigation 2026-04-28 02:10:28 +08:00
adrianbonpin e14dafde62 feat: add contact/report page with Discord webhook integration 2026-04-28 02:09:55 +08:00
adrianbonpin b1cdfae6b7 feat: add contact form API with Discord webhook, rate limiting, and anti-bot checks 2026-04-28 02:04:25 +08:00