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
adrianbonpin
c20ef2a5f4
chore: version bump to 2026.0.99, changelog, and news post
2026-05-09 22:09:23 +08:00
adrianbonpin
32386ce170
fix: resolve all ESLint errors and warnings
...
- Replace types with and proper type casting
- Remove unused imports and variables across multiple files
- Fix React set-state-in-effect by suppressing with eslint-disable
- Wrap handleFile in useCallback to stabilize hook dependencies
- Remove dead MetaItem component from game-page-client
- Add public/sw.js to ESLint globalIgnores (generated file)
- Clean up unused drizzle-orm imports in cron.ts, dashboard-public.ts
- Remove unused _configured flag from r2-client.ts
2026-05-09 16:38:29 +08:00
adrianbonpin
321c923464
feat: switch sitemap from static file to dynamic DB-driven generation
2026-05-09 15:31:05 +08:00
adrianbonpin
4bca9c97c9
fix: prevent localhost from being used as sitemap base URL
2026-05-09 15:12:55 +08:00
adrianbonpin
f808b8325a
feat: wire photo upload/delete changes upward for instant page-wide refresh
2026-05-09 14:00:13 +08:00
adrianbonpin
11d944bef2
fix: profile photo upload field name mismatch ('file'→'photo'), sitemap auto-run only on CLI
2026-05-09 13:55:22 +08:00
adrianbonpin
7094e05227
feat: v2026.0.98 changelog, version bump, regenerated sitemap
2026-05-09 13:33:47 +08:00
adrianbonpin
03428bdd0b
feat: add admin sitemap regeneration endpoint and cron task
2026-05-09 13:30:38 +08:00
adrianbonpin
c6a9b448d3
feat: add advanced filters and saved filter presets to search page
2026-05-09 13:27:59 +08:00
adrianbonpin
1e59224622
feat: restructure game details layout, expand sys reqs by default, optimize for mobile and controller
2026-05-09 13:19:44 +08:00
adrianbonpin
2bc6953339
feat: add public dashboard page with trending, best new releases, and most tested charts
2026-05-09 13:11:27 +08:00
adrianbonpin
2f4f0250df
feat: add public dashboard API routes for trending, best new, most tested, most reported
2026-05-09 13:07:52 +08:00
adrianbonpin
5bc85aa850
feat: add static sitemap generation script, replace dynamic sitemap with static files
2026-05-09 13:04:33 +08:00
adrianbonpin
d4a12fe19d
feat: add profile photo upload UI component and integrate into settings
2026-05-09 12:58:11 +08:00
adrianbonpin
20f1d33751
feat: add profile photo upload/delete API routes with R2 storage
2026-05-09 12:54:12 +08:00
adrianbonpin
6009366fb4
feat: add modular daily cron system with storage cleanup and orphan detection
2026-05-09 12:50:16 +08:00
adrianbonpin
393bc9a9c6
feat: add R2 storage client module with upload, delete, list, metadata
2026-05-09 12:46:47 +08:00
adrianbonpin
f59ef61634
feat: add storage_objects schema for R2 tracking
2026-05-09 12:44:49 +08:00
adrianbonpin
bb459b3146
fix: resolve submit crash (.data.id undefined) & add missing update posts
...
- Fix game-entry-wizard.tsx: API returns flat { id } not { data: { id } }
- Add update posts for v2026.0.96, v2026.0.97, v2026.0.971
2026-05-09 00:56:01 +08:00
adrianbonpin
dcf6066b2b
feat: sitemap remediation, PWA activation, search refinements, Steam Deck UX
...
Sitemap:
- Switch from ISR (revalidate=3600) to force-dynamic for per-request generation
- Flatten into single app/sitemap.ts with inlined static entries and DB queries
- NULL-safe syncStatus filter: ne(games.syncStatus, 'failed') OR isNull(games.syncStatus)
- Structured JSON logging for generated URLs and DB errors
- Delete lib/sitemap/* helpers and app/api/revalidate-sitemap route
- Add basic vitest coverage for sitemap exports
PWA & Offline:
- Add @serwist/next service worker (webpack build) with runtime caching
- Cache strategies: stale-while-revalidate for game pages, network-first for listings/API,
cache-first for Steam CDN images
- Offline fallback page (public/offline.html)
- Manifest icons: 192px maskable + 512px any
- Viewport meta with viewport-fit=cover, user-scalable=no
- Apple mobile web app meta tags
Search / Filter Refinements:
- Multi-genre OR support in listing API (comma-separated genres)
- Device-scoped FPS filter (min/max FPS constrained to selected device)
- Client-side URL state sync via router.replace for shareable filtered views
- Initialize filter state from URL params on mount
- Auto-collapse filter panel on saved-filter load
- Fix multi-genre saved filter parsing (comma-separated)
Steam Deck / Touch / Gamepad UX:
- WCAG 2.1 AA touch targets (44x44px) on all filter controls
- .gamepad-focus CSS focus ring for controller navigation
- useGamepadNavigation hook: D-pad/left-stick roving tabindex, A/B/X/Y actions
- Integrate gamepad hook into games page (X=search, Y=toggle filters)
Chore:
- Bump version to 2026.0.97
2026-05-05 16:20:28 +08:00
adrianbonpin
9be64359be
fix: remove Updates from navigation routes
2026-05-05 02:12:16 +08:00
adrianbonpin
52fd3b5ba4
refactor: createGameStub now uses ensureSteamGame pipeline
2026-05-05 02:10:33 +08:00
adrianbonpin
b627a15a21
refactor: game-stub route now uses ensureSteamGame pipeline
2026-05-05 02:05:36 +08:00
adrianbonpin
47ac4c218b
test: add unit tests for ensureSteamGame stub-then-sync
2026-05-05 02:01:41 +08:00
adrianbonpin
50353952db
feat: add ensureSteamGame — unified stub-then-sync entry point
2026-05-05 01:29:01 +08:00
adrianbonpin
cfd18064bd
docs: add tactical implementation plan for sync unification & nav cleanup
2026-05-05 01:16:02 +08:00
adrianbonpin
765adfa1d5
docs: architectural spec for sync unification, nav cleanup, and PWA
2026-05-05 01:10:27 +08:00
adrianbonpin
863358a8fd
fix: resolve Next.js 16 build errors
...
- Extract Elysia app from route.ts into lib/api/app.ts to avoid
Next.js 16 invalid export validation ('app' is not a valid route
export field)
- Remove runtime='nodejs' from opengraph-image.tsx (invalid segment
config in Next.js 16)
- Replace computed revalidate expression in sitemap.ts with literal
(Next.js cannot statically evaluate BinaryExpression for segment
configs)
- Update eden.ts imports to match new app.ts location
2026-05-05 00:36:17 +08:00
adrianbonpin
f0db19b243
fix: sitemaps pt.2
2026-05-04 21:41:25 +08:00
adrianbonpin
633117f452
chore: final verification fixes for sitemap reliability
...
- Replace invalid revalidate export with unstable_cache in sitemap.ts
- Add revalidateTag('sitemap', 'default') to on-demand revalidation endpoint
- Fix test assertions to match /game/ URL path
2026-05-04 13:16:47 +08:00
adrianbonpin
9d3690ce50
feat: add on-demand sitemap revalidation webhook
2026-05-04 13:12:37 +08:00
adrianbonpin
0a138c3099
fix: remove non-standard host directive from robots.txt
2026-05-04 13:11:27 +08:00
adrianbonpin
16e5cf586d
feat: rewrite sitemap with ISR caching, validation, and filtered allowlist
2026-05-04 13:10:56 +08:00
adrianbonpin
26e0b510da
feat: add sitemap dynamic entries fetcher with LIMIT, validation, and error recovery
2026-05-04 13:09:02 +08:00
adrianbonpin
4fbaea9d9d
feat: add static sitemap entry allowlist (no auth pages)
2026-05-04 13:05:28 +08:00
adrianbonpin
e0df92e05e
feat: add sitemap image URL validation gate
2026-05-04 13:04:00 +08:00
adrianbonpin
ca08024cb5
feat: updates page and lint fixes
2026-05-01 10:15:13 +08:00
adrianbonpin
7bcd580397
fix: replace prose plugin with custom CSS for markdown styling
2026-05-01 09:49:26 +08:00
adrianbonpin
7749162414
fix: switch markdown pipeline to remark-rehype for proper HTML rendering
2026-05-01 09:44:47 +08:00
adrianbonpin
1abb254fef
chore: add changelog entry for updates page (v2026.0.96)
2026-05-01 09:38:21 +08:00
adrianbonpin
fbc0085e9e
feat: add typography plugin and prose styles for update viewer
2026-05-01 09:37:43 +08:00
adrianbonpin
695c3fbedf
feat: add updates route and sitemap entry
2026-05-01 09:36:44 +08:00
adrianbonpin
42cf4652dd
feat: add update viewer page with static generation
2026-05-01 09:36:03 +08:00
adrianbonpin
db36ef01e1
feat: add updates list page
2026-05-01 09:35:26 +08:00
adrianbonpin
c204c30eb9
feat: add UpdateViewer component with chapter nav and progress bar
2026-05-01 09:34:45 +08:00
adrianbonpin
cd98d6637f
feat: add ChapterNav component with mobile support
2026-05-01 09:34:04 +08:00
adrianbonpin
f8ba2d0370
feat: add ReadingProgressBar component
2026-05-01 09:33:12 +08:00