Skip to content

Releases: SNIPPIK/WatKLOK

0.5.0 RC - 2

Choose a tag to compare

@SNIPPIK SNIPPIK released this 26 May 16:46

🚀 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

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

0.5.0b

0.5.0b Pre-release
Pre-release

Choose a tag to compare

@SNIPPIK SNIPPIK released this 02 Mar 12:21

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

Choose a tag to compare

@SNIPPIK SNIPPIK released this 17 Dec 10:40

What's Changed

  • Исправление поиска по названию без указания платформы

Other Changes

New Contributors

Full Changelog: 0.4.0...0.4.1

0.4.0

Choose a tag to compare

@SNIPPIK SNIPPIK released this 17 Dec 09:10
fb87a1d

🔊 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

Choose a tag to compare

@SNIPPIK SNIPPIK released this 09 Sep 22:35

Исправления и улучшения

  • Немного переработана загрузка трека в плеере, теперь обработка в модуле audio
  • Немного улучшен цикл
  • Изменены описания фильтров
  • Добавление функции toZero для трансформации в формат 00:05
  • Исправление точности поиска трека при отсутствии аудио
  • Добавление доп логов для отслеживания Garbage Collector
  • Изменение 1 debug лога на warn
  • Исправление прогресс бара

Full Changelog: 0.3.1...0.3.2

Более крутые штуки будут в 0.4.0!

0.3.1

Choose a tag to compare

@SNIPPIK SNIPPIK released this 30 Aug 08:31

🎉 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

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

0.3.0-rc4

Choose a tag to compare

@SNIPPIK SNIPPIK released this 01 Aug 12:29

🔄 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.js Colors — теперь используется собственный enum

📜 Полный Changelog: GitHub Diff

Hotfix RC 3.1

Choose a tag to compare

@SNIPPIK SNIPPIK released this 27 Jun 12:58

♻️ Hotfix RC 3.1 — Мелкие исправления и улучшения

🔧 Что исправлено:

  • 🧠 Opus: устранена проблема, связанная с декодированием или определением тегов потока.
  • ⏱️ Очередь (queue): waitReboot теперь корректно использует параметр timeout, вместо захардкоженного 20_000.
  • 🌐 Rest/API: упрощена и ускорена формула поиска, снижен overhead.
  • 🔄 Цикл обновлений: обновлён для повышения стабильности и предсказуемости выполнения.

🔍 Обновление RC 3.1 направлено на повышение стабильности, устранение мелких неточностей и полную подготовку к следующему крупному релизу.