Promote emulator maintenance and issue fixes to production
Promotes the emulator maintenance and compatibility-report fixes reviewed on staging: 80 transparent 500×500 WebP icons, Nintendo Switch 2 mappings, direct JSON editing of fields/attributes/categories, report history, preferences, permissions, pagination, keyboard access and notification-email output encoding. New icons use attributed project artwork or the documented local NX category wordmark.
Preserves production's dependency lockfile, database schema/migrations, account-deletion lifecycle, Clerk webhook handling, Prisma connection reuse and release guards. All 17 protected paths match production commit 085d9136. Catalog fixtures are synchronized for fresh creation; deployment does not run seeds or overwrite existing catalog associations.
Validation:
- Staging 9b52befe is deployed and healthy: successful release run, 3,908 unit tests and 302 browser tests passed.
- Production candidate 0450fc88: CI passed, including 3,975 unit tests, 10 database tests, 302 browser tests, the locked Next.js 16.3.6 build/lint/types, 9 container checks and 24 release-safety checks. Both browser runs had two existing skips and zero retries.
- Live staging checks passed for 14 API boundary cases, IGDB Switch 2/RAWG title search, six WebP/legacy-PNG asset routes, and JSON validation/category editing. The saved 30-field configuration remains unchanged after the draft checks and reload.
All 32 production review threads are resolved. The latest source PRs were reviewed by Cubic; the final production merge commit was excluded from fresh Cubic analysis, and CodeRabbit skips this base branch. The production integration also received an independent review and account-lifecycle composition tests.
Production remains unmerged and undeployed. TheGamesDB credentials were not changed; its Switch 2 platform ID 5021 is independently confirmed by the public catalog. RAWG remains a title search without an invented Switch 2 platform mapping.
Refs #442; validation cleanup is merged through #566, #573 and #579.