Перейти к содержимому

Список изменений

Новые возможности, исправления и важные замечания к обновлению Remnawave Minishop. Сначала — изменения ветки dev, затем опубликованные версии от новых к старым.

История собрана из релизов GitLab и релизов GitHub. Даты выпуска указаны в UTC по исходным релизам GitLab; дата появления зеркала в GitHub может быть позже. Теги без опубликованного релиза сюда не включены.

Новых изменений продукта после v3.8.3 пока не зафиксировано. Сравнить с v3.8.3.

GitLab · GitHub

  • Другой способ оплаты при недоступности провайдера. Если создание счёта отклонено и платёжная ссылка не создана, 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)

GitLab · GitHub

Добавлены 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).

GitLab · GitHub

Добавлены 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).

GitLab · GitHub

Добавлены независимые от 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)

GitLab · GitHub

Добавлены рекуррентные платежи 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.

GitLab · GitHub

Расширены меню настройки темы 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

GitLab · GitHub

Добавлены личный баланс, подарочные подписки, вход через 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.

GitLab · GitHub

Добавлены гибкий 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-значений нет.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.6.0...v3.6.1

GitLab · GitHub

Добавлена функция партнёрской программы, сертифицирована совместимость с 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/data mount и отдельные блокировки 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-зависимостей.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.8...v3.6.0

GitLab · GitHub

Новый платёжный провайдер 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).
Ссылки на изменения и участники

Участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.7...v3.5.8

GitLab · GitHub

  • Добавлены 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.
Ссылки на изменения и участники

Участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.6...v3.5.7

GitLab · GitHub

Расширено управление тарифами, улучшены поддержка и согласованность подписок, усилена обработка платежей и 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.
Ссылки на изменения и участники

Участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.4...v3.5.6

GitLab · GitHub

Усилены платёжные сценарии, конкурентная обработка аккаунтов и установщик; улучшены админские превью и переходы из 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.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.3...v3.5.4

GitLab · GitHub

Главные темы: переработка админских рассылок (редактор, персонализация, 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 работает через собственный клиент. Обновлён frontend package-lock.json (tiptap-редактор).
  • Docker: обновлён frontend nginx (edge-токен, split upstream) и Dockerfile; изменены compose-файлы и добавлены примеры деплоя.
  • Контрибьюторы: @BADtochka — раздельный API base и именование docker-сетей (a238319, 85a9160, a122c73, 0be145b, c563543, e9dbb18).
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.2...v3.5.3

GitLab · GitHub

Релиз преимущественно архитектурный:

  • унификация платёжных провайдеров через общий 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/), allowlist type: 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.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.1...v3.5.2

GitLab · GitHub

  • Расширена система кодов активации: процентная корректировка стоимости тарифа, множители срока и трафика, начисление дополнительного периода, режим применения только при оплате, условия применимости (минимальный срок/трафик, область применения — весь заказ или оформление) и архивирование кодов.
  • Добавлена фиксация эффектов и оформления: при активации кода и при оформлении заказа сохраняются снапшоты применённых эффектов, базовая сумма, корректировка, оплачиваемый срок и объём трафика — для истории и корректных расчётов.
  • Добавлены аудит активаций кодов и генерация ссылок для применения кода (для бота и 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-переменных окружения нет.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.5.0...v3.5.1

GitLab · GitHub

Помимо нескольких пользовательских функций (контроль доступа к регистрации, 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-settings 2.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_* переменные. Новых миграций БД нет.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.10...v3.5.0

GitLab · GitHub

Крупная переработка скрипта установщика и миграции с 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с).
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.9...v3.4.10

GitLab · GitHub

Добавлены платёжные провайдеры 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
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.8...v3.4.9

GitLab · GitHub

Изменения после релиза 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).
Ссылки на изменения и участники

Участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.7...v3.4.8

GitLab · GitHub

