Skip to content

0.5.0 RC - 1

Choose a tag to compare

@SNIPPIK SNIPPIK released this 10 May 08:50

🚀 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).
  • 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