3ce30bf19c
Subscribes to EventsStream and maps like-family events to LikesRepository.refreshIds(). Cross-device likes (web flips a heart, phone reflects it) now propagate without a manual refresh. ProcessLifecycleOwner foreground hook re-runs the same refresh as defensive cold-start cleanup — matches Flutter's resume-handler. Screen-scoped events (playlist.deleted for a specific id, single- request status_changed) intentionally NOT in the dispatcher; those ride EventsStream.events directly from per-screen ViewModels in the next commit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>