Commit Graph
100 Commits
Author SHA1 Message Date
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
adrianbonpin aa098ebaf8 feat: add owner-scoped hard delete for performance entries 2026-04-27 14:10:01 +08:00
adrianbonpin 7db930302c docs: add consolidation spec — merge communityPresets into performanceEntries 2026-04-27 14:03:03 +08:00
adrianbonpin 9e551acd54 fix(settings-editor): let user type custom category name instead of auto-naming it 'Custom' 2026-04-27 13:37:04 +08:00
adrianbonpin 457d6f5f39 fix: resolve 3 lint issues
- login-form.tsx: suppress unused-vars warning for emailChecked state
- bookmark-button.tsx: use function initializer for isLoading to avoid sync setState in effect
- saved-games.ts: remove unused 'set' parameter from check endpoint
2026-04-27 13:15:16 +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 4943f24fd4 feat(wizard): redesign environment step - upscaling options
- Replace FSR Version with flexible Upscaler Type + Version
- Add new upscaler options: AMD FSR, NVIDIA DLSS, Intel XeSS, Lossless Scaling FG, Other
- Expand Frame Gen options: lsfg, other
- Add Estimated Battery Life field (minutes)
- Add Custom / Modified System toggle
- Update review step with new summary rows
- Update submit body with new fields
2026-04-27 07:24:23 +08:00
adrianbonpin bcc0382001 feat(settings-editor): add UX improvements
- Add 'Create custom' button alongside 'Load defaults' when empty
- Add setting type selector (text/number/boolean) when adding new settings
- Add reorder controls for categories (up/down arrows)
- Add reorder controls for settings within each category
2026-04-27 07:21:30 +08:00
adrianbonpin 5ccd3e0f7b feat: add required field indicators to submit wizard 2026-04-27 07:19:29 +08:00
adrianbonpin cece6a40dc fix: add immediatelyRender:false to Tiptap to prevent SSR hydration mismatch 2026-04-27 07:19:09 +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 0a3738a778 chore: fix lint issues — move OAuth callback to lazy init, remove unused eslint-disable directives 2026-04-26 12:27:24 -05:00
adrianbonpin 36323f3ba3 refactor(settings-accounts-tab): use better-auth SDK, add error handling and OAuth callback
- Replace raw fetch calls with authClient.listAccounts(), linkSocial(), unlinkAccount()
- Accept authMethods, isLoadingAuthMethods, onRefreshAuthMethods as props
- Add error/retry states for failed account fetches
- Detect OAuth callback return (?linked=true) and show success message
- Show single auth method warning only when isLoadingAuthMethods is false
2026-04-26 12:25:23 -05:00
adrianbonpin 2063c0cb83 Task 5: Refactor SettingsSecurityTab
- Accept authMethods, isLoadingAuthMethods, onRefreshAuthMethods as props
- Fix passkey list URL to /api/auth/passkey/list-user-passkeys
- Fix passkey delete/rename to use /api/auth/passkey/delete-passkey and /api/auth/passkey/update-passkey
- Add error feedback with retry UI for passkey loading failures
- Add passkeyMessage state for success/error feedback
- Keep password validation at 10 characters minimum
- Call onRefreshAuthMethods after password and passkey operations
2026-04-26 12:22:06 -05: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 beed7f02a8 refactor: remove custom passkey routes in favor of better-auth SDK endpoints 2026-04-26 12:15:26 -05:00
adrianbonpin 12bebf5389 fix: unify password minimum length to 10 characters across all flows 2026-04-26 12:13:08 -05:00
adrianbonpin 3e86b34116 fix: correct WebAuthn origin to HTTPS default for passkey plugin 2026-04-26 12:12:18 -05:00
adrianbonpin 7f5c0d3f96 fix: update .gitignore to include .superpowers directory 2026-04-26 12:10:27 -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 18b9e5d0db fix: resolve lint issues in settings components
- Fix react-hooks/set-state-in-effect by inlining data fetch in useEffect
- Replace useCallback-wrapped fetch functions with plain async functions
- Replace window.location.href with window.location.assign()
- Remove unused eslint-disable directives
- Fix double res.json() call in passkey refresh
2026-04-26 11:31:01 -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
adrianbonpin 93a474ef45 feat: add hardware stats API endpoints (list + detail) 2026-04-26 11:21:41 -05:00
adrianbonpin 04c0f9252b feat: wire up settings sub-tabs in profile page 2026-04-26 11:19:17 -05:00
adrianbonpin dd4f40b50e feat: add linked accounts settings tab with link/unlink 2026-04-26 11:18:05 -05:00
adrianbonpin bea155005f feat: add security settings tab with password and passkey management 2026-04-26 11:11:48 -05:00
adrianbonpin 9b8b4290dc feat: add settings profile sub-tab with name editing 2026-04-26 11:05:22 -05:00
adrianbonpin ae22a65a9f refactor: widen profile to max-w-7xl and remove avatar from header 2026-04-26 11:03:37 -05:00
adrianbonpin 882827dfa3 refactor: remove profile avatar from navbar dropdown trigger 2026-04-26 11:00:20 -05:00
adrianbonpin b683cc01a3 docs: add profile and devices redesign implementation plan 2026-04-26 10:57:38 -05:00
adrianbonpin 8ac1fd230c docs: add profile and devices redesign spec 2026-04-26 10:51:05 -05:00
adrianbonpin 945c8d18f6 feat: add benchmark submission page and button 2026-04-26 10:30:22 -05:00
adrianbonpin 206103d79c feat: add main game entry wizard component 2026-04-26 10:28:30 -05:00
adrianbonpin db677fa9bf feat: add wizard step components 2026-04-26 10:22:56 -05:00
adrianbonpin f89c7c3969 feat: add step indicator component with tooltips 2026-04-26 10:17:20 -05:00
adrianbonpin 83057a73ad feat: add dynamic settings editor component 2026-04-26 10:15:33 -05:00
adrianbonpin de0bcca409 feat: add reusable Tiptap editor component 2026-04-26 10:13:17 -05:00
adrianbonpin 13ef29c6c0 feat: add performance entry submit and autocomplete API 2026-04-26 10:11:38 -05:00
adrianbonpin 877aa766e7 feat: update performanceEntries schema - typed settingsJson, add launchOptions 2026-04-26 10:09:18 -05:00
adrianbonpin 786291ff4f feat: integrate saved games grid into profile page 2026-04-26 10:07:16 -05:00
adrianbonpin 75341c8c19 feat: add saved games grid component 2026-04-26 10:06:25 -05:00
adrianbonpin 2cf08200c2 feat: add bookmark button to game detail page 2026-04-26 10:04:40 -05:00
adrianbonpin 6d18337f72 feat: add bookmark button component 2026-04-26 10:03:53 -05:00
adrianbonpin dd123d4afd feat: add saved games API endpoints 2026-04-26 10:01:51 -05:00
adrianbonpin 9964c99c4a feat: add savedGames schema 2026-04-26 09:59:47 -05:00
adrianbonpin fb686b6786 feat: add public and private profile pages 2026-04-26 09:57:28 -05:00
adrianbonpin b586ceb837 feat: add profile components (header, stats, contributions) 2026-04-26 09:53:56 -05:00
adrianbonpin 544cdb29cd fix: address code quality issues in user API 2026-04-26 09:51:31 -05:00
adrianbonpin 8301562613 feat: extend user API with contribution history and verified count 2026-04-26 09:47:38 -05:00
adrianbonpin 53d0a52c07 feat: simplify mobile sidebar auth to Profile links 2026-04-26 09:44:29 -05:00
adrianbonpin b2eecd008b fix: consolidate @/lib/routes imports 2026-04-26 09:43:25 -05:00
adrianbonpin 4c6fa42b11 fix: consolidate lucide-react imports 2026-04-26 09:40:33 -05:00
adrianbonpin af3ce06f5e feat: simplify desktop navbar auth to Profile dropdown 2026-04-26 09:37:58 -05:00
adrianbonpin 8692b9828f feat: add profile and saved games routes 2026-04-26 09:35:30 -05:00
adrianbonpin 3f955e63c3 feat: improve auth 2026-04-26 09:23:35 -05:00
adrianbonpin a49e0d8ff0 fix: align navbar profile button styling with other nav links 2026-04-26 08:03:50 -05:00
adrianbonpin 8dfbd3ca5e fix: use check-email endpoint instead of sign-in probe for email verification 2026-04-26 08:02:18 -05:00