Releases: SNIPPIK/WatKLOK
Releases · SNIPPIK/WatKLOK
Release list
0.5.0 RC - 2
🚀 WatKLOK/Untitles RC2 - Changelog
Сборки
- Все можно скачать тут
Полный список
🏗️ Rust
- Добавление высчитывания 20 ms за тик по формуле (48000 samples/sec * 0.02 sec = 960 samples)
- Добавление проверка is_full в
AudioEngine, rust слой - Добавление пояснения типа пакетов для OGG/OPUSParser
- Добавление поддержки последнего фрейма для функции
get_clone_at - Добавление глобального параметра для высчитывания длительности пакета в
AES-256 - Уменьшение CATCH_UP до 1
- Правки комментариев
⚙️ Node.js
- Добавлен тип
handsnake, содержащий в себе address, port для подключения к UDP серверу - Правка текста для сообщения об ошибке со стороны плеера
- Добавление комментариев к плееру
- Правки событий клиента
- Добавление доп проверки при получении id
- Добавление комментариев в
Rest/API Client - Добавление else/if в
Rest/API Worker - Добавление else/if в
handlerи добавление пары комментариев - Правки TypedEmitter, добавление комментариев и прочее...
- Исправление AILOOP в
httpsClient, именно комментарии - Добавление удаления данных в
AudioResource, теперь (_afade, _timeout) удаляются корректно - Добавление комментариев в queue/message.ts
- Исправлено получение плейлистов yandex
- Добавлена проверка быстрого старта аудио
- Добавлен cooldown для плеера, во избежание рассинхрона потока
- Упрощение prototype duration
- Добавлена очистка worker при краше
- Увеличение лимитов для списков Rest/API
Full Changelog: 0.5.0-rc1...0.5.0-rc2
0.5.0 RC - 1
🚀 WatKLOK/Untitles RC1 - Changelog
Данный changelog охватывает период масштабной переработки движка проекта. Произошёл полный переход с C++ на Rust через нативные модули (n-api), внедрение новой архитектуры цикла на Tokio и ESM-стандарт для Node.js.
Сборки
- Все можно скачать тут
🏗️ Архитектура и Ядро (Rust / Node.js)
Критическая миграция стека технологий
- Миграция на Rust: Полный переход голосовой части от C++ к Rust через
n-api. Улучшена типизация связки Rust ↔ TS. - ESM Standard: Переход проекта на модульную систему Node.js (
type: module), обновление схемы сборки. Теперь собираются только Rust-часть иsrc, остальные файлы изmain. - N-API 3.8.6: Обновление до последней версии, переименование директории
src-rs→rs, новыйAudioEngine(объединение слоев). - Система Циклов (Cycle System): Переход на гибридную модель (
Balancer+CycleManager), работающая на Tokio. Поддержка обработки упущенных тайксов и точного учета времени. - DAVE Engine v1.3: Внедрение собственной реализации протокола DAVE, поддержка шифрования AES, упрощение E2EESession.
- AudioEngine: Создание нового движка воспроизведения (объединение 2 слоев в 1), работа с буферами Opus/Ogg.
🎵 Аудио-движок и Голосовое Подключение
Полная переработка аудио-стека
- UDP & RTP:
- Реализация
ring buffer(кольцевой буфер) с мягким переполнением. - Исправления в работе
VoiceRTPSocketиUdpBufferedInner. - Уменьшение задержек отправки пакетов, убрано дублирование.
- Добавлена поддержка
SILENT_FRAME(контроль тишины).
- Реализация
- FFmpeg & Оптимизация:
- Перенос логики обработки в Rust (
FfmpegProcess). - Поддержка параметров VBR, Compression, Application в аргументах.
- Zero-copy обработка Ogg/Opus (переработка парсера
OggOpusParser).
- Перенос логики обработки в Rust (
- E2EE (Шифрование):
- Добавлена поддержка AES и статус шифрования.
- Упрощение создания Cipher на сессию, а не на пакет.
- Голосовые Состояния:
- Улучшенная проверка события
VoiceStateUpdate. - Автоматическое пересоздание голосового соединения при ошибке.
- Добавлен статус
destroyedдля транспортного слоя.
- Улучшенная проверка события
🌐 Платформы и Поиск Контента
Расширение поддержки медиа-источников
- Универсальный поиск:
- Поддержка выбора лучшего ответа из нескольких вариантов RestAPI (2-3 источника).
- Fallback: если платформа не может отдать аудио, ищется на другой.
- Кеширование альбомов (хранение только на диск), поддержка включения кеша даже при "сломанной" платформе.
- Специфические исправления:
- 🎵 Yandex: Исправлены запросы и ссылки.
- 🇷🇺 VK: Улучшена работа с API, добавлена проверка ошибок при логе.
- 🎧 SoundCloud: Проверка доступности треков по региону/прокси, кэширование (временно отключено получение аудио).
- 📱 YouTube & Deezer: Исправлены ошибки в regexp и поиске альтернативных треков.
- Радио Станции: Добавлена поддержка конфигурируемых радиостанций через JSON.
⚙️ API, UI и Инструментарий
Удобство использования
- REST API & Команды:
- Упрощение RestAPI, добавление Middlewares для компонентов.
- Добавлена команда
queue, улучшена система команд (fallback на ошибки). - Изменение таймаутов в другом потоке (
timeoutне висит на основном).
- Управление данными:
- Улучшение системы кеширования (синхронизация с диском, уменьшение RAM-дампов).
- Добавление событий
queue/cleanup,queue/destroy.
- Интерфейс и Сообщения:
- Улучшен визуал UIX (push), добавлен Footer функция.
- Исправлены ошибки с неверными типами в UI (Play/Pause).
- Обновления сообщений о давленных треках, индикатор позиции/всех треков в пуш-уведомлениях.
- База Данных: Добавлена поддержка параметра
emojiдля иконок.
🛡️ Стабильность и Производительность
Критические фиксы и оптимизации
- Event Loop & Memory:
- Улучшена обработка нагрузки на Event Loop, убрано неиспользуемое код.
- Добавлен авто flush при остатке аудио, ring buffer.
- Logger показывает потребление ОЗУ в логах.
- Цикл и Точность:
- Цикл компенсирует упущенное время, точность цикла под Node.js улучшена.
- Уменьшен лимит UDP подключений в 1 потоке, уменьшен
timeout_askдо 3 сек (Heartbeat).
- Устойчивость:
- Исправлены зависания при срочном уничтожении процесса.
- Исправлены ошибки переподключения при уничтожении WS.
- Поддержка пулов пакетов для отправки/приема данных.
📝 Резюме изменений (Версия 0.5.0+)
| Категория | Ключевое изменение |
|---|---|
| Код | Rust Core, N-API v3.8.6, ESM Module System |
| Аудио | Новый AudioEngine, Hybrid Cycle, Ring Buffer |
| API | Улучшенный REST, Queue команды, Кэширование альбомов |
| Платформы | Yandex/VK/SC/YT, Fallback для сломанных источников |
| Безопасность | E2EE (AES), поддержка прокси для WS |
0.5.0b
Seyfert Update 0.5.0 Beta
Основные изменения
- Полный уход с discord.js, новая собственная библиотека.
- Добавлены нативные Rust модули
- Поддержка радио-станций, настраиваются через JSON.
- Улучшена стабильность аудиопотока.
- Масштабный рефакторинг RestAPI.
- Множество микро-исправлений и улучшений стабильности.
Исправления и улучшения
- Улучшены типы прослойки Rust -> TS.
- Улучшена проверка voiceStateUpdate.
- Исправлена работа с lyrics.
- Добавлены Middlewares для компонентов.
- Обновлен Readme.
- Исправлена работа pagers queue.
- Исправлена ошибка с неверными типами в UI -> Play.
- Технические платформы теперь не кешируются.
- Исправлен цикл, когда 1 loop мог закрыть все.
- Уменьшено время ожидания пересоздания WebSocket.
- Улучшен AudioEngine на Rust.
Улучшения Rust
- Оптимизация кода Rust.
- Перенос отправки аудио в Rust.
- Исправление onVoiceStateUpdate в событии voiceStateUpdate.
- Исправлено логирование ошибок VK.
- Улучшено управление голосом (не финал).
- Добавлен новый функционал в Rust-компоненты.
Критические компоненты
- Упрощение RTP.
- Добавлен E2EE статус.
- С текущего коммита @snazzah/davey обязателен.
- Упрощение E2EESession.
- Улучшен класс VoiceConnection на Rust.
- Оптимизация URP, Process, OggParser, CycleWorker.
- Рефакторинг типов n-api.
- Улучшена отправка UDP: маленькие пакеты теперь объединяются.
- Добавлен таймер до получения “Discovery packet”.
- Удален неиспользуемый код.
- Увеличен PLAYER_TIMEOUT_OFFSET до 3 секунд.
- Исправление onTimeout Speaker UDP KeepAlive, корректный подсчет отправлений.
- Убрана возможность отправлять маленькие аудиопакеты в Rust.
- Возможность перехода к последней позиции в очереди.
- Упрощен класс Queue.
- Обновлен класс AudioPlayer, улучшены функции.
- Ошибки в Rest/API с requestId теперь корректны.
- Улучшена точность цикла под Node.js.
- Исправлено переподключение при уничтожении.
- Исправлено удаление спикера при необходимости.
Full Changelog: 0.4.1...0.5.0b
0.4.1
0.4.0
🔊 Voice System
🔐 E2EE (Dave)
- Исправлены ошибки с encrypt, decrypt
- Исправлена ошибка с welcome
- Добавлена поддержка большего кол-ва пользователей
🎧 Voice
- Упрощение генерации randomNBit
- Удаление heartbeat resetReconnects, reconnects...
- Теперь websocket удаляет heartbeat manager
- Увеличен cooldown при ожидании пользователей в голосовом канале до 30 секунд
- Добавление модуля
VoiceSpeakerManager - Улучшена проверка E2EE
- Добавлена поддержка изменения статуса голосового канала
🎵 AudioPlayer
- Удаление player._preloadTrack, теперь все в play функции
- Исправлена проблема с временной паузой в плеере
- Немного оптимизирована логика
🎵 Audio
- Добавлена проверка seek для buffered audio
- Добавление принудительного удаления пре аудио если оно есть
- Изменена логика отправки события readable в аудио
- Исправлена ошибка с получением this._buffer?.position при получении готовых аудио пакетов
- Добавление перепровки аудио при "Timeout"
- Изменене Opus paser, переписан практически с нуля
💡FIlters
- Изменение системы фильтров, теперь есть возможность прекомпилировать фильтры при добавлении а не при включении
- Добавление запретов для некоторых фильтров
- Добавлен новый фильтр
swap_stereo
🕐 Time Cycle
- Изменение циклической системы, теперь можно просто конфигурировать точность в 3 параметрах
- Исправлена работа цикла при большой нагрузке
- Добавлен параметр таймера в цикл для его удаления
🕐 Message time cycle
- Изменена логика сообщений, теперь отправляется раз в 10 мин
- Обновляется при новом треке и не создается заново
- Так-же меняет статус голосового канала!
⚙️ Handlers
📚 Commands
- Изменение структуры команд (slash, ui)
- Отключение ожидания для команды skip
- Исправление команды remove
- Исправление back компонента
🌐 Rest/API
- Улучшение и исправление rest api, ответ теперь приходит быстрее
- Добавлен fallback для платформ которые не слишком хотят работать
- Добавление поиска аудио для платформ которые изначально могут отдавать аудио
- Изменение типов для rest api
- Обновление клиента YouTube
- Теперь данные live видео не кешируются (YouTube)
- Изменение поиска трека если нет доступа к платформе
What's Changed
Other Changes
- Bump discord-api-types from 0.38.23 to 0.38.24 by @dependabot[bot] in #31
- Bump @types/node from 24.3.1 to 24.4.0 by @dependabot[bot] in #30
- Bump @types/node from 24.4.0 to 24.5.2 by @dependabot[bot] in #33
- Bump discord-api-types from 0.38.24 to 0.38.26 by @dependabot[bot] in #32
Full Changelog: 0.3.2...0.4.0
0.3.2
Исправления и улучшения
- Немного переработана загрузка трека в плеере, теперь обработка в модуле audio
- Немного улучшен цикл
- Изменены описания фильтров
- Добавление функции toZero для трансформации в формат 00:05
- Исправление точности поиска трека при отсутствии аудио
- Добавление доп логов для отслеживания Garbage Collector
- Изменение 1 debug лога на warn
- Исправление прогресс бара
Full Changelog: 0.3.1...0.3.2
Более крутые штуки будут в 0.4.0!
0.3.1
🎉 Release 0.3.1
🚀 Новый функционал
🔊 Улучшения аудио системы
- AudioPlayerTimeout - интеллектуальная система таймаутов для плеера
- Autoplay система - автоматический подбор похожих треков
- Новый тип повтора -
AutoPlayдля бесконечного потока музыки
📊 Логирование и мониторинг
- File logging - сохранение логов в файлы для последующего анализа
- Блокировка платформ - автоматическая блокировка неотвечающих API
🎛️ Расширение возможностей
- Application User Command - поддержка пользовательских команд
- TypedEmitter - прямая работа с объектами, улучшенная производительность
- Lossless/FLAC поддержка - высококачественное аудио для Yandex Music
🏗️ Архитектурные улучшения
- ControllerFilters наследует SetArray - улучшенная производительность фильтров
- Bypass рекламы - обход рекламных вставок в изображениях и аудио
- Очистка битых файлов - автоматическое удаление поврежденных аудиофайлов
- Изменение хранения изображений трека - изменен
image: {url: string }наimage: string
⚡ Мелкие улучшения
🎯 Точность и надежность
- Улучшенный related поиск - повышенная точность подбора треков в YouTube
- Поддержка времени видео - получение длительности в related запросах
- Расширенные форматы времени - поддержка нестандартных форматов (
1 minute 33 seconds)
🏗️ Рефакторинг и оптимизация
- Перенос аудио фрагментов - вынесение логики в отдельный аудио модуль
- Разделение db.api.fetch - на 3 специализированные функции для лучшей читаемости
🐛 Исправленные баги
🧹 Оптимизация памяти
- Исправление удаления буфера - корректная очистка в классе AudioBuffer
- Устранение утечек памяти - исправление в QueueButtons
- Правильное пересоздание сессий - Dave сессия теперь стабильнее
🔧 Стабильность работы
- Исправление request_worker - гарантированный ответ на запросы
- Timeout в httpsClient - установлено ограничение в 3 секунды
- Исправление remove - корректное удаление элементов
- Оптимизация логики очереди - улучшенное добавление треков
📡 Сетевая надежность
- Улучшение deferred обработки - правильная работа системы сообщений
- Исправление отправки пакетов - стабильная работа при отсутствии WebSocket соединения
Full Changelog: 0.3.0...0.3.1
0.3.0 Release
📦 Changelog — 0.3.0
✨ Основные изменения
- 🆕 Полностью переработан движок воспроизведения: стабильные 20 ms send cycles с авто-адаптацией под нагрузку.
- 🛠️ Добавлен Jitter Buffer — теперь при перегрузке процессора поток остаётся плавным (динамическое смещение от 20 ms → 40 ms → …).
- 🎶 Поддержка BufferedAudioResource и PipeAudioResource для разных сценариев (seek, hot swap, длинные стримы).
- 🔒 Полная интеграция DAVE (Discord Audio Voice Encryption) с поддержкой
MLS proposals,commit,welcomeи epoch-переходов. - 🎛️ Управление громкостью:
<player>.volume, команда/volume. - ⚙️ Доработана расширяемая система циклов (
BaseCycle,TaskCycle,PromiseCycle) с учётомevent loop drift.
🆕 Новое
🔌 Rest/API
- 🌐 RestObject + ClientRestRequest: общение с API платформ в отдельном worker-потоке.
- 🔍 Исправление фильтрации платформ по возможностям (
auth,audio,wave) - 📝 Улучшение типов, переход на декораторы
- 🛠️ Исправления ошибок с платформами (Yandex, YouTube)
- ⚡ Добавление поддержки Deezer
- 📦 Улучшение получения аудио при запросе из кэша
🔄 Циклическая система
- 🔧 Полностью откалибрована, стабильна даже на ARM
- 🛰️ Динамический Jitter Buffer для гашения event loop lags
🧩 Переработка взаимодействий
- 🆕 Новая система команд, компонентов, middlewares, rest
- 🎨 Новые декораторы, улучшение типов
- ⏱️ Добавление cooldown отдельно в middlewares
🎵 Audio
- 🎧 Реализация fade-in / fade-out на уровне плеера.
- 🔄 Поддержка hot audio swap без обрывов.
- ⏱️ Улучшение синхронизации аудио (пока без фильтров)
- 🛠️ Исправления Opus при сильной нагрузке
- 🎼 Поддержка явной синхронизации для pipe-аудио
🐛 Исправления и улучшения
- ⚡ Оптимизирован запуск
child_process.spawnдля ускорения старта FFmpeg (~10-50 ms). - 🧹 Улучшено управление GC и обработка
event loop drift. - 🎯 Повышена стабильность при конвертации видео в фоне.
- 🛡️ Добавлена защита DAVE-переходов от сбоев и откатов.
- 🧩 Улучшено поведение при отсутствии плеера в циклах.
- ⚡ Перевод middlewares в sync режим
- ⚡ Упрощены:
InteractionCreate,autocomplete,rest/request,player.play - 🧹 Удаление неиспользуемые данные в env
- 🔄 Теперь нет
service, а естьcore - 📢 Сообщение о текущем треке теперь показывает кто включил трек
- 🎚️ Изменён парсинг фильтров в
<player>.filters.compress - 🔘 Кнопки разделены на отдельные файлы
🐞 Исправления багов
- 🎯 Исправлен старый баг с Rest/API, когда отдавались не те данные
- 🔘
bottom→button(как и должно быть) - ⚡ Исправление инициализации
BufferedAudioResource - ⏳ Исправлена команда skip
- 🛠️ Исправлена ошибка в RestServer, когда данные не возвращались
- 🧩 Исправление добавления фильтра (мог не примениться при включении в последний момент)
- 🧩 Исправлена ошибка с получением subcommand
📜 Ключевое из RC-версий
RC2
- 🎶 Внедрена система громкости для плеера.
- 🛠️ Добавлен
BufferedAudioResourceс seek-поддержкой.
RC3
- 🔄 Поддержка
PipeAudioResourceдля real-time потоков. - 🕒 Улучшена синхронизация Opus-пакетов с реальным временем.
RC4
- 🔒 Завершена интеграция DAVE (MLS proposals, commit, welcome).
- 📑 Добавлена полноценная поддержка подкоманд и autocomplete в Slash-командах.
- 🧹 Чистка API и улучшение логики RestObject.
📜 Pull requests
- Bump @types/node from 22.15.2 to 22.15.3 by @dependabot[bot] in #3
- Bump zlib-sync from 0.1.9 to 0.1.10 by @dependabot[bot] in #4
- Bump ws from 8.18.1 to 8.18.2 by @dependabot[bot] in #5
- Bump @types/node from 22.15.3 to 22.15.17 by @dependabot[bot] in #7
- Bump @types/node from 22.15.17 to 22.15.19 by @dependabot[bot] in #8
- Bump @types/node from 22.15.24 to 22.15.29 by @dependabot[bot] in #10
- Bump discord-api-types from 0.38.8 to 0.38.9 by @dependabot[bot] in #9
- Bump @types/node from 24.0.0 to 24.0.1 by @dependabot[bot] in #11
- Bump @types/node from 24.1.0 to 24.2.1 by @dependabot[bot] in #25
Full Changelog: 0.2.5...0.3.0
0.3.0-rc4
🔄 RC4 — Release Candidate 4
🆕 Новое
- Изменение структуры, удаление services
🌀 Система Циклов
- 📚 Реализована новая архитектура:
BaseCycle,TaskCycle - ⏱️ Адаптивное управление задержками с точным
setTimeoutи коррекцией дрейфа event loop - 🔄 Поддержка
step,filter,execute,add,remove— API для кастомизации - 🧹 Автоматический и ручной GC после остановки плеера
- 💾 Повторное использование буфера при инициализации аудио
🔐 End-to-End Шифрование (DAVE)
- Полноценная интеграция DAVE: инициализация, переходы, ключи, защитные фреймы
⚙️ Команды
- 🎤 Поддержка соло-команд
- 🎛️ Пресеты для
play: фильтры, громкость и т.д. - 🎲 Исправлен редкий баг с проигрыванием случайного трека
- 📝 Добавлена команда
reportдля отправки жалоб/ошибок - Исправлена проверка в команде seek
🌐 REST / API (Платформы)
- 🔍 Исправлен механизм подбора трека при отсутствии прямого аудио
- 🔧 Улучшено определение платформы по URL
- 🛠️ Полностью переписан
httpsClient - 🚫 Исправлена ошибка с фейковыми платформами (platform spoofing)
- Теперь RestAPIThread правильно передает данные о платформе
- Теперь rest/error обрабатывает тип отправки сообщения
- Теперь yandex search отдает пустой array вместо ошибки
🎙️ Voice
- Исправлено некорректное удаление голосового подключения
🔊 Audio
- 🧮 Добавлен
highWaterMarkвBufferedAudio - 🧷
OpusEncoderтеперь корректно обрабатываетhead,tagsсегменты - Теперь отправляется 3 SILENT_FRAME вместо 1 при старте
🎼 AudioPlayer
- 🧠 Автономное управление жизненным циклом
- 🧩 Поддержка
SetArrayдля работы с фильтрами - ⌛ Добавлен
timeoutпри неактивном аудио (автоостановка) - Улучшен плеер, теперь функция play является универсальной
🎧 Адаптивный Jitter Buffer
- ⏳ Смещение времени в зависимости от
event loop lag - 🔇 Устранение щелчков: автостабилизация буфера
- 🔄 Переписан на
do/whileцикл
🌐 WebSocket Voice Gateway
- 🔄 Переподключение при ошибках, улучшенное логгирование статусов
- ✅ Полная поддержка
Discord Gateway v8 - 🔢 Добавлены:
WebSocketOpcodes,DiscordGatewayCodes,DaveOpcodes - 📡 Добавлен
User-Agent, включая интеллектуальное автоопределение - 🛡️ Установлен
setMaxListenersдля клиента Discord - 🎼 Исправлена рассинхронизация плеера при чтении аудио
- 🧨 UDP сокеты корректно уничтожаются при новом запуске
📦 ClientSRTPSocket
- 📊 Корректный расчёт
header - 🔐 Усилена безопасность
SRTPпри коротких nonce
📥 Receiver
- 🗣️ Начальная реализация приема аудио потока
🐞 Исправления (BugFixes)
- 🖼️ Проблема с изображениями при получении треков автора
- 🎵 Глобальные исправления поиска и получения аудио
- Исправлен httpsClient, ранее возникала проблема с yandex
- Изменено куча комментариев
🛠️ Технические улучшения
- 🧹 Удалён
gфлаг у переиспользуемых RegExp - 🔢 Вернул
Number.prototype.random - 🪵
Logger: буквенные префиксыI,W,D,E - 🧠 Ручной/динамический GC:
global.gc()вызывается при удалении последнего плеера- 📉 Потребление памяти снижено с 120MB до ~80MB
⚙️ Оптимизация Node.js
- 🛠️
--optimize_for_size - ♻️
--expose-gc
📝 .env
- 🗑️ Удалён
player.preferred, теперь автоопределение таймера
⚡ Оптимизация
- 🎨 Удалён
discord.jsColors — теперь используется собственныйenum
📜 Полный Changelog: GitHub Diff
Hotfix RC 3.1
♻️ Hotfix RC 3.1 — Мелкие исправления и улучшения
🔧 Что исправлено:
- 🧠 Opus: устранена проблема, связанная с декодированием или определением тегов потока.
- ⏱️ Очередь (queue):
waitRebootтеперь корректно использует параметрtimeout, вместо захардкоженного20_000. - 🌐 Rest/API: упрощена и ускорена формула поиска, снижен overhead.
- 🔄 Цикл обновлений: обновлён для повышения стабильности и предсказуемости выполнения.
🔍 Обновление RC 3.1 направлено на повышение стабильности, устранение мелких неточностей и полную подготовку к следующему крупному релизу.