adrianbonpin
bad8d55cf4
fix: convert game count to number for type-safe comparison (build fix)
2026-05-25 21:26:01 +08:00
adrianbonpin
5083255654
feat: rewrite sitemap with generateSitemaps pattern — 4 isolated child sitemaps (Task 2)
2026-05-25 21:24:11 +08:00
adrianbonpin
1ed90bb222
feat: extract sitemap utilities to lib/sitemap-utils.ts (Task 1)
2026-05-25 21:16:17 +08:00
adrianbonpin
49800c3cc2
test: final metadata integration sweep — verify all page titles (Task 11)
2026-05-25 19:42:05 +08:00
adrianbonpin
ad7c361d0d
feat: add AggregateRating JSON-LD to game detail pages (Task 10)
2026-05-25 19:40:52 +08:00
adrianbonpin
d4ff5a26a6
feat: add BreadcrumbList JSON-LD to game, games, and devices pages (Task 9)
2026-05-25 19:39:43 +08:00
adrianbonpin
183bdc96c0
feat: add Organization JSON-LD to homepage (Task 8)
2026-05-25 19:38:02 +08:00
adrianbonpin
6b25e5918b
fix: use smartTruncate for game meta descriptions, prevent mid-word cutoff (Task 7)
2026-05-25 19:36:27 +08:00
adrianbonpin
2976a34b46
fix: add canonical URL, preconnect hints, remove user-scalable=no (Task 5)
2026-05-25 19:33:21 +08:00
adrianbonpin
a2e94ca328
fix: add metadata exports for /compare and /profile pages (Task 4)
2026-05-25 19:31:38 +08:00
adrianbonpin
b14f03e2b7
fix: correct title duplication on /games and /devices pages (Task 3)
2026-05-25 19:30:19 +08:00
adrianbonpin
db9a9150e8
test: add metadata integration test scaffold for SEO fixes (Task 2)
2026-05-25 19:28:43 +08:00
adrianbonpin
8948113c0f
feat: robust sitemap with error handling, missing pages, and full test coverage
...
- Add querySafe() wrapper with 15s timeout so DB failures don't crash the sitemap
- Add missing pages: /compare, /search, /updates/[slug] (from markdown)
- Bump game page priority to 0.8; add lastModified where available
- Expand test suite from 4 to 10 tests covering all data sources
- All 10 tests passing
2026-05-23 15:37:17 +08:00
adrianbonpin
c808747b9d
fix: correct sitemap test count and steamdb version extraction
2026-05-20 02:27:56 +08:00
adrianbonpin
e61071007e
feat: share button uses steamAppId/slug instead of UUID
2026-05-20 02:23:09 +08:00
adrianbonpin
1929572060
feat: add /app/[steamid] → /game/[steamid] ProtonDB redirect
2026-05-20 02:21:53 +08:00
adrianbonpin
d8ff20f3b1
feat: extend resolveGame() with slug fallback lookup
2026-05-20 02:21:17 +08:00
adrianbonpin
e5f671a992
feat: add multi-strategy version fetchers, disable auto-fetch by default
...
- Add 4 version-fetch strategies (UpToDateCheck API, Store Page Scrape,
Community Hub Scrape, Store API Heuristic) — no Steam API key needed
- Create orchestrator that tries all strategies, prefers named version
over build ID
- Add test page at /test-version-fetchers for comparing strategies
- Add standalone /api/version-test endpoint (direct Steam App ID, no DB)
- Update /api/games/:id/steamdb-version to use new strategies
- Disable auto-fetch on submit page by default (NEXT_PUBLIC_VERSION_AUTO_FETCH=true to enable)
- SteamDB scraping blocked by Cloudflare; strategies preserved for later enablement
2026-05-16 20:13:23 +08:00
adrianbonpin
f4eab9c8e0
fix: show existing screenshots in edit mode, fix drag reorder jank, bump version to 2026.1.102
2026-05-16 18:33:56 +08:00
adrianbonpin
0ff27b613d
chore: remove public community dashboard page
2026-05-16 18:10:29 +08:00
adrianbonpin
fb892265c4
fix: scope games listing performance tags to handheld devices
2026-05-16 17:29:47 +08:00
adrianbonpin
aef9802263
feat: add Steam sale section to landing page
2026-05-16 17:24:43 +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
e089fb2cf7
feat: add server-side role guard to manage layout (moderator+)
2026-05-16 17:13:03 +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
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
23700b00ae
feat(landing): trending, new releases, most tested/reported sections with peek hero layout
2026-05-15 01:05:55 +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
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
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
6d906f0bbf
feat: remove estimatedBatteryMin references from 11 files (Tasks 3.1-3.14)
2026-05-10 05:07:25 +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
0d1560ecc7
feat(manage): add R2 storage management page with stats, browser, cleanup
2026-05-10 01:46:14 +08:00
adrianbonpin
49cbd7a292
feat(manage): update SuggestionsClient to use admin paginated endpoint
2026-05-10 01:13:13 +08:00
adrianbonpin
755d3c0f6c
feat(manage): add community suggestions moderation page
2026-05-10 01:03:55 +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
5ed60ef3cc
chore: fix lint/type issues from seven-feature integration
2026-05-09 23:35:21 +08:00
adrianbonpin
ff360c6ab4
feat: display wattHours and tdpMax on device cards
2026-05-09 23:27:37 +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
f03411a8be
feat: mobile hero background with gradient overlay on game details page
2026-05-09 23:01:26 +08:00