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
adrianbonpin
a36c5c2510
feat: add games list page with search, filters, and infinite scroll
2026-04-28 02:02:03 +08:00
adrianbonpin
3aa8ecd94f
fix: resolve benchmark sort alias mismatch and prioritize Steam Deck in deckStatus
2026-04-28 01:55:21 +08:00
adrianbonpin
4f1f654024
feat: add games listing API endpoint with search, genre/device filter, and sort
2026-04-28 01:45:13 +08:00
adrianbonpin
35ee0fd308
docs: add implementation plan for games list, contact page, and SEO updates
2026-04-28 01:37:07 +08:00
adrianbonpin
e50eef52e8
docs: add design spec for games list, contact page, and SEO updates
2026-04-28 01:32:40 +08:00
adrianbonpin
f35b6aee1e
feat: transfer admin check to middleware and add vertical padding
2026-04-27 23:47:24 +08:00
adrianbonpin
647a26db94
chore: fix build errors and lint warnings from devices/admin implementation
...
- Fix setRole type error (cast to admin-accepted role type)
- Fix OG image edge runtime → nodejs (Drizzle needs Node.js)
- Fix eslint set-state-in-effect warnings
- Fix img → next/image in admin users client
- Remove unused eslint-disable directives
2026-04-27 22:22:52 +08:00
adrianbonpin
cfb5940f3c
feat: add admin games management page
...
- Game list with search and pagination
- Source and sync status badges
- View on site link and delete action
- Uses existing games CRUD API
2026-04-27 21:31:48 +08:00
adrianbonpin
c0c624c2ae
feat: add admin hardware management page with CRUD
...
- Device list fetched from /api/hardware/stats
- Create/edit devices via modal form
- Delete with confirmation dialog
- Uses existing hardware CRUD API endpoints
2026-04-27 21:20:01 +08:00
adrianbonpin
b6c3070854
feat: add admin users management page
...
- User list with search by name/email
- Change role (user/contributor/admin) via dropdown
- Ban/unban users with status indicators
- Uses better-auth admin plugin client methods
2026-04-27 21:08:40 +08:00
adrianbonpin
012ad64a0d
feat: add admin layout with sidebar, auth guard, and navbar link
...
- Admin layout with server-side auth guard (redirects non-admins)
- Reusable sidebar component with active state detection
- Navbar profile dropdown shows admin link for admin users
- Admin routes are noindexed (robots: false)
- /admin redirects to /admin/users
2026-04-27 21:02:28 +08:00
adrianbonpin
e4e78cc578
feat: add per-device OG image generator for device detail pages
...
- Renders device name, type badge, and stats on branded dark background
- Uses Edge runtime for fast generation
- References OG image in device detail page metadata
2026-04-27 20:58:43 +08:00
adrianbonpin
060911e29d
feat: redesign device detail page with fixes and improvements
...
- Fix upscalerBreakdown/fsrBreakdown property name mismatch
- Fix deviceTypeLabel map (handled → handheld)
- Fix device color to use per-device colorIndex instead of hardcoded 0
- Add image/icon hero section with device color accent
- Add error state with retry button
- Add generateStaticParams with ISR (1-hour revalidation)
- Enhanced SEO metadata with keywords, OG, Twitter cards
- Fix JSON-LD to use 'Handheld' label instead of raw enum value
2026-04-27 20:55:15 +08:00
adrianbonpin
eb944c2b3c
feat: redesign devices list page with filter tabs, image/icon, verified stats
...
- Server component fetches data and passes as props (RSC pattern)
- Add device-type filter pills (All/Handheld/Console)
- Add device image with icon fallback
- Add verified count to stats row
- Fix deviceTypeLabel to use 'handheld' key
- Cap stagger animation delay at 0.5s
- Enhanced SEO metadata with keywords and OpenGraph
2026-04-27 20:48:15 +08:00
adrianbonpin
ab076a92c8
refactor: remove broken Community Trust chart (TrustBar)
...
- Remove TrustBar component and chart
- Remove trust data from game-stats API response
- Remove trust section from game detail page
- DB columns and vote endpoints preserved for future voting system
2026-04-27 20:41:28 +08:00
adrianbonpin
599cb024c9
fix: exclude null FPS entries from avgFps calculation in device stats API
2026-04-27 20:36:29 +08:00
adrianbonpin
ecd83b1d70
fix: rename device_type enum 'handled' to 'handheld', add image column
2026-04-27 20:33:25 +08:00
adrianbonpin
de858081e0
docs: add implementation plan tasks 7-12 (admin panel + cleanup)
2026-04-27 20:13:14 +08:00
adrianbonpin
cd3c671d14
docs: add implementation plan tasks 4-6 (devices redesign + OG image)
2026-04-27 20:04:35 +08:00
adrianbonpin
2bdcbb0c1f
docs: add implementation plan (tasks 1-3) for devices redesign & admin
2026-04-27 19:47:24 +08:00
adrianbonpin
bce2f1fcd5
docs: add design spec for devices redesign & admin panel
2026-04-27 18:23:02 +08:00
adrianbonpin
421807b56b
fix: remove gradient fade edges from preset scroll — cleaner horizontal list
2026-04-27 16:51:19 +08:00
adrianbonpin
1e42cdd39e
fix: preset UX — gradient fade edges, Tiptap notes renderer, two-column modal layout with stats/settings, upvote/downvote buttons
2026-04-27 16:26:05 +08:00
adrianbonpin
a6eb50a555
fix: use createdAt instead of updatedAt for hardware in sitemap
2026-04-27 16:07:39 +08:00
adrianbonpin
713b309f74
feat: SEO overhaul — expanded sitemap, JSON-LD, canonical URLs, search metadata
2026-04-27 16:05:31 +08:00
adrianbonpin
9a6db98d42
feat: add dynamic OG image generation for game pages
2026-04-27 16:02:20 +08:00
adrianbonpin
d2a4e58b74
feat: horizontal preset layout, detail modal integration, reorder above stats
2026-04-27 15:58:35 +08:00
adrianbonpin
830c14fd3e
feat: add PresetDetailModal component with settings view, delete, and report
2026-04-27 15:49:25 +08:00
adrianbonpin
e40417a02d
feat: add generateMetadata, enriched preset data, and JSON-LD to game page
2026-04-27 15:40:27 +08:00
adrianbonpin
f228800593
feat: change user-delete to soft delete for performance entries
2026-04-27 15:36:12 +08:00
adrianbonpin
27cd5e3321
feat: add POST /api/performance/:id/report endpoint
2026-04-27 15:34:17 +08:00
adrianbonpin
b94c29da61
feat: add reports table schema for preset reporting
2026-04-27 15:30:51 +08:00
adrianbonpin
5087f3370d
docs: add implementation plan for community presets UX + SEO overhaul
2026-04-27 15:05:35 +08:00
adrianbonpin
5da82694cc
docs: add community presets UX + SEO overhaul design spec
2026-04-27 15:01:25 +08:00
adrianbonpin
ce6b014f20
fix: use useSyncExternalStore for hydration guard to satisfy React lint rule
2026-04-27 14:31:50 +08:00
adrianbonpin
0ad8e37df1
migrate: drop community_presets table
2026-04-27 14:29:58 +08:00
adrianbonpin
07467a4812
refactor: remove communityPresets schema, API, and routes
2026-04-27 14:29:30 +08:00
adrianbonpin
5100888216
refactor: game page reads presets from performanceEntries where settingsJson is not null
2026-04-27 14:28:03 +08:00
adrianbonpin
2ff54e58b3
refactor: replace communityPresets count with performanceEntries preset count
2026-04-27 14:11:27 +08:00