Releases: 3252a8/remnawave-minishop
v3.5.0
Changelog 3.4.10 → 3.5.0:
Summary
Помимо нескольких пользовательских функций (контроль доступа к регистрации, premium-правила пробного периода, доступ к меню бота, уведомления о сбросе квоты трафика) релиз содержит очень крупный внутренний рефакторинг — типизация контрактов, миграция фронтенда на Svelte 5 runes, декомпозиция god-файлов и пакетирование платёжных провайдеров.
Changelog
- Добавлен контроль доступа к регистрации (
REGISTRATION_INVITE_ONLY_ENABLED): при включении новые публичные регистрации допускаются только по валидной пригласительной ссылке; существующие пользователи продолжают входить через Telegram, Web App, email-код, magic-link и пароль. - Добавлены правила premium-доступа в пробном периоде: отдельный лимит premium-трафика (
TRIAL_PREMIUM_TRAFFIC_LIMIT_GB) и список premium Internal Squads для trial (TRIAL_PREMIUM_SQUAD_UUIDS), с применением квоты к premium-сквадам. - Добавлена возможность выключения меню Telegram-бота (оставляет минимальное количество кнопок и побуждает использовать веб апп).
- Добавлены уведомления о сбросе квоты трафика для regular- и premium-тарифов — для пользователей, которые потратили (или почти потратили) трафик в предыдущем периоде.
- Исправления платежей: сохранение статуса успешного платежа, детали неуспешных попыток, отображение единиц entitlement в логах, подавление устаревших уведомлений о сбое оплаты, предотвращение циклов импорта при старте провайдеров.
- Исправления Admin/Mini App: рендер строк datatable после первой загрузки, корректные surface-токены светлой темы, центрирование спиннера логотипа, уточнены подписи настроек, защита от no-op обновлений стора.
- Улучшена диагностика install-wizard.
Рефакторинг и инфраструктура
- Типизированные HTTP-контракты и OpenAPI: pydantic request/response-модели для admin- и webapp-роутов (вместо «свободных» схем), генерация
docs/openapi.jsonиfrontend/.../openapi.generated.ts, типизированные path-builders API-клиента, реестр route-contracts и проверки контрактов в CI. - Контракты доменных событий: одна pydantic-модель на событие (
extra="forbid"), публикация черезemit_model, регенерируемый каталог событий. - Миграция фронтенда на Svelte 5 runes: все компоненты и сторы переведены на runes, удалён legacy-синтаксис (
export let,$:, слоты и динамические компоненты → snippets), runes-only режим закреплён сборкой и линтом, убран datatable runes-bridge. - Декомпозиция
App.svelte: shell-state стор на runes и вынос десятков runtime/action/helper/view-модулей (boot, resume, auth, activation, telegram, navigation, billing-deeplink и др.), оболочка приложения переведена на TypeScript. - Типизация бэкенда (mypy ratchet): handlers, services, payment providers, db, middlewares, config, keyboards и web-плагины; mypy зелёный по всему enforced-скоупу, скоуп расширен в CI.
- Пакетирование платёжных провайдеров: каждый провайдер — отдельный пакет (yookassa, stripe, wata, paykilla, heleket, platega, lava, severpay, freekassa, pally, cryptopay, cloudpayments, stars), общий link-flow engine + provider descriptor, общая обработка webhook'ов, import-only фасады и conformance-контракты.
- Декомпозиция god-файлов: разбиты admin-секции, email-шаблоны, tariff-traffic worker, panel API service, subscription lifecycle, admin sync workflow, user start flow, subscription core и billing/auth/asset-роуты.
- Границы архитектуры: проверки import-границ фасадов и runtime-хабов, отвязка фасадов от runtime-импортов, типизированные settings-views в
config, гейты согласованности web-ответов, заморозка публичных поверхностей фасадов тестами. - Тесты и QA: реорганизация набора по ответственности, Vitest-coverage, Playwright mock-smoke e2e-гейт, единый dev/QA compose-стенд, контракты webhook/link-flow провайдеров.
- Инфраструктура и тулинг: нормализация LF-окончаний через
.gitattributes, агрегирующие команды качества, выравнивание root-check-скрипта с гейтами CI, contract-checks в CI. - Документация: интерактивный API reference на docs-site, how-to рецепты (провайдер/событие/эндпоинт), гайды контрибьютора и агента, обзор архитектуры, security scaffolding.
Зависимости и безопасность
- Security-фикс (high):
@playwright/testподнят с^1.50.1до^1.55.1(lockfile резолвится в 1.61.1) — закрывает GHSA-7mvr-c777-76hp (Playwright скачивал и устанавливал браузеры без проверки подлинности SSL-сертификата). Открытых Dependabot-алертов: 0. - Backend:
sqlalchemy[asyncio]2.0.49 → 2.0.51 (patch), YooKassa SDK 3.10.1 → 3.11.0 (minor); ранее в диапазоне —pydantic-settings2.14.1 → 2.14.2. - Frontend dev-тулинг до актуальных версий: eslint 10.6.0, svelte 5.56.4, vite 8.1.0, svelte-check 4.7.1, typescript-eslint 8.62.0, prettier 3.9.0, eslint-plugin-svelte 3.20.0, svelte-eslint-parser 1.8.0, @tanstack/svelte-query 6.1.35, @internationalized/date 3.12.2, tailwindcss / @tailwindcss/cli / @tailwindcss/vite 4.3.1; применено форматирование prettier 3.9.0.
- Гигиена lockfile: перегенерирован консистентный
frontend/package-lock.json, чтобыnpm ciпроходил во всех фронтенд-джобах CI.
Notes
- Новые переменные окружения:
REGISTRATION_INVITE_ONLY_ENABLED,TRIAL_PREMIUM_TRAFFIC_LIMIT_GB,TRIAL_PREMIUM_SQUAD_UUIDS; dev/QA-стенд добавляетDEV_POSTGRES_PORTиQA_*переменные. Новых миграций БД нет.
What's Changed
- chore(deps): bump the pip group across 2 directories with 1 update by @dependabot[bot] in #40
- Feature/api refactor by @3252a8 in #41
- Feature/architecture hardening by @3252a8 in #42
- Feature/architecture refactoring by @3252a8 in #43
- Feature/provider orchestration unification by @3252a8 in #44
- Feature/svelte runes by @3252a8 in #45
- Registration gate, trial premium rules, typed API contracts + large refactor by @3252a8 in #46
Full Changelog: v3.4.10...v3.5.0
v3.4.10
Changelog 3.4.9 → 3.4.10:
Summary
Крупная переработка скрипта установщика и миграции с Remnashop, новый платёжный провайдер Pally и расширение Wata Crypto, ускорение и кэширование гайдов по подписке, небольшие исправления гайдов, перевод админских таблиц на datatables и другие фиксы.
Changelog
- Расширен установщик (
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 в работающий контейнер.
Notes
- Новая переменная окружения
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с).
What's Changed
- feat: add Pally payment provider by @3252a8 in #38
- feat: installer DNS/cert & migration overhaul, Pally/Wata payments, guide caching by @3252a8 in #39
Full Changelog: v3.4.9...v3.4.10
v3.4.9
Changelog 3.4.8 → 3.4.9:
Summary
Добавлены платёжные провайдеры Stripe, CloudPayments и LAVA Business, внутренняя plugin/extension API с реестром фич, шина доменных событий с маршрутизацией side-effects через реакции, кастомизация темы webapp и набор улучшений админ-панели, webapp и платёжного финализирования.
Changelog
- Добавлены платёжные провайдеры 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.
Notes
- Изменение схемы БД: добавлен столбец
users.referral_welcome_bonus_claimed_at, миграции включены. - Dockerfile обновлён: force-upgrade
certifiпосле установки (pip-audit игнорирует PYSEC-2024-230 из-за пинаaiocryptopay==0.4.8),curlоставлен в runtime-образе для healthcheck.8
What's Changed
- provider: lava by @3252a8 in #30
- chore(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in #31
- Feature/cloudpayments by @3252a8 in #33
- Feature/stripe by @3252a8 in #35
- New payment providers, plugin/extension API and domain event bus by @3252a8 in #36
- chore(deps-dev): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #34
- chore(deps-dev): bump vite from 8.0.12 to 8.0.16 in /frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in #37
Full Changelog: v3.4.8...v3.4.9
v3.4.8
Changelog 3.4.7 → 3.4.8:
Summary
Изменения после релиза v3.4.7 (v3.4.7..HEAD): новый платёжный провайдер PayKilla, защита бота от флуда обновлений Telegram, shell-мастер установки с миграцией с legacy tg-shop и Remnashop, диагностика конфигурации в админке и большой блок улучшений платежей, тарифов и Mini App.
Changelog
- Добавлен платёжный провайдер 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;
- Телеметрия дополнена признаком официальной/кастомной сборки образа (для анонимной статистики).
Notes
- Есть изменения схемы БД — миграции включены и применяются автоматически.
- Новые настройки окружения: блок
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).
What's Changed
- remnashop migration feature, install wizard by @3252a8 in #23
- chore(deps): bump the pip group across 2 directories with 1 update by @dependabot[bot] in #25
- Добавлена поддержка локального SMTP-сервера на базе Docker Mailserver by @austnv in #26
- Документация платёжек и замена домена Freekassa by @BADtochka in #27
- feat: harden Telegram bot anti-flood handling by @3252a8 in #28
- PayKilla provider, Telegram anti-flood, install wizard and Remnashop migration (test) by @3252a8 in #29
New Contributors
- @austnv made their first contribution in #26
- @BADtochka made their first contribution in #27
Full Changelog: v3.4.7...v3.4.8
v3.4.7
Changelog 3.4.6 → 3.4.7:
Summary
Мультивалютные тарифы с фильтрацией провайдеров по валюте (если хотите принимать оплату не в рублях), безопасный dry-run режим записи в Remnawave Panel (дле dev и тестов перед миграцией), анонимная opt-out телеметрия установок, улучшение интерфейса управления пользователями в админке, а также набор фиксов каналов, deeplink-шлюза, top-up трафика и локализации писем.
Changelog
- Добавлены мультивалютные тарифы: 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 панели, метрики/гранты/сброс триала в админке, аудит сообщений, нормализация канала, реестр платёжных провайдеров.
Notes
- Есть изменение схемы БД: миграция
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/ключом или тогглом в админке. Персональные данные и секреты не отправляются.
What's Changed
- Feature/multicurrency by @3252a8 in #18
- Feature/telemetry by @3252a8 in #19
- Enhance admin users and subscription workflows by @3252a8 in #20
- Improve admin UX, trial reset behavior, and channel subscription checks by @3252a8 in #21
- Multicurrency (future-proof feature), panel dry-run mode (dev feature), install telemetry and admin user tools by @3252a8 in #22
Full Changelog: v3.4.6...v3.4.7
v3.4.6
Changelog 3.4.5 → 3.4.6:
Summary
Статистика подписок разбита по типу доступа (активные / платные / пробные / бесплатные), добавлены GitHub Actions для сборки образов, PR-проверок и сканирования безопасности, исправлены probe-уведомления Telegram и маршрутизация demo-страницы документации.
Changelog
- Разбита статистика подписок по типу доступа: добавлены отдельные счётчики «с активной подпиской», «с платной», «с пробной» и «с бесплатной подпиской»; неактивные считаются как пользователи без активной подписки. Логика классификации (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.
Notes
- Схема БД не меняется; новые env-переменные не добавлены.
- Для CI/CD появились новые GitHub Actions workflow — потребуются стандартные права на пакеты/registry в репозитории.
What's Changed
- ci: add GitHub Actions for image builds, PR checks and security scans by @3252a8 in #13
- chore(deps-dev): bump svelte from 5.55.5 to 5.56.0 in /frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in #14
- Split subscription stats by access type, CI/CD pipelines and notification/docs-demo fixesDev by @3252a8 in #15
New Contributors
- @dependabot[bot] made their first contribution in #14
Full Changelog: v3.4.5...v3.4.6
v3.4.5
Changelog 3.4.4 → 3.4.5:
Summary
Что вошло в ветку dev после релиза v3.4.4 (v3.4.4..HEAD, готовится к следующему релизу). Ключевые темы: отслеживание доставки Telegram-уведомлений и приглашение пользователей запустить бота, зеркалирование жизненного цикла подписки через panel webhook с email-дублированием, реферальные бонусы по периодам тарифа, настройки Remnawave panel webhook в админке, блокировка краулеров и заметные улучшения Mini App/Admin UI.
Changelog
- Добавлено отслеживание статуса 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).
Notes
- Изменение схемы БД: миграция
0032_add_telegram_notification_statusдобавляет 4 столбца вusers(включается автоматически). - Новые настройки:
SUBSCRIPTION_EMAIL_NOTIFICATIONS_ENABLED; в конфиге тарифов —referral_bonus_days_inviter/referral_bonus_days_referee. ДефолтыRUB_PRICE_1/3/6/12_MONTH(S)теперь 200/600/1200/2400 (ранее не заданы). - Для работы panel webhook нужно задать
PANEL_WEBHOOK_SECRETи указать в Remnawave PanelWEBHOOK_URL = WEBHOOK_BASE_URL + /webhook/panel. - Dockerfile frontend обновлён: в образ копируется
robots.txt.
What's Changed
- Telegram delivery tracking, subscription lifecycle mirroring and per-tariff referral bonuses by @3252a8 in #12
Full Changelog: v3.4.4...v3.4.5
v3.4.4
Changelog 3.4.3 → 3.4.4:
Summary
Добавлены бэкапы, интерактивная demo-страница в документации, улучшения Mini App/Admin Panel, фиксы платежей/HWID и локальные уведомления по подпискам.
Changelog
- Добавлена система бэкапов: ручное создание из админки, 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.
What's Changed
- Update and structurize docs by @3252a8 in #5
- Backups, docs demo, and Mini App improvements by @3252a8 in #7
Full Changelog: v3.4.3...v3.4.4
v3.4.3
Changelog 3.4.2 → 3.4.3:
Mini App и инструкции подключения
- Добавлены встроенные install guides в Mini App: экран
/install, публичные ссылки/s/<token>, QR-код, deeplink-кнопки и fallback на обычную ссылку подключения. - Добавлена загрузка Subscription Page config из Remnawave Panel, с опциональным JSON override из админки.
- Обновлены кнопки бота после оплаты/trial/промокода: теперь можно вести пользователя сразу в инструкции подключения.
- Добавлены webapp preview metadata, title в настройках админки и iOS home screen icons.
Runtime-переводы
- Добавлен runtime-редактор переводов в админке.
- Переводы можно переопределять без правки
locales/*.json; overrides хранятся в БД и зеркалируются вdata/locales-overrides.json. - Добавлена группировка ключей переводов по аудитории и разделам.
Платежи
- Стабилизирован Wata provider: payment links, prepayment webhooks, retry/reuse pending links, refresh статуса, обработка истекших ссылок и корректное сохранение provider transaction id.
- TTL ссылок Wata переведен на минуты через
WATA_LINK_TTL_MINUTES. - Исправлены YooKassa webapp payments и HWID device top-ups.
- Исправлено открытие Telegram Stars invoice внутри Mini App.
- Добавлен режим admin-only для платежных провайдеров.
- Из success-сообщений убраны прямые ссылки подключения; вместо этого используются кнопки/инструкции.
Тарифы, trial и HWID
- Добавлен экран активации trial в Mini App.
- Улучшены настройки trial и тарифов в админке.
- Legacy-настройки тарифов отделены от JSON-каталога и помечены предупреждением.
- HWID top-ups теперь привязаны к сроку активной подписки, поддерживают prorated price и renewal-сценарии.
- Исправлено сохранение premium squad access и лишняя синхронизация premium squad state.
Админка
- Добавлен detail view для платежей.
- Улучшены настройки платежных провайдеров, webhook URL и группировка provider settings.
- Улучшены настройки тарифов, trial и legacy-параметров.
- Добавлено удаление Remnawave user вместе с bot account.
- Обновлены стили админки, webapp layout, custom themes и preview.
Panel sync и профили
- Убрана inline-синхронизация панели на старте бота; ручной sync теперь ставится в очередь.
- Добавлены компактные diagnostics для panel sync.
- Исправлены лишние PATCH-запросы к панели из-за description churn.
- Исправлена очистка legacy email из panel description и восстановление linked panel email.
- Добавлен auto-merge duplicate panel identities.
- Профиль Web App обновляется после activation/payment status.
Deploy и документация
- Обновлены deploy 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: v3.4.2...v3.4.3
v3.4.2
Changelog 3.4.1 → 3.4.2:
Stabilize account linking, auth, and admin settings by @3252a8 in #1:
Auth / связка аккаунтов
- Починен вход и привязка Telegram в Mini App и через Telegram OAuth.
- Исправлены сценарии объединения email-аккаунта и Telegram-аккаунта, включая случай, когда у email-аккаунта активная подписка, а у Telegram-аккаунта подписка уже истекла.
- При merge аккаунтов теперь корректно синхронизируется identity в Remnawave panel: сначала удаляется лишний panel user, затем обновляется оставшийся.
- Добавлено лог-уведомление об объединении аккаунтов.
- Исправлена логика logout в Telegram Mini App: ручной logout больше не ломает повторную авторизацию через initData.
Админка и настройки
- В настройках платежных провайдеров добавлен вывод webhook URL с возможностью копирования.
- Улучшена загрузка admin assets через стабильные пути и fallback, чтобы lazy-loaded админка не падала из-за stale hashed assets.
- Исправлен формат отображения версии приложения в sidebar админки: dev-сборки теперь различимы по branch/sha.
- Подправлены стили мобильной кнопки админки.
Платежи / panel sync / тарифный worker
- Исправлено появление pay button при включенном payment provider.
- Улучшена синхронизация panel identity, чтобы избежать повторных лишних обновлений.
- Добавлено восстановление missing panel user reference для подписок, если у пользователя уже есть актуальный panel UUID.
- Если bulk-prefetch подтверждает отсутствие panel user, подписка деактивируется без пользовательских уведомлений.
Full Changelog: v3.4.1...v3.4.2