Мультивалютные тарифы с фильтрацией провайдеров по валюте (если хотите принимать оплату не в рублях), безопасный 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/ключом или тогглом в админке. Персональные данные и секреты не отправляются.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.6...v3.4.7

GitLab · GitHub

Статистика подписок разбита по типу доступа (активные / платные / пробные / бесплатные), добавлены 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 в репозитории.
Ссылки на изменения и участники

Участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.5...v3.4.6

GitLab · GitHub

Изменения после релиза 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 Panel WEBHOOK_URL = WEBHOOK_BASE_URL + /webhook/panel.
  • Dockerfile frontend обновлён: в образ копируется robots.txt.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.4...v3.4.5

GitLab · GitHub

Добавлены бэкапы, интерактивная 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.
Ссылки на изменения и участники

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.3...v3.4.4

GitLab · GitHub

  • Добавлены встроенные 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-редактор переводов в админке.
  • Переводы можно переопределять без правки 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 в 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.
  • Убрана 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 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

GitLab · GitHub

Вход, связывание аккаунтов и настройки админки

Заголовок раздела «Вход, связывание аккаунтов и настройки админки»

Исходный PR · @3252a8

  • Починен вход и привязка 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.
  • Подправлены стили мобильной кнопки админки.
  • Исправлено появление 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

GitLab · GitHub

  • Раздел с созданием тикетов поддержки в веб апп
  • Информация об оплачиваемом сервисе перед оплатой в веб апп и в боте
  • Логин с помощью email и пароля
  • Рефакторинг платежных провайдеров
  • Платежный провайдер Wata
  • Платежный провайдер Heleket
  • Большая оптимизация производительности
  • Исправление мелких багов

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.4.0...v3.4.1

GitLab · GitHub

  • Возможность создавать кастомные темы
  • Загрузка лого и favicon через веб админку
  • Разделение сервиса на отдельные контейнеры и повышение стабильности, задел на будущее
  • Фикс активации триала
  • Фикс YooKassa
  • Фикс показа кнопки докупки устройств когда не определены цены для докупки
  • Фикс дублирования элементов покупки подписки при использовании legacy тарифов
  • Другие мелкие фиксы и улучшения

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.3.0...v3.4.0

GitLab · GitHub

  • Веб апп админка
  • Возможность создания нескольких тарифов (по месяцам и по трафику, с разными сквадами и т.п.)
  • Докупка трафика и устройств
  • Возможность создания премиум-сквадов внутри тарифа с отдельным трекингом трафика (и его докупкой)
  • Десктоп верстка веб апп
  • Возможность выключить логирование действий администраторов
  • Исправлена смена сквадов пользователя при начислении периода за приглашения.
  • Фикс багов и другие мелкие улучшения

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.4...v3.3.0

GitLab · GitHub

  • Исправление доступа к веб апп, когда недоступен telegram со стороны пользователя, отображение статуса на кнопке telegram oauth, показ аватара из telegram, даже если он недоступен 8783129c

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.3...v3.2.4

GitLab · GitHub

  • Исправление кнопки выбора языка в веб апп на Android 50857d52

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.2...v3.2.3

GitLab · GitHub

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.1...v3.2.2

  • Исправление: кнопка открытия страницы-подписки пропала из веб апп e1223f8c

GitLab · GitHub

Full Changelog: https://github.com/3252a8/remnawave-minishop/compare/v3.2.0...v3.2.1

  • Переход на новый механизм Telegram OAuth 4de730bf
  • Улучшение меню телеграм бота 81f51687
  • Исправление кнопки выбора языка в веб апп d15b1be3
  • Небольшое исправление дизайна писем — убран фон под логотипом 4d0241a0

Требуется настройка бота и .env для перехода на новый Telegram OAuth

GitLab · GitHub

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 с кодами т.п.
  • Логирование регистрации пользователей через почту, слиянике аккаунтов и т.п.
  • Прочие улучшения и исправления

GitLab · GitHub

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-образ переименованы, поэтому для существующих установок нужна миграция.