Список изменений
Новые возможности, исправления и важные замечания к обновлению Remnawave Minishop.
Сначала — изменения ветки dev, затем опубликованные версии от новых к старым.
История собрана из релизов GitLab и релизов GitHub. Даты выпуска указаны в UTC по исходным релизам GitLab; дата появления зеркала в GitHub может быть позже. Теги без опубликованного релиза сюда не включены.
В разработке · dev
Заголовок раздела «В разработке · dev»Новых изменений продукта после v3.8.3 пока не зафиксировано. Сравнить с v3.8.3.
v3.8.3 — 2026-10-22
Заголовок раздела «v3.8.3 — 2026-10-22»Добавлено
Заголовок раздела «Добавлено»-
Другой способ оплаты при недоступности провайдера. Если создание счёта отклонено и платёжная ссылка не создана, Mini App распознаёт подтверждённый отказ провайдера в ответе HTTP 502 и открывает отдельное окно с предложением другого провайдера той же группы: карта и СБП — среди фиатных способов, криптовалюта — среди криптовалютных; Telegram использует то же ограничение. Сохраняется настроенный порядок; уже отказавшие провайдеры, включая другие их способы, повторно не предлагаются. Если подходящей альтернативы нет, пользователь возвращается к выбору оплаты. Тариф, период, дополнительные ресурсы, код активации, выбранный баланс и контакты сохраняются; новый платёж создаётся только после подтверждения пользователя. Недоступность провайдера не вызывает отдельного уведомления о неудачной оплате; диагностика сохраняется, резерв баланса освобождается. Ошибки заказа и неопределённый результат создания счёта сохраняют обычную обработку ошибки. (aa622b00, 38c80f16, 043e6d43)
-
Граф приглашений в веб-админке. Из раздела пользователей и карточек связанных пользователей и партнёров доступно полное дерево приглашений. Реферальные и партнёрские связи различаются цветом; поиск и фокус помогают найти аккаунт среди всех поколений. Компактные карточки показывают аватар, имя, Minishop ID, Telegram ID, username и email справа от аватара. Связи входят в карточки вертикально и поворачивают под прямым углом со скруглениями. Отдельные деревья и широкие ветки располагаются плотнее в несколько рядов; пропорции раскладки учитывают размер экрана. Аккаунты без связей скрыты. Фильтры «Все», «Рефералы», «Партнёры» учитываются в поиске и счётчике; перетаскивание графа работает плавно без пересчёта каждой карточки при движении и проходит в 1,5 раза большее расстояние за жест. После отпускания граф плавно замедляется; новый жест, выбор пользователя или изменение масштаба сразу останавливают инерцию. Системное уменьшение движения отключает её. Колёсико быстрее приближает и отдаляет граф вокруг курсора, сохраняя точность жеста двумя пальцами. (8b881c99, f5f41342, 3c345007)
-
Проверка перед триалом и очистка аккаунтов. Опциональная капча в Telegram и Mini App защищает запуск триала и создание счёта за него; по умолчанию она выключена. Параметры доступны в веб-админке; поиск по слову «капча» открывает переключатель в настройках пробного периода. Во время сохранения поля триала заблокированы, чтобы повторное изменение не терялось при обновлении. Два независимых правила очищают не начавшие триал аккаунты и завершённые триалы без подключений; автоочистка и оба правила выключены по умолчанию. Платежи, баланс, использование и связанные обязательства защищают аккаунт, а история использованного триала сохраняется после очистки. (#133, 565f4c83)
-
Тарифы в статистике и списке пользователей. Дашборд показывает распределение активных пользователей по тарифам с отдельными группами для триала и доступа без тарифа. Из группы можно перейти к соответствующей выборке пользователей. Компактная сетка подстраивает число колонок под ширину блока; до шести групп, включая пустые, видны сразу без раскрытия. На телефоне карточки идут в одну колонку, длинные названия переносятся без горизонтальной прокрутки. В списке доступны фильтр и столбец тарифа; фильтр сочетается с поиском и статусами, сохраняется в адресе страницы и учитывается в количестве результатов. Пользователь учитывается один раз: при пересечении действующих подписок для тарифного учёта приоритет имеет платная, затем триал, затем бесплатная подписка. Срок и статус по-прежнему описывают текущий доступ пользователя. Истёкшие подписки сохраняют сведения о последнем тарифе, а отключённые и удалённые тарифы остаются различимыми. (#61, 53fd0c0e, ad509a45)
-
Адресные ссылки на инструкции. Личный раздел
/installи публичная страница/s/<token>принимают выбор ОС и необязательный идентификатор приложения. Редакторы кнопок сообщений, рассылок, поддержки и меню предлагают эти параметры из текущей конфигурации инструкций. Старые ссылки сохраняют автоматический выбор, а неизвестные значения не мешают открыть инструкцию. Выбранная инструкция сохраняется при входе по почте, паролю и через OAuth. (#130, 27ba0b12) -
Режим обслуживания. В общих настройках админки можно временно остановить пользовательские действия в Telegram-боте и Mini App. Вместо ошибок пользователи видят просьбу повторить попытку позже; в Mini App доступна повторная проверка. Администраторы сохраняют доступ для отключения режима, а обработка уведомлений об уже созданных платежах продолжается. (#82, 7831348c)
Изменено
Заголовок раздела «Изменено»-
Поддержка в личном кабинете. Создание обращения вынесено на отдельный экран
/support/new: только тема и сообщение с возможностью вложения, без выбора категории и приоритета. Поле сообщения занимает свободную высоту, а на десктопе форма использует всю ширину рабочей области. Компактные шапка и поле ответа оставляют больше места для переписки; прокручивается сам диалог, ввод подстраивается под доступную высоту окна. Панель форматирования убрана, ссылки преобразуются автоматически; сотрудники подписаны «Поддержка». Черновик сохраняется при обновлении страницы и переходах назад и вперёд. (7cab5e79) -
Зависимости и безопасность образов. Pillow обновлён до 13.0.0 с исправлениями ошибок памяти и обработки недоверенных изображений. Обновлены совместимые Python- и npm-зависимости, инструменты проверок и закреплённые базовые образы Ubuntu 24.04, Node.js 24, nginx 1.30.6 и Docker 29.9.1. TypeScript 6, Pydantic 2.13 и SQLAlchemy 2.0 сохранены с учётом ограничений совместимости. Certifi обновлён до 2026.10.19 в приложении и встроенной копии pip 26.2.2: используется исправленный набор доверенных корневых сертификатов emSign. (02e6eb07, 73865ea9)
Исправлено
Заголовок раздела «Исправлено»-
Пакет трафика после пробной подписки. Покупка тарифа с оплатой за трафик доступна во время триала, в том числе без привязанного тарифа или с другим тарифом. Платёж сохраняет исходную подписку и её тариф: замена подписки или смена тарифа до применения оплаты по-прежнему блокирует начисление. (#146, 9d6eea23)
-
Рост журналов контейнеров. Новые Compose-установки, включая отдельные frontend/backend-узлы, локальные стенды и создаваемый установщиком Newt, сохраняют до трёх файлов журнала по 10 МБ на контейнер. Старые установки автоматически не изменяются. В документации описаны область действия лимита и отдельная настройка системного журнала сервера. (8b7d1bd7)
-
История платежей. Только текущий номер страницы выделяется акцентным цветом. Неудачные и отменённые операции остаются в истории со своим статусом; просроченные незавершённые ссылки оплаты по-прежнему скрыты. Описание пополнения баланса переводится на язык интерфейса в Mini App и админке. (#143, 5fcfd9ee)
-
Документы в настройках. Успешно загруженный список сохраняется при переходах между вкладками в текущем приложении: повторное открытие не заменяет документы строкой загрузки и не сдвигает нижние кнопки. Незавершённый запрос используется повторно, а после ошибки API следующая попытка остаётся доступной. (#141, ea2f9a7b)
-
Логотип OxaPay. В настройках и платёжных таблицах используется официальное изображение 232×232 пикселя; значок остаётся чётким на экранах высокой плотности. (#142, источник изображения, 3235e0b7)
-
Связи с панелью после смены ID. Фоновая синхронизация восстанавливает отсутствующую старую привязку по Telegram ID, подтверждённой почте или сохранённому имени панели, когда весь снимок однозначно указывает на один профиль. Сохраняются записи и история подписок, публичная ссылка, тариф, лимиты, согласие на автопродление и назначения сквадов. Покупка во время загрузки панели защищена от замены устаревшим состоянием. Смена панели, конфликт владельцев и неоднозначные совпадения блокируют автоматическое восстановление. Покупка после ручного удаления профиля создаёт его заново с условиями заказа, в том числе когда в базе остался UUID от панели до перехода на числовые ID. В этом случае отсутствие подтверждается свежим полным списком панели; ошибки API и неполная пагинация не разрешают создание дубля. Найденный профиль используется повторно. Оставшийся оплаченный срок учитывается, старые записи сохраняются в истории и после успешной выдачи перестают быть активными. (5b5fd9ca, 1a4edac2)
-
Обработка трафика без каталога тарифов. Отсутствующий файл тарифов больше не прерывает предварительное чтение премиум-трафика. Триал и сохранённые условия подарочной подписки продолжают учитываться независимо от каталога. (5b5fd9ca)
-
Поиск настроек веб-админки. Поиск учитывает весь каталог, включая параметры тарифов и оформления, и открывает соответствующий редактор. Настройки программ приглашений и партнёров ведут в собственные блоки; найденный параметр статуса серверов доступен и при выборе другого провайдера. (0886b506)
-
Первый владелец после установки. Мастер предлагает необязательные Telegram ID и email: первый аккаунт с подтверждённой совпавшей привязкой получает админку. Назначение одноразовое; без этих данных мастер показывает ручную команду по Minishop ID. SMTP можно настроить позже, способы входа описаны в документации. (#139, 3dcb6dfc)
-
Публикация документации. GitLab CI один раз собирает документацию для
devиmainна Node.js 24 и напрямую загружает готовые файлы в Pages. Дублирующий GitHub workflow удалён, автоматические сборки Pages отключены. Публикация больше не зависит от очереди Cloudflare и её callback. Успех требует проверки SHA, содержимого неизменяемой публикации и текущего production-адреса; устаревший pipeline не может перезаписать новую документацию. Домены и production-ветки сохраняются. Окружение сборки явно содержит Python 3.12+ и Pillow для примеров писем. (51691e3b, 83b784ef, 11eb5ddc, 26c87b86, d19e7d21, 93862f80, 5a2e3159, cbf6f3ff) -
Ручное проведение оплаченного заказа. Если изменился только срок той же подписки, оператор видит предупреждение и после проверки истории может отдельно подтвердить начисление сохранённой покупки. Смена подписки или тарифа и повреждённый контекст блокируют действие с понятной причиной. Автоматические проверки и защита от повторного начисления сохраняются; причина и автор ручного действия записываются. (#138, 546a8c81)
-
Прогресс рассылки до отправки. История сразу показывает плановое число адресатов и доставок для запланированных и ожидающих отправки рассылок. Подсчёт учитывает выбранные каналы, доступные адреса, настройки уведомлений и исключение заблокировавших бота пользователей. Перед отправкой аудитория пересчитывается по актуальным данным. (#137, e52e3a7f)
-
Привязка способов входа и окна Mini App. Переключатель эффектов темы скрывается при открытии модальных окон и возвращается после их закрытия. Коды из писем очищаются от разделителей при входе, привязке почты и подтверждении внешнего аккаунта. Конфликты привязки показывают локализованную причину; сообщение о защищённом аккаунте различает переносимый и текущий аккаунты. После Telegram OAuth привязка возвращает в «Безопасность»: успешный результат обновляет профиль и показывает подтверждение, ошибки видны в текущем аккаунте. Повреждённое или утраченное подтверждение отклоняется без изменения привязок. (#136, #140, b718d8ef, 0c90fc2a)
-
Аудитория скрытых тарифов. В группе «Конкретный тариф» при создании рассылки доступны все тарифы из каталога, включая скрытые с витрины. Публичный список тарифов сохраняет прежнюю видимость. (#135, b4439c75)
-
Компоновка админки. Предупреждения конфигурации отделены от карточек дашборда. В форме сообщения пользователю редактор и кнопки сообщения расположены рядом с каналами доставки и изображением на широком экране; на мобильном поля идут последовательно. Убраны лишняя вложенная рамка и растянутая кнопка отправки.
-
Автопродление в компактной карточке подписки. Кнопка с постоянной подписью «Автопродление» и видимым состоянием расположена слева от кнопки «Баланс». Управление и сумма остаются читаемыми на мобильных устройствах и десктопе; ожидание ответа блокирует повторное переключение. (#134, 10958e88)
-
Безопаснее диагностика браузерных тестов. Некорректное значение
PORTбольше не попадает в текст ошибки и журналы запуска; сообщение об успешном выборе порта использует только проверенный числовой результат. (bc996a4d)
Производительность
Заголовок раздела «Производительность»-
Быстрее локальные проверки. Vitest использует до четырёх worker с сохранением изоляции файлов; лимит можно изменить через
--maxWorkers. Контрактные тесты повторно используют разбор исходников внутри одного модуля, а проверки периодов уведомлений создают только нужные таблицы в отдельной базе для каждого сценария. Браузерный тестовый сервер передаёт свежей сборке полный закреплённый снимок конфигурации инструкций, исключая зависимость E2E от доступности GitHub. Обычная сборка документации сохраняет загрузку из сети с ограничением ожидания. Redis-тесты гарантированно освобождают соединения при ошибке и проверяют потерю владельца по отмене со стороны renewal, без гонки с истечением подставленного ключа. Состав сценариев и обязательные гейты сохранены. (817feec0) -
Компактнее Docker-образы. Установка Python-зависимостей не сохраняет байткод, запись которого уже отключена в контейнерах. Загрузки повторно используют кеш BuildKit, а Git-история для определения версии подключается временно и не занимает отдельный слой сборки. Локальные кеши проверок, старые сжатые части Mini App и source maps исключены из контекста сборки. (37fe1194)
При обновлении
Заголовок раздела «При обновлении»-
Применяется миграция
0107_cleaned_trial_history, сохраняющая историю использованных триалов и намерений очистки. Для автоматической очистки должен работать штатный worker. (565f4c83) -
Капча и очистка по умолчанию выключены. Капча требует доступного Redis и
TRIAL_CAPTCHA_ENABLED=True. Очистка включается черезUNUSED_ACCOUNTS_CLEANUP_ENABLEDи выбранные правилаUNUSED_ACCOUNTS_NO_TRIAL_ENABLED/UNUSED_ACCOUNTS_UNUSED_TRIAL_ENABLED. Сроки задаются черезUNUSED_ACCOUNTS_NO_TRIAL_DAYSиUNUSED_ACCOUNTS_UNUSED_TRIAL_DAYS, по умолчанию — 30 дней. Правила распространяются и на подходящие существующие аккаунты. (565f4c83) -
Режим обслуживания управляется через
MAINTENANCE_MODE_ENABLEDи веб-админку без перезапуска. Для первого владельца доступны необязательныеBOOTSTRAP_OWNER_TELEGRAM_IDиBOOTSTRAP_OWNER_EMAIL; существующие назначения владельца, включая отозванные, исключают автоматическую выдачу прав. (7831348c, 3dcb6dfc) -
Для существующих установок ротацию журналов нужно перенести из обновлённого Compose-примера и пересоздать соответствующие контейнеры. Системный журнал сервера настраивается отдельно. (8b7d1bd7)
v3.8.2 — 2026-10-14
Заголовок раздела «v3.8.2 — 2026-10-14»Добавлены Anore, CisPay и Cryptomus, автопродление с баланса, история платежей, QR-вход и ручное слияние аккаунтов. Расширены поддержка, плагины и начисления периода по приглашению; улучшены тарифы, документы и синхронизация с Remnawave.
Добавлено
Заголовок раздела «Добавлено»-
Надёжные обработчики поддержки. Внешние интеграции получают ограниченный контекст владельца выбранного обращения, события новых сообщений после сохранения и постраничную сверку изменений. Условная отправка проверяет версию диалога, статус и назначенного оператора под общей блокировкой; повтор задания возвращает исходный ответ. Автоматический ответ имеет отдельный источник и подпись, сохраняет непрочитанные сообщения для оператора. Контекст включает статусы последних платежей, подключение, устройства, ОС, приложение и последний сервер с указанием источника и неизвестных значений. Интеграции получают собственные ссылки подписки и загрузки приложений из той же конфигурации, что пользовательская инструкция, включая назначение внешнему скваду. Название последнего сервера берётся из каталога узлов; ошибка отдельного чтения не скрывает доступные сведения. Ответы поддерживают обычные кнопки; повтор задания проверяет и текст, и кнопки. Панель обращения позволяет вставить готовый текст с кнопками одним действием, сохраняя редактор при ошибке или смене тикета. (64ff99b6, eaaf506d, 74fcf09f)
-
Лимиты тарифов в Mini App. При покупке подписки, подарка и смене тарифа количество устройств, обычный и премиум-трафик показаны компактными бейджами в строке с названием; описание остаётся ниже. Неизвестный лимит, безлимит и отсутствие премиум-трафика различаются. Пакеты трафика показывают диапазон доступных объёмов; оформление использует общие элементы и CSS-переменные темы. (#104) (08ffdb12)
-
События плагинов в логах пользователя. Публичный
PluginContext.emit_event()сохраняет источникplugin:<имя>:<событие>; в карточке пользователя есть отдельная отметка «Плагин». Подписчики получают прежний payload, который не копируется в журнал. (#128) (1e72cc1c) -
Cryptomus. Криптосчета с ценой в RUB или USD доступны в Telegram и Web App. Отдельный способ автоплатежа поддерживает недельный, месячный и трёхмесячный план провайдера; отмена останавливает план у Cryptomus. Подписи, неполная оплата и повторные уведомления проверяются до выдачи покупки. P2P СБП не включён: Merchant API не описывает такой метод. Настройки собраны в одной карточке провайдера с отдельными группами разовой оплаты и автоплатежей. (#95) (b27a7465) (2aba04c2)
-
CisPay. Разовые платежи картой, СБП и криптовалютой; отдельные автоплатежи картой и СБП в RUB на 7–360 дней, с подтверждённой отменой и восстановлением оплаченных циклов по истории провайдера. Иконки и настройки доступны в админке: одна карточка провайдера содержит общие настройки, разовую оплату и отдельные группы автоплатежей картой и СБП без повторяющихся переключателей. (#94) (650987c9)
-
Anore. Разовые счета в RUB и USD доступны в Telegram и Web App; касса, методы оплаты и оформление настраиваются в админке. Подписанные уведомления и сверка статуса проверяют исходную сумму и валюту, повторная доставка не начисляет покупку повторно. Рекуррентные списания API провайдера не описывает. (#107) (880bd90d)
-
Учёт активации подарка по приглашению. Настройка
REFERRAL_GIFT_ACTIVATION_ENABLEDпо умолчанию включена. Успешная активация начисляет период получателю и пригласившему по существующей связи и сохранённым условиям подарка. При ограничении первым событием личная покупка и учитываемая активация занимают одно общее место; повторный запрос не удваивает срок. Покупка подарка, открытие ссылки и старые активации не создают начислений. (#108) (59a409c9) -
История платежей в личном кабинете и Telegram. Раздел доступен из настроек, бокового меню на десктопе и бот-меню. Кнопка перехода из настроек занимает всю ширину контейнера на десктопе. Пользователь видит собственные покупки с постраничной навигацией, обработку платежа провайдером и ожидание начисления. Неоплаченные просроченные ссылки скрыты; действующую ссылку можно открыть нажатием на статус «Ожидает оплаты». При перелистывании и обновлении загрузка показана скелетонами внутри таблицы; высота списка сохраняется для короткой страницы, пустого ответа и ошибки. Пояснения к статусам появляются при наведении или нажатии. Редакторы сообщений и кнопок меню предлагают прямой переход в раздел. (#55, #131) (9b6d7044) (4962b3cb) (51221a21)
-
QR подарочных ссылок и экспорт изображения. Подарки открывают общий QR-диалог; изображение текущей ссылки можно скачать в PNG или скопировать при поддержке буфера обмена. Отказ копирования показывает понятное сообщение и сохраняет скачивание. В инструкции подключения QR отцентрирован; компактные кнопки стоят справа и не влияют на положение изображения. (#123, #124) (687ba6dd, c0519541)
-
Экраны и шорткоды плагинов в сообщениях. Все редакторы кнопок предлагают клиентские страницы активных расширений. Плагины могут добавлять локализованные шорткоды с пакетной загрузкой значений и безопасной подстановкой в сообщения. (#126) (f055b7db)
-
Ручное слияние аккаунтов в админке. Из блока опасных действий администратор находит второй аккаунт через поиск пользователей, сравнивает компактные карточки со свежими способами входа и ограничениями и подтверждает сохраняемый ID. Подписки и совместимые способы входа переносятся по общим правилам; конфликты, блокировки и история административных ролей запрещают действие, результат записывается в журнал. Общие использованные коды активации не мешают объединению: обе записи истории и начисленные периоды сохраняются, повторное применение кода не разрешается. Событие объединения отправляется только после успешного сохранения транзакции; откат не запускает перенос данных расширений. (#96) (c0471f4b)
-
Автопродление с баланса. Настройки баланса перенесены в платёжные системы отдельной карточкой с переходом в партнёрскую программу.
USER_BALANCE_RECURRING_ENABLED, выключенный по умолчанию, позволяет пользователю включить автопродление в карточке оплаты, когда выбранный личный или партнёрский баланс покрывает весь период с гибкими лимитами. Продления списываются только из выбранного источника; смешанная оплата, подарки и отдельные докупки не становятся рекуррентными. Докупка ресурсов блокируется при включённом автопродлении с баланса. (291d9e67) -
Начисление периода за приглашение в составе триала. Настройка
REFERRAL_WELCOME_BONUS_ADDS_TO_TRIALвместо отдельной подписки при регистрации по приглашению добавляет положенные дни к бесплатному пробному периоду. Бот сообщает общий срок при регистрации, Web App показывает его перед активацией; начисление отмечается использованным при выдаче триала. В веб-админке переключатель доступен в настройках реферальной программы, рядом с числом дней приветственного начисления; изменение учитывается общим сохранением и может быть сброшено до сохранения. Поиск по настройкам находит каждую настройку реферальной программы по названию или имени переменной и подсвечивает её; названия в поиске совпадают с подписями полей на русском и английском, включая число дней приветственного начисления. Переход прокручивает раздел и к нижним полям: нажатие результата не отменяет собственную прокрутку. По умолчанию настройка выключена. Правила привязки Telegram сохраняются; покупка до активации триала не начисляет эти дни. (ac52973f) (6ee74f80, e7a00a6f, 181c82d1) -
Вход по QR-коду. При включённом
QR_LOGIN_ENABLEDновое устройство показывает код магазина, а устройство с активной сессией сканирует его через Telegram или камеру браузера и подтверждает вход числом с экрана нового устройства. Код одноразовый, хранится как хеш; сессию получает только браузер, начавший вход. Три неверных числа отклоняют запрос. В настройках показан публичный адрес магазина. Камера разрешена только для самого магазина при включённом способе входа; закрытие окна отменяет запрос, запоздавшие ответы не меняют повторно открытый диалог. Кнопка сканирования в настройках занимает всю ширину контейнера и на десктопе. (e167842b, 992e6168, 83c8a3af)
Изменено
Заголовок раздела «Изменено»-
Зависимости и сборка. Обновлены совместимые Python-пакеты, библиотеки веб-интерфейса и документации, инструменты проверки кода. Lock-файлы пересозданы штатными генераторами; базовые образы Node и Docker CLI закреплены по актуальным неизменяемым digest. Проверка подписанных артефактов использует исправленный Cosign 3.1.3 с проверкой контрольной суммы исполняемого файла. Сканирование образов учитывает длительную первичную загрузку базы уязвимостей. (3cc6b483)
-
Remnawave Panel 3.4.5. Версия добавлена в сертифицированную матрицу API и стала текущим пресетом dev-стенда. Проверяются чтение и запись на живой панели, обновление
2.8.1 → 3.4.5на той же базе и сохранение подписок после синхронизации; предыдущие сертифицированные версии остаются в матрице. Изменений настроек Core для обновления панели не требуется. (c5f384ce) (изменения панели) -
Реферальные условия тарифов. Одинаковые условия нескольких тарифов показаны одним набором периодов с перечислением применимых тарифов. Разные длительности, начисления периода и ограничения доступа сохраняют отдельные сводки. (#125) (301144ca)
-
Приглашения и пробный период. После окончания подписки, выданной за регистрацию по приглашению, доступен обычный триал. Покупка во время этой подписки и подписки, выданные после неё, по-прежнему закрывают триал; действующая подписка его блокирует. (ac52973f)
Исправлено
Заголовок раздела «Исправлено»-
В стандартный список разрешённых IP Wata добавлен
51.250.117.109, чтобы уведомления с этого адреса не отклонялись с HTTP 403. Проверка подписи сохранена. (04b0ca5e) -
Автообъединение записей панели по Telegram ID сохраняет исходный вручную созданный аккаунт и его имя. Подписка Minishop переносится с тарифом, лимитами, историей, согласием на продление и действующей публичной ссылкой; оплаченные сроки объединяются. Повтор после частичного сбоя не удваивает срок и учитывает новые покупки или отмену. Неоднозначные связи и записи другого локального владельца требуют ручного разбора. (#132) (f21223f5)
-
Форма плагинов различает установку нового пакета и обновление существующего. При обновлении она показывает сохранение включённого или выключенного состояния; название операции и кнопка подтверждения больше не обещают выключенную установку. (#129) (431e829c)
-
На главной странице документации баннер, заголовок и кнопки центрированы на мобильных устройствах и десктопе. Баннер помещается в ширину страницы, а кнопки расположены компактнее и переносятся без лишних отступов. (4d5740c5)
-
Приватная ссылка скрытого тарифа подтверждает цену и позволяет создать платёж при первой покупке и переходе с триала, включая выбранные дополнительные устройства. Код доступа учитывается при повторном расчёте корзины; без действительного кода неназначенный скрытый тариф остаётся недоступным. (#127) (d3c83fe0)
-
Публичный шлюз подписки работает с внутренним HTTP endpoint Remnawave Panel: служебные proxy-заголовки формируются из доверенного адреса клиента, а профиль, HWID и статусы отказа панели сохраняются. Оба примера внешнего Nginx принимают крупные заголовки настроек клиента с запасом под заголовки магазина. (681a9d9d)
-
Полоса устройств различает доступный конечный лимит, его достижение или превышение, безлимит и ожидание данных. Предупреждение определяется точным количеством устройств, сопровождается доступной подписью и обновляется после отключения или обновления списка; округление заполнения до 100% само по себе не означает исчерпания лимита. (3a68326f)
-
Список документов в настройках сначала показывает ожидание ответа API. Иконки соответствуют роли документа; порядок и ссылки остаются стабильными. Старые ссылки политики и соглашения появляются после определения отсутствия соответствующих документов, включая пустой ответ и недоступность старого API. (17a70235)
-
После перехода из документа в кабинет Telegram SDK восстанавливается из сохранённого контекста запуска, даже если query/hash уже отсутствуют. Документы и кабинет используют общий lifecycle fullscreen и безопасных отступов с очисткой обработчиков и поддержкой поздней загрузки SDK. Обычный браузер не получает Telegram-отступы из повреждённых данных; подписанные параметры авторизации не переносятся в публичные ссылки документов. (f9bf23fd)
-
Документы без опубликованных пунктов бокового меню сохраняют всю доступную ширину при переходе от мобильной к десктопной разметке. Колонка навигации появляется только при наличии меню; ограничение ширины текста для чтения сохранено. (807d2096)
-
Проверка SVG в импорте тем демо разбирает XML без удаления комментариев: некорректная разметка, чужие пространства имён и закодированные внешние ссылки отклоняются. Параметры возврата OAuth кодируются как данные запроса; HTTPS-клиенты явно требуют TLS 1.2 или новее. Проверка эмодзи использует точные диапазоны Unicode без неоднозначных диапазонов регулярного выражения. (ce1cf256)
-
Адреса Xray Checker, Uptime Kuma, SMTP и сервиса курсов PayKilla, сохранённые администратором, разрешают подключения к точному внутреннему хосту и порту без перезапуска. Разрешения следуют текущим настройкам; мониторинг обновляет соединения, а смена URL курсов исключает использование кэша прежнего источника. Отдельный worker подхватывает сохранённые и сброшенные настройки SMTP и платёжных провайдеров из базы. (5fe9d6b8)
Производительность
Заголовок раздела «Производительность»- Зависимости локальных проверок переиспользуются вне рабочей копии. Linux-окружение тестов отделено от исходников и сборки фронтенда, удерживается без фонового процесса и использует проверенный образ Docker Hub по неизменяемому digest. Очистка старых окружений затрагивает только их собственные не запущенные keeper-контейнеры. Браузерные проверки CI разделены на два прогона; полный локальный стенд корректно исключает отключённые необязательные зависимости. (1f2b3782, a507fd4b)
При обновлении
Заголовок раздела «При обновлении»-
Автоплатежи CisPay включаются через
CISPAY_SUBSCRIPTION_CARD_ENABLEDиCISPAY_SUBSCRIPTION_SBP_ENABLED; провайдер должен разрешить их магазину. -
Миграция
0105сохраняет владельца и исходную покупку рекуррентного плана. Автоплатежи Cryptomus включаются отдельно черезCRYPTOMUS_SUBSCRIPTION_ENABLED; расписание и списания ведёт провайдер, подтверждение и начисление — штатный worker. -
Миграция
0102сохраняет согласие на автопродление с баланса. РазрешениеUSER_BALANCE_RECURRING_ENABLEDвключается отдельно в настройках платёжных систем; для автоматических списаний должен работать штатный worker. -
Приглашённые пользователи после окончания подписки, выданной за регистрацию, получают доступ к пробному периоду без ручного сброса триала.
Контрибьютор: @wormy09 (Git-имена wormy и wormy09) — QR-вход, адрес магазина при входе, изменения пробного периода и поиск настроек (f455c1fc, e167842b, ac52973f, ace9b9b5, e7a00a6f).
v3.8.1 — 2026-10-06
Заголовок раздела «v3.8.1 — 2026-10-06»Добавлены telegram custom emoji, цветные кнопки в телеграм бот-меню, расширена рекламная аналитика. Улучшены перенос резервных копий между серверами, управление аккаунтами пользователей, платежи, учёт трафика, уведомления и синхронизация с Remnawave; усилена безопасность.
Изменения
Заголовок раздела «Изменения»- Добавлены настройки оформления Telegram и библиотека эмодзи. Цвета кнопок, custom emoji и предпросмотр меню доступны в админке. Эмодзи поддерживаются в рассылках, письмах и обращениях поддержки. (a97c04e4, 1b192d57, df59e047, 148a5d94)
- Расширена рекламная аналитика. Кампании объединяют ссылки, UTM, контакты, расходы и источники заказов. Добавлены отчёты по периодам и когортам, импорт статистики с предпросмотром, CSV-выгрузки и кабинет рекламодателя с командой
/my_ads. (4b05c59f, 75cc04e5) - Расширен и проверен перенос бэкапов между серверами через админку. Архив включает установленные плагины и пользовательские темы; удалённые пакеты и временные файлы исключены. Большие архивы отправляются в Telegram частями и собираются при восстановлении. Ручное создание работает и без Telegram. (874f14d6, 1566e94e, 144e467f)
- Улучшено управление аккаунтами и устройствами. Карточка пользователя открывается в основной области админки вместо модалки и теперь лучше адаптирована для мобильных экранов. Пользователи теперь могут переименовывать устройства. Объединение аккаунтов разных провайдеров подтверждается повторным входом, passkey или email-кодом и больше не требует обязательного SMTP. (cc10b4e3, d2684d42, 33762c9f)
- Улучшена синхронизация с Remnawave. Перепривязка после смены идентификаторов панели сохраняет подписки, сроки и историю; неполные привязки восстанавливаются. Дубли с одинаковым Telegram ID объединяются. Подтверждённое удаление профиля больше не блокирует выдачу оплаченной подписки. Адреса API и браузерной панели разделены. (6b43d46f, a64bc651, 2a1b9bd7, 312541a8, 331c1564)
- Улучшены уведомления и перевыпуск доступа. Уведомления учитывают текущий срок подписки и настройки каналов без перезапуска worker; временные ошибки доставки повторяются отдельно по каналам. Перевыпуск восстанавливается после потери ответа без повторной смены ссылки. Шлюз корректно передаёт заголовки клиента и скрывает токены в журналах. (a19c59d7, 320c7d2e, f887ec3e)
- Исправлены сценарии оплаты. Оплаченные заказы YooKassa с устаревшим расчётом переходят на проверку без бесконечных повторов. При вводе кода активации автоматически выбирается совместимый способ оплаты; продление открывается на действующем тарифе. Платёжные интеграции используют настроенный оператором адрес API. (dd397b4d, ed8d24e6, 8ec08e9c, dd20fb52)
- Исправлен учёт трафика. Покупка тарифа после триала сбрасывает использованный пробный трафик. Переносимые пакеты учитываются при каждом сбросе счётчика без повторного списания. Главная показывает отдельный лимит premium-трафика триала; название блока настраивается. (914604e1, e328463c, bd7c004c, 34143c04)
- Расширены приглашения и связанные начисления. Добавлены статистика приглашённых, начисленного периода и QR-коды ссылок. Начисления сохраняются в очереди и повторяются независимо для участников. Первая покупка учитывает только подходящие подписки; ограничения партнёрской программы применяются и к существующим связям. Действительная подарочная ссылка разрешает регистрацию в режиме только по приглашению. (e5d2495b, 27217858, 118a0f67, 269b1023, 2cf966e6, 7964b5e5)
- Улучшены темы и инструкции подключения. Администратор может отдельно разрешить эффекты темы в пользовательском Mini App. Расширена поддержка безопасного SVG. После ошибки загрузки инструкции можно получить повторно; настройка анимации цен применяется ко всем значениям checkout. (93b0cd50, 8e8c2ac3, 87adec45, c13440b3)
- Усилена безопасность Mini App и интеграций. Добавлены атомарные квоты запросов, проверка browser origin и точное доверие адресам прокси. Защищены владельцы от административной блокировки, платёжные ключи от отправки на посторонний origin, SMTP-подключения и CSV-экспорт от выполнения формул. (f530ca1b, 7689c39e, 29a44312, 82735247, d7d5cb3c, c26ab8a8, bb2a88fe)
- Обновлен функционал плагинов, зависимости и документация. Git-плагины сохраняют выбранную ветку при проверке обновлений; ленивые импорты уменьшают память launcher. Обновлены зависимости и инструменты сборки, закреплены исправленные версии пакетов. Добавлен каталог Awesome Minishop и расширены руководства. (1c1c5f8e, 933bad98, 8f90cda4, bc337981, 5e741824, e3b88fa9)
При обновлении
Заголовок раздела «При обновлении»- Добавлены миграции
0094–0100для начислений, перевыпуска доступа, названий устройств, рекламной аналитики, учёта трафика и уведомлений. Для фоновой доставки и повторов должен работать штатный worker. (118a0f67, a19c59d7) - Если API панели доступен только внутри Docker, задайте браузерный адрес отдельно через
PANEL_PUBLIC_URL. Пустое значение сохраняет прежнее поведение ссылок. (331c1564) - Для собственного reverse proxy укажите точный IP/CIDR или
host:имя-сервисавTRUSTED_PROXIES. Старое доверие всем частным сетям замените точными адресами; стандартные Docker-прокси поддерживаются без явной настройки. (29a44312) - Исторические начисления и неизвестный расход трафика не восстанавливаются предположительно. Статистика начислений начинается с новой миграции; восстановление нескольких пропущенных сбросов требует полной истории панели. Историю уведомлений вручную очищать не нужно. (e5d2495b, e328463c, a19c59d7)
Контрибьюторы: wormy09 (e328463c, d2684d42, e5d2495b, 27217858) и Roycce (75cc04e5, 933bad98). Автообновление списка временных email-доменов — github-actions[bot] (96a1466e).
v3.8.0 — 2026-09-30
Заголовок раздела «v3.8.0 — 2026-09-30»Добавлены независимые от Telegram аккаунты, установка подписанных плагинов, публичный шлюз подписки, информационные страницы и JavaScript-эффекты тем. Улучшены платежи, уведомления, админка и производительность.
Добавлено
Заголовок раздела «Добавлено»- Аккаунты без Telegram. Core может работать как браузерный магазин с email-входом, независимым Minishop ID и необязательной привязкой Telegram. Права владельца и администраторов управляются централизованно; публичные ID используются в карточках, связанных записях и уведомлениях, существующие связи с панелью сохраняются при миграции. (e060e2e9, ca46af6d, 2a045291)
- Установка плагинов из подписанных ZIP-пакетов. Менеджер проверяет подпись, минимальную версию Core и необходимые возможности API, показывает настройки и состояние пакетов, поддерживает удаление активных пакетов и подтверждает изменения после перезапуска процессов. (ea82a92f, d97a9358, a498317b, 98382cd6, 5f283037)
- Расширения пользовательских и административных разделов. Плагины могут добавлять страницы, карточки, инструкции подключения, внешние заказы с выдачей после оплаты, устойчивые фоновые задачи, журналируемые права и данные для резервного копирования. Существующие разделы допускают композицию расширений; учитываются скрытые разделы, прямые ссылки, runtime-ассеты и обновление установленных расширений. (33121363, af122b9d, bc8ca963, f1f91d94)
- Переводы плагинов в админке. Строки плагинов вынесены из общих групп в отдельный подраздел с группой для каждого плагина; плагин может задать дополнительные вложенные группы своих строк с переводимыми названиями. (1b5b3697, 0d16c02a)
- Публичный шлюз подписки. Ссылки подключения можно выдавать через домен магазина; режим ссылки доступен в админке, шлюз включён по умолчанию и принимает увеличенные заголовки ответов подписки. (0c046b2c, 8e60f1f9, 4969be67, d3e63b62)
- Аналитика кодов активации. Добавлены поиск, фильтры статуса и области применения, прямые ссылки на детали и выручка подтверждённых платежей по валютам в истории активаций. (caddef66)
- Информационные страницы. Добавлены управляемые страницы с Markdown и открытием документов внутри Mini App; редактирование сохраняет форматирование и состояние документов. Хранилище документов блокирует конкурентные изменения также при запуске Core на Windows. (d94c943a, fc816ca6, 8ff40829, de94f444)
- JavaScript-эффекты тем. Пакеты оформления могут содержать эффекты; расширены их настройки и управление темами, включая сохранение черновика при совместной записи настроек внешнего вида. Живой предпросмотр эффекта в библиотеке показывает реальный макет главной с наложенным адаптером, а открытый предпросмотр темы в Mini App сразу запускает эффект предпросматриваемой темы — без перезапуска сервиса. (8c311f9a, b4f02e65, a8b786c9)
- Диагностика рассылок. В истории видны подробности недоставленных сообщений; немедленная рассылка ставится в очередь вне административного HTTP-запроса. (355a7532, ffcb90d2, bb53fb70)
Изменено
Заголовок раздела «Изменено»- Зависимости. Обновлены Python- и npm-пакеты, а frontend переведён на
стабильную ветку nginx 1.30. В сборке веб-интерфейса и сайта документации
устранены известные уязвимости в транзитивных пакетах
brace-expansionиundici. (bd153166, ea6c8830, 2b975207) - Регистрация passkey. При поддержке устройства предпочтение отдаётся EdDSA; проверка отклоняет повреждённые данные CBOR и некорректные форматы аттестации. (e060e2e9)
- Вход и сессии. Способы входа адаптируются к ширине экрана: широкие кнопки располагаются перед компактными. Срок сессии доступен в настройках и по умолчанию составляет 30 дней. (88992d4d, 4a9aee9a, e7f82c1a)
- Карточка пользователя. Упрощён мобильный вид, доступен переход в профиль панели; изменения тарифа проверяются, ошибки действий показываются явно, а блокировка аккаунта синхронизируется с доступом к VPN в панели. (5cd0838c, da0e5772, e0e3d315)
- Уведомления и поддержка. Унифицированы данные аккаунтов и переходы из журнала, темы обращений показываются в уведомлениях и диалогах, оплаченные повышения тарифа отражаются в платёжных уведомлениях. Кнопка карточки пользователя в журнале открывает нужный профиль в Telegram Mini App, в том числе из рейтингов, и не создаёт ссылку с шаблонным именем бота. Заблокированным пользователям автоматические уведомления больше не отправляются ни в Telegram, ни по email. (5c4636df, e193e7fc, a78a8d49, bc0f1305, 14eebebd)
Исправлено
Заголовок раздела «Исправлено»- Главная страница личного кабинета. Размер логотипа ограничен доступной областью, поэтому нижний блок с подпиской и действиями остаётся у нижнего края без лишней прокрутки. (a2282f31)
- Синхронизация с панелью. Новые пользователи панели с Telegram ID или email появляются в магазине вместе с подписками без возврата на стабильную версию. Email из панели остаётся неподтверждённым до входа с кодом; совпадение с другим локальным аккаунтом требует ручной проверки. (3e47e2b6)
- Партнёрские ссылки. При регистрации через Google, Yandex и Discord код из веб-ссылки сохраняется при переходе к провайдеру и учитывается при создании аккаунта. В уведомлениях о новой регистрации через Telegram, email и внешние сервисы теперь указывается пригласивший партнёр. (1e329cf8)
- Журнал событий. Кнопка карточки пользователя в групповых уведомлениях открывает личный чат с ботом с адресным переходом к карточке; если имя бота неизвестно, используется веб-ссылка. (14eebebd)
- Объединение аккаунтов. Если Telegram уже привязан к другому аккаунту, после подтверждения профиля открывается объединение с кодом из почты. Оно работает в браузере и Telegram Mini App; подписки объединяются только после подтверждения обеих сторон. (21d83ab7)
- Оплата и рекуррентные подписки. Поддержаны фиксированные периоды оплаты; для пополнения скрыты рекуррентные способы, а при оплате балансом выбираются совместимые методы. Отмена Tribute Creator ведёт в бота. Администратор может сменить тариф при активном автопродлении Tribute: Shop Order отменяется через API, для Creator локальное автопродление отключается после отмены администратором в Tribute. Пользователь может подтвердить отмену Creator в диалоге Mini App и сразу отключить локальное автопродление без изменения оплаченного срока. (523e3646, 0ac2488a, 0de2db99, 1d9e6ff0, 62bf0f41)
- Mini App на мобильных устройствах. Диалоги, выпадающие списки и другие наложения ограничены безопасной областью Telegram; исправлены компоновка поддержки и редактора, Telegram-ссылки и административные превью. (81e7a765, 317b72c7, 29790339, e027c982)
- Инструкции подключения. Happ и INCY получают корректные зашифрованные ссылки в кнопках приложений; QR-код и копирование используют HTTP-ссылку подписки независимо от выбора приложения и доступны без кнопки подключения. Сбой загрузки экрана допускает восстановление. Начальный профиль использует публичный URL панели. (44054551, 01d6661b, f11955cc, 04841434)
- Идентификация и тарифы. Сохраняются неразрешённые связи старых аккаунтов с панелью и числовые идентификаторы пользователей в вебхуках Torrent Blocker. Интерфейс тарифов больше не обещает сброс трафика, который панель не выполнит. (f9fbb93c, 9192b420, be3cab79)
- Email-рассылки. Доступность доставки определяется готовностью SMTP независимо от включённости входа по email. (bb53fb70)
Производительность
Заголовок раздела «Производительность»- Ускорены первый вход в админку, загрузка переводов и представлений плагинов, работа слайдеров. Web App ожидает bootstrap-данные и повторяет загрузку при запуске API; интерфейс админки появляется после готовности переводов. Большие группы переводов раскрываются порциями, а неизменённый файл переводов не сверяется с базой при каждом запросе. (0b2c5f00, e2b60313, 0d16c02a, e85b6812)
- Список бэкапов загружается по метаданным файлов без проверки содержимого всех ZIP; состав выбранного архива проверяется отдельно. Открытие списка больше не задерживает запросы остальных разделов админки. (d67a2d85)
- Локальный Linux-прогон backend-тестов на Windows использует копию исходников в QA-образе вместо медленного bind mount; зависимости устанавливаются при сборке образа и кешируются. (de94f444)
Документация
Заголовок раздела «Документация»- Добавлен единый список изменений с разделом dev на сайте документации, ссылкой в шапке и отдельным пунктом внизу сайдбара. Демо поддерживает прямые адреса всех административных разделов и загрузку плагинов. (859a248e, 93c7ad93, c0bc1a06, f5594777)
При обновлении
Заголовок раздела «При обновлении»- Добавлены миграции
0088–0093для ссылок инструкций, данных расширений и независимой идентичности аккаунтов, включая последовательность ID и происхождение связи с панелью. (0c046b2c, 33121363, e060e2e9) - Для автономной работы используется
TELEGRAM_ENABLED=False; требуются настроенные email-вход, SMTP и публичный адрес приложения. Первый владелец назначается доверенной командойbootstrap_owner.py, затем роли управляются в общих настройках админки. См. работу без Telegram. (e060e2e9) - Перед установкой расширений проверьте требования пакета к версии и возможностям Core. Дождитесь подтверждения состояния после перезапуска; см. контракт плагинов. (ea82a92f, a498317b)
- JavaScript-эффекты тем по умолчанию выключены и требуют отдельного разрешения администратора. Это доверенный код страницы; разрешение не переносится при экспорте и сбрасывается при восстановлении резервной копии. См. модель доверия эффектов. (8c311f9a)
v3.7.2 — 2026-09-21
Заголовок раздела «v3.7.2 — 2026-09-21»Добавлены рекуррентные платежи Wata, расширены темы и настройки интерфейса, управление входом и уведомлениями. Ускорены Web App и админка, исправлены сценарии платежей, миграции и доставки архивов.
Изменения
Заголовок раздела «Изменения»- Добавлены рекуррентные платежи Wata с расписанием на стороне провайдера: отдельный способ оплаты, фиксация условий подписки, обработка повторных списаний, замены и завершения подписки. (05ae2e3f)
- Расширена система тем: управление видимостью восьми элементов главной страницы, настраиваемый разделитель метаданных, режимы списка начислений за приглашения и безопасный импорт SVG. Запись дескрипторов темы защищена от конкурентных изменений. (8f555750, 8793057b, 834d63d5, c7c03157, 408171a9)
- Расширены настройки входа и пробного периода: для каждого провайдера можно отдельно включить рекомендацию привязки, а активацию пробного периода — ограничить наличием Telegram или внешней OAuth-идентичности (теперь любой провайдер подходит, а не только телеграм). (08110e21, 73be790c)
- Добавлены настройки UX параметров тарифа в checkout: анимацию числовых значений можно отключить, а редактор параметров — открывать сразу при входе. (5d5d6a71)
- Расширены пользовательские кнопки и рассылки: видимость кнопок отдельно задаётся для меню Telegram-бота, Telegram Mini App и браузера, а URL кнопок рассылки поддерживают персонализацию для каждого получателя. (51e2200d, 7ab91e92)
- Добавлено управление доступом к пользовательским настройкам уведомлений и отдельный переключатель Telegram/log-уведомлений администраторам о новых тикетах поддержки и ответах. (d059cb4c, 87b72e8f)
- Ускорены Web App и админка: добавлены пакетное чтение прав и тарифов, ограниченные транзакции фоновой синхронизации, версионированные кеши, объединение параллельных запросов и кеширование переводов и настроек. (d692f179, 82c757e9, 82c17b17)
- Добавлена доставка крупных архивов через собственный Telegram Local Bot API с общей настройкой для backend и worker. (13c0118f)
- Исправлены платежные сценарии: RollyPay принимает платежи без метаданных трафика и использует укороченные callback-идентификаторы, сохраняется flow приватных тарифов через Telegram invoice, а возврат платежа корректно откатывает связанные пополнения трафика. (c00b4bbf, 065e302e, 8e376168, c201881a)
- Исправлены Mini App и админка: история ping не учитывает кешированные проверки, компактная карточка показывает дату сброса трафика, checkout не оставляет устаревший баннер подарка, email-only аккаунтам не показываются недоступные действия, а сброс пользователя завершает активный пробный период. Обновление аватаров и переходы к связанным клиентам теперь работают сразу. (9aa04ef9, b31602c7, 9dbadf53, 0e2dbf5a, 36912875, 5d88dd32, 35fd9ad5)
- Усилены установщик и legacy-миграция: ввод мастера изолирован от Compose, preflight и cutover стали безопаснее, URL панели Bedolaga нормализуется, а ссылки подписок сохраняются и проверяются после переноса. (faf06604, 227399d2, f7f437e5, 39c4c11a)
- Обновлена публикация Core: добавлены каналы образов в GHCR, повторные попытки для временных сбоев публикации и dev-стенда, усилены dependency/security workflows и обновлены web/docs-зависимости. (7784bf60, cb2ecdec, 74739e1b, 4a9f6606)
При обновлении
Заголовок раздела «При обновлении»- Добавлена миграция
0087_add_wata_subscriptions, создающая таблицу состояния рекуррентных подписок Wata. - Для рекуррентных платежей Wata требуется подключить подписки на стороне терминала и включить
WATA_SUBSCRIPTION_ENABLED. - Для крупных Telegram-архивов можно настроить
TELEGRAM_BOT_API_BASE_URL; собственный Bot API должен быть отдельно запущен и доступен из backend и worker. - Добавлены настройки
*_LOGIN_RECOMMENDED,USER_NOTIFICATION_PREFERENCES_ENABLED,SUPPORT_ADMIN_TELEGRAM_NOTIFICATIONS_ENABLEDи параметры отображения checkout. Старое имяTRIAL_WITHOUT_TELEGRAM_ENABLEDсохранено как deprecated-алиас дляTRIAL_WITHOUT_OAUTH_ENABLED. - Обновления зависимостей подготовлены
dependabot[bot]: dfc8642c, b98b6096, 98f80543.
v3.7.1 — 2026-09-14
Заголовок раздела «v3.7.1 — 2026-09-14»Расширены меню настройки темы WebApp, добавлена миграция из Bedolaga, ссылка для покупки скрытого тарифа, логин через Discord. Сертифицирована Remnawave Panel 3.4.4, улучшены административные сценарии и стабильность платежей.
Изменения
Заголовок раздела «Изменения»- Расширены библиотека оформления и runtime тем WebApp: выбор активной темы, произвольные CSS-переменные и настройки вариантов, прозрачность, общий редактор цвета, экспорт пакетов, сохранение превью и подробная диагностика импорта. (f84f658, 245e80a)
- Добавлен безопасный импорт из Bedolaga: переносятся учётные записи, тарифы и подписки, финансовая история, подарки, обращения поддержки, рекламные и партнёрские данные; предусмотрены dry-run, сверка результатов, резервная копия и управляемое переключение стеков. (9c4e5f4)
- Расширен импорт из Remnashop: добавлены email-only аккаунты и OAuth identities, пользовательские балансы, squads и индивидуальные overrides, коды активации трафика, рекламные ссылки и дополнительная проверка финансовых данных. (d16bf91)
- Добавлен доступ к скрытым тарифам по приватным ссылкам: администратор может создать, отозвать или пересоздать уникальную ссылку, не публикуя тариф на общей витрине. (5367bb4)
- Добавлена синхронизация тарифных тегов пользователей с Remnawave Panel при активации, продлении и смене подписки, а также фоновая сверка существующих пользователей с сохранением вручную назначенных тегов. (31f8735)
- Добавлен вход и привязка аккаунта через Discord OAuth2; полностью введённый email-код теперь проверяется автоматически. (89d0289, 08b179c)
- Добавлен переход из карточки пользователя Minishop непосредственно в соответствующий профиль Remnawave Panel. (9481486)
- Сертифицирована совместимость с Remnawave Panel 3.4.4, включая поддержку пользовательских тегов и сценарий обновления с поколения 2.8.1. (203d6ea)
- Исправлены административные сценарии: сохраняется выбранный статус обращений поддержки, из деталей платежа открывается нужная карточка пользователя, а неактивные периоды больше не возвращаются в редактор тарифа. (e0c8c42, b42b377, e726d56)
- Исправлена загрузка метаданных RollyPay до инициализации локальной конфигурации; из диалогов подтверждения убрана дублирующая кнопка закрытия при наличии явного действия отмены. (0641d2f, 595fd5d)
При обновлении
Заголовок раздела «При обновлении»- Добавлены переменные окружения
DISCORD_OIDC_ENABLED,DISCORD_OIDC_CLIENT_IDиDISCORD_OIDC_CLIENT_SECRET. - Добавлена append-only миграция БД
0086_panel_tariff_tag; существующие миграции не изменялись. - Минимальная версия Node.js повышена до 24. (7dd95fb)
- GitLab назначен основным хостом исходного кода; после публикации dev-образов pipeline может запускать сборку downstream-потребителя. (93c82c4, 3c53718)
- Обновлены OpenAPI, типы API, каталог событий и манифест настроек.
- Вклад в библиотеку оформления и переход на Node.js 24: BADtochka
v3.7.0 — 2026-09-09
Заголовок раздела «v3.7.0 — 2026-09-09»Добавлены личный баланс, подарочные подписки, вход через Google, Яндекс и passkey, улучшение флоу установки кастомных тем для веб апп из админки. Расширены тарифы, способы оплаты, уведомления и инструменты управления пользователями.
Изменения
Заголовок раздела «Изменения»- Добавлен личный баланс пользователя: пополнение через платёжных провайдеров, полная или частичная оплата подписки, продления, трафика и устройств с доплатой остатка внешним способом. В админке доступны остатки, журнал операций, корректировка сумм и перевод между личным и партнёрским балансами с сохранением ограничений на вывод. d27a105d, b5593216.
- Добавлены подарочные подписки: покупка для другого пользователя, передача по ссылке, доставка на email и начало срока при активации. Оплаченные тариф, срок и лимиты сохраняются независимо от последующих изменений каталога. Администратор может создавать подарки без оплаты, просматривать их историю и отзывать неактивированные оплаченные подарки с возвратом фактически оплаченной стоимости на личный баланс покупателя. 0a0d9ce4, 2634d527, 8a605b4f.
- Расширены вход и безопасность аккаунта: Google, Яндекс ID и passkey, привязка нескольких способов входа, выбор подтверждённой почты для уведомлений и смена основного email с подтверждением старого и нового адресов. Перевыпуск ссылки подписки доступен без привязанной почты: новая ссылка остаётся в приложении и при возможности отправляется по email или в Telegram. 3c626bc4, 6072ee38, 3b1067b9.
- Расширена настройка тарифов и пробного периода: новые покупки поддерживают точное количество дней, а скрытый тариф можно назначить из админки и оставить доступным для продления его владельцу. Добавлены платная активация пробного периода и настройка перехода на оплаченный срок: сохранить оставшиеся дни trial либо начать срок с момента оплаты. aad14cb4, a666d271, 91de1b61, aded3a6a.
- Добавлены RollyPay, OxaPay и новые сценарии оформления покупки: публичные ссылки на покупку тарифа с продолжением после входа, отмена поддерживаемых незавершённых платежей с освобождением кода активации, настройка порядка кнопок оплаты. В админке доступны ручное проведение платежа и отмена зафиксированных начислений с журналом действий и проверкой возможности безопасного отката. b3a0b61a, 2ba558dd, 957a1255, ea20ed68, 51f34dcb, abd93f8f.
- Добавлена библиотека тем и расширена настройка интерфейса: установка тем из ZIP и публичных GitHub/GitLab-репозиториев, предпросмотр, обновление с сохранением настроек, откат и экспорт собственных копий. Доступны настройки светлого и тёмного режимов.
- Для меню бота и Web App добавлены настраиваемые локализованные пользовательские кнопки (можно засунуть ссылку на канал и т.п.) с выбором иконки, ссылки, порядка и места отображения. ea2d84dc, fc62f743, 7ebdb48a, bd16c908, 1e276ca9.
- Обновлён личный кабинет: опциональная компактная (удобно если включили кучу фичей ЛК превратился в бутерброд) сводка подписки, трафика и баланса с датами сброса лимитов; раздел статуса серверов через Uptime Kuma, xray-checker или внешнюю страницу с отдельной настройкой карточки на главной. В списке устройств показываются название клиента и последняя активность. 5b5be71c, f5a010d5, d99101aa, 98cf37be, b9326281, 360337b6.
- Добавлено управление уведомлениями: администратор выбирает каналы Telegram/email по категориям, пользователь отдельно включает системные и рекламные сообщения для каждого канала. В письмах доступна ссылка управления email-уведомлениями без входа (можно отписаться от рассылок). Добавлены уведомления о подключении нового устройства и достижении лимита устройств, а также учёт пользователей, заблокировавших бота, при рассылках. a02c9bc9, 7c932561, 6fac76da, 72bf7663.
- Расширены сообщения, рассылки и поддержка: изображения в тикетах, ответах, внутренних заметках и личных сообщениях администратора; обновлены представление переписки, статусы тикетов и подробная история рассылок. Личные сообщения доступны пользователям без Telegram через email, а история отправки сохраняется в карточке пользователя. 0ca7680d, 3df7d9ae, a4c4c0e0, 995ab888, 3592c727.
- Улучшена админ-панель: единые таблицы и мобильные карточки, поиск платежей по пользователю, подробный состав покупки и копирование идентификаторов одним нажатием. В карточке пользователя видны занятые места устройств; срок подписки можно увеличить, сократить или задать датой. Расширен журнал действий пользователя и платежных операций, сохранена история аудита. 03b2a770, cc7c06b8, ccb5f109, 766ec398, 95ef32c5, bd17f2d5, a8f09d17.
- Исправлены существующие сценарии оплаты и синхронизации: обработка callback FreeKassa, проверка суммы и валюты платежей Platega/Pally, сброс вводимого кода активации при оформлении покупки. Изменения сквадов и лимитов тарифа применяются к действующим подпискам; синхронизация пользователей с панелью сохраняет целостность транзакций. e7d4d02a, e95f269a, 1c20764a, 595ffb34, 5475e944, 18a3fad7, c8841771.
- Обновлено восстановление резервных копий: архив содержит версию приложения и историю миграций, а восстановление БД выполняется в отдельную пустую базу с применением недостающих миграций и последующим переключением. Прежняя база сохраняется. Пользовательские темы и настройки библиотеки включаются в резервные копии. bb15f564, ea2d84dc.
При обновлении
Заголовок раздела «При обновлении»- Обновление тарифов и БД. Добавлены миграции для новых способов входа, баланса, подарков, дневных периодов, уведомлений и аудита; существующие миграции не изменены. Перед переходом сохраните БД и каталог тарифов, приостановите создание новых оплат и обновите backend, worker и frontend согласованно. Старые счета и внешние регулярные подписки сохраняют календарные условия. Новые дневные заказы не оформляются через текущие адаптеры внешних подписок Tribute, Platega СБП и RollyPay; для них используются доступные разовые способы оплаты. После появления дневных заказов откат требует версии, понимающей новые поля и снимки покупок. aad14cb4.
- Новые настройки. Личный баланс (
USER_BALANCE_ENABLED), Google/Яндекс/passkey и статус серверов (SERVER_STATUS_ENABLED) включаются отдельно; по умолчанию они выключены. Для платного trial предусмотреныTRIAL_PAYMENT_ENABLED,TRIAL_PAYMENT_PRICE,TRIAL_PAYMENT_STARS_PRICE, для перехода на оплаченный срок —TRIAL_DAYS_STRATEGY. Покупка подарков управляетсяGIFTS_ENABLEDи по умолчанию включена. Четыре пользовательских переключателя уведомлений при миграции включены; глобальные ограничения администратора продолжают действовать. - Темы.
WEBAPP_THEMES_DIRдолжен находиться на постоянном томе с правами записи для backend. Уже установленные вручную темы продолжают поддерживаться; перевод под управление библиотеки выполняется отдельно при импорте. ea2d84dc, bf362688. - Восстановление БД. Восстановление через работающий HTTP-запрос заменено командой обслуживания
bash scripts/restore-backup.sh <архив.zip>из целевой версии. Команда останавливает backend/worker; требуются праваCREATEDBи место для двух БД. В админке остаются создание, загрузка и скачивание архивов, а также отдельное восстановление compose-папки. bb15f564. - Поставка и документация. Публикация образов перенесена в GitLab CI, основным реестром стал Docker Hub; установщик предпочитает GitLab и поддерживает альтернативные источники. Документация получила переключение стабильной/dev-версии и объединённые руководства по входу, оплате и новым функциям. 13e49987, 2f2a10d0, e8566271, 246f8780, d88e3215, 8ea3b18f.
- Контрибьюторы: спасибо BADtochka за интеграцию статуса серверов, поддержку альтернативных источников установщика и возврат стоимости подарков: d99101aa, 246f8780, 8a605b4f; автору BAD. — за участие в реализации подарочных подписок: 2fc89ecb, f2f1c0c7.
v3.6.1 — 2026-08-18
Заголовок раздела «v3.6.1 — 2026-08-18»Добавлены гибкий checkout подписок, новый вариант выбора способов оплаты и история рассылок. Улучшены восстановление платежей, улучшение UI/UX.
Изменения
Заголовок раздела «Изменения»- Добавлены гибкие лимиты в checkout периодных тарифов перед оплатой: выбор итоговых лимитов обычного и premium-трафика, дополнительных устройств, локальный предпросмотр цены и серверная котировка всей корзины.
- Переработан интерфейс редактора тарифов, добавлена поддержка настройки гибких лимитов.
- Добавлена возможность изменить внешний вид меню выбора способа оплаты: компактный выпадающий список по умолчанию или отдельные кнопки (как было раньше), сохранение порядка и иконок, отображение минимальной суммы для недоступных методов (если настроено).
- Для провайдера Platega добавлена возможность настройки отдельной кнопки для оплаты картой.
- Усилено восстановление платежей и автопродлений: цикл и намерение отправки сохраняются до вызова провайдера, повторный запуск продолжает существующий платёж, а статусы внешних счетов сверяются перед активацией или освобождением checkout.
- Добавлена история рассылок: содержимое, аудитория, каналы, расписание, текущий статус и прогресс доставки; запланированную отправку можно перенести или отменить.
- Улучшен Mini App UX: учтены safe-area и оверлеи полноэкранного Telegram, добавлена возможность прислать кнопку входа в партнёрский раздел, плашка активации кодов размещена в самом верху раздела, кнопка открытия партнерского раздела перемещена в экран настроек при условии если другая программа активна.
- Улучшена админ-панель: исправлены показатели регистраций и плательщиков в рекламных кампаниях, добавлены анимации для графиков и улучшена легенда для графиков.
- Исправлена связь подписок с Remnawave: при нескольких совпадениях (один tg id привязан к нескольким профилям в панели) используется уже сохранённая локальная связь, синтетические маркеры пользователей не принимаются за реальную идентичность.
- Повышена устойчивость runtime-настроек: некорректная конфигурация одного провайдера больше не блокирует применение остальных значений.
- Обновлены документация и сборочные процессы: добавлен обзор отдельно подключаемого PRO-расширения, автоматизирован снимок интерфейса для README и введена проверка согласованности npm lock-файлов.
При обновлении
Заголовок раздела «При обновлении»- Добавлены миграции
0062–0065для истории рассылок, сверки legacy-данных пользовательских кодов, снимков checkout и гибких лимитов. Существующие миграции не редактировались и не переупорядочивались. - Mini App теперь по умолчанию использует выпадающий список способов оплаты. Предыдущее представление возвращается через
PAYMENT_METHODS_DISPLAY_MODE=buttons. - Добавлены необязательные настройки
PAYMENT_METHODS_DISPLAY_MODE,PLATEGA_CARD_ENABLEDиPLATEGA_CARD_METHOD; обязательных новых env-значений нет.
Ссылки на изменения и участники
- feat: flexible checkout, payment recovery and broadcast history by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/82
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.6.0...v3.6.1
v3.6.0 — 2026-08-12
Заголовок раздела «v3.6.0 — 2026-08-12»Добавлена функция партнёрской программы, сертифицирована совместимость с Remnawave 3.x, расширены платежные сценарии и усилена надёжность установки, авторизации и восстановления данных.
Изменения
Заголовок раздела «Изменения»- Добавлена настраиваемая партнёрская программа: заявки и модерация, отдельные ссылки, атрибуция клиентов, комиссии с периодом удержания, балансы по валютам, ручные выплаты и пользовательский раздел.
- Добавлена полная и смешанная оплата партнёрским балансом; реализованы резервирование средств, компенсация отменённых операций, повторная обработка и корректный учёт внешней выручки.
- Добавлена поддержка Remnawave API 3.0–3.2.3 с числовыми идентификаторами пользователей, безопасным обновлением с 2.8.1, адаптивными API-возможностями, пакетными операциями и индикатором совместимости в админке.
- Расширена Platega: дополнительные способы оплаты и рекуррентные СБП-подписки с отдельным учётом мандатов, продлений, отмен и повторных callback-запросов.
- Улучшена обработка платежей: повторное использование ожидающих checkout, соблюдение минимумов провайдеров, безопасная отмена старых счетов, устойчивые повторы hosted checkout и проверка готовности FreeKassa к созданию платежей.
- Расширены тарифы и premium-трафик: независимые стратегии сброса, корректные rolling-периоды от даты начала подписки, перенос докупленного остатка и явное различие нулевого и неограниченного лимита.
- Расширены коды активации и система приглашений: применение персональных кодов при продлении через бота, начисление обычного и premium-трафика, выбор тарифа для нового пользователя, управление видимостью ссылок и поиск кодов в рассылках.
- Улучшены Web App и админка: сортировка таблиц, новые диапазоны и состояния графиков выручки, адаптивные карточки устройств, улучшенные empty/loading-состояния, мобильная раскладка, контраст и покрытие дополнительных тем.
- Улучшены авторизация и работа с Telegram: SOCKS5-прокси для Bot API и OAuth, ограниченные сетевые ожидания, кеширование JWKS и корректный перенос истории поддержки при объединении учётных записей.
- Усилена эксплуатационная безопасность: атомарное восстановление БД с предварительным архивом, автоматическими миграциями и выравниванием sequence, диагностика разных
/app/datamount и отдельные блокировки restore и синхронизации. - Обновлён install wizard: проверка минимальных версий Docker, безопасное обновление Compose plugin, валидация конфигурации до запуска и поддержка удалённой Remnawave Panel за eGames с проверкой TLS-сертификатов.
- Улучшены некоторые разделы и элементы UI.
При обновлении
Заголовок раздела «При обновлении»- Добавлены append-only миграции
0057–0061: подписки Platega, данные партнёрской программы, клиентские начисления трафика и оплата партнёрским балансом. Существующая миграция0056не изменена и не переупорядочена. - Для партнёрской программы нужны
PARTNER_REQUISITES_ENCRYPTION_KEYиPARTNER_REQUISITES_KEY_ID; функция по умолчанию выключена. - Добавлены
TELEGRAM_BOT_PROXY_URLиTELEGRAM_OAUTH_USE_BOT_PROXY. - Минимальные требования установщика: Docker Engine 25.0+ и Docker Compose plugin 2.20.2+; отдельная команда
docker-composeбольше не считается поддерживаемым runtime. - Обновлены OpenAPI, типы frontend, каталог событий и манифест настроек.
- Контрибьюторы:
wormy09(5eb78c87) — перенос истории поддержки при объединении учётных записей;dependabot[bot](632603f9) — обновление frontend-зависимостей.
Ссылки на изменения и участники
- fix: reassign support history when merging accounts by @wormy09 in https://github.com/3252a8/remnawave-minishop/pull/75
- build(deps): bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/78
- feat: partner program, Remnawave 3.x and expanded payments by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/81
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.8...v3.6.0
v3.5.8 — 2026-07-31
Заголовок раздела «v3.5.8 — 2026-07-31»Новый платёжный провайдер Tribute, безопасные повторы автопродления YooKassa, сверка и возобновление незавершённых оплат, ежемесячное начисление трафика за HWID-пакеты, быстрое применение premium-лимита с разрывом сессий, улучшения интерфейса: редактор сообщений с кнопками в рассылках/поддержке/карточке пользователя и расширяемая навигация админки.
Изменения
Заголовок раздела «Изменения»- Добавлен платёжный провайдер Tribute: основной режим Shop API с динамическим заказом на локальную сумму (разовые и рекуррентные заказы, трафик, premium-трафик, HWID-устройства, доплата за смену тарифа), резервный режим Creator subscriptions и Digital Products, единый webhook
/webhook/tributeс проверкой HMAC-SHA256, кнопка «Подтянуть из Tribute» в редакторе тарифа со сверкой цен и валют, логотип и раздел настроек провайдера. - Добавлены безопасные повторы автопродления YooKassa: очередь циклов с неизменяемыми суммой, картой и телом запроса, технические повторы только с тем же
Idempotence-Keyв 30-минутном окне, не более одной финансовой попытки после подтверждённогоcanceled, dry-run по умолчанию, резервный планировщик без panel webhook, событиеsubscription.auto_renew_failedи уведомление пользователю о запланированном повторе; исправлены поля чека рекуррентного платежа. - Добавлены сверка и возобновление оплат: карточка незавершённой оплаты в Mini App с продолжением по сохранённой ссылке, приоритет незавершённого платежа в выдаче, подстановка ранее введённого кода в checkout, воркеры сверки истёкших заказов у Wata, CryptoPay, Stripe, LAVA, Pally, PayKilla и SeverPay, включая заказы без сохранённой ссылки.
- Добавлено ежемесячное начисление трафика для HWID-пакетов (
traffic_bonus_gbна пакет): начисление фиксируется в платеже и записи докупки, складывается по активным докупкам, живёт поvalid_from/valid_untilи переживает месячный сброс панели; добавлен одноразовый скрипт пересчёта основных лимитов трафика по всему парку подписок. - Восстановлена tariff-aware докупка устройств: единый сервис доступности для бота и Web App с точной причиной блокировки (раздел выключен, нет активной подписки, тариф отсутствует/выключен/сменился, безлимит, нет пакетов), повторная проверка перед выставлением счёта и диагностика причины, по которой оплаченная докупка трафика не была зачислена.
- Улучшено применение premium-лимита: быстрая перепроверка подписок с расходом от
TARIFF_PREMIUM_FAST_WATCH_PERCENTмежду полными тиками воркера, разрыв уже установленных сессий на premium-нодах черезPOST /api/ip-control/drop-connectionsс cooldown, защита от неполной статистики нод и предупреждение в диагностике админки о нодах безCAP_NET_ADMIN. - Добавлена диагностика конфликтов с панелью: при перезаписи лимитов устройств или трафика сторонним писателем синхронизация подписки приостанавливается и попадает в health-панель; добавлен снимок payload панельных webhook-ов, дедупликация повторяемых событий по содержимому, отклонение некорректных ответов API панели и корректная трактовка статуса
LIMITEDкак активной подписки. - Расширена работа с сообщениями: общий контракт составления сообщения для рассылки, поддержки и плагинов; текст и подписи кнопок задаются на каждом языке; до четырёх кнопок — ссылка, код активации в боте, код в Mini App, произвольная цель Mini App и именованный экран приложения; добавлен маршрут checkout, открывающий выбор тарифа и периода; аудитория рассылки сгруппирована, снабжена иконками и дополнена выбором конкретного тарифа, включая аудитории от расширений; сообщение одному пользователю отправляется прямо из карточки.
- Переведены поддержка и рассылки на визуальный редактор: форматирование в подмножестве HTML, понятном Telegram, кликабельные ссылки в старых сообщениях, счётчик по видимому тексту, у администратора — переключатель исходного HTML, шорткоды персонализации, меню «Вставить» с персональными ссылками пользователя и кнопки под ответом; ожидающие тикеты видны в боковой панели.
- Расширена админ-панель и улучшен интерфейс: расширения добавляют группы навигации, вкладки в существующие разделы и вкладки карточки пользователя, изменено расположение некоторых разделов админки, отображение источника значения настройки (БД или
.env), раздел сверки привязки подписок к тарифам с безопасным восстановлением, предпросмотр результата смены тарифа и сброс ссылки подписки из карточки; списки перерисованы карточками на узких экранах, за открытым оверлеем остаётся один живой скроллер. - Добавлен перевыпуск ссылки подписки: маршрут Web App с отправкой новой ссылки и инструкции на email, диалог подтверждения и кнопка в настройках, а также сброс ссылки администратором из карточки пользователя.
- Разделены персональные и общие коды активации: у кода появился необязательный владелец, список группирует общие коды и помечает одноразовые, выпадающий список кнопок сообщения разделяет оба вида, а история показывает клиенту, для кого код был выпущен.
- Улучшены Mini App и API: код экрана загружается при открытии (сборка модулем с code splitting), все ответы
/api/помечаютсяno-store, чтобы WebView Telegram не отдавал устаревшие данные, сохраняется навигация при первичной загрузке и deep-link в админке. - Исправлены биллинг и подписки: заморозка расчёта доплаты за смену тарифа на момент оплаты, проверка фактически сохранённых прав в панели, сохранение состояния dry-run активации, сохранение даты начала подписки при продлении, снятие trial-сквадов при платной активации, синхронизация лимита устройств при смене тарифа, оплата Stars только из Telegram Mini App, корректный формат цены при вводе кода для выбранного провайдера и обновление настроек воркера torrent-блокировки.
- Обновлены установщик и эксплуатация: отдельный шаг проверки интеграции с Remnawave Panel (безопасный запрос
/system/stats, проверка форматаPANEL_API_COOKIE, пропуск шага вместоchange_me), ожидание готовности upstream прокси, фильтр webhook-секрета в логах Caddy, сохранение каталога тарифов в архиве бэкапа и его восстановление; один некорректный env провайдера больше не отключает применение всех сохранённых настроек, а панель показывает списокnot_applied. - Добавлена настройка лимита устройств для пробного периода; обновлены зависимости (astro, js-yaml, brace-expansion), ruff зафиксирован во всех quality-gate, CI уведомляет настроенных потребителей образов.
- Исправлена выдача premium-сквадов существующим владельцам тарифа, если premium_squad_uuids настроены без premium_monthly_gb и пакетов дополнительного трафика.
При обновлении
Заголовок раздела «При обновлении»- Миграции БД 0046–0056 (аддитивные, существующие не менялись): атрибуция рекуррентных платежей, снимки начисления трафика HWID, владелец кода активации, rich-body сообщений поддержки, состояние webhook Tribute, снимки расчёта смены тарифа, снимки прав панели, восстановление дат начала активных подписок, жизненный цикл checkout, состояние повторов автопродления, аудит привязки тарифов.
- Новые переменные окружения в
.env.example:AUTO_RENEW_RETRY_ENABLED,AUTO_RENEW_RETRY_DRY_RUN,AUTO_RENEW_SCHEDULER_ENABLED,AUTO_RENEW_MAX_FINANCIAL_ATTEMPTS,AUTO_RENEW_MAX_TRANSPORT_REPLAYS,AUTO_RENEW_WORKER_TICK_SECONDS,AUTO_RENEW_WORKER_BATCH_SIZE,AUTO_RENEW_RETRY_GRACE_HOURS,AUTO_RENEW_SCHEDULER_LEAD_HOURS. Включать поэтапно: сначалаAUTO_RENEW_RETRY_ENABLED=TrueприAUTO_RENEW_RETRY_DRY_RUN=True, проверить логи воркера, затем снять dry-run. - Задокументированы, но не добавлены в
.env.example:TRIBUTE_*(настраиваются в админке),TARIFF_PREMIUM_FAST_*,TARIFF_PREMIUM_DROP_CONNECTIONS*,HWID_DEVICE_TRAFFIC_BONUS_GB(устаревший fallback, новые начисления — вtariffs[].hwid_device_packages). - Для разрыва сессий при исчерпании premium-лимита ноды Remnawave должны быть запущены с
CAP_NET_ADMIN(cap_add: NET_ADMIN), иначе уже установленные соединения продолжат работать. - Рекуррентный Shop Order Tribute фиксирует цену на стороне Tribute: не отключайте, не удаляйте и не переименовывайте тариф и не меняйте
TRIBUTE_SHOP_ID, пока к ним привязаны активные заказы. - Включение начисления трафика HWID на существующем парке требует одноразового прогона
backend/scripts/resync_traffic_limits.py. - Контрибьюторы: @wormy09 — перевыпуск ссылки подписки (
fc73adbf,04f029c9,66c06731), ежемесячное начисление трафика HWID и скрипт пересчёта (fab09cb8,24735eee), трактовка статусаLIMITED(1ef4751b), диагностика незачисленной докупки (112c4b2c), перевод подсказок оверрайдов (c5d0d287), приведение к текущему ruff (240709e8,0439829f). Обновления зависимостей — @dependabot (3a94667e,e619c83f).
Ссылки на изменения и участники
- feat(webapp): перевыпуск ссылки подписки из Mini App с доставкой на email by @wormy09 in https://github.com/3252a8/remnawave-minishop/pull/63
- fix(i18n): заполнить пустые admin-подсказки оверрайдов трафика by @wormy09 in https://github.com/3252a8/remnawave-minishop/pull/65
- build(deps): bump astro from 7.0.9 to 7.1.3 in /docs-site in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/66
- feat(devices): ежемесячное начисление трафика за активные докупленные HWID-устройства by @wormy09 in https://github.com/3252a8/remnawave-minishop/pull/64
- chore(lint): satisfy current ruff on dev by @wormy09 in https://github.com/3252a8/remnawave-minishop/pull/69
- fix(sync): treat LIMITED panel status as an active subscription by @wormy09 in https://github.com/3252a8/remnawave-minishop/pull/68
- build(deps): bump astro from 7.0.9 to 7.1.4 in /docs-site in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/67
- Tribute payments, safe auto-renew recovery, checkout resume and admin messaging by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/70
- fix(tariffs): sync unrestricted squad access by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/71
Участники
- @wormy09 made their first contribution in https://github.com/3252a8/remnawave-minishop/pull/63
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.7...v3.5.8
v3.5.7 — 2026-07-18
Заголовок раздела «v3.5.7 — 2026-07-18»Изменения
Заголовок раздела «Изменения»- Добавлены opt-in уведомления по отчётам Torrent Blocker через Telegram и email: раздельное управление каналами, cooldown, опциональный вывод IP, локализованные шаблоны и настройки в админке. Webhook проверяется по типизированной схеме; устаревшие и повторные события подавляются, а сбой одного канала не повторяет успешную доставку другого (спасибо @rez-code,
6d559679). - Расширены фильтры пользователей в админке: зарегистрированные сегодня, приглашённые, с активной, неактивной, истёкшей, оплаченной, пробной или выданной без платежа подпиской. Счётчики дашборда открывают соответствующий список, а фильтры сохраняются в URL.
- Улучшены интерфейсы дашборда, логов и списков: унифицированы карточки и скелетоны загрузки, добавлены счётчик логов и очистка фильтра, скорректированы мобильные таблицы и высота строк.
- Исправлен опрос статусов Wata: поиск переведён на
/v2/transactions, финальные статусы объединены в один запрос, параллельные GET-запросы группируются и кэшируются на объект, задержка изRetry-Afterсоблюдается. - Добавлены
legacy_keysдля тарифов: сохранённые платежи и подписки продолжают обрабатываться после переименования ключа. Алиасы проверяются на уникальность, редактируются в админке и включены в API-контракт. - Нормализованы ссылки поддержки в Telegram-меню:
@usernameиt.me/usernameавтоматически преобразуются в полные HTTPS-ссылки. - Исправлены фоновые интеграции: блокирующее чтение очереди Redis больше не конфликтует с таймаутом клиента, а синхронизация подписок отличает обновление
last_connected_atот изменения основных полей. - Обновлены документация, граф знаний и точечные тесты для новых настроек, фильтров, тарифных алиасов, Wata, Redis и доставки уведомлений.
При обновлении
Заголовок раздела «При обновлении»- Добавлены переменные
TORRENT_BLOCKER_NOTIFICATIONS_ENABLED,TORRENT_BLOCKER_TELEGRAM_NOTIFICATIONS_ENABLED,TORRENT_BLOCKER_EMAIL_NOTIFICATIONS_ENABLED,TORRENT_BLOCKER_NOTIFICATION_COOLDOWN_SECONDSиTORRENT_BLOCKER_NOTIFICATION_INCLUDE_IP. Общий переключатель по умолчанию выключен. - Для получения событий нужны Remnawave Panel/Node 2.7+, Xray-Core 26.3.27+, настроенный Node Plugin,
NET_ADMIN, nftables и совпадающийPANEL_WEBHOOK_SECRET. - API-контракт расширен полем
legacy_keys; OpenAPI, frontend-типы и манифест настроек обновлены. Миграции БД не затронуты. - Контрибьютор: @rez-code (
6d559679) — уведомления Torrent Blocker.
Ссылки на изменения и участники
- feat(notifications): add torrent blocker alerts by @rez-code in https://github.com/3252a8/remnawave-minishop/pull/60
- Dev by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/62
Участники
- @rez-code made their first contribution in https://github.com/3252a8/remnawave-minishop/pull/60
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.6...v3.5.7
v3.5.6 — 2026-07-16
Заголовок раздела «v3.5.6 — 2026-07-16»Расширено управление тарифами, улучшены поддержка и согласованность подписок, усилена обработка платежей и webhook-очередей.
Изменения
Заголовок раздела «Изменения»- Расширено управление тарифами: добавлена сортировка тарифов перетаскиванием, определяющая порядок на витрине, переработана секция тарифов в админке.
- Добавлена отдельная стратегия сброса трафика для каждого тарифа. Она применяется при создании пользователя панели, активации, продлении и смене тарифа; старые каталоги продолжают использовать глобальную настройку.
- Улучшена поддержка: добавлены индикатор набора текста и статусы прочтения, предотвращена повторная отправка ответа, исправлена прокрутка диалога на мобильных устройствах.
- Исправлена согласованность подписок с Remnawave: корректно выдаётся пробный доступ, проверяются сохранённые права в панели, заменяются управляемые squads при смене тарифа и пересчитывается перенос трафика после перепривязки пользователя.
- Повышена устойчивость YooKassa: worker восстанавливает платежи при задержанных или потерянных webhook-событиях, поддерживает старый сценарий автопродления, сохраняет данные платёжного метода и не допускает блокировки очереди неразрешимыми записями.
- Исправлена идентификация платежей: внешние ID теперь уникальны в пределах провайдера, а поиск выполняется с учётом провайдера; унифицированы локализованные описания.
- Усилена webhook-очередь: дедупликация постановки стала атомарной, подтверждение выполняется после обработки, а временные ошибки повторяются до помещения события в dead-letter очередь.
- Перенесено шифрование ссылок Happ Crypt4 в core: ссылки формируются локально через совместимую RSA-реализацию без зависимости от API панели.
- Восстановлены русские значения по умолчанию через locale-файлы для названий способов оплаты, описания подписки и Premium-секции; исходный код и runtime fallback оставлены на английском.
- Добавлен готовый Angie reverse-proxy профиль с автоматическим ACME/TLS, поддержкой install wizard и документацией; разделены внешний и внутренний webhook-порты. Спасибо @alldevic (
590cce65). - Усилена цепочка выпуска Docker-образов: проверяются источник и состояние релиза, создаётся provenance-attestation, проверяются digest и метаданные, а promotion формирует неизменяемый манифест образов.
- Обновлены Remnawave dev preset до 2.8.1, backend/frontend/docs-зависимости и архитектурные проверки; расширены точечные тесты платежей, очередей, подписок, поддержки и тарифов.
При обновлении
Заголовок раздела «При обновлении»- Добавлена append-only миграция
0045_scope_provider_payment_ids, меняющая уникальностьprovider_payment_idна пару(provider, provider_payment_id). - Добавлен
WEB_SERVER_INTERNAL_PORT. В нестандартных Compose-конфигурациях нужно проверить соответствие host-портаWEB_SERVER_PORTвнутреннему listener-порту. - Очередь получила параметры
WEBHOOK_QUEUE_MAX_ATTEMPTS,WEBHOOK_QUEUE_RETRY_BASE_SECONDSиWEBHOOK_QUEUE_RETRY_MAX_SECONDS; значения по умолчанию —5,1.0и30.0.
Ссылки на изменения и участники
- ci: harden release image provenance by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/55
- fix(ci): publish release manifests from promotion jobs by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/56
- feat(deploy): add Angie reverse proxy profile with native ACME auto-TLS by @alldevic in https://github.com/3252a8/remnawave-minishop/pull/57
- tariff controls, support presence and resilient payments by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/58
Участники
- @alldevic made their first contribution in https://github.com/3252a8/remnawave-minishop/pull/57
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.4...v3.5.6
v3.5.4 — 2026-07-14
Заголовок раздела «v3.5.4 — 2026-07-14»Усилены платёжные сценарии, конкурентная обработка аккаунтов и установщик; улучшены админские превью и переходы из support-уведомлений.
Изменения
Заголовок раздела «Изменения»- Усилено подтверждение платежей: перед активацией сверяются подтверждённые провайдером сумма, валюта и финальный статус; недоплата и другая валюта отклоняются, а переплата активирует только исходный заказ. Для криптоактивов сохранена точная десятичная величина, для fiat применяется корректное округление.
- Сериализовано успешное завершение платежей: блокировки и условные обновления предотвращают повторную активацию заказа и повторные уведомления при конкурентных webhook-запросах и обновлениях статуса.
- Перепроверяются актуальные расчёты и разрешённые режимы смены тарифа перед Telegram-платежом; состав заказа берётся из сохранённой записи, а не из callback-метаданных. В комбинированных платежах стоимость устройств отделена от стоимости подписки.
- Усилены операции с аккаунтами и одноразовыми действиями: слияния выполняются под стабильными блокировками, повторное применение одного пользовательского кода между аккаунтами отклоняется, оплаченные периоды сохраняются, а периоды без оплаты не суммируются. Email-коды и magic links потребляются однократно.
- Улучшен install wizard: обязательные TLS-вводы теперь прерывают сценарий при ошибке, Caddy/Nginx проверяются на публикацию портов и доступность upstream-сервисов, повреждённое сетевое подключение proxy восстанавливается. После успешного импорта исходная БД отключается от целевой сети, права на данные восстанавливаются, а старый Remnashop предлагается остановить без удаления данных.
- Расширен Plugin API: добавлена версия API v1 с проверкой диапазона совместимости до запуска hook-ов, стабильный UUID установки и строгий выбор единственного entitlement provider. Админские extension-секции могут оставаться видимыми в заблокированном состоянии.
- Улучшены админка и support-сценарии: Telegram-превью рассылки для админа теперь включает настроенные кнопки, а ссылки на тикет и карточку пользователя из групповых support/log-уведомлений открывают нужный маршрут в Mini App.
- Усилена защита web-сценариев: заблокированные пользователи больше не могут продолжать админскую сессию; за Cloudflare реальный IP webhook-клиента принимается только после проверки ближайшего proxy-hop по официальным сетям Cloudflare.
- Усилен выпуск Docker-образов: базовые образы закреплены по digest, runtime переведён на Ubuntu 24.04 с Python 3.12, добавлены SBOM/provenance и полное Trivy-сканирование. Релизные теги публикуются продвижением уже проверенного digest в GHCR и Docker Hub.
При обновлении
Заголовок раздела «При обновлении»- Loader теперь завершает запуск при нескольких entitlement provider или несовместимом объявленном диапазоне Plugin API. Внешним плагинам рекомендуется явно указывать диапазон, включающий v1.
- Производным Docker-образам, зависящим от деталей
python:3.12-slim, нужно учесть переход backend/worker runtime на Ubuntu 24.04.
Ссылки на изменения и участники
- harden payments, accounts and install flow by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/54
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.3...v3.5.4
v3.5.3 — 2026-07-10
Заголовок раздела «v3.5.3 — 2026-07-10»Главные темы: переработка админских рассылок (редактор, персонализация, inline-кнопки, email-канал), новый платёжный провайдер Overpay и ссылки/логотипы провайдеров в разделе настроек, поддержка раздельного (frontend/backend) деплоя с защищённым upstream, ручные squad-override’ы на пользователя, настраиваемая стратегия сброса трафика и серия фиксов переходов тарифов/квот.
Изменения
Заголовок раздела «Изменения»- Переработаны админские рассылки: rich-text редактор с персонализацией через шорткоды, до 4 inline-кнопок (ссылка / применение кода активации в боте или Web App) с сортировкой, тест-аудитория «администраторы».
- Добавлены настройки email-канала в веб админке.
- Добавлен платёжный провайдер Overpay;
- В админке и Web App показываются ссылки на сайты платежных провайдеров и их логотипы для удобства; интеграция CryptoPay переведена на собственный HTTP-клиент вместо уязвимой SDK-зависимости (снят потолок
certifi<2024); локализованы настройки провайдеров. - Добавлена защита от дублирования сообщений о платежах в админских логах.
- Добавлена поддержка раздельного деплоя frontend/backend: browser-visible API base, защищённые upstream’ы через edge-токен (инъекция доверенным прокси, не браузером), новые примеры окружений
ratholeиsplit-protected-upstream, унифицированное именование docker-сетей в compose-примерах (спасибо @BADtochka,a238319,c563543). - Добавлены ручные panel-squad-override’ы на пользователя: назначенные вручную сквады сохраняются при синхронизации с панелью, с отдельными контролами и раскладкой в карточке пользователя.
- Добавлена настраиваемая стратегия сброса трафика на пользователя с выравниванием периодов сброса; в сводке трафика Web App отображается текущая стратегия и её якоря.
- Добавлен поиск по настройкам в админке; карточка пользователя и манифест настроек разбиты на секции (danger-действия всегда последними, invite-only вынесено в общие настройки).
- Добавлены базовые сигналы активности ядра: доменные события
bot.startedиplans.viewedи отслеживание последнего подключения на панели (subscription.last_connected_at). - Исправлены переходы тарифов и учёт квот: правила квот при смене тарифа, защита от сбоев синхронизации entitlement’ов, сохранение ручных HWID-лимитов и premium top-up баланса под override, раздельный учёт trial-квоты и трафика на панели, конверсия при переключении HWID-тарифа.
- Улучшен Web App: активация кодов, начисляющих дополнительный период, по deeplink без лишнего подтверждения (и пояснение вместо ошибки checkout для таких ссылок), отдача ассетов через Brotli, устранён зависон при загрузке, отполирована сводка трафика; восстановлены локальные напоминания об истечении подписки.
- Обновлён установщик и деплой: подключение к существующему Nginx/Caddy и переключатель Pangolin, миграция баз tgshop через дампы, защита от рассинхрона пароля БД и усиленная диагностика старта миграций.
- Обновлена документация и dev-тулинг: refresh API reference и plugin contract, воркфлоу и артефакты graphify (граф кодовой базы), CI-гард синхронизации OpenAPI.
При обновлении
Заголовок раздела «При обновлении»- Схема БД: добавлены append-only миграции
0042_release_archived_promo_codes,0043_add_user_panel_squad_overrides,0044_add_subscription_last_connected_at. Существующие миграции не менялись. - Новые переменные окружения (см.
.env.example):WEBAPP_API_BASE_URL,WEBAPP_BACKEND_UPSTREAM,WEBAPP_BACKEND_UPSTREAM_HOST,MINISHOP_EDGE_TOKEN,MINISHOP_EDGE_TOKEN_HEADER— для раздельного деплоя и защищённого upstream. - Зависимости: удалены
aiocryptopayи пинcertifi<2024,certifiподнят до>=2024.7.4; CryptoPay работает через собственный клиент. Обновлён frontendpackage-lock.json(tiptap-редактор). - Docker: обновлён frontend nginx (edge-токен, split upstream) и Dockerfile; изменены compose-файлы и добавлены примеры деплоя.
- Контрибьюторы: @BADtochka — раздельный API base и именование docker-сетей (
a238319,85a9160,a122c73,0be145b,c563543,e9dbb18).
Ссылки на изменения и участники
- feat: support split backend API base by @BADtochka in https://github.com/3252a8/remnawave-minishop/pull/52
- broadcast overhaul, Overpay provider and split-deploy support, plan changes fixes by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/53
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.2...v3.5.3
v3.5.2 — 2026-07-03
Заголовок раздела «v3.5.2 — 2026-07-03»Релиз преимущественно архитектурный:
- унификация платёжных провайдеров через общий link-flow,
- полный перевод фронтенда на TypeScript + Svelte 5 runes,
- типизация и линт всего репозитория — плюс пользовательские фиксы пополнения трафика, инструкций установки и авторизации Web App.
Изменения
Заголовок раздела «Изменения»- Исправлено пополнение трафика в боте: восстановлен обработчик кнопки покупки (потерянный при разделении subscription-core), кнопка в меню теперь скрыта, пока не израсходовано ≥80% лимита (как в мини-аппе), а по устаревшей кнопке показывается остаток трафика и меню обновляется вместо тихого отказа. Добавлен общий gate доступности для обычного и premium-трафика; метки и подсказки переключателей вынесены в локализацию.
- Добавлены ссылки на инструкцию установки в карточке пользователя админки (с копированием); авторизованный роут инструкций повторно запрашивает свежий short UUID панели, если сохранённый устарел после сброса ссылки на стороне панели, — чтобы squad-специфичные конфиги не откатывались к общему дефолту.
- Исправлены Web App UI и авторизация в некоторых сценариях: скрытие неактивных вкладок и обновление кэша устройств, ограничение зависших auth-запросов, запуск listener’а Web App до стартовых обращений к Telegram, использование дат сброса из панели в предупреждениях о трафике.
- Отладочные логи действий отправляются в log chat; добавлен сервис доставки уведомлений
message_log_notifier. - Платёжные провайдеры переведены на общий link-flow: CloudPayments, Pally и Platega ходят через единый флоу оплаты, callback-флоу YooKassa разделены на отдельные модули, добавлены variant-aware контекст и pre-create хук колбэка, общие helper’ы безопасности вебхуков и per-profile дескрипторы Wata.
- Фронтенд полностью переведён на TypeScript и Svelte 5 runes: мигрированы оставшиеся webapp/admin/entry-модули и тест-сьюты, типизированы сторы, координаторы и компоненты, добавлен архитектурный гейт «no first-party JS», крупные компоненты разбиты (PaymentDialogs, mockApi, previewMock, AppModeContent).
- Ужесточены типобезопасность и линт: mypy покрывает весь репозиторий (
scripts,backend/scriptsи всё деревоtests/), allowlisttype: ignoreсокращён до одной граничной записи; включён полный набор ruff-семейств (UP, W, C4, SIM, PIE, PERF, RUF, LOG, G, PLE, T10); pytest переведён в warnings-as-errors, покрытие — на branch-режим с ратчетом. - Декомпозированы крупные модули:
user_dalразбит на reads/merge/mutations, мигратор — на пакет (chains + engine, порядок id пинится snapshot-тестом),import_legacy— на пакет; разделены webapp guides, каталог тем webapp, редактирование кодов активации в админке; вынесена общая доставка уведомлений о трафике тарифов для воркеров. - Типизированы ответы admin-эндпоинтов тарифов, оставшиеся «свободные» схемы дотипизированы или помечены как non-JSON;
openapi.jsonиopenapi.generated.tsрегенерированы. - Добавлен no-op observability seam — внутренняя точка расширения без изменения поведения.
- Обновлены dev/deploy: dev-окружение поднимается одной командой, зафиксированы версии Node и инструментов, healthcheck чаще опрашивает контейнер при старте, восстановлена совместимость lockfile с npm 10.
- Обновлена документация: английские точки входа для контрибьюторов, освежённые architecture-доки, задокументирован gating пополнения трафика и требование локализованного пользовательского текста; удалён
CHANGELOG.md(история — в коммитах и PR).
При обновлении
Заголовок раздела «При обновлении»- Изменений схемы БД, миграций и переменных окружения в релизе нет: мигратор только реструктурирован в пакет (41 миграция, id и порядок сохранены, зафиксированы snapshot-тестом). Ручных шагов при обновлении не требуется.
- Фронтенд теперь TypeScript-only, а версии Node и инструментов закреплены — контрибьюторам нужен соответствующий Node.
Ссылки на изменения и участники
- link-flow payments, all-TypeScript frontend, repo-wide typing & fixes by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/50
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.1...v3.5.2
v3.5.1 — 2026-07-01
Заголовок раздела «v3.5.1 — 2026-07-01»Изменения
Заголовок раздела «Изменения»- Расширена система кодов активации: процентная корректировка стоимости тарифа, множители срока и трафика, начисление дополнительного периода, режим применения только при оплате, условия применимости (минимальный срок/трафик, область применения — весь заказ или оформление) и архивирование кодов.
- Добавлена фиксация эффектов и оформления: при активации кода и при оформлении заказа сохраняются снапшоты применённых эффектов, базовая сумма, корректировка, оплачиваемый срок и объём трафика — для истории и корректных расчётов.
- Добавлены аудит активаций кодов и генерация ссылок для применения кода (для бота и webapp) в админке.
- Добавлена совместимость с Remnawave 2.8: переработан обработчик вебхуков панели, добавлены хелперы node- и HWID-API, версионированные пресеты dev-стенда (2.7.4 и 2.8.0).
- Реализован учёт настроек сброса трафика в тарифных воркерах и уведомлениях: детали сброса в предупреждениях, защита уведомлений о сбросе.
- Ускорен и стабилизирован админ-раздел: оптимизированы загрузка и отзывчивость панели, списки пользователей без лишних преобразований, модернизированы паттерны реактивности Svelte (runes).
- Улучшены редакторы тарифов и кодов: вкладки редактора тарифов, компактный редактор кодов, режим начисления периода, сохранение изменений каталога тарифов и загруженных ассетов оформления, отображение безлимитных лимитов.
- Улучшена авторизация: fallback bearer-токена сессии, требование session-токенов в контрактах.
- Исправлены UI-баги админки и webapp.
- Исправлена совместимость импорта с remnashop: безопасный разбор trial-флагов, сохранение назначения тарифа для trial-подписок, сохранение приватных полей admin-бандла, разбор ответа HWID-устройств.
- Обновлён стек тулинга и зависимостей: postgres зафиксирован на 17.6, redis-клиент 7.4.1, обновления prettier-plugin-svelte, tailwind и typescript-eslint; расширены unit/contract/integration тесты.
При обновлении
Заголовок раздела «При обновлении»- Изменения схемы БД: миграции
0038–0041(расширение эффектов кодов, снапшоты активаций и оформления заказа, флаг режима начисления с оплатой). Append-only, применяются идемпотентным мигратором автоматически. - Образ postgres зафиксирован на
17.6— обновите тег, если пиннингуете образ в своём compose вручную. - Совместимость с Remnawave 2.8; для dev-стенда добавлены пресеты 2.7.4/2.8.0. Новых обязательных production-переменных окружения нет.
Ссылки на изменения и участники
- Feature/bonus extension by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/47
- Feature/remnawave 2.8.0 by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/48
- Activation-code effects, Remnawave 2.8 support and admin panel updates by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/49
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.0...v3.5.1
v3.5.0 — 2026-06-27
Заголовок раздела «v3.5.0 — 2026-06-27»Помимо нескольких пользовательских функций (контроль доступа к регистрации, premium-правила пробного периода, доступ к меню бота, уведомления о сбросе квоты трафика) релиз содержит очень крупный внутренний рефакторинг — типизация контрактов, миграция фронтенда на Svelte 5 runes, декомпозиция god-файлов и пакетирование платёжных провайдеров.
Изменения
Заголовок раздела «Изменения»- Добавлен контроль доступа к регистрации (
REGISTRATION_INVITE_ONLY_ENABLED): при включении новые публичные регистрации допускаются только по валидной пригласительной ссылке; существующие пользователи продолжают входить через Telegram, Web App, email-код, magic-link и пароль. - Добавлены правила premium-доступа в пробном периоде: отдельный лимит premium-трафика (
TRIAL_PREMIUM_TRAFFIC_LIMIT_GB) и список premium Internal Squads для trial (TRIAL_PREMIUM_SQUAD_UUIDS), с применением квоты к premium-сквадам. - Добавлена возможность выключения меню Telegram-бота (оставляет минимальное количество кнопок и побуждает использовать веб апп).
- Добавлены уведомления о сбросе квоты трафика для regular- и premium-тарифов — для пользователей, которые потратили (или почти потратили) трафик в предыдущем периоде.
- Исправления платежей: сохранение статуса успешного платежа, детали неуспешных попыток, отображение единиц entitlement в логах, подавление устаревших уведомлений о сбое оплаты, предотвращение циклов импорта при старте провайдеров.
- Исправления Admin/Mini App: рендер строк datatable после первой загрузки, корректные surface-токены светлой темы, центрирование спиннера логотипа, уточнены подписи настроек, защита от no-op обновлений стора.
- Улучшена диагностика install-wizard.
Рефакторинг и инфраструктура
Заголовок раздела «Рефакторинг и инфраструктура»- Типизированные HTTP-контракты и OpenAPI: pydantic request/response-модели для admin- и webapp-роутов (вместо «свободных» схем), генерация
docs/openapi.jsonиfrontend/.../openapi.generated.ts, типизированные path-builders API-клиента, реестр route-contracts и проверки контрактов в CI. - Контракты доменных событий: одна pydantic-модель на событие (
extra="forbid"), публикация черезemit_model, регенерируемый каталог событий. - Миграция фронтенда на Svelte 5 runes: все компоненты и сторы переведены на runes, удалён legacy-синтаксис (
export let,$:, слоты и динамические компоненты → snippets), runes-only режим закреплён сборкой и линтом, убран datatable runes-bridge. - Декомпозиция
App.svelte: shell-state стор на runes и вынос десятков runtime/action/helper/view-модулей (boot, resume, auth, activation, telegram, navigation, billing-deeplink и др.), оболочка приложения переведена на TypeScript. - Типизация бэкенда (mypy ratchet): handlers, services, payment providers, db, middlewares, config, keyboards и web-плагины; mypy зелёный по всему enforced-скоупу, скоуп расширен в CI.
- Пакетирование платёжных провайдеров: каждый провайдер — отдельный пакет (yookassa, stripe, wata, paykilla, heleket, platega, lava, severpay, freekassa, pally, cryptopay, cloudpayments, stars), общий link-flow engine + provider descriptor, общая обработка webhook’ов, import-only фасады и conformance-контракты.
- Декомпозиция god-файлов: разбиты admin-секции, email-шаблоны, tariff-traffic worker, panel API service, subscription lifecycle, admin sync workflow, user start flow, subscription core и billing/auth/asset-роуты.
- Границы архитектуры: проверки import-границ фасадов и runtime-хабов, отвязка фасадов от runtime-импортов, типизированные settings-views в
config, гейты согласованности web-ответов, заморозка публичных поверхностей фасадов тестами. - Тесты и QA: реорганизация набора по ответственности, Vitest-coverage, Playwright mock-smoke e2e-гейт, единый dev/QA compose-стенд, контракты webhook/link-flow провайдеров.
- Инфраструктура и тулинг: нормализация LF-окончаний через
.gitattributes, агрегирующие команды качества, выравнивание root-check-скрипта с гейтами CI, contract-checks в CI. - Документация: интерактивный API reference на docs-site, how-to рецепты (провайдер/событие/эндпоинт), гайды контрибьютора и агента, обзор архитектуры, security scaffolding.
Зависимости и безопасность
Заголовок раздела «Зависимости и безопасность»- Security-фикс (high):
@playwright/testподнят с^1.50.1до^1.55.1(lockfile резолвится в 1.61.1) — закрывает GHSA-7mvr-c777-76hp (Playwright скачивал и устанавливал браузеры без проверки подлинности SSL-сертификата). Открытых Dependabot-алертов: 0. - Backend:
sqlalchemy[asyncio]2.0.49 → 2.0.51 (patch), YooKassa SDK 3.10.1 → 3.11.0 (minor); ранее в диапазоне —pydantic-settings2.14.1 → 2.14.2. - Frontend dev-тулинг до актуальных версий: eslint 10.6.0, svelte 5.56.4, vite 8.1.0, svelte-check 4.7.1, typescript-eslint 8.62.0, prettier 3.9.0, eslint-plugin-svelte 3.20.0, svelte-eslint-parser 1.8.0, @tanstack/svelte-query 6.1.35, @internationalized/date 3.12.2, tailwindcss / @tailwindcss/cli / @tailwindcss/vite 4.3.1; применено форматирование prettier 3.9.0.
- Гигиена lockfile: перегенерирован консистентный
frontend/package-lock.json, чтобыnpm ciпроходил во всех фронтенд-джобах CI.
При обновлении
Заголовок раздела «При обновлении»- Новые переменные окружения:
REGISTRATION_INVITE_ONLY_ENABLED,TRIAL_PREMIUM_TRAFFIC_LIMIT_GB,TRIAL_PREMIUM_SQUAD_UUIDS; dev/QA-стенд добавляетDEV_POSTGRES_PORTиQA_*переменные. Новых миграций БД нет.
Ссылки на изменения и участники
- chore(deps): bump the pip group across 2 directories with 1 update by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/40
- Feature/api refactor by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/41
- Feature/architecture hardening by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/42
- Feature/architecture refactoring by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/43
- Feature/provider orchestration unification by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/44
- Feature/svelte runes by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/45
- Registration gate, trial premium rules, typed API contracts + large refactor by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/46
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.10...v3.5.0
v3.4.10 — 2026-06-19
Заголовок раздела «v3.4.10 — 2026-06-19»Крупная переработка скрипта установщика и миграции с Remnashop, новый платёжный провайдер Pally и расширение Wata Crypto, ускорение и кэширование гайдов по подписке, небольшие исправления гайдов, перевод админских таблиц на datatables и другие фиксы.
Изменения
Заголовок раздела «Изменения»- Расширен установщик (
scripts/install.sh): настройка DNS и TLS-сертификатов, профиль обратного прокси eGames, автоопределение учётных данных панели, предзаполнение и локализация шагов миграции, маскирование кредов БД в логах, устойчивость к EOF и сохранение путей загрузки. - Переработан импорт из Remnashop (
import_legacy.py): перенос настроек тарифов, снимков пользовательских кодов активации, поддержка внешних ключей пользователей и токенов ссылок на подписку, опциональный сброс целевой БД перед импортом, сохранение состояния Telegram, чтение root-owned env, отчёт о завершении и о сопоставленных платёжных провайдерах. - Добавлен платёжный провайдер Pally .
- Расширен платежный провайдер Wata — возможность добавить кнопку оплаты wata crypto.
- Улучшены гайды по подписке: кэширование конфигурации и разрешённых гайдов, компактный payload, ускорение загрузки, разрешение гайдов для внешних squad’ов, кастомный subpage-конфиг панели и fallback на дефолтный гайд панели.
- Переведены админские таблицы (бэкапы, платежи, локальные секции) на datatables с реактивной пагинацией; добавлены actionable-подсказки и описания к ошибкам, кэш health-checks и логов, улучшены жесты drag-and-drop сортировки.
- Добавлена поддержка Cookie-заголовка для запросов к API панели (доступ через eGamesAPI/remnawave-reverse-proxy) и нормализация traffic-стратегий Remnawave.
- Исправлены платежи и биллинг: сохранение device-метаданных YooKassa и счётчиков устройств для invoice-платежей, использование валюты платежа для провайдеров в меню бота, интеграция HWID top-up.
- Исправлены уведомления: подавление уведомлений об истечении для замещённых подписок, постановка web-app уведомлений в очередь.
- Обновлены deploy-примеры (caddy/newt/nginx/no-proxy) и привязки nginx для eGames; синхронизация конфига nginx в работающий контейнер.
При обновлении
Заголовок раздела «При обновлении»- Новая переменная окружения
PANEL_API_COOKIE(опциональный Cookie-заголовок для API панели). - Добавлены настройки TTL кэша гайдов:
SUBSCRIPTION_GUIDES_CONFIG_CACHE_TTL_SECONDS,SUBSCRIPTION_GUIDES_RESOLVED_CACHE_TTL_SECONDS,SUBSCRIPTION_GUIDES_PUBLIC_CACHE_TTL_SECONDS(по умолчанию 300с).
Ссылки на изменения и участники
- feat: add Pally payment provider by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/38
- feat: installer DNS/cert & migration overhaul, Pally/Wata payments, guide caching by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/39
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.9...v3.4.10
v3.4.9 — 2026-06-17
Заголовок раздела «v3.4.9 — 2026-06-17»Добавлены платёжные провайдеры Stripe, CloudPayments и LAVA Business, внутренняя plugin/extension API с реестром фич, шина доменных событий с маршрутизацией side-effects через реакции, кастомизация темы webapp и набор улучшений админ-панели, webapp и платёжного финализирования.
Изменения
Заголовок раздела «Изменения»- Добавлены платёжные провайдеры Stripe, CloudPayments и LAVA Business, включая поддержку рекуррентных списаний (Stripe/CloudPayments) и общий модуль recurring; провайдеры подключаются через реестр и настраиваются из админ-UI.
- Усилены продления YooKassa: hardening контролов автопродления, рекуррентный провайдер и общий механизм recurring/success для всех провайдеров.
- Добавлена внутренняя plugin/extension API: загрузчик и спецификация плагинов, hook-points (worker, queue, migration, locale), встроенные плагины (lknpd, telemetry), реестр feature-entitlement и документация по расширениям.
- Добавлена in-process шина доменных событий: side-effects маршрутизируются через event reactions, покрыты сценарии жизненного цикла аккаунта и пути начисления периода.
- Добавлен сервис entitlements и переработана финализация платежей: уведомления откладываются до commit, подтверждение истечения entitlement перед локальным успехом, валидация обновлений expiry в панели, логирование ошибок создания провайдера.
- Добавлена кастомизация дефолтной темы webapp, мердж темной и светлой темы.
- Улучшена админ-панель: секции управляются из реестра, диплинки в разделе настройки, назначение тарифов в админском окне пользователя, сохранение черновиков действий по пользователю, группировка контролов продления подписки, ускорение открытия админ панели, загрузка feature-flags при монтировании.
- Улучшен webapp UX: подбор install-гайдов под конкретную подписку, скрытие карточек квоты для безлимитного трафика, ссылки и подписи статуса сервера.
- Улучшены email-уведомления: безопасные inline-PNG логотипы, метаданные и favicon, локализация писем.
- Исправлен учёт приглашений: продление срока действия подписки за приглашение начисляется только один раз (добавлено поле
referral_welcome_bonus_claimed_at); рефералы и обработка пользовательских кодов переведены на событийную модель. - Обновлены CI/Docker/deploy: actions на Node 24, починка pip-audit, healthcheck без zombie-процессов,
curlв runtime-образе, возврат dev-публикации в GitHub Actions, конфигурируемая задержка между страницами при полном сканировании панели, удалён.gitlab-ci.yml. - Расширены тесты: Stripe/CloudPayments/LAVA провайдеры, доменные события и event reactions, плагины, entitlements, webhooks платежей, автопродление и темы webapp.
При обновлении
Заголовок раздела «При обновлении»- Изменение схемы БД: добавлен столбец
users.referral_welcome_bonus_claimed_at, миграции включены. - Dockerfile обновлён: force-upgrade
certifiпосле установки (pip-audit игнорирует PYSEC-2024-230 из-за пинаaiocryptopay==0.4.8),curlоставлен в runtime-образе для healthcheck.8
Ссылки на изменения и участники
- provider: lava by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/30
- chore(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/31
- Feature/cloudpayments by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/33
- Feature/stripe by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/35
- New payment providers, plugin/extension API and domain event bus by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/36
- chore(deps-dev): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/34
- chore(deps-dev): bump vite from 8.0.12 to 8.0.16 in /frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/37
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.8...v3.4.9
v3.4.8 — 2026-06-10
Заголовок раздела «v3.4.8 — 2026-06-10»Изменения после релиза v3.4.7 (v3.4.7..HEAD): новый платёжный провайдер PayKilla, защита бота от флуда обновлений Telegram, shell-мастер установки с миграцией с legacy tg-shop и Remnashop, диагностика конфигурации в админке и большой блок улучшений платежей, тарифов и Mini App.
Изменения
Заголовок раздела «Изменения»- Добавлен платёжный провайдер PayKilla: конвертация в поддерживаемые валюты, проверка минимальной суммы платежа, санитизация текста инвойсов, корректная передача валюты тарифа.
- Улучшена работа платёжных провайдеров: переиспользование незавершённых счетов и ссылок по идентичности провайдера, глобальный таймаут запросов к провайдерам с применением без рестарта, повтор и восстановление соединений провайдеров, статус «pending» в транзакциях (спасибо @BADtochka,
234fc695,3170b966,766f2a57,e3f35a46). - Добавлена защита Telegram-бота от флуда: ранний guard и лимиты по типам обновлений (сообщения, callback, inline, /start), cooldown для платёжных и trial-callback, отбрасывание не-приватных обновлений, настройки доступны в админке.
- Добавлен shell-мастер установки (
scripts/install.sh) с переносом данных с legacy remnawave-tg-shop, а также импорт с Remnashop: пользователи, коды, настройки платежей, совместимость legacy-кодов приглашений. (! Функционал миграции с remnashop находится в стадии разработки и еще не был тщательно протестирован, делайте бэкапы !) - Добавлена диагностика конфигурации в админ-панели: сервис проверки настроек, баннер с проблемами, актуализация алертов Telegram-webhook.
- Улучшена админ-панель: аудитории рассылок «никогда не подписывался» и «не подключался к VPN» с кешированием счётчиков, отображение активности VPN-подключений и истории trial у пользователя, переопределение лимита HWID-устройств per-user, улучшенная пагинация; исправлен жизненный цикл модального окна пользователя (спасибо @BADtochka,
9adcbf10). - Расширен редактор тарифов: настраиваемый порядок периодов и пакетов при покупке, унифицированные строки цен, drag-and-drop сортировка, улучшенная мобильная вёрстка.
- Улучшен Mini App: счётчик до истечения подписки, стабильная мобильная навигация, хешированные immutable-ассеты со сбросом устаревшего кеша, экран активации trial, применение акцента темы в письмах и deeplink, масштаб логотипа по viewport.
- Добавлена поддержка пользователей без Telegram (email-only): активация trial и приветственные начисления периода по приглашению, поправлены аватары по email, скрытие форм привязки и логина по email при выключенной авторизации; для начислений по кодам и приглашениям назначается тариф по умолчанию.
- Улучшены письма: встраивание загруженного логотипа, обновлённые брендированные шаблоны;
- Добавлен пример docker-compose для локального SMTP на docker-mailserver (спасибо @austnv,
bd7361e9). - Повышена безопасность: корректное разрешение клиентского IP за цепочкой прокси для webhook-ов и allowlist-ов провайдеров (спасибо @BADtochka,
f07031f3,cc74ddec), обновлены зависимости по security-advisories (pyjwt, certifi, aiohttp). - Обновлены сборка и деплой: уменьшение churn слоёв Docker-образа, выкладка хешированных ассетов webapp в backend-образ, GitLab CI для dev-образов, фикс regex маршрутов в nginx;
- Телеметрия дополнена признаком официальной/кастомной сборки образа (для анонимной статистики).
При обновлении
Заголовок раздела «При обновлении»- Есть изменения схемы БД — миграции включены и применяются автоматически.
- Новые настройки окружения: блок
TELEGRAM_ANTIFLOOD_*и cooldown-настройки,PAYMENT_REQUEST_TIMEOUT_SECONDS, таймаутыPANEL_API_*, настройки импортаMIGRATION_REMNASHOP_*,TRIAL_WITHOUT_TELEGRAM_ENABLED,DISPOSABLE_EMAIL_DOMAINS. - Значение по умолчанию
TRUSTED_PROXIESрасширено приватными диапазонами (Docker/LAN/Kubernetes) — проверьте, что это соответствует вашей топологии. - Контрибьюторы: @BADtochka (платежи, безопасность прокси, фиксы админки — 24 коммита), @austnv (пример docker-mailserver —
bd7361e9,c733d830).
Ссылки на изменения и участники
- remnashop migration feature, install wizard by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/23
- chore(deps): bump the pip group across 2 directories with 1 update by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/25
- Добавлена поддержка локального SMTP-сервера на базе Docker Mailserver by @austnv in https://github.com/3252a8/remnawave-minishop/pull/26
- Документация платёжек и замена домена Freekassa by @BADtochka in https://github.com/3252a8/remnawave-minishop/pull/27
- feat: harden Telegram bot anti-flood handling by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/28
- PayKilla provider, Telegram anti-flood, install wizard and Remnashop migration (test) by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/29
Участники
- @austnv made their first contribution in https://github.com/3252a8/remnawave-minishop/pull/26
- @BADtochka made their first contribution in https://github.com/3252a8/remnawave-minishop/pull/27
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.7...v3.4.8
v3.4.7 — 2026-06-01
Заголовок раздела «v3.4.7 — 2026-06-01»Мультивалютные тарифы с фильтрацией провайдеров по валюте (если хотите принимать оплату не в рублях), безопасный dry-run режим записи в Remnawave Panel (дле dev и тестов перед миграцией), анонимная opt-out телеметрия установок, улучшение интерфейса управления пользователями в админке, а также набор фиксов каналов, deeplink-шлюза, top-up трафика и локализации писем.
Изменения
Заголовок раздела «Изменения»- Добавлены мультивалютные тарифы: JSON-каталог поддерживает
default_currency(usd,eur,usdtи др.) с generic-полями цен и пакетов, legacy*_rub-поля остаются алиасами. Платёжные методы фильтруются по поддерживаемым провайдером валютам, а раздел Система → Тарифы показывает матрицу «метод/сервис/доступность» для текущей валюты. - Добавлен dry-run режим записи в Remnawave Panel:
PANEL_WRITE_MODE=dry_run/autoиAPP_RUNTIME_MODEпозволяют читать живую панель, но только валидировать и логировать мутации пользователей ([PANEL DRY-RUN OK] would PATCH ...); секреты и ID редактируются из логов dry-run. - Добавлена анонимная opt-out телеметрия установок: раз в сутки worker шлёт обезличенный heartbeat (версия, OS/arch, Python, язык, включённые провайдеры, диапазон числа пользователей) в формате PostHog; выключается через
TELEMETRY_ENABLEDили тоггл Admin → System без перезапуска. - Расширено управление пользователями в админке: фильтры, сортируемые колонки, метрики списка пользователей, отображение реферальных связей в карточках и модальное окно деталей пользователя (
UserDetailModal). - Добавлен сброс права на триал из веб-админки без удаления истории пользователя (новая отметка
trial_eligibility_reset_at, миграция 0033). - Добавлена цель рассылки «истёкшие подписки» (expired subscription broadcast target).
- Добавлен выбор языка на экране входа и восстановлен селектор языка в мобильной админке.
- Добавлен аудит исходящих уведомлений пользователям (
message_audit) — фиксация фактических отправок ботом. - Обновлены письма: локализация support-шаблонов, рендер email-превью из шаблонов, demo-секция превью в документации и отвязка генерации превью от зависимостей бота.
- Исправлены платежи и трафик: согласованы потоки top-up трафика и unlimited-оверрайды; запуск миграций после восстановления БД; восстановлены экраны ввода email-кода (pending email code).
- Исправлены проверки обязательного канала: нормализация
REQUIRED_CHANNEL_ID(приведение к-100…) и устойчивое распознавание ошибок доступа к каналу. - Исправлен UX мобильного клиента: deeplink-шлюз остаётся открытым во время prompt запуска приложения; увеличена кнопка продления.
- Обновлён CI: dev-образы тегируются только как
dev(убраны per-commit тегиdev-<sha>). - Расширены тесты: мультивалютные тарифы, телеметрия, dry-run панели, метрики/гранты/сброс триала в админке, аудит сообщений, нормализация канала, реестр платёжных провайдеров.
При обновлении
Заголовок раздела «При обновлении»- Есть изменение схемы БД: миграция
0033_add_trial_eligibility_reset_marker(колонкаusers.trial_eligibility_reset_at), применяется автоматически. - Новые переменные окружения:
TELEMETRY_ENABLED,TELEMETRY_ENDPOINT,TELEMETRY_API_KEY,TELEMETRY_INTERVAL_HOURS;APP_RUNTIME_MODE,PANEL_WRITE_MODE,PANEL_DRY_RUN_VALIDATE_REMOTE,PANEL_DRY_RUN_SYNTHETIC_CREATE. Для кастомных валют у Heleket/Platega/SeverPay держите в актуальном состоянии*_SUPPORTED_CURRENCIES. - Телеметрия включена по умолчанию (opt-out): отключается
TELEMETRY_ENABLED=False, пустым endpoint/ключом или тогглом в админке. Персональные данные и секреты не отправляются.
Ссылки на изменения и участники
- Feature/multicurrency by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/18
- Feature/telemetry by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/19
- Enhance admin users and subscription workflows by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/20
- Improve admin UX, trial reset behavior, and channel subscription checks by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/21
- Multicurrency (future-proof feature), panel dry-run mode (dev feature), install telemetry and admin user tools by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/22
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.6...v3.4.7
v3.4.6 — 2026-05-30
Заголовок раздела «v3.4.6 — 2026-05-30»Статистика подписок разбита по типу доступа (активные / платные / пробные / бесплатные), добавлены GitHub Actions для сборки образов, PR-проверок и сканирования безопасности, исправлены probe-уведомления Telegram и маршрутизация demo-страницы документации.
Изменения
Заголовок раздела «Изменения»- Разбита статистика подписок по типу доступа: добавлены отдельные счётчики «с активной подпиской», «с платной», «с пробной» и «с бесплатной подпиской»; неактивные считаются как пользователи без активной подписки. Логика классификации (provider + статус панели) реализована в
user_dalчерез подзапрос с агрегацией по пользователю. - Обновлены админская и inline-статистика под новую разбивку: новые строки и иконки в текстовом отчёте, передача
active/freeв inline-режим, описание inline-карточки теперь показывает число пользователей с подпиской. - Переработана карточка статистики в Admin Panel: основной показатель — активные пользователи с долей от общего числа в бейдже, в подвале раздельно платные · бесплатные · пробные; обновлены подписи карточек.
- Исправлены probe-уведомления Telegram: проверка доступности чата теперь делается через
get_chatвместо отправки служебного сообщения, поэтому пользователи больше не получают пробные сообщения; удалён код кнопки и текста probe. - Исправлена маршрутизация demo-runtime в документации: runtime собирается в
app/index.htmlвместоapp.html, обновлены Cloudflare Pages rewrites и материализация маршрутов — устранён цикл редиректов между extensionless и.html. - Добавлены GitHub Actions: переиспользуемый workflow сборки и публикации Docker-образов, dev- и release-сборки образов, PR-проверки (CI), security-сканирование (Trivy) и dependency review.
- Обновлены EN/RU локали под новую разбивку статистики и обновлён mock API demo (полный набор полей статистики пользователей).
- Расширены тесты для
user_dal(разбивка подписок) и Telegram-уведомлений; обновлён dev-зависимость svelte.
При обновлении
Заголовок раздела «При обновлении»- Схема БД не меняется; новые env-переменные не добавлены.
- Для CI/CD появились новые GitHub Actions workflow — потребуются стандартные права на пакеты/registry в репозитории.
Ссылки на изменения и участники
- ci: add GitHub Actions for image builds, PR checks and security scans by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/13
- chore(deps-dev): bump svelte from 5.55.5 to 5.56.0 in /frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/3252a8/remnawave-minishop/pull/14
- Split subscription stats by access type, CI/CD pipelines and notification/docs-demo fixesDev by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/15
Участники
- @dependabot[bot] made their first contribution in https://github.com/3252a8/remnawave-minishop/pull/14
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.5...v3.4.6
v3.4.5 — 2026-05-30
Заголовок раздела «v3.4.5 — 2026-05-30»Изменения после релиза v3.4.4. Ключевые темы: отслеживание доставки Telegram-уведомлений и приглашение пользователей запустить бота, зеркалирование жизненного цикла подписки через panel webhook с email-дублированием, реферальные начисления по периодам тарифа, настройки Remnawave panel webhook в админке, блокировка краулеров и заметные улучшения Mini App/Admin UI.
Изменения
Заголовок раздела «Изменения»- Добавлено отслеживание статуса Telegram-уведомлений: новые поля статуса/времени проверки в
users(миграция 0032), сервисtelegram_notificationsс состояниямиenabled/needs_start/blocked/unknownи баннер в Mini App, предлагающий пользователю запустить бота для получения уведомлений. - Добавлено зеркалирование жизненного цикла подписки: новый сервис
subscription_lifecycle_notificationsдублирует напоминания об истечении/просрочке через panel webhook и параллельно по email; добавлена синхронизация email-уведомлений пользователя (user_email_notifications). - Улучшен email-flow продления подписки, расширены email-шаблоны (
email_templates), добавлен флагSUBSCRIPTION_EMAIL_NOTIFICATIONS_ENABLED. - Реализованы реферальные начисления по периодам тарифа: поля
referral_bonus_days_inviter/referral_bonus_days_refereeв конфиге тарифов с валидацией, расчёт начислений по периоду и группировка отображения начислений по тарифам в боте. - Вынесены настройки Remnawave panel webhook в Admin → System → Settings и в манифест админ-настроек; уточнены логи panel webhook и подписки, обновлена документация по настройке
WEBHOOK_URL(/webhook/panel). - Исправлена обработка panel webhook: подписки сохраняются при сбое lookup в панели, устранены deadlock’и в subscription worker, расширено логирование
panel_api_service. - Добавлена блокировка краулеров и AI-ботов:
robots.txt(GPTBot, ClaudeBot, PerplexityBot и др.), заголовкиX-Robots-Tag: noindexво всех location nginx, копированиеrobots.txtв образ frontend. - Улучшен Mini App UX: новые UI-контролы (range/color/file input), переработанные scroll-area, обновлённые экраны Devices/Invite/Support/Auth, скрытие сводки трафика для неактивных устройств, показ Telegram-логина без email-авторизации.
- Улучшена Admin Panel: переработаны карточки пользователей в логах, стандартизированы веб-контролы и редактор тарифов.
- Исправлены платежи: форматирование лимитов premium-трафика из байтов, доработки YooKassa и shared success/webhooks.
- Обновлены docs/demo: runtime demo в dev, таблица уведомлений, примеры деплоя и compose.
- Прочее: заданы дефолтные цены
RUB_PRICE_*(200/600/1200/2400), reload locale-overrides по содержимому файла, нормализация line endings фронтенда (.gitattributes).
При обновлении
Заголовок раздела «При обновлении»- Изменение схемы БД: миграция
0032_add_telegram_notification_statusдобавляет 4 столбца вusers(включается автоматически). - Новые настройки:
SUBSCRIPTION_EMAIL_NOTIFICATIONS_ENABLED; в конфиге тарифов —referral_bonus_days_inviter/referral_bonus_days_referee. ДефолтыRUB_PRICE_1/3/6/12_MONTH(S)теперь 200/600/1200/2400 (ранее не заданы). - Для работы panel webhook нужно задать
PANEL_WEBHOOK_SECRETи указать в Remnawave PanelWEBHOOK_URL = WEBHOOK_BASE_URL + /webhook/panel. - Dockerfile frontend обновлён: в образ копируется
robots.txt.
Ссылки на изменения и участники
- Telegram delivery tracking, subscription lifecycle mirroring and per-tariff referral bonuses by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/12
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.4...v3.4.5
v3.4.4 — 2026-05-28
Заголовок раздела «v3.4.4 — 2026-05-28»Добавлены бэкапы, интерактивная demo-страница в документации, улучшения Mini App/Admin Panel, фиксы платежей/HWID и локальные уведомления по подпискам.
Изменения
Заголовок раздела «Изменения»- Добавлена система бэкапов: ручное создание из админки, worker для архивов, отправка в backup/log chat, восстановление из архива, проверки безопасности ZIP и документация по настройке.
- Чтобы работал бэкап docker compose папки, нужно смонтировать в backend и worker контейнеры volume:
${COMPOSE_BACKUP_SOURCE:-.}:/app/compose-source:${COMPOSE_RESTORE_MODE:-rw} - Обновлены документация и demo-страница приложения: добавлен отдельный demo runtime, fullscreen demo routes, мобильная навигация, mock-сценарии Mini App/Admin Panel/Auth/Devices/Backups и актуализированные страницы docs.
- Улучшен Mini App UX: компактные карточки трафика и статуса, корректные действия по тарифам, depleted-состояния, activation dialog для forced actions, обновление устройств после billing actions.
- Улучшены авторизация и локализация: общий экран подтверждения email-кода, Telegram auth в demo flow, сохранение языка аккаунта, сохранение admin view при смене языка, обновление EN/RU переводов.
- Добавлены default brand assets и fallback favicon/logo для webapp/admin appearance.
- Улучшена поддержка: сохранение черновиков тикетов, корректные отступы/ширина сообщений и более быстрое завершение ответов.
- Исправлены платежи и HWID top-up: сериализация дат, idempotency webhook-ов, расчет paid period, edge cases провайдеров и интеграция HWID-платежей через YooKassa.
- Добавлен локальный worker уведомлений по подпискам: напоминания об истечении, expired-сценарии и уведомления о depleted trial traffic.
- Обновлены deploy/Docker настройки: оптимизация layer caching, зависимости для backup/restore и compose mounts для бэкапов.
- Расширены тесты для backup/restore, backup worker, subscription notifications, payment webhooks, HWID top-up, account language и webapp assets.
Ссылки на изменения и участники
- Update and structurize docs by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/5
- Backups, docs demo, and Mini App improvements by @3252a8 in https://github.com/3252a8/remnawave-minishop/pull/7
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.3...v3.4.4
v3.4.3 — 2026-05-26
Заголовок раздела «v3.4.3 — 2026-05-26»Mini App и инструкции подключения
Заголовок раздела «Mini App и инструкции подключения»- Добавлены встроенные install guides в Mini App: экран
/install, публичные ссылки/s/<token>, QR-код, deeplink-кнопки и fallback на обычную ссылку подключения. - Добавлена загрузка Subscription Page config из Remnawave Panel, с опциональным JSON override из админки.
- Обновлены кнопки бота после оплаты/trial/кода активации: теперь можно вести пользователя сразу в инструкции подключения.
- Добавлены webapp preview metadata, title в настройках админки и iOS home screen icons.
Runtime-переводы
Заголовок раздела «Runtime-переводы»- Добавлен runtime-редактор переводов в админке.
- Переводы можно переопределять без правки
locales/*.json; overrides хранятся в БД и зеркалируются вdata/locales-overrides.json. - Добавлена группировка ключей переводов по аудитории и разделам.
Платежи
Заголовок раздела «Платежи»- Стабилизирован Wata provider: payment links, prepayment webhooks, retry/reuse pending links, refresh статуса, обработка истекших ссылок и корректное сохранение provider transaction id.
- TTL ссылок Wata переведен на минуты через
WATA_LINK_TTL_MINUTES. - Исправлены YooKassa webapp payments и HWID device top-ups.
- Исправлено открытие Telegram Stars invoice внутри Mini App.
- Добавлен режим admin-only для платежных провайдеров.
- Из success-сообщений убраны прямые ссылки подключения; вместо этого используются кнопки/инструкции.
Тарифы, trial и HWID
Заголовок раздела «Тарифы, trial и HWID»- Добавлен экран активации trial в Mini App.
- Улучшены настройки trial и тарифов в админке.
- Legacy-настройки тарифов отделены от JSON-каталога и помечены предупреждением.
- HWID top-ups теперь привязаны к сроку активной подписки, поддерживают prorated price и renewal-сценарии.
- Исправлено сохранение premium squad access и лишняя синхронизация premium squad state.
Админка
Заголовок раздела «Админка»- Добавлен detail view для платежей.
- Улучшены настройки платежных провайдеров, webhook URL и группировка provider settings.
- Улучшены настройки тарифов, trial и legacy-параметров.
- Добавлено удаление Remnawave user вместе с bot account.
- Обновлены стили админки, webapp layout, custom themes и preview.
Panel sync и профили
Заголовок раздела «Panel sync и профили»- Убрана inline-синхронизация панели на старте бота; ручной sync теперь ставится в очередь.
- Добавлены компактные diagnostics для panel sync.
- Исправлены лишние PATCH-запросы к панели из-за description churn.
- Исправлена очистка legacy email из panel description и восстановление linked panel email.
- Добавлен auto-merge duplicate panel identities.
- Профиль Web App обновляется после activation/payment status.
Deploy и документация
Заголовок раздела «Deploy и документация»- Обновлены deploy examples: Caddy, Nginx, Newt/Pangolin и no-proxy.
- Обновлены README и docs по Web App, install guides, env vars, deployment, tariffs и migration notes.
При обновлении
Заголовок раздела «При обновлении»- Добавлены миграции БД для runtime locale overrides, install share tokens и HWID validity/payment fields.
- Для Wata старый
WATA_PAYMENT_LINK_TTL_DAYSзаменен наWATA_LINK_TTL_MINUTES; дефолт — 15 минут. - Install guides включены по умолчанию и пытаются читать Subscription Page config из Remnawave Panel; при ошибке есть fallback на обычную ссылку подключения.
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.2...v3.4.3
v3.4.2 — 2026-05-22
Заголовок раздела «v3.4.2 — 2026-05-22»Вход, связывание аккаунтов и настройки админки
Заголовок раздела «Вход, связывание аккаунтов и настройки админки»Исходный PR · @3252a8
Auth / связка аккаунтов
Заголовок раздела «Auth / связка аккаунтов»- Починен вход и привязка Telegram в Mini App и через Telegram OAuth.
- Исправлены сценарии объединения email-аккаунта и Telegram-аккаунта, включая случай, когда у email-аккаунта активная подписка, а у Telegram-аккаунта подписка уже истекла.
- При merge аккаунтов теперь корректно синхронизируется identity в Remnawave panel: сначала удаляется лишний panel user, затем обновляется оставшийся.
- Добавлено лог-уведомление об объединении аккаунтов.
- Исправлена логика logout в Telegram Mini App: ручной logout больше не ломает повторную авторизацию через initData.
Админка и настройки
Заголовок раздела «Админка и настройки»- В настройках платежных провайдеров добавлен вывод webhook URL с возможностью копирования.
- Улучшена загрузка admin assets через стабильные пути и fallback, чтобы lazy-loaded админка не падала из-за stale hashed assets.
- Исправлен формат отображения версии приложения в sidebar админки: dev-сборки теперь различимы по branch/sha.
- Подправлены стили мобильной кнопки админки.
Платежи / panel sync / тарифный worker
Заголовок раздела «Платежи / panel sync / тарифный worker»- Исправлено появление pay button при включенном payment provider.
- Улучшена синхронизация panel identity, чтобы избежать повторных лишних обновлений.
- Добавлено восстановление missing panel user reference для подписок, если у пользователя уже есть актуальный panel UUID.
- Если bulk-prefetch подтверждает отсутствие panel user, подписка деактивируется без пользовательских уведомлений.
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.1...v3.4.2
v3.4.1 — 2026-05-21
Заголовок раздела «v3.4.1 — 2026-05-21»- Раздел с созданием тикетов поддержки в веб апп
- Информация об оплачиваемом сервисе перед оплатой в веб апп и в боте
- Логин с помощью email и пароля
- Рефакторинг платежных провайдеров
- Платежный провайдер Wata
- Платежный провайдер Heleket
- Большая оптимизация производительности
- Исправление мелких багов
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.0...v3.4.1
v3.4.0 — 2026-05-17
Заголовок раздела «v3.4.0 — 2026-05-17»- Возможность создавать кастомные темы
- Загрузка лого и favicon через веб админку
- Разделение сервиса на отдельные контейнеры и повышение стабильности, задел на будущее
- Фикс активации триала
- Фикс YooKassa
- Фикс показа кнопки докупки устройств когда не определены цены для докупки
- Фикс дублирования элементов покупки подписки при использовании legacy тарифов
- Другие мелкие фиксы и улучшения
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.3.0...v3.4.0
v3.3.0 — 2026-05-13
Заголовок раздела «v3.3.0 — 2026-05-13»- Веб апп админка
- Возможность создания нескольких тарифов (по месяцам и по трафику, с разными сквадами и т.п.)
- Докупка трафика и устройств
- Возможность создания премиум-сквадов внутри тарифа с отдельным трекингом трафика (и его докупкой)
- Десктоп верстка веб апп
- Возможность выключить логирование действий администраторов
- Исправлена смена сквадов пользователя при начислении периода за приглашения.
- Фикс багов и другие мелкие улучшения
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.4...v3.3.0
v3.2.4 — 2026-05-06
Заголовок раздела «v3.2.4 — 2026-05-06»- Исправление доступа к веб апп, когда недоступен telegram со стороны пользователя, отображение статуса на кнопке telegram oauth, показ аватара из telegram, даже если он недоступен 8783129c
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.3...v3.2.4
v3.2.3 — 2026-05-02
Заголовок раздела «v3.2.3 — 2026-05-02»- Исправление кнопки выбора языка в веб апп на Android 50857d52
Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.2...v3.2.3
v3.2.2 — 2026-05-01
Заголовок раздела «v3.2.2 — 2026-05-01»Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.1...v3.2.2
- Исправление: кнопка открытия страницы-подписки пропала из веб апп e1223f8c
v3.2.1 — 2026-05-01
Заголовок раздела «v3.2.1 — 2026-05-01»Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.0...v3.2.1
- Переход на новый механизм Telegram OAuth 4de730bf
- Улучшение меню телеграм бота 81f51687
- Исправление кнопки выбора языка в веб апп d15b1be3
- Небольшое исправление дизайна писем — убран фон под логотипом 4d0241a0
Требуется настройка бота и .env для перехода на новый Telegram OAuth
v3.2.0 — 2026-04-30
Заголовок раздела «v3.2.0 — 2026-04-30»Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.1.0...v3.2.0
- Web App теперь использует svelte, улучшен интерфейс
- Добавлена поддержка тарифов за ГБ в Web App
- Добавлена поддержка управлением HWID в Web App
- Добавлена поддержка триал периода в Web App
- Добавлено оформление для email с кодами т.п.
- Логирование регистрации пользователей через почту, слиянике аккаунтов и т.п.
- Прочие улучшения и исправления
v3.1.0 — 2026-04-27
Заголовок раздела «v3.1.0 — 2026-04-27»Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.0.0...v3.1.0
- Реализован Web App / Mini App: единый экран подписки с ссылкой подключения, остатком времени, трафиком и оплатой.
- Добавлены новые способы входа: Telegram Mini Apps
initData, Telegram Login Widget и вход по одноразовому коду на email. - Улучшены платежи: доработаны сценарии оплаты в Web App, добавлены несколько кнопок Platega,.
- Обновлено меню бота: по умолчанию доступны только кнопки Web App и поддержки, остальные действия вынесены в отдельную команду.
- Усилены безопасность и стабильность: доработаны Mini App auth, CSRF, CSP и проверка webhook-подписей.
- Подготовлена миграция на новый нейминг
remnawave-minishopвместоremnawave-tg-shop.
Важно при обновлении: контейнеры, тома и GHCR-образ переименованы, поэтому для существующих установок нужна миграция.