Плеер искал now-playing по числовому id станции, а у локальных станций (DFM)
id не совпадает с каталожным → API-путь с обложкой не срабатывал, плеер падал
на ICY из потока (без обложки). Теперь getNowPlaying матчит по id, затем по
имени станции (как карточки). DFM-обложки появляются и в плеере.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Раньше now-track (трек/исполнитель + обложка) показывался ТОЛЬКО при наличии
обложки трека — поэтому DFM-станции без обогащённой обложки оставались пустой
плиткой. Теперь: если трек известен — всегда показываем подпись, а фоном берём
обложку трека → лого станции → плитку. DFM работает как Record.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Подтягиваем обогащённые данные с бэкенда (Discogs): genre/styles/label/year
в чартах и детальной странице.
- ChartEntry/TrackStats + DTO: добавлены genre/styles/label/year
- RadiolaApi: getCharts(?genre=), новый getGenres()
- ChartsViewModel: состояние выбранного жанра + список жанров, перезагрузка
- ChartsScreen: ряд чипов-фильтров по жанру (Все + жанры),
жанр/стили чипами и «Лейбл · Год» на детальной
- убран демо-fallback (SAMPLE_CHARTS) — бэкенд живой
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Для станций без своей обложки (и для Radio Record — единый стиль) карточка
показывает обложку играющего трека с тёмным градиентом и подписью трек/исполнитель.
Источник — /now-playing (теперь с name станции), матч по имени, обновление 20с.
Приоритет: трек -> логотип станции -> фирменная плитка.
- сети, отличные от Radio Record (DFM, HitFM и др.), больше не получают
обложки Radio Record (обогащение Record API гейтится по source=record)
- станции без обложки рисуют свою фирменную плитку: цвет по названию + инициалы
(вместо общего значка/чужой обложки)
- таб-бар только иконки (6 разделов не помещались с подписями)
- «Откройте радио» -> «Выберите радиостанцию»
- кнопки плеера (лайк/prev/next/запись) единого размера 24/48, ряд SpaceBetween
(кнопка записи больше не обрезается и не выбивается размером)
- текст песни: Musixmatch резал соединение -> веб-поиск трека (открывается)
- Coil crossfade для всех обложек (Images.crossfadeModel) — без «моргания» при загрузке
- basicMarquee для длинных названий трека (плеер и мини-плеер) вместо обрезки
- haptic feedback на play/pause и добавление в избранное (плеер, мини-плеер, карточка)
- навбар и мини-плеер: navigationBarsPadding — не налезают на системные кнопки
- плеер: navigationBarsPadding снизу, ряд сервисов не уходит под системную панель
- подписи сервисов без обрезки слов (Яндекс / ВК Музыка / YT Music и т.д.)
- фикс NPE при холодном старте: навбар обращается к NavDestinations напрямую,
не к companion-списку (порядок инициализации Kotlin)
- StationsScreen: закреплённые заголовок/поиск/жанры, одна прокручиваемая
сетка станций; поиск и фильтры больше не исчезают при пустом результате
(+ кнопка «Сбросить фильтры»)
- таб-бар показывается без обязательного входа (скрыт только на экране входа)
- старт сразу со «Станций» — авторизация необязательна, вход из Настроек