Skip to content

0.3.0 Release

Choose a tag to compare

@SNIPPIK SNIPPIK released this 20 Aug 06:56
2e221f3

📦 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

Full Changelog: 0.2.5...0.3.0