nk
d0e5f4e8c5
feat(charts): раздел «Чарты» (клиент) + детальная страница трека с графиком
...
- вкладка «Чарты» в навигации; экран: периоды (День/Неделя/Месяц/Всё),
ранжированный список треков (ранг, обложка, проигрывания, тренд)
- детальная карточка трека: метрики, график популярности (Canvas), лайк,
кнопки музыкальных сервисов, кнопка «Текст песни» (ссылка на лицензированный
Musixmatch — полный текст не встраиваем, авторское право)
- ChartsRepository/LyricsRepository + эндпоинты charts/* в RadiolaApi (DTO)
- превью-данные пока бэкенд не отдаёт charts (помечено TODO)
2026-06-02 23:24:42 +03:00
nk
a4af72a6e6
polish(ui): плавные обложки, бегущая строка длинных названий, тактильный отклик
...
- Coil crossfade для всех обложек (Images.crossfadeModel) — без «моргания» при загрузке
- basicMarquee для длинных названий трека (плеер и мини-плеер) вместо обрезки
- haptic feedback на play/pause и добавление в избранное (плеер, мини-плеер, карточка)
2026-06-02 22:55:18 +03:00
nk
310d6c3177
fix(player): отображение трека и обложки — объединение REST и socket now-playing
...
REST-поллинг (refreshNowPlaying -> api.getNowPlaying, 200 OK) писал данные в
_nowPlaying, который нигде не читался; getNowPlaying() брал только сокет (пустой).
Теперь getNowPlaying/getAllNowPlaying объединяют оба источника (socket ?: REST),
поэтому название трека, обложка и deep-link сервисов работают.
2026-06-02 22:55:18 +03:00
nk
cefd0be009
fix(ui): отступы под системную навигацию + подписи сервисов + краш навбара
...
- навбар и мини-плеер: navigationBarsPadding — не налезают на системные кнопки
- плеер: navigationBarsPadding снизу, ряд сервисов не уходит под системную панель
- подписи сервисов без обрезки слов (Яндекс / ВК Музыка / YT Music и т.д.)
- фикс NPE при холодном старте: навбар обращается к NavDestinations напрямую,
не к companion-списку (порядок инициализации Kotlin)
2026-06-02 22:55:17 +03:00
nk
af13272852
fix(ui): единый скролл на экране станций + всегда видимый навбар
...
- StationsScreen: закреплённые заголовок/поиск/жанры, одна прокручиваемая
сетка станций; поиск и фильтры больше не исчезают при пустом результате
(+ кнопка «Сбросить фильтры»)
- таб-бар показывается без обязательного входа (скрыт только на экране входа)
- старт сразу со «Станций» — авторизация необязательна, вход из Настроек
2026-06-02 22:55:17 +03:00
nk
220d1d6fa1
feat(ui): мягкие переходы между экранами (fade + лёгкий slide)
2026-06-02 22:55:17 +03:00
nk
f604ad42e8
feat(ui): рестайл всех экранов + плеер + официальные mono-логотипы сервисов
...
- экраны (Станции/Избранное/История/Записи/Настройки/Вход): двухцветные
заголовки, токены темы, EmptyState, анимации появления и перестановки
- AuthScreen: брендовый локап (AppMark + RadiolaWordmark)
- PlayerBottomSheet: живой эфир — LiveEqualizer вместо перемотки,
Crossfade трека и play/pause, pressScale, анимация избранного/записи
- кнопки музыкальных сервисов: монохромные официальные логотипы
(vector drawable из Simple Icons CC0 + Yandex), маппинг serviceLogoRes
- DeeplinkBottomSheet: сетка сервисов с логотипами
2026-06-02 22:55:17 +03:00
nk
d652dc399a
feat(ui): рестайл общих компонентов под дизайн-систему
...
- StationCard: обложка/иконка-заглушка, анимированное сердечко, pressScale
- MiniPlayer: elevated-бар, метка «СЕЙЧАС ИГРАЕТ», Crossfade play/pause
- SearchBar: surface-поле, акцентный курсор, скругление 14
- FilterChips: акцентный активный чип с анимацией цвета
- EmptyState: иконка-плашка + текст
- TrackListItem: thumb-заглушка, pressScale
2026-06-02 22:55:17 +03:00
nk
ae406554de
feat(ui): дизайн-система radiOLA — палитра, тема, типографика, бренд, motion, pill таб-бар
...
- цветовые токены тёмно-зелёной темы + RadiolaColors (CompositionLocal)
- darkColorScheme + всегда тёмная тема, фирменные shapes
- типографика с весами/размерами под макет
- Brand: AppMark (градиентный R), RadiolaWordmark, MonoMark
- Motion: спеки движения, pressScale, живой эквалайзер
- pill-таб-бар с анимированной активной вкладкой
2026-06-02 22:55:17 +03:00
nk
2f686bcc57
chore: add .gitignore and remove build artifacts from index
2026-06-02 22:50:00 +03:00
nk
bcb999ace9
feat: WebSocket now-playing via Socket.IO from backend
2026-06-02 19:52:15 +03:00
nk
a83672b455
feat: auth screen with auto-redirect, sync favorites/history with backend
2026-06-02 19:12:07 +03:00
nk
d4adb1e7be
fix: add launcher icons and update manifest references
2026-06-01 13:35:28 +03:00
nk
bc94577276
chore: add Gradle wrapper 8.7
2026-06-01 13:26:38 +03:00
nk
59f62a22b2
test: add unit tests for use cases and ViewModel, add Compose UI test
2026-06-01 13:23:11 +03:00
nk
af8fb333d9
feat(widget): add 4x1 AppWidgetProvider with play/pause and track info
2026-06-01 13:21:37 +03:00
nk
9ce9758361
feat(player): wire StationsScreen and FavoritesScreen to actual playback
2026-06-01 13:19:23 +03:00
nk
ada422053f
feat(deeplink): add DeeplinkNavigator, DeeplinkBottomSheet and integrate into History and Player
2026-06-01 13:15:31 +03:00
nk
aa287f7588
feat(ui): integrate MiniPlayer into Scaffold with real player state
2026-06-01 13:12:51 +03:00
nk
9e3ce0f1e4
feat(ui): wire all screens into NavHost with BottomSheet player
2026-06-01 13:07:11 +03:00
nk
15e15c6664
feat(ui): add SettingsScreen and SettingsViewModel
2026-06-01 13:06:08 +03:00
nk
d3cec3bba2
feat(ui): add HistoryScreen and HistoryViewModel
2026-06-01 13:04:35 +03:00
nk
b2af81c070
feat(ui): add FavoritesScreen and FavoritesViewModel
2026-06-01 13:03:24 +03:00
nk
ee91837910
feat(ui): add PlayerBottomSheet and PlayerViewModel
2026-06-01 13:02:16 +03:00
nk
1c902b5607
feat(ui): add StationsScreen and StationsViewModel
2026-06-01 13:00:12 +03:00
nk
116ab95abd
feat(ui): add shared components (StationCard, TrackListItem, SearchBar, FilterChips, MiniPlayer, EmptyState)
2026-06-01 12:58:25 +03:00
nk
28309c201e
chore: add Lucide icons dependency and replace Material Icons in navigation
2026-06-01 12:54:36 +03:00
nk
c46a865742
feat(ui): add bottom navigation with 4 tabs
2026-06-01 12:23:27 +03:00
nk
cf79af5273
feat(service): add ExoPlayer controller and MediaSessionService
2026-06-01 12:21:22 +03:00
nk
9d68459df6
feat(di): add Hilt AppModule with Retrofit, Room and repository bindings
2026-06-01 12:19:33 +03:00
nk
e255b0458d
feat(data): add repository implementations
2026-06-01 12:18:10 +03:00
nk
110fe0795e
feat(data): add Room entities, DAOs and AppDatabase
2026-06-01 12:12:55 +03:00
nk
62674fcc3f
feat(data): add Retrofit API, DTOs and mappers
2026-06-01 12:11:15 +03:00
nk
828cdf9a50
feat(domain): add core use cases
2026-06-01 12:08:49 +03:00
nk
aad1361043
feat(domain): add repository interfaces
2026-06-01 12:07:29 +03:00
nk
d345cd40b8
feat(domain): add Station, Track, PlayerState, DeeplinkService models
2026-06-01 12:05:13 +03:00
nk
7b1aa0c073
feat: add Application, MainActivity and Material3 theme
2026-06-01 12:02:35 +03:00
nk
8f26bf16d3
chore: add app module build config and manifest
2026-06-01 11:57:59 +03:00
nk
082e895f6a
chore: bootstrap root Gradle with version catalog
2026-06-01 11:54:39 +03:00
nk
4700335f11
Add radiOLA design spec
2026-06-01 11:14:38 +03:00