f91257a79e
Three new tables (general_likes, general_likes_albums, general_likes_artists), seven native /api/likes/* endpoints, four Subsonic handlers (star/unstar/getStarred/getStarred2), and web UI heart buttons on TrackRow/AlbumCard/ArtistRow/PlayerBar plus a new /library/liked page. Closes M2 (with the events foundation already in main). Liked state is computed client-side via O(1) Set lookups against a single createLikedIdsQuery cache; server stays simple per request (no joins added to entity reads). Optimistic updates with rollback.