История версийRelease history
Все заметные изменения. Версионирование — SemVer.All notable changes. Versioning follows SemVer.
1.7.0
Текущая 2026-09-06Умное выравнивание громкости с компрессором и лимитером, персональное радио с гибкой настройкой атмосферы, настоящий накладывающийся кроссфейд на iOS, автоматическая мобильная авторизация без ручного копирования токенов и кнопка «Лайк» прямо на экране блокировки и в шторке уведомлений.Smart audio leveling with an adaptive compressor and limiter, personal radio with fine-tuned vibe controls, true overlapping crossfade on iOS, automatic mobile in-app authorization without manual token copying, and a Like button right on the lock screen and notification shade.
🎚️ Умное выравнивание громкости (Audio Leveler)Smart audio leveler
- Многоступенчатая динамическая обработка. Для треков без готовых метаданных (R128 / ReplayGain) или с резкими перепадами динамики добавлено адаптивное выравнивание: мягкий компрессор подтягивает тихие фрагменты, автоматический контроль гейна (AGC) выравнивает средний уровень, а пиковый лимитер полностью исключает клиппинг и искажения. Включается в Настройки → Звук.Multi-stage dynamic processing. For tracks without embedded metadata (R128 / ReplayGain) or with sharp dynamic shifts, intelligent adaptive leveling has been added: a soft compressor brings up quiet passages, AGC normalizes average loudness, and a peak limiter completely eliminates clipping and distortion. Toggle it in Settings → Sound.
- На десктопе и Android обработка работает в реальном времени через Web Audio API для всех источников: локальных файлов, SoundCloud и стримов Яндекс Музыки.On desktop and Android processing runs in real time via the Web Audio API for all sources: local files, SoundCloud, and Yandex Music streams.
- На iOS процессинг встроен напрямую в нативный аудио-тап (
MTAudioProcessingTapCoreAudio) на C/Swift: нулевые задержки, минимальная нагрузка на процессор и кристальное звучание.On iOS processing is embedded directly into the native CoreAudio tap (MTAudioProcessingTap) in C/Swift: zero latency, minimal CPU overhead, and pristine sound.
📻 Персональное радио и исправление автопилотаPersonal radio & autopilot fixes
- Окно настройки персонального радио в «Любимом». В шапке вкладки любимых треков появилась кнопка запуска персонального радио с модальным диалогом настройки по трём осям: «Настроение» (грустное ↔ бодрое), «Энергия» (спокойная ↔ мощная) и «Разнообразие» (только знакомые хиты ↔ неожиданные находки).Personal radio setup modal in Favorites. The favorites header now features a personal radio launch button with a 3-axis tuning modal: Mood (melancholic ↔ cheerful), Energy (chill ↔ powerful), and Diversity (familiar favorites ↔ fresh discoveries).
- Переработан алгоритм рекомендаций. Движок подбора треков анализирует кластеры вашей фонотеки, формируя сбалансированный бесконечный поток.Overhauled recommendation algorithm. The recommendation engine clusters your library genres and artists to build a coherent, non-stop flow.
- Исправлено зацикливание радио SoundCloud. Устранена проблема, когда при повторном запуске станции по треку плеер бесконечно крутил один и тот же закешированный список. Теперь список рекомендаций перемешивается и обновляется.Fixed SoundCloud radio looping. Fixed an issue where restarting a station seeded by a track would loop through the same stale cached list. Station recommendations are now properly shuffled and refreshed.
📝 Умный поиск текстов и ручной вводSmart lyrics & manual search
- Очистка названий от технического мусора. Автоматическое удаление скобок
[Remastered],[Deluxe Edition], метокfeat. / ft.и версий перед поиском в LRCLIB и Genius. Точность автопоиска слов заметно выросла.Title sanitization. Automatically strips brackets like[Remastered],[Deluxe Edition],feat. / ft.markers, and version tags before querying LRCLIB and Genius, boosting auto-match accuracy. - Окно ручного поиска слов прямо из плеера. Для редких песен или нестандартных названий в полноэкранном караоке доступен ручной поиск: введите любое название и артиста, выберите подходящий текст из списка и привяжите его в один клик.Manual lyrics search right from the player. For rare tracks or non-standard titles, fullscreen karaoke now offers manual search: type any title and artist, inspect results, and bind lyrics with a single click.
🔀 Настоящий кроссфейд на iOSTrue overlapping crossfade on iOS
- Плавное наложение двух треков. На iOS реализован настоящий кроссфейд с параллельным воспроизведением: завершающийся трек плавно затухает, а следующий нарастает (0–12 с в настройках).Seamless track overlap. iOS now features true dual-stream crossfading: the outgoing track smoothly fades out while the incoming track fades in (0–12 s configurable in settings).
- Двухпоточный аудиомост. Нативный мост
NativeAudioBridgeодновременно управляет двумя инстансамиAVPlayerбез задержек и щелчков.Dual-engine audio bridge.NativeAudioBridgecoordinates two independentAVPlayerinstances with zero clicks or interruptions.
🔑 Автоматическая авторизация на смартфонахAutomated mobile login
- Вход без ручного ввода токенов. Больше не нужно копировать токены и куки через инспекторы и отладчики.No manual token copying. No need to inspect WebViews or copy session tokens manually.
- Нативные диалоги на iOS и Android. Приложение открывает официальную страницу входа сервиса (SoundCloud или Яндекс Музыка), автоматически перехватывает токен/cookie после успешного логина, проверяет его валидность и сохраняет сессию.Native auth dialogs on iOS & Android. An in-app browser sheet opens the official login page (SoundCloud or Yandex Music), captures OAuth tokens/session cookies upon login, validates credentials, and activates the account.
🖼️ Обложки высокого разрешения (HD)High-resolution artwork
- Чёткие обложки на любых экранах. Обложки запрашиваются в максимальном качестве (1000x1000 для Яндекс Музыки, 500x500 для SoundCloud). В полноэкранном плеере и на Retina/OLED дисплеях арты выглядят кристально чётко.Crisp cover art on all displays. Artwork is fetched at maximum resolution (1000x1000 for Yandex Music, 500x500 for SoundCloud), rendering sharp on Retina and OLED screens.
❤️ Кнопка «Лайк» на экране блокировки и в шторкеLock screen & notification Like button
- iOS: нативная поддержка команды
likeCommandчерезMPRemoteCommandCenter— ставьте лайк треку прямо с экрана блокировки или из Центра управления.iOS: nativelikeCommandviaMPRemoteCommandCenterallows liking tracks right from the lock screen or Control Center. - Android: кастомное действие в системном медиа-уведомлении с векторной иконкой сердечка, отображающей статус трека в медиатеке.Android: custom action in the notification shade with a heart icon reflecting library status in real time.
1.6.3
2026-08-22Эквалайзер на Android дошёл до Яндекс Музыки, а «Скачанное» перестало убивать приложение. Обе истории — про то, как браузерная часть плеера разговаривает с телефоном: файл целиком через мост её убивал, а кросс-доменный стрим не пускали к обработке звука.On Android the equalizer finally reached Yandex Music, and Downloads stopped killing the app. Both stories are about how the player's browser half talks to the phone: a whole file passed across the bridge killed it, and a cross-origin stream was never let near the audio processing.
🎛️ Эквалайзер для Яндекс Музыки на AndroidThe equalizer for Yandex Music on Android
- Стрим ЯМ теперь обрабатывается как все. В 1.6.2 он остался единственным источником без эквалайзера на Android: хранилище Яндекса не разрешает браузеру читать свои данные, а кросс-доменный поток в обработке звука даёт тишину, а не ошибку. Теперь для него работают и эквалайзер, и выравнивание громкости, и настоящий визуализатор — по реальным сэмплам.The Yandex stream is now processed like everything else. In 1.6.2 it stayed the one source on Android without an equalizer: Yandex's storage won't let the browser read its data, and a cross-origin stream inside the audio graph yields silence, not an error. It now gets the equalizer, volume leveling and a real visualizer driven by actual samples.
- Как это сделано. MP3 докачивается кусками по 256 КБ нативными запросами, которым запрет браузера не указ, и складывается в
MediaSource— источник, который для страницы «свой», ровно так эквалайзер уже получал HLS SoundCloud. Перемотка считает «время → байт» по средней скорости потока и попадает на границу кадра, буфер держит 30 секунд вперёд и выбрасывает прослушанное, чтобы не расти.How it's done. The MP3 is pulled in 256 KB pieces by native requests, which the browser's ban doesn't reach, and fed into aMediaSource— a source the page treats as its own, exactly how SoundCloud HLS already got the equalizer. Seeking maps time to a byte by average bitrate and lands on a frame boundary; the feed keeps 30 seconds buffered ahead and drops what's already played so it doesn't grow. - Ничего не ломается, если не получилось. Сервер не умеет отдавать куски, нет длительности в метаданных, первая порция не похожа на MP3 — трек играет как раньше, прямым адресом и без эквалайзера, вместо того чтобы замолчать.Nothing breaks when it doesn't work out. A server that won't serve ranges, a missing metadata duration, a first chunk that isn't MP3 — the track plays as before, straight from its URL and without the equalizer, instead of going quiet.
- iOS не изменился — там фильтр и так стоит внутри нативного аудио-тракта и работает для всего, что играет.iOS is unchanged — there the filter already sits inside the native audio path and covers everything that plays.
🐛 ИсправленияFixes
- Скачанные треки на Android не играли, а «Скачанное» роняло приложение насмерть. Открытие трека закрывало приложение, трек оставался в очереди — и приложение падало при каждом следующем запуске, лечилось только очисткой данных или переустановкой. На iOS такого не было. Причина: чтение файла целиком отдаёт его одной огромной строкой, которую Android по пути копирует несколько раз — для MP3 это десятки мегабайт, и браузерная часть не бросает ошибку, а просто умирает. Теперь локальное медиа играется через собственный локальный сервер: по мосту не идёт ничего, и эквалайзер для скачанного тоже работает.Downloaded tracks wouldn't play on Android, and Downloads took the app down for good. Opening a track closed the app, the track stayed in the queue — and the app then crashed on every launch, fixable only by clearing app data or reinstalling. iOS never had this. The cause: reading a file whole hands it over as one huge string that Android copies several times on the way — tens of megabytes for an MP3, and the browser half doesn't throw an error, it just dies. Local media now plays through its own local server: nothing crosses the bridge, and the equalizer works for downloads too.
- Предзагрузка соседей по очереди больше не вскрывает файлы «на всякий случай» — во «Скачанном» соседи тоже скачаны, поэтому открытие одного трека разом читало три файла.The queue's neighbour prefetch no longer opens files just in case — in Downloads the neighbours are downloaded too, so opening one track read three files at once.
- Один трек больше не может «закирпичить» установку (и на десктопе тоже): если предыдущий запуск умер на восстановлении очереди, очередь вернётся, а вот сам собой играть этот трек не начнёт.A single track can't brick an install anymore (on desktop as well): if the previous launch died while restoring the queue, the queue comes back but that track won't start playing by itself.
- Импортированные локальные файлы читались тем же смертельным способом и вылечены так же.Imported local files were read the same fatal way and are fixed the same way.
1.6.2
2026-08-19Эквалайзер приехал на телефон — и на Android, и на iOS. Последнее, чего на телефоне не было «по устройству системы». Оказалось, что система тут не мешает: на iOS фильтр встал внутрь того же аудио-тапа, который уже кормит визуализатор, а на Android — в Web Audio-граф, куда стрим просто никогда не пробовали пускать.The equalizer landed on the phone — on Android and on iOS. It was the last thing missing “by how the system works”. Turns out the system doesn't get in the way: on iOS the filter moved inside the very audio tap that already feeds the visualizer, and on Android into the Web Audio graph the stream had simply never been let into.
🎛️ Эквалайзер на телефонеThe equalizer on your phone
- Те же 10 полос, что на десктопе (32 Гц … 16 кГц, ±12 дБ, 7 пресетов) — один и тот же компонент и те же настройки. Открывается из Настройки → Звук → «Эквалайзер» и кнопкой в открытом плеере, в верхнем ряду рядом с выбором фона трека. Лист на весь экран, ползунки вытянуты под палец; закрывается обратно в плеер.The same 10 bands as on desktop (32 Hz … 16 kHz, ±12 dB, 7 presets) — the same component and the same settings. It opens from Settings → Sound → “Equalizer” and from a button in the fullscreen player, in the top row next to the track-background picker. A full-screen sheet with finger-sized sliders; closing it returns you to the player.
- iOS — внутри нативного аудио-тракта. Звук на iOS играет нативный плеер, до которого браузерный Web Audio не достаёт, поэтому фильтрация происходит там же, где снимаются уровни для визуализатора. Работает для всего, что играет — стрим SoundCloud, стрим Яндекс Музыки, скачанные треки, локальные файлы. Математика та же, что у Web Audio: сверено численно по 200 точкам, худшее расхождение 1.3e-7, то есть телефон и десктоп звучат одинаково.iOS — inside the native audio path. On iOS the sound is played by the native player, out of reach of browser Web Audio, so the filtering happens where the visualizer levels are already taken. It works for everything that plays — the SoundCloud stream, the Yandex Music stream, downloads, local files. The math is the same as Web Audio's: checked numerically over 200 points, worst deviation 1.3e-7, so phone and desktop sound alike.
- Логика лок-скрина не тронута. Кнопки перелистывания треков вместо перемотки, метаданные и прогресс остались как были: в нативный мост добавлена ровно одна команда — «вот новая кривая».The lock-screen logic is untouched. Track-skip buttons instead of seeking, metadata and progress stayed as they were: exactly one command was added to the native bridge — “here's the new curve”.
- Android — апгрейд в Web Audio-граф, когда источник это позволяет. Кросс-доменный поток в графе даёт тишину, а не ошибку, поэтому раньше мобильный стрим обходил граф стороной. Теперь право входа проверяется одним запросом на хост: локальные файлы, скачанное и HLS SoundCloud безопасны по построению, а CDN SoundCloud сам разрешает доступ — значит, эквалайзер работает и на онлайн-стриме SC. Хранилище Яндекса доступ не даёт, поэтому его стрим остаётся на прежней схеме, без EQ.Android — an upgrade into the Web Audio graph whenever the source allows it. A cross-origin stream inside the graph yields silence, not an error, which is why the mobile stream used to bypass the graph entirely. Now the right of entry is checked with a single request per host: local files, downloads and SoundCloud HLS are safe by construction, and the SoundCloud CDN grants access itself — so the equalizer works on the online SC stream too. Yandex's storage doesn't grant it, so that stream stays on the old path, without EQ.
- Побочный подарок Android-у: вместе с графом на локальных, скачанных и SoundCloud-треках включились выравнивание громкости и настоящий визуализатор — по реальным сэмплам, а не по синтетике.A side gift for Android: along with the graph, local files, downloads and SoundCloud tracks gained volume leveling and a real visualizer — driven by actual samples instead of a synthetic curve.
🐛 ИсправленияFixes
- Окошко выбора фона трека уезжало за верхний край экрана (телефон) — кнопка в открытом плеере открывала панель вверх, за вырез, и нажать на неё было нельзя. На телефоне ряд кнопок стоит наверху, а панель осталась с десктопной привязкой «вверх от кнопки»; теперь она открывается под ряд во всю ширину экрана и прокручивается, если не влезает.The track-background popover was drawn past the top edge (phone) — the button in the fullscreen player opened the panel upwards, behind the notch, where it couldn't be tapped. On the phone that row of buttons sits at the top while the panel kept the desktop's “upwards from the button” anchor; it now opens below the row across the full width and scrolls if it doesn't fit.
1.6.1
2026-08-19Масштаб интерфейса на телефоне, «Моя волна» с одной кнопкой вместо двух и чёрный прямоугольник под очередью — всё. Первый патч после большого мобильного релиза: багов нашлось ровно на один прямоугольник, остальное — две правки по мелочи.An interface-scale slider on the phone, “My Wave” with one control instead of two, and the black rectangle under the queue — that's all. The first patch after the big mobile release: bugs amounted to exactly one rectangle, the rest are two small changes.
📱 Масштаб интерфейса (телефон)Interface scale (phone)
- Ползунок «Масштаб интерфейса» (Настройки → Оформление), 80–130 % шагом 5. Размер интерфейса на телефоне задаёт плотность экрана, а не его формат: на 720p-панели всё выглядит крупным, а на флагманском 1440p — наоборот мелким. Теперь это лечится ползунком, а не выбором телефона.An “Interface scale” slider (Settings → Appearance), 80–130 % in steps of 5. On a phone the size of the interface is set by screen density, not screen format: a 720p panel renders everything oversized while a 1440p flagship makes it tiny. That's now a slider rather than a choice of phone.
- Масштабируется вся раскладка сразу — вместе с фиксированной обвязкой (капсула плеера, нижние табы, отступы под вырез), потому что под капотом меняется ширина вьюпорта, а не
zoom. Значение применяется до первого кадра, так что при запуске нет вспышки интерфейса в дефолтном размере.The whole layout scales at once — the fixed chrome included (player capsule, bottom tabs, notch insets), because under the hood it's the viewport width that changes, notzoom. The value is applied before the first frame, so there's no flash of the default size at startup.
🎵 «Моя волна»: один контрол вместо двух“My Wave”: one control instead of two
- Логотип волны сам включает волну. Знак Яндекса — это уже треугольник плея в круге, поэтому акцентная кнопка плея на другом конце баннера читалась как вторая кнопка для того же действия; она убрана, а её логика переехала на диск. Остальная часть баннера, как и раньше, открывает страницу «Моей волны».The Wave logo now starts the Wave. The Yandex mark already is a play triangle in a circle, so the accent play button at the other end of the banner read as a second control for the same action; it's gone and its logic moved onto the disc. The rest of the banner still opens the “My Wave” page.
- Работает в обоих визуалах (Default-баннер и Universal-плитка) и на обеих платформах; на тач-экране диск отвечает нажатием, а не залипшим hover.Works in both visuals (the Default banner and the Universal tile) and on both platforms; on a touch screen the disc answers with a press instead of a stuck hover.
🐛 ИсправленияFixes
- Чёрный прямоугольник под очередью в полноэкранном плеере (телефон) — при включённых обоях панель очереди рисовала внутри себя жёсткий тёмный прямоугольник с прямыми углами. Побочно: на панель очереди больше не может попасть
backdrop-filterиз пресетов графики — а он вешал скролл списка.The black rectangle under the fullscreen queue (phone) — with wallpapers on, the queue panel drew a hard-cornered dark rectangle inside itself. Side effect: a graphics preset'sbackdrop-filtercan no longer land on the queue panel — and that one froze list scrolling.
1.6.0
2026-08-17Мобилка стала десктопом, фон кадрируется руками, а лайки переезжают между устройствами файлом: телефон рисует сам десктопный интерфейс (nextgen + Universal) в нативной обвязке, обои — картинку и MP4 — можно двигать и зумить пальцем, а любимые треки выгружаются в JSON и загружаются на другом устройстве вместе с их порядком.Mobile became desktop, backgrounds are framed by hand, and likes travel between devices as a file: the phone renders the desktop interface itself (nextgen + Universal) inside a native shell, wallpapers — image or MP4 — can be panned and zoomed with a finger, and your favourites are exported to JSON and imported on another device with their order intact.
📱 Интерфейс десктопа на телефонеThe desktop UI on your phone
- Те же страницы, что на десктопе — Главная, Поиск, Альбом, Артист, Профиль, Настройки, тексты: телефон монтирует настоящие десктопные компоненты, а не параллельные мобильные копии. Скин nextgen и раскладка Universal приезжают вместе с ними.The same pages as on desktop — Home, Search, Album, Artist, Profile, Settings, lyrics: the phone mounts the real desktop components instead of parallel mobile copies. The nextgen skin and the Universal layout come along with them.
- Нативная обвязка — нижние табы, сайдбар в выдвижном ящике, капсула плеера над табами с тонкой линией прогресса. Тапабельны prev/play/next и сердечко, остальное разворачивает полный плеер.A native shell — bottom tabs, the sidebar in a drawer, the player capsule above the tabs with a thin progress line. Prev/play/next and the heart are tappable; anything else expands the full player.
- Полноэкранный плеер — это плеер, а не караоке: большая обложка, тайтл, волна, транспорт и очередь всегда на экране. Караоке — отдельный режим из левого верхнего угла, уходит в иммерсив (обвязка гаснет через пару секунд покоя, тап возвращает).The fullscreen player is a player, not karaoke: a big cover, the title, the wave, transport and the queue are always on screen. Karaoke is a separate mode from the top-left corner and goes immersive (the chrome fades after a couple of idle seconds, a tap brings it back).
- Планшеты — заглушка: обложки больше не растягиваются на весь экран iPad. Полноценная планшетная раскладка ещё впереди.Tablets — a stopgap: covers no longer stretch across the whole iPad screen. A real tablet layout is still ahead.
🖼 Кадрирование фона (все платформы)Background framing (all platforms)
- Ручное кадрирование обоев (Настройки → Оформление → «Кадрировать») — фон интерфейса можно двигать и зумить, на телефоне пальцем, включая пинч-зум. Перетаскивание точное: один пиксель пальца = один пиксель картинки.Manual wallpaper framing (Settings → Appearance → “Frame”) — the interface background can be panned and zoomed, with a finger on mobile, pinch included. Dragging is exact: one finger pixel = one image pixel.
- MP4 кадрируется так же, как картинка — видео-обои больше не заперты в центральном кропе, а лист кадрирования показывает живое видео, а не стоп-кадр.MP4 frames just like an image — video wallpapers are no longer locked to a centre crop, and the framing sheet shows live video rather than a still.
- Зум масштабирует вокруг точки кадрирования, а не вокруг центра: картинка гарантированно закрывает экран на любом зуме и двигается по обеим осям.Zoom now scales about the framed point instead of the centre: the image is guaranteed to cover the screen at any zoom and pans on both axes.
🔄 Синхронизация лайков между устройствамиLikes sync across devices
- Любимые треки переезжают файлом (Настройки → Синхронизация лайков): выгрузка собирает лайки SoundCloud и Яндекса вместе с их порядком в JSON, загрузка на другом устройстве расставляет их в том же порядке. В обе стороны — десктоп ↔ телефон, без сервера.Favourites travel as a file (Settings → Likes sync): the export collects SoundCloud and Yandex likes along with their order into JSON, and the import on another device restores that exact order. Both directions — desktop ↔ phone, no server involved.
- Ничего не теряется и не дублируется: свои лайки, которых не было в файле, остаются в хвосте, повторы сворачиваются, удалений нет. Локальные файлы не переносятся (путь привязан к машине) и просто считаются «пропущенными».Nothing is lost or duplicated: likes of yours that weren't in the file stay at the tail, repeats collapse, nothing is deleted. Local files aren't transferred (their path is machine-bound) and are simply counted as “skipped”.
- На телефоне файл кладётся в Документы (виден в «Файлах» на iOS и в файловом менеджере на Android), а путь показывается прямо в настройках.On mobile the file lands in Documents (visible in Files on iOS and in any file manager on Android), and the path is shown right in Settings.
📱 Мобильные исправленияMobile fixes
- Страницы больше не заканчиваются под капсулой плеера — нижний бюджет пересчитан и перенесён туда, где WebKit его действительно учитывает; сайдбар и модалки получили то же лечение.Pages no longer end underneath the player capsule — the bottom budget was recomputed and moved where WebKit actually honours it; the sidebar and modals got the same treatment.
- Тач больше не оставляет «залипший» ховер, а свайп по списку не выделяет текст. Очередь в полноэкранном плеере стала листом — со своей поверхностью, скруглением и отступами. Обложка и транспорт подняты на 32 px.Touch no longer leaves a stuck hover, and swiping a list doesn't select text. The fullscreen queue became a sheet — with its own surface, rounding and padding. The cover and transport were raised by 32 px.
- iOS: нижняя обвязка не задрана — отступ под home-indicator ограничен 14 px, так что табы 72 px, а не 92 px. Android не затронут.iOS: the bottom chrome isn't inflated — the home-indicator inset is capped at 14 px, so the tabs are 72 px instead of 92 px. Android is unaffected.
1.5.0
2026-08-15Видео-фоны, комментарии для любых треков и починка мобильных страниц артистов: MP4 как фон интерфейса и караоке, «одолженные» комментарии SoundCloud для треков Яндекса и локальных файлов, и исправленное открытие SC-артистов с символами в нике на мобилке.Video backgrounds, comments for any track, and a mobile artist-page fix: MP4 as the interface and karaoke background, “borrowed” SoundCloud comments for Yandex and local tracks, and fixed opening of SC artists with special-char usernames on mobile.
🎬 Видео-фоны (десктоп)Video backgrounds (desktop)
- MP4 как фон — глобальный фон интерфейса и караоке-фон теперь могут быть видео, а не только картинкой. Крутится по кругу, без звука, декоративным слоем.MP4 as background — the interface background and the karaoke background can now be a video, not just an image. It loops silently as a decorative layer.
- Караоке-фон «на все треки» — фон применяется к текущему треку или сразу ко всем, с отдельными кнопками сброса.Karaoke background “for all tracks” — apply a background to the current track or to every track, with separate reset buttons.
- Стабильность видео-фона — фон больше не зависает намертво при просадках FPS, не декодируется дважды при открытом караоке и не тормозит на пресете «Производительность».Video-background stability — the background no longer freezes permanently on FPS dips, isn't decoded twice while karaoke is open, and doesn't stutter on the “Performance” preset.
💬 Комментарии для Яндекса и локальныхComments for Yandex & local
- У треков без нативных комментариев (Яндекс, локальные) можно найти тот же трек на SoundCloud и одолжить его комментарии — вместо заглушки рисуются результаты поиска с количеством прослушиваний.For tracks without native comments (Yandex, local) you can find the same track on SoundCloud and borrow its comments — instead of a stub, search results are shown with play counts.
- Клик по результату привязывает комментарии к треку (привязка сохраняется), есть кнопка сброса на случай мисклика. Если по «название + артист» пусто — фолбэк-поиск по одному названию. Десктоп и мобайл.Clicking a result links the comments to the track (persisted), with a reset button for misclicks. If “title + artist” finds nothing, a title-only search kicks in. Desktop and mobile.
📱 Мобильные исправленияMobile fixes
- Страницы SC-артистов с символами в нике (например
✶) теперь открываются корректно — мобилка догнала десктоп (автор резолвится по id трека, а не по нику).SC artist pages with special-char usernames (e.g.✶) now open correctly — mobile caught up with desktop (the author is resolved by track id, not nickname).
1.4.0
2026-08-15Горячие клавиши, живое караоке и лайки, уходящие обратно в сервис: настраиваемые хоткеи (в фокусе и в фоне), эффект осыпающихся букв, зеркалирование лайков в SoundCloud/Яндекс и офлайн-обложки, которые больше не пропадают без сети.Global hotkeys, living karaoke and likes that flow back to the service: configurable shortcuts (focused and in background), a crumbling-letters effect, mirroring likes to SoundCloud/Yandex, and offline covers that no longer vanish without a connection.
⌨️ Горячие клавиши (десктоп)Global hotkeys (desktop)
- Свои хоткеи в стиле Discord (Настройки → Горячие клавиши): комбинация на любое действие — play/pause, next/prev, перемотка ±5 сек, громкость, mute, лайк, шаффл, повтор, настройки/эквалайзер, полный экран и др. Поддерживаются и кнопки мыши.Discord-style custom hotkeys (Settings → Hotkeys): bind a combo to any action — play/pause, next/prev, ±5 s seek, volume, mute, like, shuffle, repeat, settings/equalizer, fullscreen and more. Mouse buttons supported too.
- Работают в фоне: комбинации с модификатором (Ctrl/Alt/Shift) срабатывают даже когда окно свёрнуто; одиночные клавиши — только когда плеер в фокусе.Work in background: modifier combos (Ctrl/Alt/Shift) fire even when the window is minimized; bare keys only when the player is focused.
🎤 КараокеKaraoke
- Осыпающиеся буквы — активная строка рассыпается буква за буквой по ходу пения (тумблер в Настройках → Тексты, по умолчанию включён).Crumbling letters — the active line crumbles letter by letter as it's sung (toggle in Settings → Lyrics, on by default).
- Компактные кнопки-иконки в углу полноэкранного караоке; караоке разворачивает окно, длинные строки больше не обрезаются. Свечение обложки на nextgen берёт цвет из палитры самой обложки.Compact icon buttons in the fullscreen karaoke corner; karaoke maximizes the window, long lines are no longer clipped. The nextgen cover glow now takes its color from the cover's own palette.
❤️ Зеркалирование лайковLikes mirroring
- Лайк в плеере уходит на площадку (SoundCloud → SoundCloud, Яндекс → Яндекс), снятие тоже убирает его там. Тумблер «Синхронизация лайков» в настройках аккаунта — по умолчанию выключен (меняет ваш реальный аккаунт).A like in the player is pushed to the service (SoundCloud → SoundCloud, Yandex → Yandex); unliking removes it there too. A “Sync likes” toggle in account settings — off by default (it changes your real account).
- Кнопка «Экспорт лайков» — разово выгрузить уже накопленные лайки в сервис. Есть на десктопе и на мобильных.An “Export likes” button — a one-off push of your existing likes to the service. Available on desktop and mobile.
📥 Офлайн-обложки и iOSOffline covers & iOS
- Скачанные треки теперь кэшируют обложку локально и показывают её без интернета (десктоп и мобайл).Downloaded tracks now cache their cover locally and show it offline (desktop and mobile).
- iOS: длина офлайн-трека на экране блокировки больше не «прыгает» — для VBR-MP3 берётся точная длительность из метаданных.iOS: the offline track length on the lock screen no longer jumps — VBR-MP3 duration is read exactly from metadata.
🎨 ОформлениеAppearance
- Свёрнутый сайдбар снова показывает «Для вас» и недавних артистов компактными иконками. В Universal на главной появился переключатель миксов SoundCloud / свои.The collapsed sidebar again shows “For you” and recent artists as compact icons. Universal home gained a SoundCloud / your-mixes switcher.
1.3.0
2026-08-14Оформление «Визуал» вместо скина postgen и починка страниц артистов: отдельный переключатель визуала поверх любого скина, а SoundCloud/Яндекс больше не показывают один трек там, где их несколько.A “Visual” setting replaces the postgen skin, plus fixes to artist pages: a separate visual switch on top of any skin, and SoundCloud/Yandex no longer show a single track where there are many.
🎨 Оформление «Визуал»“Visual” appearance
- Скин «postgen» убран, а два его удачных элемента вынесены в настройку «Визуал» (Настройки → Оформление) — она ортогональна выбору скина и работает поверх oldgen и nextgen.The “postgen” skin is gone; two of its best bits became a “Visual” setting (Settings → Appearance) — orthogonal to the skin choice and layered over oldgen and nextgen.
- Default — обычный вид; Universal — bento-дашборд на главной и счётчики лайков/скачанного бейджами на иконках свёрнутого сайдбара. Сохранённый postgen автоматически переносится на nextgen.Default — the usual look; Universal — a bento dashboard on Home and like/download counters as badges on the collapsed sidebar. A saved postgen choice migrates to nextgen.
🐛 ИсправленияFixes
- Страница артиста показывала один трек вместо всех (SoundCloud/Яндекс): автор определяется по id трека, а не по нику, поэтому спецсимволы в нике больше не ломают открытие.The artist page showed one track instead of all (SoundCloud/Yandex): the author is now resolved by track id, not nickname, so special characters in a nickname no longer break it.
- Снят потолок в 50 треков — страницы артистов подгружаются целиком (пагинация до 500 треков).The 50-track ceiling is gone — artist pages load in full (pagination up to 500 tracks).
1.2.0
2026-07-09Новый скин интерфейса «postgen» и умный выбор источника: третий облик плеера с bento-дашбордом и «Aurora glass», плюс плеер сам решает, где искать и играть — SoundCloud или Яндекс Музыка.A new “postgen” interface skin and smart source selection: a third look with a bento dashboard and “Aurora glass”, plus the player decides where to search and play — SoundCloud or Yandex Music.
✨ Скин «postgen» (десктоп)“postgen” skin (desktop)
- Полностью новый интерфейс рядом с oldgen/nextgen: верхняя навигация «островами», тонкий иконочный рельс, bento-дашборд на главной и плавающая капсула плеера снизу.A brand-new interface alongside oldgen/nextgen: island-style top navigation, a thin icon rail, a bento dashboard on Home and a floating player capsule at the bottom.
- Aurora glass — матовое стекло, живые ауры акцентного цвета, крупная лёгкая типографика.Aurora glass — frosted glass, living accent-color auras, large airy typography.
🧠 Умный выбор источникаSmart source selection
- Авто-режим — плеер сам проверяет доступность SoundCloud и Яндекс Музыки (включая медиа-CDN) и ищет/играет через рабочий источник; ручной выбор остаётся как оверрайд.Auto mode — the player checks SoundCloud and Yandex Music availability (including the media CDN) and searches/plays via whichever works; manual choice stays as an override.
- Фолбэк при воспроизведении — если трек не заиграл, плеер находит его на другом источнике без остановки. На русских системах авто-поиск по умолчанию идёт через Яндекс (работает без VPN).Playback fallback — if a track won't play, the player finds it on the other source without stopping. On Russian-locale systems auto-search defaults to Yandex (works without a VPN).
1.1.1
2026-07-01iOS: экран блокировки и живой визуализатор. Кнопки на локскране переключают треки, а полосы визуализатора реагируют на музыку.iOS: lock screen and a live visualizer. Lock-screen buttons switch tracks, and the visualizer bars react to the music.
🍏 iOSiOS
- Экран блокировки — кнопки ⏮/⏭ теперь переключают треки (раньше была перемотка ±10 сек); живая полоса прогресса со временем трека.Lock screen — ⏮/⏭ now switch tracks (previously ±10 s seek); a live progress bar with track time.
- Живой визуализатор — полосы реагируют на музыку в реальном времени, а не двигаются «для вида».Live visualizer — bars react to the music in real time instead of moving for show.
1.1.0
2026-06-30Звук как надо и бесшовное проигрывание: выравнивание громкости, кроссфейд, радио по треку и артисту, кастомный фон вкладок и живая анимация смены трека.Sound done right and seamless playback: volume leveling, crossfade, track & artist radio, custom tab backgrounds and a live track-change animation.
🔊 ЗвукSound
- Выравнивание громкости — треки приводятся к единой громкости по метаданным (R128/LUFS у Яндекса, ReplayGain у локальных файлов), с защитой от клиппинга по пику. На десктопе и для локальных файлов на телефоне.Volume leveling — tracks are matched to an even loudness from metadata (Yandex R128/LUFS, local ReplayGain tags), true-peak limited. Desktop and local files on mobile.
- Кроссфейд — плавные переходы между треками, 0–12 секунд (Настройки → Звук). На всех платформах.Crossfade — smooth track-to-track transitions, 0–12 seconds (Settings → Sound). All platforms.
📻 Радио по треку и артистуTrack & artist radio
- «Моя волна по треку» и «по артисту» для Яндекс Музыки — бесконечная станция от выбранного трека или исполнителя (меню «…» у трека, кнопка на странице артиста).“My Wave” seeded from a track or artist for Yandex Music — an endless station (track “…” menu, button on the artist page).
- SoundCloud: «Станция от трека» — автопилот, заведённый от выбранного трека.SoundCloud: “Station from track” — an autopilot seeded from the chosen track.
🎨 ОформлениеAppearance
- Кастомный фон вкладок — своя картинка в шапке «Любимого», «Недавнего», «Скачанного», локальной библиотеки и плейлистов.Custom tab backgrounds — your own image in the header of Liked, Recent, Downloaded, the local library and playlists.
- Анимация смены трека в плеер-баре и правой панели (простая на oldgen, выразительная на nextgen; пружинная на мобайле).Track-change animation in the player bar and right panel (simple on oldgen, expressive on nextgen; springy on mobile).
🐛 ИсправленияFixes
- Меню «…» у трека на скине nextgen больше не просвечивает.The track “…” menu is no longer translucent on the nextgen skin.
- Секция «Ваши миксы» скрыта по умолчанию для пользователей без входа в SoundCloud.The “Your Mixes” section is hidden by default for users not signed into SoundCloud.
1.0.1
2026-06-29Latency теперь и на Linux. Первая официальная сборка под Linux — AppImage (универсальный) и rpm (Fedora/RHEL).Latency is now on Linux. The first official Linux build — AppImage (universal) and rpm (Fedora/RHEL).
🐧 Linux — дебютLinux — debut
- AppImage запускается на любом дистрибутиве (
chmod +xи открыть) и rpm-пакет для Fedora/RHEL.The AppImage runs on any distro (chmod +x& open) plus an rpm package for Fedora/RHEL. - Иконка приложения корректно показывается в доке, Alt-Tab и меню приложений.The app icon shows correctly in the dock, Alt-Tab and the app menu.
🖥️ ПК — исправленияDesktop — fixes
- Текст в профилях артистов больше не обрезается снизу (буквы y, q, p, g).Text on artist pages is no longer clipped at the bottom (y, q, p, g).
1.0.0
2026-06-28Стабильный релиз. Единая версия для всех платформ — Windows, Android и iOS выходят одним номером.The stable release. A single version across all platforms — Windows, Android and iOS now ship under one number.
🟡 Яндекс МузыкаYandex Music
- Третий источник: вход своим аккаунтом, полные треки по подписке Яндекс Плюс. Работает в России без VPN.A third source: log in with your own account, full tracks via a Yandex Plus subscription. Works in Russia without a VPN.
- Мульти-артисты кликабельны по отдельности; общий поиск, лайки и плейлисты не зависят от источника.Multi-artist tracks are individually clickable; search, likes and playlists stay source-agnostic.
🌊 Моя волнаMy Wave
- Персональный бесконечный поток Яндекс Музыки прямо на главной — подстраивается под то, что вы слушаете.An endless personal Yandex Music stream right on Home — it adapts to what you listen to.
📥 Импорт лайковLikes import
- Лайки из SoundCloud и Яндекс Музыки переносятся в общую коллекцию «Любимое» и убираются обратно по источнику.Likes from SoundCloud and Yandex Music import into the shared “Liked” collection and can be removed per source.
📱 Мобильные — почти паритет с десктопомMobile — near desktop parity
- iOS и Android подтянуты к десктопу: SoundCloud и Яндекс Музыка, Моя волна, караоке, комментарии, альбомы, кастомные обложки и фон.iOS and Android caught up to desktop: SoundCloud and Yandex Music, My Wave, karaoke, comments, albums, custom covers and background.
- Офлайн-загрузка треков, фоновое воспроизведение и медиа-уведомление на локскране.Offline track downloads, background playback and a lock-screen media notification.
0.2.0
2026-06-23🔍 Поиск трека по строчкеSearch a track by lyric line
- Во вкладке Поиск переключатель: Треки / По строчке.A toggle in the Search tab: Tracks / By lyric.
- Вводишь фрагмент текста → Genius находит песню → она ищется на SoundCloud и показывается с обложкой и найденной строчкой.Type a fragment → Genius finds the song → it's resolved on SoundCloud and shown with cover and the matched line.
- Клик — немедленное воспроизведение; нерезолвленные треки отбрасываются.Click for instant playback; unresolved tracks are dropped.
🎛️ ЭквалайзерEqualizer
- 10-полосный графический EQ (32 Гц … 16 кГц), ±12 дБ, 7 пресетов (Flat, Bass, Treble, Vocal, Electronic, Rock, Loudness).10-band graphic EQ (32 Hz … 16 kHz), ±12 dB, 7 presets (Flat, Bass, Treble, Vocal, Electronic, Rock, Loudness).
- Работает и на локальных файлах, и на SoundCloud.Works for both local files and SoundCloud.
🧠 АвтопилотAutopilot
- Когда очередь заканчивается, плеер сам находит похожие треки через SoundCloud и продолжает играть.When the queue ends, the player finds similar tracks via SoundCloud and keeps playing.
💬 Комментарии SoundCloudSoundCloud comments
- Вкладка с обложкой, визуализатором и всплывающим пузырём текущего комментария по таймкоду; клик по комментарию = перемотка.A tab with cover, visualizer and a floating bubble of the current timecoded comment; click a comment to seek.
📥 Офлайн-кэшOffline cache
- Кнопка ↓ на треках SoundCloud сохраняет MP3 локально — играет без интернета. Вкладка «Скачанное» + управление кэшем в настройках.A ↓ button on SoundCloud tracks saves the MP3 locally — plays offline. A “Downloaded” tab + cache management in settings.
🎮 Discord Rich Presence
- Название трека, автор, статус, таймер и обложка трека в профиле Discord. Настройка через Application ID.Track title, artist, status, timer and cover art in your Discord profile. Configured via Application ID.
⚡ УлучшенияImprovements
- Очередь: drag-and-drop, удаление треков, фильтр-строка. История поиска по строчке.Queue: drag-and-drop, track removal, a filter field. Lyric-search history.
- SoundCloud-треки проходят через общий Web Audio граф (EQ + живой визуализатор).SoundCloud tracks now run through the shared Web Audio graph (EQ + live visualizer).
0.1.0
2026-06-20Первый публичный билд.First public build.
🎧 Воспроизведение и источникиPlayback & sources
- Локальные файлы (теги, обложки, протокол
media://) и SoundCloud (progressive + HLS, автоclient_id, вход в аккаунт).Local files (tags, covers,media://protocol) and SoundCloud (progressive + HLS, autoclient_id, account login). - Единое ядро: очередь, плеер-бар, лайки, плейлисты не зависят от источника. Очередь персистится.One engine: queue, player bar, likes, playlists are source-agnostic. The queue persists.
📚 Библиотека и навигацияLibrary & navigation
- Home, Explore, Activity, Artist, Mix, Info, Profile. Your Likes, Recently Played, плейлисты, resizable-панели.Home, Explore, Activity, Artist, Mix, Info, Profile. Your Likes, Recently Played, playlists, resizable panels.
🎚️ Визуализатор и караокеVisualizer & karaoke
- Web Audio граф с AnalyserNode (реальный FFT для файлов). Тексты LRCLIB + Genius, ручная синхронизация, полноэкранный плеер.Web Audio graph with AnalyserNode (real FFT for files). LRCLIB + Genius lyrics, manual sync, a fullscreen player.
🎨 Оформление и локализацияTheming & localization
- Темы + кастомный акцент (HSV-пикер), кастомный фон с кадрированием, компактный режим. Два языка: EN / RU.Themes + custom accent (HSV picker), custom background with cropping, compact mode. Two languages: EN / RU.
📦 ПлатформаPlatform
- Сборка для Windows: установщик NSIS + portable. Неоновая иконка «L».Windows build: NSIS installer + portable. Neon “L” icon.
Мобильные сборки
Mobile builds
📱 iOS · AndroidМобильный таргет (iOS + Android, Capacitor)
Mobile target (iOS + Android, Capacitor)
- Кроссплатформенный порт на Capacitor: тот же web-бандл ставится и на iOS, и на Android. Сборки доступны в Releases.A cross-platform Capacitor port: the same web bundle installs on both iOS and Android. Builds are available in Releases.
- Android: фоновое аудио и медиа-уведомление с prev/next через Media Session API; debug-APK собирается на Linux-раннере GitHub Actions.Android: background audio and a media notification with prev/next via the Media Session API; the debug APK builds on a Linux GitHub Actions runner.
- iOS: неподписанный
.ipaсобирается через xcodebuild, ставится сайдлоадом (AltStore / Sideloadly).iOS: an unsigned.ipabuilt via xcodebuild, installed by sideloading (AltStore / Sideloadly).