chahinebrini 2e6785e5a3 merge: integrate upgrade/sdk-54 into main
Reconciles 20 sdk-54 commits with 10 main commits.

Mobile (Expo):
- KeyboardAwareSheet migrations + Snake/Tetris UI + Lyra-feedback game-over flow
- Dark Theme system (Wave 1 + Wave 2 — global color-tokens)
- Profile Avatar + Nickname edit-flow
- Sound system for games (useSnakeSounds)
- Best-score persistence + share-to-community

Admin (Nuxt):
- Phase 2 backend (Users + Moderation endpoints + 2 schema migrations)
- Phase 2 frontend (Domains/Stats/Users/Moderation pages, responsive layout)
- Lyra-Posts feature migration from legacy nuxt-rebreak

Backend (kept main's versions for stability):
- IMAP IDLE-daemon: GMX silent-drop fix (10min renew, 2min NOOP heartbeat)
- mail/status: connect-error tracking + heartbeat fields
- coach/speak: explicit voice-quota helper imports
- prisma: preserved gameName field (production DB column exists)

Conflict resolutions:
- apps/admin/pages/index.vue: theirs (sdk-54 adds Lyra-Posts quick-link)
- apps/rebreak-native/app/lyra.tsx: theirs (Dark-Theme color binding)
- locales/de.json + en.json: theirs (game-rating + share strings)
- GameOverScreen.tsx: theirs (full new feature, 505 vs 256 lines)
- UrgeGames.tsx: theirs (consistent with new GameOverScreen props)
- backend/imap-idle/index.mjs: ours (preserves GMX-fix + heartbeat)
- backend/prisma/schema.prisma: ours (preserves gameName field on prod DB)
- backend/server/api/coach/speak.post.ts: ours (explicit imports fix)
- backend/server/api/mail/status.get.ts: ours (cleaner without type-cast)
- apps/admin/start-admin-staging.sh: ours (preserves PORT-3017 override fix)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 02:24:32 +02:00
Description
Self-hosted mirror of rebreak monorepo
36 MiB
Languages
TypeScript 68%
Vue 7.9%
Swift 7.7%
Shell 4.2%
JavaScript 3.1%
Other 8.9%