Commit Graph
100 Commits
Author SHA1 Message Date
adrianbonpin 1b7600a2f6 feat: support removing screenshots during entry edit 2026-05-16 17:36:06 +08:00
adrianbonpin 99b89347d0 feat: show existing screenshots when editing entries with remove support 2026-05-16 17:33:36 +08:00
adrianbonpin 29a8ec667f fix: prevent text selection and touch interference on drag handles 2026-05-16 17:31:30 +08:00
adrianbonpin fb892265c4 fix: scope games listing performance tags to handheld devices 2026-05-16 17:29:47 +08:00
adrianbonpin 4465eb3a87 fix: scope performance tags (Raw Performer/Poor Performance) to handheld devices only 2026-05-16 17:27:24 +08:00
adrianbonpin aef9802263 feat: add Steam sale section to landing page 2026-05-16 17:24:43 +08:00
adrianbonpin 719e3f1c4a feat: add /api/dashboard/on-sale endpoint for Steam sale games 2026-05-16 17:22:08 +08:00
adrianbonpin d71cb27f54 feat: make public dashboard full-width matching game details styling 2026-05-16 17:20:38 +08:00
adrianbonpin 5fe527552b feat: add ban reason, expiry, and filter tabs to user management 2026-05-16 17:18:57 +08:00
adrianbonpin 9e98af1053 feat: add analytics page with time-series charts to manage panel 2026-05-16 17:16:51 +08:00
adrianbonpin 0450946107 feat: add admin analytics API endpoint with time-series data 2026-05-16 17:14:53 +08:00
adrianbonpin e089fb2cf7 feat: add server-side role guard to manage layout (moderator+) 2026-05-16 17:13:03 +08:00
adrianbonpin 4ec97a92ab feat: conditionally hide admin-only nav items for moderator role 2026-05-16 17:11:35 +08:00
adrianbonpin 92d16273d7 feat: gate destructive moderation endpoints to moderator+ role 2026-05-16 17:09:07 +08:00
adrianbonpin 23bbfc0317 feat: register moderator role in auth config and add guard 2026-05-16 17:06:24 +08:00
adrianbonpin 0f018b376e feat: add moderator role to permissions model 2026-05-16 17:04:27 +08:00
adrianbonpin 64b026386d feat: add 5-min in-memory cache to dashboard stats endpoint 2026-05-16 17:02:48 +08:00
adrianbonpin e7a48d4e6f feat: add performance and moderation index migration 2026-05-16 17:00:41 +08:00
adrianbonpin 3388bf42b5 feat: add database indexes for frequent query patterns 2026-05-16 16:57:23 +08:00
adrianbonpin 6737761151 docs: add OpenAPI descriptions and response schemas for all routes 2026-05-16 16:03:52 +08:00
adrianbonpin c22c1842d0 feat: add GET /api/mobile/benchmark/:entryId and GET /api/mobile/dashboard 2026-05-16 16:00:10 +08:00
adrianbonpin fda5c4d60e feat: add GET /api/mobile/search endpoint (DB-only, performance tags) 2026-05-16 15:57:28 +08:00
adrianbonpin 33f5aa8ec6 feat: add GET /api/mobile/game/:gameId consolidated endpoint 2026-05-16 15:55:22 +08:00
adrianbonpin 1ad216b9ff fix(api): fix Response.clone body consumed error on /api/openapi
Add embedSpec: true to openapi config to prevent cached Response
body from being consumed on subsequent requests. Also add
games-performance routes export and mobile-callback route.
2026-05-16 05:33:20 +08:00
adrianbonpin c17ce403dd docs: mark all plan tasks as complete in implementation plan 2026-05-15 01:39:45 +08:00
adrianbonpin 58c2e81366 docs: update changelog and update news with landing page section changes and performance badges 2026-05-15 01:37:57 +08:00
adrianbonpin 4ace385a6e feat(landing): add recently added benchmarks section, reorder sections, add PlayabilityBadge and performance tags to cards 2026-05-15 01:37:06 +08:00
adrianbonpin 1e546ca007 feat(api): add /recent-benchmarks endpoint and avg_fps to most-tested 2026-05-15 01:35:06 +08:00
adrianbonpin 45d4570665 chore: bump version to 2026.0.101, update changelog and update news 2026-05-15 01:07:42 +08:00
adrianbonpin 23700b00ae feat(landing): trending, new releases, most tested/reported sections with peek hero layout 2026-05-15 01:05:55 +08:00
adrianbonpin dbb0caa7e7 feat(steamdb): integrate version auto-fetch into submit wizard UI 2026-05-15 01:02:13 +08:00
adrianbonpin 1ba6335ea1 feat(steamdb): register steamdb-version route in app.ts read group 2026-05-15 00:57:10 +08:00
adrianbonpin 9f8a92206c feat(steamdb): export steamdbVersionRoutes from barrel index 2026-05-15 00:56:19 +08:00
adrianbonpin 5404d52bfe feat(steamdb): create API endpoint GET /api/games/:gameId/steamdb-version 2026-05-15 00:55:30 +08:00
adrianbonpin 3eb4a49151 feat(steamdb): add unit tests for SteamDB HTML parser (5 tests) 2026-05-15 00:54:28 +08:00
adrianbonpin cdc4ed7889 feat(steamdb): create HTML scraper to extract version and build ID from SteamDB 2026-05-15 00:53:03 +08:00
adrianbonpin 7e6bab9bad feat(steamdb): create in-memory cache module with 6h TTL and cooldown tracking 2026-05-15 00:52:02 +08:00
adrianbonpin 75c38341c4 feat(security): add submission validation hardening (cooldown, FPS bounds, settings limits, notes cap) 2026-05-15 00:50:23 +08:00
adrianbonpin d0b69892ea feat(security): add input sanitization to strip script tags and javascript: URLs from comments 2026-05-15 00:48:27 +08:00
adrianbonpin 470e374656 feat(security): add comment anti-spam (content length cap, duplicate detection, hourly limit) 2026-05-15 00:47:33 +08:00
adrianbonpin b895e8714d feat(security): apply tiered rate limits with scoped .group() blocks in app.ts 2026-05-15 00:45:12 +08:00
adrianbonpin e908880834 feat(security): extend rateLimit to support named categories with 5 tiers 2026-05-15 00:39:35 +08:00
adrianbonpin 0cda534825 docs: implementation plan for landing page, SteamDB, security, and changelog 2026-05-14 23:55:21 +08:00
adrianbonpin b2139fd444 docs: architectural spec for landing page, SteamDB integration, API security, and changelog 2026-05-14 23:08:43 +08:00
adrianbonpin fbfc43832e feat: add OpenAPI support and in-process cron scheduler
- Install @elysia/openapi to auto-generate API docs at /api/openapi
- Install @elysia/cron for in-process scheduled jobs (orphan detection at 2am, storage cleanup at 3am)
- Add Scalar UI docs with 14 tag groups and Bearer JWT security scheme
- Add route-level detail annotations (tags, summaries) to all 30+ route files
- Upgrade crud-builder to accept optional tags config
- Keep HTTP cron endpoint as manual/admin fallback
2026-05-14 21:43:33 +08:00
adrianbonpin 20f010cef1 feat: Update to nextjs 16.2.4 2026-05-11 13:10:26 +08:00
adrianbonpin f11c8343d4 refactor: overhaul settings editor, review step, and preset detail modal
- Refactored settings-editor.tsx with improved structure
- Refactored review-step.tsx for better readability
- Refactored preset-detail-modal.tsx
- Minor fix in game-page-client.tsx
2026-05-10 16:38:27 +08:00
adrianbonpin 9b1e428bc7 feat: YouTube preview in review step, phase-aware submit button (Task 7) 2026-05-10 15:37:42 +08:00
adrianbonpin 9dc7013fbf feat: atomic FormData submit, back button on review, submit phase state (Task 6) 2026-05-10 15:36:05 +08:00
adrianbonpin 6f64f1d89a feat: convert PATCH /:id/edit to multipart with atomic screenshot replacement (Task 5) 2026-05-10 15:32:09 +08:00
adrianbonpin 285213acdc feat: convert POST /submit to multipart with atomic screenshot processing and R2 cleanup (Task 4) 2026-05-10 15:27:35 +08:00
adrianbonpin 3e50b0f6bb refactor: rename Community Presets to Performance Entries in game page UI (Task 3) 2026-05-10 15:21:51 +08:00
adrianbonpin 6211683c70 feat: refactor preset modal — tabbed layout, metadata groups, screenshot lightbox, remove v prefix (Task 2.1) 2026-05-10 15:20:14 +08:00
adrianbonpin 303971424d feat: create ScreenshotLightbox component with zoom/pan and navigation (Task 1.1) 2026-05-10 15:11:33 +08:00
adrianbonpin 3e94033c83 chore: bump version to 2026.0.100, write CHANGELOG and update news (Tasks 7.1-7.3) 2026-05-10 05:24:51 +08:00
adrianbonpin 1145ba6f51 feat: add version, anti-cheat, and verified date to preset detail modal (Tasks 6.1-6.7) 2026-05-10 05:22:53 +08:00
adrianbonpin 5875595219 feat: enrich game cards with bestFps, raw/poor performer badges, and battery estimates (Tasks 5.1-5.6) 2026-05-10 05:17:55 +08:00
adrianbonpin c704f35f51 feat: add computed battery estimate to ReviewStep via hardware wattHours + tdpWatts (Tasks 4.1-4.3) 2026-05-10 05:11:46 +08:00
adrianbonpin 6d906f0bbf feat: remove estimatedBatteryMin references from 11 files (Tasks 3.1-3.14) 2026-05-10 05:07:25 +08:00
adrianbonpin aa4509ede8 feat: wire screenshot upload into wizard inline submit flow, remove post-submit interstitial (Tasks 2.2-2.4) 2026-05-10 04:59:48 +08:00
adrianbonpin 7560cca4e6 feat: add screenshot upload UI to ReviewStep (Task 2.1) 2026-05-10 04:57:02 +08:00
adrianbonpin 3a9ac815e5 feat: drop estimated_battery_min column — Phase 1 migration (Tasks 1.1-1.3) 2026-05-10 04:52:44 +08:00
adrianbonpin bcf2d540b8 chore: format components, switch to CDN hostname, and improve error handling in game stats
- Format long lines and union types in game page, preset modal, games page, and filter drawer
- Replace **.r2.dev with cdn.deckyvault.xyz in next.config image hostnames
- Replace sql ANY with drizzle inArray for hardware query in game stats
- Add try/catch error handler in game stats route
- Add post.md to .gitignore
2026-05-10 04:15:38 +08:00
adrianbonpin f02408c0c7 fix(lint): resolve react-hooks/set-state-in-effect in storage and suggestions clients 2026-05-10 02:02:01 +08:00
adrianbonpin c9adf80d88 refactor(manage): use shared ConfirmDialog in benchmarks page 2026-05-10 01:55:37 +08:00
adrianbonpin 18299fbb8d refactor(manage): use shared ConfirmDialog in comments page 2026-05-10 01:53:13 +08:00
adrianbonpin 6b6429a9e5 refactor(manage): use shared ConfirmDialog in reports page 2026-05-10 01:51:44 +08:00
adrianbonpin f54580394d chore(verify): storage page renders correctly in production build 2026-05-10 01:48:23 +08:00
adrianbonpin 0d1560ecc7 feat(manage): add R2 storage management page with stats, browser, cleanup 2026-05-10 01:46:14 +08:00
adrianbonpin 814a5c3d7c feat(api): register admin storage routes and export from index 2026-05-10 01:22:33 +08:00
adrianbonpin 0772b61de8 feat(api): add admin storage management endpoints (stats, list, delete, cleanup) 2026-05-10 01:20:12 +08:00
adrianbonpin d01e8c5ea5 feat(manage): add Suggestions and Storage nav items, reorganize sidebar sections 2026-05-10 01:15:36 +08:00
adrianbonpin 49cbd7a292 feat(manage): update SuggestionsClient to use admin paginated endpoint 2026-05-10 01:13:13 +08:00
adrianbonpin 55e5028b09 feat(api): add admin paginated suggestions endpoint 2026-05-10 01:07:24 +08:00
adrianbonpin 755d3c0f6c feat(manage): add community suggestions moderation page 2026-05-10 01:03:55 +08:00
adrianbonpin aedd84626d chore(verify): hardware API already supports wattHours and tdpMax 2026-05-10 00:53:44 +08:00
adrianbonpin eb22efc23f feat(manage): display wattHours and tdpMax on device cards 2026-05-10 00:51:14 +08:00
adrianbonpin 13bb95b6bd feat(manage): include wattHours and tdpMax in hardware submit body 2026-05-10 00:49:26 +08:00
adrianbonpin e35fbf8e71 feat(manage): add wattHours and tdpMax inputs to hardware form 2026-05-10 00:46:49 +08:00
adrianbonpin fd9d75c85f feat(manage): add wattHours and tdpMax to DeviceFormData and DeviceItem interfaces 2026-05-10 00:44:49 +08:00
adrianbonpin f1eec58093 chore(verify): validate shared Modal and ConfirmDialog components build and resolve correctly 2026-05-10 00:42:38 +08:00
adrianbonpin 137fba683b feat(ui): add shared ConfirmDialog component 2026-05-10 00:39:53 +08:00
adrianbonpin fe593fc76f feat(ui): add modal barrel export 2026-05-10 00:34:53 +08:00
adrianbonpin c040f36fe0 feat(ui): add shared Modal component with portal, overlay, escape handler 2026-05-10 00:32:46 +08:00
adrianbonpin 6718f1b033 fix: updates page sorting — correct version typo 971→97.1 and add semver tiebreaker 2026-05-09 23:47:50 +08:00
adrianbonpin 5ed60ef3cc chore: fix lint/type issues from seven-feature integration 2026-05-09 23:35:21 +08:00
adrianbonpin 085ebb54d4 feat: optional screenshot upload step after benchmark submission 2026-05-09 23:30:17 +08:00
adrianbonpin ff360c6ab4 feat: display wattHours and tdpMax on device cards 2026-05-09 23:27:37 +08:00
adrianbonpin bb45599fe9 feat: add TDP and YouTube video inputs to benchmark submission wizard 2026-05-09 23:25:30 +08:00
adrianbonpin b5d9f0e19b feat: power quick-look bar, YouTube indicator, battery chart, screenshot gallery on game details 2026-05-09 23:20:34 +08:00
adrianbonpin 4998337913 feat: BatteryLifeChart component for power usage visualization 2026-05-09 23:04:20 +08:00
adrianbonpin f03411a8be feat: mobile hero background with gradient overlay on game details page 2026-05-09 23:01:26 +08:00
adrianbonpin fbc041d62d feat: filter drawer overlay on mobile for games list 2026-05-09 22:47:33 +08:00
adrianbonpin 3cbb3538da feat: add screenshot upload/list/delete API routes 2026-05-09 22:40:05 +08:00
adrianbonpin b7c74fcaf5 feat: add sharp dependency and screenshot processing pipeline 2026-05-09 22:36:05 +08:00
adrianbonpin 027d3ac8fc feat: auto-pin entries with ≥10 votes and ≥80% approval 2026-05-09 22:32:19 +08:00
adrianbonpin 8ea160bd05 feat: accept tdpWatts and youtubeVideoId in performance submit/edit APIs 2026-05-09 22:29:34 +08:00
adrianbonpin 02bdbe2825 feat: include wattHours, tdpMax, and batteryLife in hardware and game stats APIs 2026-05-09 22:25:34 +08:00
adrianbonpin 666219614b chore: generate migration 0023 for screenshots, power, youtube schema 2026-05-09 22:20:41 +08:00
adrianbonpin 8904a7b611 feat: add entryScreenshots table, wattHours/tdpMax on hardware, tdpWatts/youtubeVideoId on performanceEntries 2026-05-09 22:12:08 +08:00