Commit Graph

  • 535836b6ba test: add sitemap integration constraint verification (Task 3) adrianbonpin 2026-05-25 21:29:10 +08:00
  • bad8d55cf4 fix: convert game count to number for type-safe comparison (build fix) adrianbonpin 2026-05-25 21:26:01 +08:00
  • 5083255654 feat: rewrite sitemap with generateSitemaps pattern — 4 isolated child sitemaps (Task 2) adrianbonpin 2026-05-25 21:24:11 +08:00
  • 1ed90bb222 feat: extract sitemap utilities to lib/sitemap-utils.ts (Task 1) adrianbonpin 2026-05-25 21:16:17 +08:00
  • bc1fe0b72b chore: bump version to 2026.2.1, add changelog entry for SEO improvements (Task 13) adrianbonpin 2026-05-25 19:43:58 +08:00
  • 49800c3cc2 test: final metadata integration sweep — verify all page titles (Task 11) adrianbonpin 2026-05-25 19:42:05 +08:00
  • ad7c361d0d feat: add AggregateRating JSON-LD to game detail pages (Task 10) adrianbonpin 2026-05-25 19:40:52 +08:00
  • d4ff5a26a6 feat: add BreadcrumbList JSON-LD to game, games, and devices pages (Task 9) adrianbonpin 2026-05-25 19:39:43 +08:00
  • 183bdc96c0 feat: add Organization JSON-LD to homepage (Task 8) adrianbonpin 2026-05-25 19:38:02 +08:00
  • 6b25e5918b fix: use smartTruncate for game meta descriptions, prevent mid-word cutoff (Task 7) adrianbonpin 2026-05-25 19:36:27 +08:00
  • 6cd0fc6b6f fix: verify H1 uniqueness on game detail pages - no duplicate found (Task 6) adrianbonpin 2026-05-25 19:35:12 +08:00
  • 2976a34b46 fix: add canonical URL, preconnect hints, remove user-scalable=no (Task 5) adrianbonpin 2026-05-25 19:33:21 +08:00
  • a2e94ca328 fix: add metadata exports for /compare and /profile pages (Task 4) adrianbonpin 2026-05-25 19:31:38 +08:00
  • b14f03e2b7 fix: correct title duplication on /games and /devices pages (Task 3) adrianbonpin 2026-05-25 19:30:19 +08:00
  • db9a9150e8 test: add metadata integration test scaffold for SEO fixes (Task 2) adrianbonpin 2026-05-25 19:28:43 +08:00
  • beae61a117 feat: add SEO utility functions smartTruncate and buildBreadcrumbList (Task 1) adrianbonpin 2026-05-25 19:26:22 +08:00
  • 2afee33fb0 fix: update vitest config (exclude .worktrees, revert package.json test scripts to vitest) adrianbonpin 2026-05-25 19:24:41 +08:00
  • 86fc0c2999 fix: resolve pre-existing test failures in auth, steam, and auto-pin tests adrianbonpin 2026-05-25 19:20:54 +08:00
  • e44a85fe94 chore: merge dev -> prod - robust sitemap + error handling adrianbonpin 2026-05-23 15:37:30 +08:00
  • 8948113c0f feat: robust sitemap with error handling, missing pages, and full test coverage adrianbonpin 2026-05-23 15:37:17 +08:00
  • 6d3f72d6c1 chore: cleanup whitespace adrianbonpin 2026-05-20 02:30:13 +08:00
  • c808747b9d fix: correct sitemap test count and steamdb version extraction adrianbonpin 2026-05-20 02:27:56 +08:00
  • 8da0dce723 chore: bump version to 2026.2.0 with CHANGELOG and update news adrianbonpin 2026-05-20 02:25:04 +08:00
  • 249b8bc7e9 feat: generate slug on non-Steam game creation adrianbonpin 2026-05-20 02:24:05 +08:00
  • e61071007e feat: share button uses steamAppId/slug instead of UUID adrianbonpin 2026-05-20 02:23:09 +08:00
  • 1929572060 feat: add /app/[steamid] → /game/[steamid] ProtonDB redirect adrianbonpin 2026-05-20 02:21:53 +08:00
  • d8ff20f3b1 feat: extend resolveGame() with slug fallback lookup adrianbonpin 2026-05-20 02:21:17 +08:00
  • 61d516f1b1 feat(db): backfill slugs for existing non-Steam games adrianbonpin 2026-05-20 02:19:42 +08:00
  • b835ac678f feat(db): add slug column to games table adrianbonpin 2026-05-20 02:17:15 +08:00
  • e5f671a992 feat: add multi-strategy version fetchers, disable auto-fetch by default adrianbonpin 2026-05-16 20:13:23 +08:00
  • 88a098f387 fix: enforce max screenshot limit (2) on upload area and existing remove button adrianbonpin 2026-05-16 19:13:16 +08:00
  • f4eab9c8e0 fix: show existing screenshots in edit mode, fix drag reorder jank, bump version to 2026.1.102 adrianbonpin 2026-05-16 18:33:56 +08:00
  • 0ff27b613d chore: remove public community dashboard page adrianbonpin 2026-05-16 18:10:29 +08:00
  • 3363b9161d chore: bump version to 2026.1.0 and write changelog adrianbonpin 2026-05-16 17:40:42 +08:00
  • 8e88d6f759 test: add auto-pin threshold edge case tests adrianbonpin 2026-05-16 17:37:51 +08:00
  • 1b7600a2f6 feat: support removing screenshots during entry edit adrianbonpin 2026-05-16 17:36:06 +08:00
  • 99b89347d0 feat: show existing screenshots when editing entries with remove support adrianbonpin 2026-05-16 17:33:36 +08:00
  • 29a8ec667f fix: prevent text selection and touch interference on drag handles adrianbonpin 2026-05-16 17:31:30 +08:00
  • fb892265c4 fix: scope games listing performance tags to handheld devices adrianbonpin 2026-05-16 17:29:47 +08:00
  • 4465eb3a87 fix: scope performance tags (Raw Performer/Poor Performance) to handheld devices only adrianbonpin 2026-05-16 17:27:24 +08:00
  • aef9802263 feat: add Steam sale section to landing page adrianbonpin 2026-05-16 17:24:43 +08:00
  • 719e3f1c4a feat: add /api/dashboard/on-sale endpoint for Steam sale games adrianbonpin 2026-05-16 17:22:08 +08:00
  • d71cb27f54 feat: make public dashboard full-width matching game details styling adrianbonpin 2026-05-16 17:20:38 +08:00
  • 5fe527552b feat: add ban reason, expiry, and filter tabs to user management adrianbonpin 2026-05-16 17:18:57 +08:00
  • 9e98af1053 feat: add analytics page with time-series charts to manage panel adrianbonpin 2026-05-16 17:16:51 +08:00
  • 0450946107 feat: add admin analytics API endpoint with time-series data adrianbonpin 2026-05-16 17:14:53 +08:00
  • e089fb2cf7 feat: add server-side role guard to manage layout (moderator+) adrianbonpin 2026-05-16 17:13:03 +08:00
  • 4ec97a92ab feat: conditionally hide admin-only nav items for moderator role adrianbonpin 2026-05-16 17:11:35 +08:00
  • 92d16273d7 feat: gate destructive moderation endpoints to moderator+ role adrianbonpin 2026-05-16 17:09:07 +08:00
  • 23bbfc0317 feat: register moderator role in auth config and add guard adrianbonpin 2026-05-16 17:06:24 +08:00
  • 0f018b376e feat: add moderator role to permissions model adrianbonpin 2026-05-16 17:04:27 +08:00
  • 64b026386d feat: add 5-min in-memory cache to dashboard stats endpoint adrianbonpin 2026-05-16 17:02:48 +08:00
  • e7a48d4e6f feat: add performance and moderation index migration adrianbonpin 2026-05-16 17:00:41 +08:00
  • 3388bf42b5 feat: add database indexes for frequent query patterns adrianbonpin 2026-05-16 16:57:23 +08:00
  • 6737761151 docs: add OpenAPI descriptions and response schemas for all routes adrianbonpin 2026-05-16 16:03:52 +08:00
  • c22c1842d0 feat: add GET /api/mobile/benchmark/:entryId and GET /api/mobile/dashboard adrianbonpin 2026-05-16 16:00:10 +08:00
  • fda5c4d60e feat: add GET /api/mobile/search endpoint (DB-only, performance tags) adrianbonpin 2026-05-16 15:57:28 +08:00
  • 33f5aa8ec6 feat: add GET /api/mobile/game/:gameId consolidated endpoint adrianbonpin 2026-05-16 15:55:22 +08:00
  • 1ad216b9ff fix(api): fix Response.clone body consumed error on /api/openapi adrianbonpin 2026-05-16 05:33:20 +08:00
  • c17ce403dd docs: mark all plan tasks as complete in implementation plan adrianbonpin 2026-05-15 01:39:45 +08:00
  • 58c2e81366 docs: update changelog and update news with landing page section changes and performance badges adrianbonpin 2026-05-15 01:37:57 +08:00
  • 4ace385a6e feat(landing): add recently added benchmarks section, reorder sections, add PlayabilityBadge and performance tags to cards adrianbonpin 2026-05-15 01:37:06 +08:00
  • 1e546ca007 feat(api): add /recent-benchmarks endpoint and avg_fps to most-tested adrianbonpin 2026-05-15 01:35:06 +08:00
  • 45d4570665 chore: bump version to 2026.0.101, update changelog and update news adrianbonpin 2026-05-15 01:07:42 +08:00
  • 23700b00ae feat(landing): trending, new releases, most tested/reported sections with peek hero layout adrianbonpin 2026-05-15 01:05:55 +08:00
  • dbb0caa7e7 feat(steamdb): integrate version auto-fetch into submit wizard UI adrianbonpin 2026-05-15 01:02:13 +08:00
  • 1ba6335ea1 feat(steamdb): register steamdb-version route in app.ts read group adrianbonpin 2026-05-15 00:57:10 +08:00
  • 9f8a92206c feat(steamdb): export steamdbVersionRoutes from barrel index adrianbonpin 2026-05-15 00:56:19 +08:00
  • 5404d52bfe feat(steamdb): create API endpoint GET /api/games/:gameId/steamdb-version adrianbonpin 2026-05-15 00:55:30 +08:00
  • 3eb4a49151 feat(steamdb): add unit tests for SteamDB HTML parser (5 tests) adrianbonpin 2026-05-15 00:54:28 +08:00
  • cdc4ed7889 feat(steamdb): create HTML scraper to extract version and build ID from SteamDB adrianbonpin 2026-05-15 00:53:03 +08:00
  • 7e6bab9bad feat(steamdb): create in-memory cache module with 6h TTL and cooldown tracking adrianbonpin 2026-05-15 00:52:02 +08:00
  • 75c38341c4 feat(security): add submission validation hardening (cooldown, FPS bounds, settings limits, notes cap) adrianbonpin 2026-05-15 00:50:23 +08:00
  • d0b69892ea feat(security): add input sanitization to strip script tags and javascript: URLs from comments adrianbonpin 2026-05-15 00:48:27 +08:00
  • 470e374656 feat(security): add comment anti-spam (content length cap, duplicate detection, hourly limit) adrianbonpin 2026-05-15 00:47:33 +08:00
  • b895e8714d feat(security): apply tiered rate limits with scoped .group() blocks in app.ts adrianbonpin 2026-05-15 00:45:12 +08:00
  • e908880834 feat(security): extend rateLimit to support named categories with 5 tiers adrianbonpin 2026-05-15 00:39:35 +08:00
  • 0cda534825 docs: implementation plan for landing page, SteamDB, security, and changelog adrianbonpin 2026-05-14 23:55:21 +08:00
  • b2139fd444 docs: architectural spec for landing page, SteamDB integration, API security, and changelog adrianbonpin 2026-05-14 23:08:43 +08:00
  • fbfc43832e feat: add OpenAPI support and in-process cron scheduler adrianbonpin 2026-05-14 21:43:33 +08:00
  • 20f010cef1 feat: Update to nextjs 16.2.4 adrianbonpin 2026-05-11 13:10:26 +08:00
  • f11c8343d4 refactor: overhaul settings editor, review step, and preset detail modal adrianbonpin 2026-05-10 16:38:27 +08:00
  • 9b1e428bc7 feat: YouTube preview in review step, phase-aware submit button (Task 7) adrianbonpin 2026-05-10 15:37:42 +08:00
  • 9dc7013fbf feat: atomic FormData submit, back button on review, submit phase state (Task 6) adrianbonpin 2026-05-10 15:36:05 +08:00
  • 6f64f1d89a feat: convert PATCH /:id/edit to multipart with atomic screenshot replacement (Task 5) adrianbonpin 2026-05-10 15:32:09 +08:00
  • 285213acdc feat: convert POST /submit to multipart with atomic screenshot processing and R2 cleanup (Task 4) adrianbonpin 2026-05-10 15:27:35 +08:00
  • 3e50b0f6bb refactor: rename Community Presets to Performance Entries in game page UI (Task 3) adrianbonpin 2026-05-10 15:21:51 +08:00
  • 6211683c70 feat: refactor preset modal — tabbed layout, metadata groups, screenshot lightbox, remove v prefix (Task 2.1) adrianbonpin 2026-05-10 15:20:14 +08:00
  • 303971424d feat: create ScreenshotLightbox component with zoom/pan and navigation (Task 1.1) adrianbonpin 2026-05-10 15:11:33 +08:00
  • 3e94033c83 chore: bump version to 2026.0.100, write CHANGELOG and update news (Tasks 7.1-7.3) adrianbonpin 2026-05-10 05:24:51 +08:00
  • 1145ba6f51 feat: add version, anti-cheat, and verified date to preset detail modal (Tasks 6.1-6.7) adrianbonpin 2026-05-10 05:22:53 +08:00
  • 5875595219 feat: enrich game cards with bestFps, raw/poor performer badges, and battery estimates (Tasks 5.1-5.6) adrianbonpin 2026-05-10 05:17:55 +08:00
  • c704f35f51 feat: add computed battery estimate to ReviewStep via hardware wattHours + tdpWatts (Tasks 4.1-4.3) adrianbonpin 2026-05-10 05:11:46 +08:00
  • 6d906f0bbf feat: remove estimatedBatteryMin references from 11 files (Tasks 3.1-3.14) adrianbonpin 2026-05-10 05:07:25 +08:00
  • aa4509ede8 feat: wire screenshot upload into wizard inline submit flow, remove post-submit interstitial (Tasks 2.2-2.4) adrianbonpin 2026-05-10 04:59:48 +08:00
  • 7560cca4e6 feat: add screenshot upload UI to ReviewStep (Task 2.1) adrianbonpin 2026-05-10 04:57:02 +08:00
  • 3a9ac815e5 feat: drop estimated_battery_min column — Phase 1 migration (Tasks 1.1-1.3) adrianbonpin 2026-05-10 04:52:44 +08:00
  • bcf2d540b8 chore: format components, switch to CDN hostname, and improve error handling in game stats adrianbonpin 2026-05-10 04:15:38 +08:00
  • f02408c0c7 fix(lint): resolve react-hooks/set-state-in-effect in storage and suggestions clients adrianbonpin 2026-05-10 02:02:01 +08:00
  • c9adf80d88 refactor(manage): use shared ConfirmDialog in benchmarks page adrianbonpin 2026-05-10 01:55:37 +08:00