3c89c442bc
Step 7: ChessViewModelNew.kt - Slim Android ViewModel (~130 lines) - Delegates all business logic to ChessLobbyLogic - Exposes StateFlows from logic.state - Platform adapter creation only Step 8: DesktopChessViewModelNew.kt - Slim Desktop ViewModel (~120 lines) - Same pattern as Android, delegates to ChessLobbyLogic - UserMetadataCache for profile display - External CoroutineScope injection Step 9: ChessBroadcastBanner.kt - Shared Compose banner in commons - Uses ChessBroadcastStatus from ChessLobbyState - Works on both Android and Desktop via Compose Multiplatform - Shows broadcasting progress, sync status, errors Step 10: UI consumers ready for migration - New ViewModels use ChessChallenge (enriched display data) - Shared banner ready to replace Android-only ChessStatusBanner - Existing screens continue to work with old ViewModel Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>