Commit Graph
368 Commits
Author SHA1 Message Date
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
adrianbonpin 7e06dec5c0 feat: add UpdateCard component for updates list 2026-05-01 09:32:39 +08:00
adrianbonpin edbd352b34 content: add first update post from changelog v2026.0.95 2026-05-01 09:31:57 +08:00
adrianbonpin 19c2515437 feat: add content loading utilities for updates 2026-05-01 09:31:04 +08:00
adrianbonpin 04da5d6210 chore: add markdown parsing dependencies for updates page 2026-05-01 09:29:25 +08:00
adrianbonpin 824fbbd13f feat: rearrange game benchmark wizard and improve overall 2026-05-01 01:18:13 +08:00
adrianbonpin 293aadbff0 fix: sequential sync with 1.5s delay to avoid Steam rate limiting 2026-04-30 23:13:28 +08:00
adrianbonpin 583486de1a feat: streaming progress for bulk sync - real-time updates 2026-04-30 23:09:35 +08:00
adrianbonpin e38a2fabe7 fix: better error handling for bulk sync, fix NaN% progress display 2026-04-30 23:04:51 +08:00
adrianbonpin 5f037481ec perf: parallel bulk sync with 5 concurrent requests, remove 100-game limit 2026-04-30 22:59:28 +08:00
adrianbonpin 0461beca4e feat: review score prominent display, improved sync logic, changelog update 2026-04-30 22:24:40 +08:00
adrianbonpin ea01438935 Fix Steam sync logic: extract retry helper, add 429/rate-limit handling, game type validation, set syncStatus on errors
- Extract recordSyncFailure() helper to deduplicate 3 identical retry/backoff blocks
- Set syncStatus: 'error' on all failure paths (was missing before)
- Handle HTTP 429 (rate limiting) with Retry-After header support
- Reject non-game Steam app types (DLC, soundtrack, demo) during sync
- Add type field to SteamAppDetails interface
2026-04-30 22:23:04 +08:00
adrianbonpin 730793d6b6 feat: add star icon and styled steam review score to game cards
- Show steamReviewScore on games list cards in compact badge row with star icon
- Update search result right panel to use blue-400 styling with star icon
- Include "Positive" label on search results for clarity
2026-04-30 22:15:09 +08:00
adrianbonpin 99766d3b4b feat: add Steam review score badge to game details hero section 2026-04-30 22:11:13 +08:00
adrianbonpin 9df2677fd5 docs: update changelog with steam reviews fix 2026-04-30 22:06:01 +08:00
adrianbonpin 2620023a96 fix: steam reviews pagination - fetch more and slice instead of broken cursor 2026-04-30 22:05:42 +08:00
adrianbonpin d2e40a2696 fix: add missing preset fields to serialization 2026-04-30 21:59:00 +08:00
adrianbonpin 976b918397 fix: suggest edit only for non-Steam games, improve preset modal, improve steam reviews error handling, update changelog 2026-04-30 21:55:38 +08:00
adrianbonpin 2286f0793c fix: anti-cheat is game-level, not per-device 2026-04-30 21:40:25 +08:00
adrianbonpin 90acde90b6 fix: add null safety to SteamReviews component 2026-04-30 21:38:47 +08:00
adrianbonpin fccef57d43 fix: auto-recalculate playability on benchmark submit and sync, fix anti-cheat logic for games without anti-cheat 2026-04-30 21:35:38 +08:00
adrianbonpin a9f78ef74c fix: remove duplicate /api prefix from new routes 2026-04-30 21:27:07 +08:00
adrianbonpin aa57a96191 fix: register dashboard and saved-filters API routes 2026-04-30 21:25:20 +08:00
adrianbonpin 6b6893a201 docs: add CHANGELOG.md tracking all new features 2026-04-30 20:50:14 +08:00
adrianbonpin 5fba98cd3d feat(manage): add dashboard as manage landing page
- Add Dashboard as first sidebar nav item under Overview section
- Update /manage page to render DashboardOverview instead of redirecting
- Remove redirect to /manage/users
2026-04-30 20:49:32 +08:00
adrianbonpin ce3c88ec54 feat(manage): add dashboard overview and charts components
- DashboardOverview: stat cards, top contributors, playability distribution,
  and Steam sync health sections
- DashboardCharts: placeholder for future ECharts integration
2026-04-30 20:48:28 +08:00
adrianbonpin 244a29bd1b feat: create dashboard overview API endpoint
Add /api/dashboard/stats route that provides admin dashboard statistics:
- Total counts (games, benchmarks, users)
- Pending moderation items (reports, suggestions)
- 30-day activity metrics (recent benchmarks, recent games)
- Top 10 contributors by entry count
- Sync health breakdown by status
- Games by source distribution
- Playability distribution

Auth: requireContributorOrAdmin guard
Route registered in lib/api/index.ts
2026-04-30 20:44:27 +08:00