Commit Graph
138 Commits
Author SHA1 Message Date
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 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 4f1f654024 feat: add games listing API endpoint with search, genre/device filter, and sort 2026-04-28 01:45:13 +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 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 27cd5e3321 feat: add POST /api/performance/:id/report endpoint 2026-04-27 15:34:17 +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 10fdbe9cee chore: build cleanup, fix lint errors in our changes, fix login Suspense boundary 2026-04-27 07:31:19 +08:00
adrianbonpin e3399cef13 feat: add Poor Performance badge to search page 2026-04-27 07:29:43 +08:00
adrianbonpin ce2ccad578 feat: update frontend for new upscaler/battery fields
- Replace fsrVersion with upscalerType/upscalerVersion in Preset interface
- Update StatsResponse to use upscalerType/upscalerVersion
- Replace FSR_OPTIONS with UPSCALER_OPTIONS (FSR, DLSS, XeSS, LSFG, Other)
- Update FRAMEGEN_OPTIONS to include LSFG and Other
- Update filter state from fsr to upscaler
- Update isRawPerformerPreset and getFpsColor to use upscalerType
- Update UpscalerBarChart interface and formatCombo function
- Update preset card technology tags to display upscaler version
2026-04-27 07:28:52 +08:00
adrianbonpin 91de833417 feat: replace fsrVersion with upscalerType/upscalerVersion, add battery & custom system columns 2026-04-27 07:18:43 +08:00
adrianbonpin ea6407cb4f chore: fix tailwind v4 styling & format styling 2026-04-27 06:17:46 +08:00
adrianbonpin 45c071692e feat: create SettingsContainer component with shared auth-methods state
- Add SettingsContainer component with vertical sidebar navigation
- Fetch auth-methods from /api/user/me/auth-methods endpoint
- Pass authMethods props to Security and Accounts tabs
- Update profile page to use SettingsContainer instead of inline sub-tabs
- Use LinkIcon alias to avoid conflict with Next.js Link component
2026-04-26 12:17:47 -05:00
adrianbonpin b0688f8f2a Refactor: Remove server state files and update server log handling
- Deleted server-stopped, server.log, and server.pid files to clean up unused state.
- Updated game-page-client.tsx to enhance button accessibility with cursor-pointer class.
- Modified not-found.tsx, page.tsx, and profile/page.tsx for consistent cursor-pointer usage on links.
- Adjusted search/page.tsx and components/auth/*.tsx for improved button interactions with cursor-pointer.
- Refined navbar.tsx for better user experience with cursor-pointer on navigation links.
- Updated settings-security-tab.tsx for passkey management API endpoints and improved error handling.
- Enhanced saved-games components for better user interaction with cursor-pointer on buttons.
- General code cleanup and consistency improvements across various components.
2026-04-26 12:09:37 -05:00
adrianbonpin 0d477d8402 feat: add device detail page with charts and stats 2026-04-26 11:26:43 -05:00
adrianbonpin 6f2899b77d feat: add devices grid page with device cards 2026-04-26 11:23:24 -05:00