Repository navigation
Releases
Reiwa v0.9.7.63
Reiwa v0.9.7.63
Тот, кто открывает кабинет впервые, с первого кадра видит название и оформление оператора, а не встроенное «Reiwa».
- Первый визит: название, цвета и заголовок вкладки — оператора уже в первом кадре. Сервер кладёт настройки оформления прямо в страницу.
- Первый визит, когда настроек нет даже у сервера: вместо «Reiwa» — нейтральный экран загрузки, не дольше 12 секунд.
- После обновления и перезапуска: сервер читает настройки до первого посетителя.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- Любая страница кабинета при первом визите — вход, «Подписки», мини-приложение в Telegram: ваше название, цвета и заголовок вкладки сразу, без мелькания «Reiwa».
- Сервер без настроек, первый визит: нейтральный экран со спиннером, без чужого названия; во вкладке — пустой заголовок и пустая иконка, а не «Reiwa». Кто уже бывал в кабинете, видит сохранённый браузером бренд оператора.
- Запуск кабинета: настройки читаются до того, как сервер начнёт принимать посетителей, — до 3 секунд, дальше в фоне.
- Предупреждения Redis «Command timed out» в момент обновления — не поломка, разбор в разделе «🧰».
✅ Что сделать после обновления
Ничего, кроме самого обновления.
По желанию: если ссылку на кабинет уже присылали в Telegram и её превью показывает «Reiwa», Telegram хранит это превью у себя, и кабинет его не перепишет. Обновить превью можно ботом @WebpageBot: отправьте ему ссылку на кабинет.
🏷️ «Друг увидел reiwa, а не моё название»
Как было. Сервер кабинета хранит настройки оформления надёжно: в памяти, в копии в Redis и у панели. Ваше название он вписывал в заголовок вкладки и в превью ссылки ещё до отправки страницы. Но сам экран — название, логотип, цвета — рисует браузер, а настройки он запрашивал отдельно, уже после того как нарисовал первый кадр. Браузер, который уже бывал в кабинете, хранит свою копию и сразу рисует ваш бренд. А тот, кто открыл кабинет впервые, первым кадром видел встроенное «Reiwa» — пока не придёт ответ. Обычно доли секунды, на медленном интернете или сразу после перезапуска — дольше.
Как стало. Сервер вкладывает в страницу ровно те настройки, которые отдал бы на запрос /api/v1/public-config: их собирает один и тот же код. Браузер берёт их раньше всего: цвета ставятся ещё до загрузки кабинета, название и логотип — в первом же кадре. Копия из страницы свежее той, что хранит браузер, поэтому читается первой. Запрос настроек после загрузки остаётся, как и раньше: если оператор что-то сохранил в панели между открытием страницы и этим запросом, изменение подхватится.
⏳ Когда настроек нет даже у сервера
Когда так бывает. В памяти сервера пусто (обычно — первые секунды после запуска), а за полторы секунды, которые страница ждёт, настройки не пришли ни от панели, ни из копии в Redis — или копия ещё ни разу не сохранялась.
Как было. Страница уходила с «Reiwa» в заголовке вкладки и иконкой Reiwa, а экран нового посетителя рисовался во встроенном оформлении — как будто это обычный рабочий кабинет. Попавшая в этот момент в Telegram ссылка запоминала превью «Reiwa».
Как стало.
- Экран нового посетителя: нейтральный фон и спиннер, без названия и логотипа. Кабинет спрашивает настройки раз в 3 секунды и показывается, как только они пришли. Кто уже бывал в кабинете, экрана загрузки не видит: браузер рисует сохранённый бренд оператора.
- Если за 12 секунд настроек так и нет, кабинет открывается во встроенном оформлении, как раньше: рабочий кабинет лучше бесконечного спиннера. Через 45 секунд без настроек оператору, как и раньше, приходит отчёт, что кабинет показывает встроенное оформление.
- Пока виден экран загрузки, кабинет не пишет «Reiwa» ни в заголовок вкладки, ни в иконку, ни в название для «На экран Домой».
- Страница, отданная без настроек, приходит без ничего от Reiwa: пустой заголовок (браузер показывает адрес), пустая иконка вкладки, без названия и иконки для «На экран Домой».
🔄 После обновления: настройки до первого посетителя
Как было. После перезапуска память процесса пуста, и настройки читались только по первому запросу посетителя. Если в это же время перезапускалась панель, а Redis отвечал медленно, первые страницы после обновления уходили без настроек.
Как стало. При запуске сервер сначала читает настройки и только потом начинает принимать посетителей. Ждёт до 3 секунд; если не успел, начинает работу и продолжает читать в фоне раз в 2 секунды, до двух минут. Одного удачного чтения достаточно: дальше у сервера всегда есть что отдать. В логах контейнера reiwa (сервер кабинета):
public config read at start— прочитано, с временем в миллисекундах (tookMs);public config not read yet at start; the server listens and keeps trying in the background— за 3 секунды не успел, читает в фоне;public config still unreadable; the first visitor's request will read it— за две минуты так и не прочитал. Это повод проверить связь кабинета с панелью и Redis.
🧰 Предупреждения Redis «Command timed out» при обновлении
Сразу после обновления в логах reiwa-bot или reiwa могут быть строки вида:
last-known-good: Redis could not be read — not taken for "no copy"; asked again shortly и last-known-good: save failed с Command timed out.
Это не поломка и не потеря данных. Каждая команда к Redis в кабинете ждёт ответа не дольше 2 секунд. Вероятная причина — диск хоста занят распаковкой нового образа, и Redis отвечает медленнее. Кабинет на это рассчитан: «не прочиталось» он не путает с «копии нет» — 2 секунды не обращается к Redis и читает снова при следующем обращении (при запуске сервер кабинета и сам повторяет чтение раз в 2 секунды). Несохранённую копию перезапишет следующий удачный ответ панели. Повод разбираться — только если такие строки продолжают идти через несколько минут после запуска:
docker compose logs --since 30m reiwa-bot reiwa 2>&1 | grep -c "Command timed out"📦 Размер страницы
Страница стала больше на размер настроек оформления — обычно это несколько килобайт. Если логотип, иконка, логотип карточки или текстура загружены прямо внутрь настроек (как data:-картинка), настройки могут весить сотни килобайт. Такие настройки больше 64 000 символов в страницу не вкладываются, чтобы не тащить их при каждой загрузке. Тогда новый посетитель на мгновение видит нейтральный экран загрузки — но не «Reiwa». Настройки с логотипом, загруженным файлом, под ограничение не попадают.
🤝 Кабинет и панель разных версий
- Кабинет 0.9.7.63 + панель 0.9.7.80, 0.9.7.79 и другие версии, с которыми работал 0.9.7.62 — работает: API не менялся.
- Панель обновлять не нужно. Таблица пар в E2E дополнена версией 0.9.7.63.
↩️ Откат
На 0.9.7.62 — без последствий: миграций и новых настроек нет. Вернётся встроенное «Reiwa» в первом кадре у новых посетителей и чтение настроек только по первому запросу после перезапуска.
🔍 Что не проверено
- Живой перезапуск кабинета рядом с настоящей панелью и Redis: прогрев проверен тестами, а не на сервере.
- Первый кадр проверен автотестами и вручную в браузере (Chromium) — на тестовой странице с настоящим компонентом оформления, с вложенными настройками и без них, — а не на живом кабинете с вашей темой.
- Превью ссылки в Telegram для страницы с пустым заголовком (когда у сервера нет настроек) не проверялось — по поведению Telegram оно показывает адрес.
🚫 Чего этот выпуск НЕ делает
- Не обновляет превью ссылок, которые Telegram уже запомнил с «Reiwa» — для этого @webpagebot.
- Не меняет манифест приложения (
/manifest.webmanifest): если установить кабинет на главный экран Android ровно в тот момент, когда у сервера нет настроек, приложение назовётся «Reiwa», как и раньше. - Не вкладывает в страницу настройки больше 64 000 символов — см. «📦».
- Не трогает бота: подписи и кнопки в Telegram-боте этим выпуском не меняются.
Reiwa v0.9.7.62
Reiwa v0.9.7.62
Выпуск безопасности и две мелкие доработки: в образе кабинета обновлены библиотеки, на которые GitHub (сканер Trivy) открыл 10 предупреждений, на экране «Подписки» безлимитный трафик и бессрочный срок показаны знаком «∞» вместо надписей, а на ПК свечение экрана подключения больше не обрезано по колонке.
- Сканер «Code scanning»: все 10 открытых предупреждений по образу кабинета закрыты — undici, body-parser, qs. Сверх них — zod.
- «Подписки»: «Трафик ∞» у подписки без лимита трафика, «Истекает ∞» у бессрочной; у бессрочной под кнопками больше нет двух строк «Подписка бессрочная — …».
- Подключение на ПК: фоновое свечение пошагового подключения растянуто на всю страницу.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- undici 8.12.1 → 8.12.3 — 8 предупреждений (high ×4, medium ×4). Кабинет ходит этой библиотекой только в свою панель.
- body-parser 2.3.0 → 2.4.0 — сжатое тело запроса больше не может уронить процесс (high). Касалось кабинета напрямую: он разбирает тело каждого JSON-запроса, в том числе до входа.
- qs 6.16.0 → 6.17.1 — уязвимый код в кабинете не вызывается, обновлён, чтобы закрыть предупреждение.
- zod 4.4.3 → 4.6.7 — проверка слишком больших списков могла съесть память (high по
npm audit). - «Подписки», карточка подписки: «Трафик ∞» вместо «Безлимитный трафик», «Истекает ∞» вместо «Истекает —».
- «Подписки», кнопки под карточкой: у бессрочной подписки нет строк «Подписка бессрочная — продлевать не нужно.» и «Подписка бессрочная — сменить тариф можно только через поддержку.».
- «Подключить», режим «Интерактивный — по шагам», ПК: свечение на всю страницу, без резких краёв по бокам колонки.
✅ Что сделать после обновления
Ничего, кроме самого обновления. Предупреждения во вкладке Security and quality → Code scanning репозитория закрываются сами после сборки main и тега: Trivy проверяет каждый новый образ.
🛡️ «Опа, пора исправить» — 10 предупреждений сканера
Как было. Во вкладке Code scanning репозитория reiwa висело 10 открытых предупреждений по образу кабинета, из них 5 уровня high. Все — в сторонних библиотеках, ни одно — в коде кабинета.
Как стало. Каждая библиотека поднята до исправленной версии. В блокировке зависимостей сменились только эти пакеты и два, которые body-parser тянет за собой (content-type 2.1.0, iconv-lite 0.7.3).
| Пакет | Было → стало | Что исправлено | Касалось ли кабинета |
|---|---|---|---|
| body-parser | 2.3.0 → 2.4.0 | High: ошибка потока распаковки сжатого тела не перехватывалась — процесс мог упасть | Да. express.json разбирает тело каждого запроса к кабинету, сжатое тоже, — в том числе до входа |
| undici | 8.12.1 → 8.12.3 | High ×4: падение при смене сертификата во время TLS-переговоров; Agent терял свою проверку сертификата (checkServerIdentity и подобные настройки); подмена кэша при переадресации; падение на ответе со слишком многими кодировками в Content-Encoding. Medium ×4: распаковка, ответы PONG у WebSocket, память у EventSource, проверка SRI |
Слабо. Кабинет использует из undici только Pool — два пула запросов к своей панели. Почти все сценарии требуют вредоносного сервера на той стороне. Agent, кэш, WebSocket и EventSource из undici кабинет не использует |
| qs | 6.16.0 → 6.17.1 | Medium: исключение при сборке строки запроса из массива | Нет: сборку строки (qs.stringify) кабинет не вызывает |
undici взят 8.12.3, а не 8.12.2 с исправлениями: 8.12.3 добавляет только два исправления — замену зависшего соединения HTTP/2 (у кабинета HTTP/2 выключен явно) и сохранение асинхронного контекста у запросов в очереди пула. Версия закреплена точно, как и раньше.
🧩 Сверх списка сканера: zod
Как было. zod 4.4.3. npm audit отмечает у всех версий ниже 4.6.6 уязвимость уровня high (GHSA-mrhx-c7xc-m3w5): проверка слишком большого списка, множества или словаря с ограничением размера сначала перебирала все элементы и только потом сверяла размер. npm audit отмечал ещё и openai — но только из-за zod внутри него.
Как стало. zod 4.6.7, закреплён точно, как и раньше; openai получает тот же zod. У 4.6.7 есть подпись npm и SLSA-провенанс. В репозитории zod в сентябре был эпизод с вредоносными коммитами; по заметке авторов к 4.6.6, они откачены в тот же день и в npm не публиковались.
♾️ «Надписи для безлимита и „Истекает“ — заменить на иконку бесконечности»
Как было. Карточка подписки на экране «Подписки» писала «БЕЗЛИМИТНЫЙ ТРАФИК» у подписки без лимита трафика и «ИСТЕКАЕТ —» у бессрочной. Под рядом кнопок бессрочной подписки шли две строки: «Подписка бессрочная — продлевать не нужно.» и «Подписка бессрочная — сменить тариф можно только через поддержку.» — хотя кнопки «Продлить» и «Сменить тариф» и так серые.
Как стало. Два знака работают независимо:
- «ТРАФИК ∞» — у любой подписки без лимита трафика, какой бы ни был срок.
- ∞ под «ИСТЕКАЕТ» — у любой подписки без даты окончания, какой бы ни был трафик. Если дата есть, но не прочиталась, остаётся «—»: это не «никогда».
- Двух строк под кнопками у бессрочной подписки больше не видно. Экранный диктор их по-прежнему читает — они остались описанием серых кнопок.
- Строка у пробной подписки «Пробную подписку нельзя продлить — смените её на обычный тариф.» осталась видна: в ней есть что сделать.
Что не менялось. На странице «Подписка» под широкой серой кнопкой «Сменить тариф» строка «Подписка бессрочная — сменить тариф можно только через поддержку.» осталась — там она подсказывает, куда идти. Всплывающие сообщения и страница смены тарифа — тоже без изменений.
🌌 «Градиент распределился только на модуль с подключением, а не на всю страницу»
Как было. На ПК у пошагового подключения («Подписки» → «Подключить», когда в панели в настройке «Как вести клиента» выбрано «Интерактивный — по шагам») свечение цветом бренда рисовалось внутри центральной колонки шириной 46rem и обрезалось по ней — светлый прямоугольник с резкими краями слева и справа. Так было с 0.9.7.57, когда вышло пошаговое подключение. На телефоне колонка равна ширине экрана, поэтому там этого не было видно.
Как стало. Свечение растянуто на всю область страницы — от края боковой панели до правого края окна. Боковая панель его не получает. Страница не стала шире: прокрутки вбок нет. На телефоне всё как было.
🤝 Кабинет и панель разных версий
- Кабинет 0.9.7.62 + панель 0.9.7.79 — работает: API не менялся.
- Кабинет 0.9.7.61 + панель 0.9.7.80 — работает.
- Обновлять можно в любом порядке.
↩️ Откат
На 0.9.7.61 — без последствий: миграций и новых настроек нет. Вернутся уязвимые версии библиотек, надписи «Безлимитный трафик» / «Истекает —» и обрезанное свечение на ПК.
🔍 Что не проверено
- Сами уязвимости не воспроизводились. Оценка «касалось ли кабинета» — по коду.
- Свечение и «∞» проверены в браузере на копии раскладки кабинета (ПК 1536×832, телефон 390×844), а не на живом кабинете с настоящей темой оператора.
- Запросы к панели на undici 8.12.3 проверены тестами и E2E пары, под живой нагрузкой — нет.
- Закроет ли Trivy все 10 предупреждений, станет видно после сборки
mainна GitHub.
🚫 Чего этот выпуск НЕ делает
- Не обновляет зависимости веб-интерфейса кабинета (
web/). Их нет в образе, и Trivy их не сканирует.npm auditнаходит там две группы. Первая — body-parser, qs, fast-uri, hono, @hono/node-server, minimatch, ts-morph, deepmerge и zod 3 изshadcn: из него в сборку попадают только стили (shadcn/tailwind.css), а его серверный код — нет. Вторая — follow-redirects из axios: это серверная часть axios, браузерная сборка её заменяет и в собранных файлах её нет. - Не убирает строку про бессрочную подписку со страницы «Подписка» и не меняет всплывающие сообщения.
- Не включает Dependabot.
Reiwa v0.9.7.61
Reiwa v0.9.7.61
Страница «Конкурсы» показывает всё, что умеют конкурсы панели 0.9.7.79, у колеса и конкурсов теперь по своей иконке, а цвет бренда виден и на светлых темах.
- «Конкурсы»: подписка на канал перед заявкой, билеты, рейтинги с таблицей и своим местом, победители прошедших конкурсов, ключ жребия.
- Главная: отдельные иконки «Колесо» и «Конкурсы».
- Светлые темы: значки, ссылки и рамки цветом бренда больше не сливаются с фоном — во всём кабинете.
- Устройства: строка «Можно подключить ещё N устройств» на главной открывает QR-код подписки для второго устройства.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- «Конкурсы» (
/events): только конкурсы, без карточки колеса. Карточки в стиле остального кабинета, медали у первых трёх мест, салют при выигрыше. - Конкурс с каналом: «Нужна подписка на канал» и кнопка «Перейти в канал». Подписку кабинет проверяет у Telegram при нажатии «Участвовать».
- Рейтинг: заявка не нужна. Таблица с замаскированными именами, своя строка «Вы», «До призового места не хватает: …».
- Прошедшие конкурсы: победители видны всем 30 дней после розыгрыша, свой результат — только участнику.
- Иконки на главной: «Колесо» ведёт на колесо, «Конкурсы» — на конкурсы.
- «Лента уведомлений»: уведомление о конкурсе открывает «Конкурсы».
- Цвет бренда на светлых темах — значки, точки, рамки и ссылки во всём кабинете.
- «Устройства» на главной: строка «Можно подключить ещё N устройств» → QR-код подписки.
✅ Что сделать после обновления
- Обновите панель до Rezeis Admin 0.9.7.79 — вместе с кабинетом или сразу после. Без неё канала, билетов и рейтингов не будет.
- Для конкурса с каналом сделайте бота кабинета администратором канала. Проверка идёт через
BOT_TOKENкабинета — он задан с установки. Человека пускают без проверки, если Telegram не ответил за 6 секунд, ответил «слишком много запросов», бот не администратор канала илиBOT_TOKENне задан. - В кабинете настраивать нечего. Иконку «Конкурсы» оформляют в панели: «Брендинг» → «Иконки на главной» → «Конкурсы».
🏆 «Конкурсы недоделаны»
Как было. Страница «События» показывала колесо и конкурсы вместе. Карточка конкурса знала только кнопку «Участвовать» и строку «Вы участвуете». Ни канала, ни билетов, ни времени начала. Прошедший конкурс видел только его участник. Если оператор отменял конкурс, он просто пропадал.
Как стало. Страница называется «Конкурсы», подзаголовок — «Розыгрыши и рейтинги — пока идут». Адрес прежний — /events: его открывают уведомления и кнопки бота. Разделы «Идут сейчас» и «Прошедшие». В карточке:
- «Начнётся …» у конкурса, который ещё не начался, и «Розыгрыш через 3 дня» у идущего. Переносы строк в правилах сохраняются. Даты — без года, например «02 нояб., 18:00».
- Пульсирующая точка у названия — пока конкурс идёт. После конца она гаснет, даже если розыгрыш ещё впереди.
- Канал: «Нужна подписка на канал» и «Перейти в канал». Если человек не подписан — «Подпишитесь на канал и нажмите «Участвовать» ещё раз.». Без Telegram на аккаунте — «Для этого конкурса нужен Telegram: откройте кабинет через бота или привяжите Telegram в настройках.».
- Билеты: «У вас N билетов», за что дают ещё («+1 за каждую оплату», «+1 за каждого друга, который оплатит подписку»), потолок и «Больше билетов — выше шанс. Одно место на человека.».
- «Как проходит розыгрыш»: до розыгрыша — отпечаток SHA-256 ключа жребия, после — сам ключ.
- Прошедшие: победители с замаскированными именами видны всем 30 дней после розыгрыша. Свой результат — только тому, кто участвовал: «В этот раз не повезло» не увидит тот, кто не участвовал. Число участников — на момент розыгрыша.
- Отменённый конкурс у участника остаётся на 30 дней с пометкой «Конкурс отменён организатором.».
- Отказ по условиям теперь звучит «Условия этого конкурса вам не подходят.» вместо «Этот конкурс не для вашего тарифа.» — условие бывает не только про тариф.
- «Участвовать» крутит загрузку только на той карточке, где нажали.
ID канала и Telegram-id человека браузер не получает, только ссылку для вступления. Кабинет сам спрашивает Telegram и передаёт панели только ответ.
📊 «Кто пригласит больше друзей»
Как было. Рейтингов не было.
Как стало. У рейтинга нет кнопки. Тем, кто подходит под условия, карточка говорит: «Заявка не нужна — в рейтинге все. Таблица обновляется раз в минуту, трафик — раз в час.». Тому, кто не подходит, — «Условия этого конкурса вам не подходят.». Дальше:
- по чему места — «Места — по приглашённым друзьям, которые оплатили подписку», «…по сумме оплат», «…по потраченному трафику», «…по заработанным баллам»;
- таблица — первые места с замаскированными именами, своя строка отмечена «Вы»; под таблицей «N в рейтинге»;
- своё место ниже таблицы — «Ваше место — 12, результат — 3 друга»; если рейтинг идёт, а человека в нём ещё нет — «Вас пока нет в таблице.»;
- пока идёт — «До призового места не хватает: 4 ГБ» или «Вы на призовом месте — держитесь!»;
- порог — «Приз — только с результатом от …», если оператор его задал;
- результаты словами — друзья и баллы с правильными окончаниями, трафик в ГБ, оплаты в базовой валюте;
- призы на диапазон мест — «2–10 место:» и название приза.
После конца рейтинг сообщает место, а не «не повезло». Приз после проверки: «Приз начислят после проверки оператором — мы сообщим.».
🎡 «Колесо и конкурсы — разные механики»
Как было. Одна иконка на главной вела на «События» и была видна, пока включено колесо или есть конкурс. Точка на ней — янтарная на любой теме — горела только за прокрут колеса.
Как стало.
- «Колесо» открывает само колесо, видна при включённом колесе, точка — есть прокрут.
- «Конкурсы» (по умолчанию кубок) открывает «Конкурсы». Видна с публикации конкурса до подведения итогов. Точка горит, если есть розыгрыш, куда ещё можно подать заявку. Рейтинг точку не зажигает — в нём и так все.
- Когда ни одного конкурса нет, иконки «Конкурсы» нет. Итоги прошедших открываются из уведомления, push или кнопки бота.
- Если колесо открыто по ссылке или кнопке бота, «Назад» ведёт на главную, а не на «События».
🔔 «Уведомление о конкурсе ничего не открывает»
Уведомления о конкурсах приходят с панели 0.9.7.79: анонс, выигрыш, место, напоминание.
- В «Ленте уведомлений» (кнопка «Все уведомления» под колокольчиком) нажатие на такое уведомление открывает «Конкурсы», где сам конкурс, таблица и приз.
- В «Последних новостях» под колокольчиком оно, как и все остальные, открывается текстом в ленте.
- Push ведёт на «Конкурсы» (это задаёт панель 0.9.7.79).
🎨 «На светлом иконки смешиваются»
Как было. Значки, точки, рамки и ссылки рисовались основным цветом бренда как есть. На светлой теме с бледным основным цветом их почти не было видно — например, кнопка «+» в шапке главной, значки действий под карточкой подписки, ссылки. По разовому расчёту по 104 светлым концепт-темам панели у 57 контраст основного цвета с карточкой ниже 3:1, из них у 34 — ниже 2:1.
Как стало.
- Во всём кабинете значки и рамки цветом бренда рисуются оттенком с контрастом к карточке не ниже 3:1, текст и ссылки — не ниже 4,5:1. Это и рамка фокуса у полей ввода, и кнопка «+» в шапке, и логотип по умолчанию, и точка на иконке колеса (раньше янтарная).
- Значки не меняются, если контраст с карточкой уже от 3:1, текст и ссылки — если от 4,5:1. У насыщенного цвета с контрастом между ними значки останутся прежними, а ссылки станут чуть темнее.
- Если цвет бледный, кабинет темнит его на светлой теме (или светлит на тёмной), сохраняя оттенок бренда. Контраст считается к карточке; фоновую картинку кабинет не учитывает.
- Остаются основным цветом: кнопки с заливкой, бейджи, пузырь поддержки, свечения, фон-сеть и карточка подписки на главной — её оформление выбирает оператор. Рамка выбора у карточек подписки в «Продлении», «Смене тарифа» и докупках — уже новым оттенком.
- Экран подключения с собственной темой считает этот оттенок от своей темы.
✨ «Анимации и плавность»
- «Конкурсы»: стеклянные карточки появляются по очереди, у идущего конкурса пульсирует точка. У первых трёх мест — золото, серебро и бронза. Полоса показывает, сколько осталось до призового места.
- Выигрыш: салют, как у колеса. Один раз на устройство и когда карточка видна на экране (где браузер не умеет это определять — сразу). Если приз ещё не выдан — ждёт проверки или вручения через поддержку — вспышка без конфетти.
- Точки на иконках «Колеса» и «Конкурсов» расходятся волной, как у колокольчика.
- «Уменьшить движение» в системе выключает эти анимации, в том числе свечение кнопки «Участвовать».
📱 «Добавить подписку на второе устройство»
Как было. QR-код ссылки был только на экране подключения (кнопка «Ссылка и QR-код»). С главной до него нужно было идти через подключение.
Как стало. Под устройствами выбранной подписки на главной — тихая строка с пунктирным плюсом:
- «Можно подключить ещё 1 устройство» / «…2 устройства» / «…5 устройств»;
- «Можно подключить 3 устройства», если устройств ещё нет;
- «Подключить ещё одно устройство», если у тарифа нет лимита устройств, и «Подключить устройство», если при этом устройств ещё нет.
Нажатие открывает окно «Подключить устройство». В нём QR-код ссылки этой подписки на белой подложке — чтобы читался в любой теме, — под ним название тарифа и сколько мест свободно, и кнопка «Скопировать ссылку».
Строки нет, если подписка не активна, у неё нет ссылки, все места заняты, список устройств не...
Reiwa v0.9.7.60
Reiwa v0.9.7.60
Возврат из кассы в мини-приложение ведёт на страницу кабинета, а не на t.me, а способы оплаты называются так, как их назвал оператор.
- После оплаты из мини-приложения касса возвращает клиента на страницу кабинета «Вернитесь в Telegram» с кнопкой «Вернуться в Telegram». Раньше на Android вместо этого была ошибка «Не удалось открыть веб-страницу» (жалоба на WATA).
- «Способ оплаты» показывает название, подпись и иконку, которые оператор задал в панели 0.9.7.78.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- Возврат после оплаты из мини-приложения: касса ведёт на страницу кабинета
/payment-return/telegram, а не сразу наt.me. Для всех касс, не только для WATA. - «Способ оплаты» при покупке, в «Смена тарифа», «Продление» и «Дополнительные опции»: название оператора вместо названия провайдера, его подпись вместо «RUB», его иконка вместо логотипа.
- Проверка перед оплатой: при покупке тарифа «Подтвердите оплату» → «Метод» — название и иконка оператора; при смене тарифа и докупке — название.
✅ Что сделать после обновления
- Проверьте, что в
.envкабинета заданыBOT_USERNAMEи адрес кабинета (REIWA_DOMAINилиREIWA_PUBLIC_WEB_URL). Обычно они заданы с установки. Без адреса кабинета касса по-прежнему ведёт сразу наt.me, без бота — на/payment-return. - Названия, подписи и иконки задаются в панели: «Платёжные шлюзы» → шестерёнка у шлюза → «Как шлюз видят клиенты». В кабинете настраивать нечего.
🔙 «После оплаты из мини-приложения — „Не удалось открыть веб-страницу“»
Как было. Клиент платит из мини-приложения. Кабинет давал кассе адрес возврата https://t.me/<бот>?start=payment_return. На Android страница оплаты открывается во встроенном браузере Telegram. По всей видимости, после оплаты касса переводила этот браузер на t.me, а страница t.me — дальше, на ссылку tg:resolve?…, которую встроенный браузер открыть не может. Клиент видел «Не удалось открыть веб-страницу» (net::ERR_UNKNOWN_URL_SCHEME). Оплата при этом проходила, ломался только возврат. Заметили на WATA, но адрес возврата один для всех касс.
Как стало. Касса возвращает клиента на страницу кабинета /payment-return/telegram. Это обычная https-страница, она открывается в любом браузере. На ней:
- заголовок «Вернитесь в Telegram»;
- «Страница оплаты закрыта. Прошла ли оплата, покажет кабинет в Telegram.»;
- кнопка «Вернуться в Telegram» — та же ссылка на бота. Бот, как и раньше, отвечает кнопкой входа в мини-приложение;
- «Если кнопка не сработала, закройте это окно и вернитесь в Telegram сами.»
Если кабинет не знает имени бота, кнопки нет, а внизу — «Закройте это окно и вернитесь в Telegram.»
Страница сама никуда не переходит: ломался как раз автоматический переход. «Оплачено» или «не оплачено» она не пишет: касса присылает сюда и после успеха, и после отказа. Итог показывает экран оплаты в мини-приложении, который ждёт платёж, как и раньше.
Покупки из обычного браузера не затронуты: там касса и раньше возвращала на /payment-return.
🏷️ «Пользователи боятся жать на странные названия»
Как было. В «Способ оплаты» — название провайдера («Platega», «Wata»), под ним «RUB» и логотип провайдера.
Как стало. С панелью 0.9.7.78 — то, что оператор задал в «Как шлюз видят клиенты»:
- название вместо названия провайдера;
- подпись до 3 строк вместо кода валюты;
- иконка вместо логотипа.
Где:
- «Способ оплаты» в покупке и в «Смена тарифа»;
- «Продление»;
- «Дополнительные опции» → «Способ оплаты»;
- строки «для автоматического списания» под шлюзом — с названием и иконкой оператора;
- «Подтвердите оплату» → «Метод» при покупке тарифа — название и иконка; «Подтвердите смену тарифа» → «Метод» и проверка докупки → «Способ оплаты» — название.
Где оператор ничего не задал, всё как раньше. Иконку кабинет показывает только как картинку: код внутри SVG не выполняется.
🤝 Кабинет и панель разных версий
| Кабинет | Панель | Что видит клиент |
|---|---|---|
| 0.9.7.60 | 0.9.7.78 | Возврат через «Вернитесь в Telegram». Название, подпись и иконка оператора |
| 0.9.7.60 | 0.9.7.77 и старше | Возврат через «Вернитесь в Telegram». Способы оплаты как раньше |
| 0.9.7.59 и старше | 0.9.7.78 | Прежний возврат на t.me (ошибка на Android остаётся). Только название оператора |
↩️ Откат
На 0.9.7.59 — без действий. Возврат из мини-приложения снова пойдёт сразу на t.me, и ошибка на Android вернётся. Подпись и иконка оператора пропадут, название останется: кабинет 0.9.7.59 его тоже показывает.
🔍 Что не проверено
- Оплата WATA из мини-приложения на Android на телефоне не проверялась. По исходникам Telegram для Android свежая версия сама перехватывает переход на t.me. Значит, у оператора либо старая версия Telegram, либо касса переводит особым путём. Страница кабинета откроется в любом случае, но сработает ли кнопка на этом телефоне — зависит от того же перехвата. Проведите одну оплату из мини-приложения на Android: после оплаты должна открыться «Вернитесь в Telegram», нажмите «Вернуться в Telegram».
- Кнопка «Вернуться в Telegram» во встроенном браузере Telegram на Android и iOS по исходникам должна открывать чат с ботом. На устройствах не проверялась.
- Telegram Desktop и iOS открывают страницу оплаты вне мини-приложения. После оплаты там тоже должна открываться страница кабинета, и нужно нажать «Вернуться в Telegram» — на одно нажатие больше, чем раньше. На устройствах не проверялось.
🚫 Чего этот выпуск НЕ делает
- Не закрывает окно оплаты сам: кнопка ведёт в чат с ботом, а окно закрывает клиент или Telegram.
- Не показывает итог оплаты на странице возврата: итог — в мини-приложении.
- Не меняет возврат для покупок из обычного браузера.
- Не меняет «Настройки» → «Способы оплаты»: у подписок провайдера там по-прежнему логотип провайдера, а не иконка оператора.
Reiwa v0.9.7.59
Reiwa v0.9.7.59
Автоплатёж по СБП честно говорит, когда откроется тариф.
- Отсрочка первого списания по СБП: согласие больше не обещает доступ сразу. Тариф откроется после первого списания.
- Страница после оплаты различает «подписка подключена, ждём списание» и «списание не прошло». Раньше и то и другое выглядело как ошибка или как успех.
- Уведомление «Автосписание не прошло» в ленте ведёт туда, где можно оплатить.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- Покупка → «Способ оплаты» → Antilopay «по СБП, для автоматического списания» с отсрочкой: подпись способа и согласие на шаге «Подтвердите оплату» говорят, что тариф откроется после первого списания.
- После возврата из банка: «Автоплатёж подключён» с датой первого списания, пока банк не списал. «Банк не провёл первое списание», если не провёл.
- Колокольчик и лента: «Автосписание не прошло» открывает «Тарифы» (новая подписка) или «Продление».
- Новая возможность
web.autopay-delay-access-after-charge. Без неё панель 0.9.7.77 отсрочку не предлагает.
✅ Что сделать после обновления
В кабинете — ничего. Отсрочка настраивается в панели: «Платёжные шлюзы» → Antilopay → «Отсрочка первого списания по СБП». С панелью 0.9.7.77 её видят только новые клиенты, которые ещё ни разу не платили.
⏳ «Отсрочка: обещали доступ сразу»
Как было. У способа оплаты Antilopay «по СБП, для автоматического списания» с отсрочкой было написано: «Сейчас ничего не спишется: доступ на 7 дней откроется сразу, первое списание 299 ₽ — через 7 дней». Согласие на шаге «Подтвердите оплату» говорило то же самое: «доступ к тарифу откроется сразу на 7 дней».
Как стало. Панель 0.9.7.77 не даёт доступа на время отсрочки (решение владельца), и кабинет говорит об этом прямо:
- у способа оплаты: «Сейчас ничего не спишется: первое списание 299 ₽ — через 7 дней, тариф откроется сразу после него»;
- в согласии: «…Первое списание 299 ₽ произойдёт через 7 дней, и тариф откроется сразу после него — до этого доступа к тарифу нет…».
Срок и сумма — те, что назначены в панели и показаны клиенту.
🧾 «Подписка подключена, а страница пишет «Платёж не прошёл»»
Как было. После возврата из банка страница минуту ждёт, оплачен ли платёж, и показывает «Оплата прошла!» или «Платёж не прошёл». С панелью 0.9.7.77 тариф по подписке СБП приходит только со списанием:
- с отсрочкой списание через дни, и страница показала бы «Платёж не прошёл»;
- без отсрочки то же при медленном банке, хотя подписка подключена.
Как стало. Страница спрашивает у панели, в каком состоянии подписка:
- С отсрочкой — экран «Автоплатёж подключён»: «Первое списание — 25.10.26. Тариф откроется сразу после него.» Кнопка «На главную». Он появляется, как только панель узнала у Antilopay дату списания, обычно через несколько секунд. Если за минуту дата не пришла — тот же экран без даты.
- Без отсрочки страница ждёт, как обычно. Списание пришло — «Оплата прошла!». Банк не списал за минуту — «Автоплатёж подключён»: «Ждём списание от банка. Тариф откроется сразу после оплаты — загляните на главную через несколько минут.» Сегодняшнюю или прошедшую дату экран не печатает.
- Банк отказал — «Платёж не прошёл»: «Банк не провёл первое списание, поэтому тариф не выдан. Попробуйте ещё раз или выберите другой способ оплаты.»
Дата первого списания печатается тем днём, который назвала Antilopay, в любом часовом поясе телефона. С панелью 0.9.7.76 и старше страница работает как раньше: эту информацию старая панель не присылает.
🔔 «Автосписание не прошло» в колокольчике
Панель 0.9.7.77 присылает клиенту «
- «Тарифы» — если подписка была новой и не оформилась;
- «Продление» — если автоплатёж продлевал подписку, которая у клиента уже есть.
В кабинете 0.9.7.58 и старше это уведомление открывается окном с текстом.
🤝 Кабинет и панель разных версий
| Кабинет | Панель | Что у клиента |
|---|---|---|
| 0.9.7.59 | 0.9.7.77 | Всё как описано выше |
| 0.9.7.59 | 0.9.7.76 и старше | Старая панель выдаёт тариф по подтверждению подписки, а с отсрочкой — доступ сразу, хотя согласие обещает его после списания. Страница после оплаты как раньше |
| 0.9.7.58 и старше | 0.9.7.77 | Отсрочка не предлагается, по СБП списывается сразу. Если банк не списал за минуту, страница покажет «Платёж не прошёл», хотя тариф придёт после списания |
- Панель первой — правильный порядок. Не раньше чем через 10 минут панель пришлёт «🧩 Кабинет старше панели», пока кабинет не обновлён.
- Кабинет первым: панель 0.9.7.76 пропускает незнакомую возможность
web.autopay-delay-access-after-charge, сбоев нет. Но ошибка с подпиской остаётся до обновления панели.
↩️ Откат
На 0.9.7.58 — без действий в кабинете. Отсрочку панель 0.9.7.77 ему не предложит, по СБП будет списывать сразу. Страница после оплаты снова будет показывать «Платёж не прошёл», если банк не списал за минуту.
🔍 Что не проверено
- Живая оплата по СБП через Antilopay. Экраны проверены тестами страницы с подменёнными ответами панели.
🚫 Чего этот выпуск НЕ делает
- Не меняет оплату картой и другие шлюзы.
- Не показывает подписку, ждущую первого списания, на главной. До списания подписки нет или она не продлена, это видно только на странице после оплаты и в «Способах оплаты».
- Не меняет «Способы оплаты»: подключённый автоплатёж там виден, как раньше, с датой следующего списания.
Reiwa v0.9.7.58
Reiwa v0.9.7.58
Одна поддержка вместо двух, напоминания в последние часы и читаемая кнопка на листе QR.
- Отдельного ИИ-чата больше нет. На странице «Поддержка» остались только обращения. ИИ-ассистент панели отвечает прямо в них, как обычная поддержка.
/supportв боте открывает «Поддержку» с обращениями. ИИ-режима в боте больше нет.- Кнопка Telegram на странице «Поддержка» слушается переключателя в панели.
- «За 3 часа» и «За 1 час» — новые переключатели в настройках уведомлений.
- Лист «Показать QR» в пошаговом подключении: «Скопировать ссылку» больше не сливается с фоном.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- «Поддержка»: нет кнопки «Быстрая помощь» ✨ и «Спросить AI». Адрес
/support/aiведёт на/support. - Ответ ассистента приходит в обращение как ответ поддержки. Пока он готовится, под перепиской написано «Поддержка печатает…».
- Самолётик Telegram рядом с «+» пропадает, если в панели выключена «Кнопка Telegram в поддержке кабинета».
- Бот:
/supportотвечает «💬 Поддержка…» с кнопкой «🆘 Поддержка в приложении». - «Настройки» → «Уведомления» → «Настройка уведомлений»: «За 3 часа» и «За 1 час» в группе «До окончания подписки». Появляются, только если напоминание включено в панели.
- Удалены маршруты
GET /api/v1/ai-chat/configиPOST /api/v1/ai-chat/message.
✅ Что сделать после обновления
В кабинете — ничего. Ассистент, кнопка Telegram и напоминания настраиваются в панели 0.9.7.76:
- ассистент — «AI-Support» → «Ассистент включён»;
- кнопка — «Тикеты поддержки» → «Настройки» → «Кнопка Telegram в поддержке кабинета»;
- напоминания — «Уведомления» → «Пользовательские».
Аккаунт поддержки для кнопки Telegram, как и раньше, задаётся в .env кабинета (BOT_SUPPORT_USERNAME).
🤖 «Две поддержки — пользователи путаются»
Как было. На странице «Поддержка» были обращения и отдельный ИИ-чат «Быстрая помощь» ✨. На пустом экране кабинет предлагал «Спросить AI». В боте /support включал ИИ-режим. Клиенты не понимали, куда писать: в чат, в обращение или в бота.
Как стало. Поддержка одна — обращения.
- Клиент пишет обращение. Если в панели включён ассистент, он отвечает в том же обращении через несколько секунд. Ответ выглядит как обычный ответ поддержки, без пометки «ИИ».
- Пока ответ готовится, под перепиской написано «Поддержка печатает…». Переписка обновляется каждые 5 секунд, как и раньше.
- Уведомление об ответе приходит то же, что об ответе оператора: в Telegram, пушем и в ленту.
- Если ассистент передал обращение человеку, ответит оператор, в этом же обращении.
Бот. /support больше не включает ИИ-режим. Бот отвечает «💬 Поддержка. Откройте «Поддержку» и опишите вопрос в обращении — ответим там же. Уведомление об ответе придёт сюда.» с кнопкой «🆘 Поддержка в приложении».
- Кнопка открывает «Поддержку» в мини-приложении.
- Если у мини-приложения нет адреса https, кнопка ведёт на сайт кабинета.
- Без обоих бот отвечает «Раздел поддержки пока не настроен.».
Тексты правятся в панели: «Карта бота» → «Поддержка по /support». Кнопка «❌ Выйти из поддержки» под старыми ответами ИИ в чатах теперь отвечает «Меню обновилось» и показывает главное меню.
Что НЕ сработает. История отдельного ИИ-чата в обращения не переносится.
✈️ «Чтобы просто так не тыкали поддержку Telegram»
Как было. Самолётик рядом с «+» на странице «Поддержка» открывал чат с аккаунтом поддержки в Telegram всегда, если аккаунт задан.
Как стало. Если в панели 0.9.7.76 выключена «Кнопка Telegram в поддержке кабинета», самолётика нет и клиенты пишут только в обращения. Панель 0.9.7.75 и старше этой настройки не присылает — тогда кнопка остаётся, как раньше. Смена в панели доходит до открытого кабинета в течение минуты-двух.
⏳ «Напоминания за 3 часа и за 1 час до окончания»
- «Настройки» → «Уведомления» → «Настройка уведомлений» → «До окончания подписки»: новые переключатели «За 3 часа» и «За 1 час». Клиент видит их, только если оператор включил эти напоминания в панели 0.9.7.76. Иначе их нет, как и самих напоминаний.
- В ленте уведомлений: «Подписка «Тариф» закончится меньше чем через 3 часа. Продлите, чтобы VPN не отключился.». Текст собирается на языке, выбранном в кабинете.
🔳 «Цвет шрифта «Скопировать ссылку» сливается»
Как было. В пошаговом подключении на шаге «Подписка» кнопка «Показать QR» открывает лист с QR-кодом. Надпись «Скопировать ссылку» на нём брала цвет текста акцентной кнопки. При светлом акценте он тёмный, и на тёмной подложке листа надпись почти не читалась.
Как стало. Надпись того же цвета, что остальной текст листа. Место и скругление кнопки прежние. Она стала чуть ниже, надпись — чуть тоньше, без цветной тени.
🤝 Кабинет и панель разных версий
| Кабинет | Панель | Поддержка у клиента |
|---|---|---|
| 0.9.7.58 | 0.9.7.76 | одна: ИИ отвечает в обращениях, кнопка Telegram — по переключателю |
| 0.9.7.58 | 0.9.7.75 и старше | ИИ нет нигде: чата уже нет, а в обращениях старая панель не отвечает. Кнопка Telegram видна |
| 0.9.7.57 и старше | 0.9.7.76 | ИИ отвечает в обращениях, и остаётся отдельный ИИ-чат ✨. Кнопка Telegram видна всегда |
- Кабинет первым — клиенты остаются без ассистента до обновления панели. Панель 0.9.7.75 пропускает незнакомую ей возможность
web.support-unified, карточек нет. - Панель первой — это правильный порядок. До обновления кабинета работают и ИИ в обращениях, и прежний отдельный чат. Не раньше чем через 10 минут панель пришлёт «🧩 Кабинет старше панели».
- Напоминания за 3 часа и за 1 час от панели 0.9.7.76 приходят и в кабинет 0.9.7.57. В ленте там написано «Подписка скоро истекает», переключателей нет.
↩️ Откат
На 0.9.7.57 — без действий. Вернутся «Быстрая помощь» ✨ и ИИ-режим бота: с панелью 0.9.7.76 они работают. Кнопка Telegram будет видна всегда. Напоминания в последние часы в ленте будут подписаны «Подписка скоро истекает».
🔍 Что не проверено
- Живой Telegram:
/supportи кнопка «🆘 Поддержка в приложении» проверены тестами бота, но не в настоящем чате. - Живая модель: ответ в обращении и «Поддержка печатает…» проверены с подменёнными ответами панели.
🚫 Чего этот выпуск НЕ делает
- Не помечает ответы ассистента. Клиент не отличит их от ответов оператора — так решил владелец.
- Не даёт клиенту позвать оператора кнопкой. Ассистент передаёт обращение сам, когда клиент просит человека.
- Не меняет анонимный чат для гостей без аккаунта: там отвечают только операторы.
- Не меняет внешнюю страницу подписки.
Reiwa v0.9.7.57
Reiwa v0.9.7.57
Пошаговое подключение по «Подключить».
- «Интерактивный» режим экрана подключения: клиент проходит подключение по шагам. Сначала подписка, потом устройство, приложение, добавление подписки и включение VPN. В конце — «Всё работает!».
- Кабинет сам видит, что VPN включился, и переходит к последнему экрану без нажатий.
- На каждом шаге — «Помощь» с подсказками именно к этому шагу, устройству и приложению.
- Логотип и тема оператора: мастер носит оформление экрана подключения и логотип из «WEB Reiwa».
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml и .env.example нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- «Подключить» на карточке подписки открывает мастер, если в панели выбран «Интерактивный — по шагам». Иначе — прежний экран со всеми инструкциями. Так же ведут баннер «Не получилось подключиться?», кнопка всплывающего окна
@connectи ссылка/dashboard?connect=help. - Шаги: «Какую подписку подключаем?» (при двух подписках и больше) → «Подключим VPN за пару минут» → «Устройство» → «Приложение» → «Подписка» → «Включение» → «Всё работает!».
- Проверка подключения — через панель и Remnawave. Если проверить нельзя, клиент подтверждает сам кнопкой «Всё работает».
- «Открыть все инструкции на одном экране» в «Помощи» — путь на прежний экран с любого шага.
- Новый маршрут
GET /api/v1/subscription/:id/connection— только для мастера.
✅ Что сделать после обновления
В кабинете — ничего. Режим включается в панели 0.9.7.75: «Конфигурация» → «Страница подписки» → карточка «Экран подключения в кабинете» → «Как вести клиента» → «Интерактивный — по шагам». Переключатель «Открывать экран подключения в кабинете» при этом должен быть включён.
Перед включением стоит пройти мастер самому со своего телефона.
🧭 «Чтобы клиент подключался без вопросов в поддержку»
Как было. «Подключить» открывал экран, где сразу видны платформа, все приложения и все шаги. Удобно тому, кто знает, что делать. Новичок терялся и писал в поддержку.
Как стало. Если в панели выбран «Интерактивный», «Подключить» ведёт по шагам. Вверху — «Шаг N из 4», кнопка «Назад» и «Помощь».
«Какую подписку подключаем?» Только когда подписок две и больше — даже если клиент нажал «Подключить» на конкретной карточке. Карточки те же, что на главной, лента открывается на нажатой. Под карточкой — что будет:
- «Это устройство станет первым на подписке.»;
- «Свободно мест: N. Это устройство займёт одно.»;
- «Все места заняты: одно устройство придётся отключить на главной.» — мастер всё равно пускает дальше;
- истёкшая или отключённая подписка: кнопка «Продлить «тариф»» ведёт на продление;
- подписка без ссылки: «Подписка ещё готовится. Подождите минуту и попробуйте снова.».
С одной рабочей подпиской этот экран пропускается. С одной истёкшей или ещё готовящейся — показывается, чтобы было где нажать «Продлить» или прочитать причину. Без подписок — «Подключать пока нечего: у вас нет подписки.» и «Выбрать тариф».
«Подключим VPN за пару минут». Подписка и срок вверху, «Сменить» — когда подписок больше одной. «Начать» ведёт к устройству. «Приложение уже установлено» — сразу к добавлению подписки: в рекомендуемое приложение для определённого устройства или в то, что клиент уже выбирал на этом устройстве. Другое — кнопкой «Другое приложение».
«На чём будете пользоваться?» Устройство определяется само («Определено автоматически») и подтверждается кнопкой «Да, это …». «Другое устройство» — список разделов каталога.
«Поставьте приложение». Рекомендуемое приложение каталога, кнопки магазинов и загрузок из каталога, значки из библиотеки значков. «Или другое приложение» — остальные. Внизу кнопка «Я установил …».
«Добавьте подписку в …». Кнопка «Добавить в …» открывает приложение и передаёт подписку. В мини-приложении Telegram — через браузер, как на прежнем экране. Без такой кнопки в каталоге — «Скопировать ссылку». Для телевизора или другого компьютера — «Показать QR». Вернувшись из приложения, клиент видит «С возвращением! Осталось включить VPN.», и мастер сам переходит к включению. Кнопка «Подписка добавлена — дальше» делает то же вручную.
«Включите VPN в …». Текст — из следующего шага каталога после добавления подписки, а без него — стандартный. Ниже — подсказка про разрешение VPN на этой платформе («iPhone спросит разрешение», «Android спросит про VPN»…). Статус проверки: «Ждём подключение…», «Подключение есть!» или объяснение, почему проверить нельзя. Кнопки «Всё работает» и «Не получается подключиться».
«Всё работает!». Подписка, устройство и приложение, время подключения по часовому поясу панели. Строка «Проверка» — «автоматическая» или «по вашему слову». «На главную» и «Подключить ещё устройство». Второе устройство мастер сам не увидит: первое уже онлайн, поэтому клиент увидит «Подписка уже подключена на другом устройстве» и подтвердит кнопкой «Всё работает».
«Помощь» («Не получается?») — три подсказки к текущему шагу, «Написать в поддержку» (если раздел «Поддержка» есть в меню кабинета) и «Открыть все инструкции на одном экране».
📡 «Пусть кабинет сам поймёт, что VPN включился»
Как стало. На шаге «Включение» кабинет раз в 4 секунды спрашивает панель, когда эта подписка последний раз была онлайн в Remnawave. Кабинет сравнивает время по отметкам панели и Remnawave, часы телефона не участвуют.
- Время сдвинулось после начала мастера → «Подключение есть!» и через секунду «Всё работает!».
- Подписка уже была онлайн меньше 3 минут назад, когда клиент начал → «Подписка уже подключена на другом устройстве». Remnawave отдаёт одно время на подписку, а не на устройство, поэтому новое устройство не отличить. Клиент нажимает «Всё работает».
- Панель или Remnawave не ответили с самого начала → «Проверить подключение не получилось» и та же кнопка. Если ответы пропали по ходу, экран продолжает ждать.
- Кнопка «Всё работает» появляется и сама: через 15 секунд ожидания, с текстом «Пока не видим подключение». Через 5 минут проверка останавливается.
Проверка идёт, пока открыт шаг «Включение», в том числе когда клиент ушёл в VPN-приложение. Плюс один запрос на стартовом экране — от этой точки отсчитывается «после начала мастера».
🎨 «Брендированное лого, чтобы цепляло»
- Логотип оператора — в шапке мастера рядом с названием шага и в анимации передачи подписки в приложение. Без загруженного логотипа — знак Reiwa в цвете бренда.
- «Обрамление», «Заполнение» и «Свечение» — из «WEB Reiwa» → «Как показывать логотип». «Размер плитки» и «Скругление» в мастере не действуют: размер у мастера свой, углы — из темы.
- Цвета, фон и радиусы — из «Оформление экрана» на «Странице подписки», без него — тема кабинета. Шрифт — из «WEB Reiwa».
- Значки приложений лежат на тёмной плашке, которая с темой не меняется.
- При «уменьшении движения» в системе анимации выключаются.
🤝 Кабинет и панель разных версий
| Кабинет | Панель | Что видит клиент |
|---|---|---|
| 0.9.7.57 | 0.9.7.75 | режим, выбранный в панели |
| 0.9.7.57 | 0.9.7.74 и старше | обычный экран — выбора режима в панели нет |
| 0.9.7.56 и старше | 0.9.7.75 | обычный экран, даже если выбран «Интерактивный» |
Всё это — при включённом в панели «Открывать экран подключения в кабинете». Выключенный уводит «Подключить» на внешнюю страницу в любой связке, как раньше.
- Кабинет первым — ничего не меняется до обновления панели. Панель 0.9.7.74 пропускает незнакомую ей возможность
web.connect-interactive, карточек нет. - Панель первой — оператор может выбрать «Интерактивный», но клиенты видят обычный экран. Не раньше чем через 10 минут (обычно 10–15) панель пришлёт «🧩 Кабинет старше панели».
- Если каталог не прочитался, мастер не открывается — открывается обычный экран.
↩️ Откат
На 0.9.7.56 — без действий: «Подключить» откроет обычный экран со всеми инструкциями, какой бы режим ни был выбран в панели.
🔍 Что не проверено
- Живые телефоны и мини-приложение Telegram. Мастер пройден целиком в браузере на ПК, в трёх темах, на стенде с подменёнными ответами панели. Передачу подписки в приложение и возврат в мини-приложение стоит проверить на iPhone и Android.
- Как быстро Remnawave обновляет время подключения. Если медленно, клиенты чаще будут нажимать «Всё работает» сами.
🚫 Чего этот выпуск НЕ делает
- Не меняет прежний экран подключения. С режимом «Все инструкции на одном экране» всё как было.
- Не отличает устройства одной подписки при проверке подключения.
- Не сохраняет, на каком шаге клиент остановился. Закрыл — в следующий раз начнёт сначала. Выбранное приложение на этом устройстве запоминается, как на прежнем экране.
- Не меняет бота.
Reiwa v0.9.7.56
Reiwa v0.9.7.56
Патч по списку владельца.
- «Улучшить» стало «Сменить тариф»: клиент переходит на тариф дороже или дешевле, если оператор отметил его в списке. При смене тарифа можно оформить автосписание и платить сохранённой картой.
- AuraPay: «картой, для автоматического списания».
- «🏠 Главное меню» под рассылкой и под уведомлениями открывает меню новым сообщением — пост остаётся.
- Тестовая отправка рассылки приходит разработчику так, как её получат клиенты.
- Мини-приложение больше не пишет «Слишком много попыток» клиентам с общим адресом.
- Привязка почты работает у клиентов из бота и предлагает задать логин и пароль.
- Восстановление пароля — по логину.
- Тарифы видно и при исчерпанном лимите подписок.
- Antilopay: согласие на автосписание по СБП говорит об отсрочке первого списания.
- Образ собирается на Node 26, закрыты уязвимости в зависимостях.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml нет. Обновление: docker compose pull && docker compose up -d.
📌 Коротко
- «Сменить тариф» вместо «Улучшить» и «Улучшить план». Шаг оплаты — как при покупке: «для автоматического списания», сохранённые карты ЮKassa.
- AuraPay: пункт «картой, для автоматического списания», когда оператор его включил.
- «🏠 Главное меню» под рассылками и новыми уведомлениями присылает меню новым сообщением, а не рисует его на месте поста.
- Тест рассылки приходит с фото или видео и с кнопками клиентов, без «❌ Закрыть».
- Вход в мини-приложение считается по аккаунту Telegram, а не по адресу.
- Привязка почты у клиента из бота работает. После подтверждения клиенту без логина предлагают «Задать логин и пароль?».
- «Восстановить по логину» — новый экран, если панель 0.9.7.74 это умеет и оператор не выключил.
- При лимите подписок кнопки покупки открывают «Тарифы»; купить по-прежнему нельзя.
- Antilopay по СБП с отсрочкой: «Сейчас ничего не спишется…».
- «Через 3 дня после», «Через 7 дней после», «Через 14 дней после» — переключатели новых напоминаний в настройках уведомлений, когда оператор их включил.
✅ Что сделать после обновления
Ничего обязательного. Смена тарифа, автосписание AuraPay, отсрочка Antilopay и напоминания о возврате настраиваются в панели 0.9.7.74.
🔀 «Кнопка «Улучшить» должна менять тариф в обе стороны»
Как было. Плитка «Улучшить» под карточкой подписки на главной, кнопка «Улучшить план» на экране подписки, страница «Улучшение».
Как стало.
- Плитка и кнопка — «Сменить тариф». Страница — «Смена тарифа», подтверждение — «Подтвердите смену тарифа».
- На узком телефоне подпись плитки переносится на вторую строку, а не обрезается до «Сменить та…».
- Куда можно перейти, решает оператор: с панелью 0.9.7.74 — на отмеченные в карточке тарифа тарифы, дороже или дешевле.
- Если ничего не отмечено, кнопки на экране подписки нет (кроме пробного тарифа: с него — на любой тариф в продаже). Плитка на главной ведёт на «Для этой подписки нет других тарифов.».
- Остаток: «Оплаченный остаток прежнего тарифа: +N дн. к сроку нового тарифа…». С панелью 0.9.7.74 при переходе на дешёвый тариф N может быть больше оставшихся дней: остаток пересчитывается по деньгам.
💳 «При смене тарифа видна только обычная оплата»
Как было. На шаге оплаты смены тарифа был только список шлюзов.
Как стало. Шаг оплаты тот же, что при покупке:
- сохранённые карты ЮKassa и «для автоматического списания» у ЮKassa (сохранить новую карту);
- пункты «для автоматического списания» у Platega, RollyPay, Antilopay и AuraPay;
- подпись про отсрочку первого списания, если она есть;
- на подтверждении — что клиент соглашается на списания и какая сохранённая карта выбрана.
Если панель откажет в автосписании, кабинет скажет, что оно недоступно, и вернёт к подтверждению: можно заплатить обычной оплатой. Ничего не создано и не списано.
🔁 «У AuraPay тоже есть автосписание»
Как было. AuraPay в кабинете была только разовой оплатой.
Как стало. Когда оператор включил автосписание AuraPay в панели 0.9.7.74, у AuraPay появляется второй пункт: «картой, для автоматического списания», со значком карты.
- Когда предлагается:
- сроки 7, 14, 30, 60, 90, 180 и 365 дней;
- цена в целых рублях;
- без разового промокода;
- не для пробного тарифа;
- при покупке, продлении и смене тарифа.
- Подтверждение: «Первый платёж вы сделаете картой на странице оплаты, дальше эта же сумма будет списываться с карты в начале каждого срока…».
- «Способы оплаты»: такая подписка показана со значком карты и строкой «Следующее списание <дата>» (пока дата неизвестна — «Автосписание с карты»). Отключить можно там же.
- Если цена больше 50 000 ₽ или AuraPay откажет, панель откажет в автосписании, и кабинет предложит обычную оплату.
🏠 «Кнопка меню под рассылкой, чтобы пост не пропадал»
Как было. «🏠 Главное меню» под текстовым уведомлением рисовало меню на месте сообщения, и уведомление пропадало. Под фото меню приходило новым сообщением. Под рассылкой кнопки меню не было.
Как стало.
- Бот понимает новую кнопку
menu:new: меню приходит новым сообщением, нажатое остаётся. - Все «🏠 Главное меню» под уведомлениями и рассылками, отправленными после обновления, работают так же — и те, у которых оператор вписал
menu:mainилиmenu. Менять шаблоны не нужно. - Уведомления, отправленные до обновления, хранят старую кнопку и рисуют меню на месте, как раньше.
- «В меню» на экранах самого бота по-прежнему открывает меню на месте экрана.
- Правила прежние:
- меню только в личном чате клиента с ботом;
- когда оператор ограничил доступ к сервису, вместо меню — сообщение о недоступности;
- двойное нажатие не присылает второе меню.
- Кнопку под рассылкой ставит панель 0.9.7.74: «Кнопка «Меню» под постом», у новой рассылки она включена.
📨 «Тестовая отправка рассылки приходит без кнопок»
Как было. Тест рассылки приходил разработчику текстом с «❌ Закрыть», без фото и без кнопок клиентов.
Как стало. С панелью 0.9.7.74 тест приходит, как клиенту:
- фото или видео, текст — подписью (без текста — без подписи);
- кнопки клиентов: у текстового поста — «🎁 Активировать промокод» с переходом в мини-приложение, если промокод прикреплён; «🏠 Главное меню», если оператор её включил. У фото и видео кнопки промокода нет, как и у клиентов;
- предпросмотр ссылок, как у клиента;
- без «❌ Закрыть».
Остальные служебные карточки разработчику — как раньше: текст, «❌ Закрыть», без предпросмотра ссылок.
🚦 «Мини-приложение пишет «Слишком много попыток» на старте»
Как было.
- Клиент открывал мини-приложение и видел «Слишком много попыток. Попробуйте снова через 527 сек.».
- Все запуски с одного адреса делили 20 попыток на 15 минут.
- А один адрес бывает у многих: мобильный оператор, VPN, CDN, который не передаёт адрес посетителя.
Как стало. Сначала проверяется подпись запуска от Telegram, потом считается:
- неверный или просроченный запуск — 20 на 15 минут с одного адреса;
- верный запуск — 60 на 15 минут на аккаунт Telegram из подписанных данных (подделать нельзя) и общий потолок 1200 с адреса;
- запуск больше не тратит общий лимит 120 запросов в минуту с адреса;
- «Уже есть аккаунт и пользовались сервисом?» → «Войти» → «Войти и привязать» — 10 неудачных попыток на аккаунт Telegram и 30 с адреса;
- вход по паролю — 5 неудачных попыток на 15 минут с адреса: считается любой неуспешный ответ, успешный вход возвращает попытку;
- вход по ссылке из бота — свой счётчик, 30 неудачных на 15 минут;
- вход через соцсети — свой потолок, 120 на 15 минут;
- завершение регистрации через соцсеть (и задание логина клиенту из бота) — 20 на 15 минут на аккаунт, а не парольные 5 с адреса.
📧 «Клиент из бота не может привязать почту»
Как было. «Настройки» → «Конфиденциальность» → «Привязать Email» у клиента из бота заканчивалось ошибкой «Не удалось выполнить операцию».
Как стало.
- С панелью 0.9.7.74 почта привязывается: аккаунт создаёт панель.
- Клиенту без логина после подтверждения адреса один раз предлагается «Задать логин и пароль?»:
- кнопки «Сохранить» и «Не сейчас»;
- после «Сохранить» — экран «Сохраните данные для входа»;
- ничего не заставляет и не спрашивает снова.
- В «Конфиденциальности» у клиента без логина постоянный пункт «Логин и пароль» вместо «Сменить пароль», который он пройти не мог. У клиента с логином — по-прежнему «Сменить пароль».
- Ошибки названы:
- «Привязка почты для этого аккаунта сейчас недоступна. Напишите в поддержку.»;
- «Не удалось принять этот адрес…»;
- «Слишком много запросов…»;
- «Этот email уже привязан к другому аккаунту.» — когда адрес занят.
🔑 «Восстановление только по логину, без ссылки подписки»
Как было. Клиент без Telegram и почты вставлял ссылку подписки и логин.
Как стало.
- «Забыли пароль?» → «Восстановить по логину» → экран «Восстановление по логину»: логин — и сразу новый пароль.
- Только с панелью 0.9.7.74 и только когда оператор не выключил «Восстановление пароля по логину». Выключено — «Забыли пароль?» предлагает поддержку.
- Со старой панелью остаётся прежний экран со ссылкой и логином, адрес тот же.
- Если попыток на аккаунт за сутки больше нет — «Слишком много попыток. Повторите завтра или напишите в поддержку.».
- Сообщения об отказе потратить замороженный партнёрский баланс говорят «после восстановления пароля без Telegram и почты». Баннер о заморозке по-прежнему упоминает и ссылку подписки: заморозки, сделанные до обновления, пришли оттуда.
🛒 «Дать смотреть тарифы, когда лимит подписок исчерпан»
Как было. При исчерпанном лимите кнопка покупки на главной (значок в шапке) и «Выбрать план» на экране подписки не открывали «Тарифы» — клиент не мог д...
Reiwa v0.9.7.55
Reiwa v0.9.7.55
Патч про Antilopay. В выборе способа оплаты у AntiloPay появились два пункта «для автоматического списания» — картой и по СБП: клиент один раз подтверждает сумму и срок, а дальше Antilopay списывает сама (так устроено по документации Antilopay), и Rezeis Admin 0.9.7.72 продлевает подписку по каждому списанию. Пункты видны на покупке, на продлении и при покупке рядом с пробной подпиской, только для тарифов на 7, 30, 90 или 365 дней (неделя, месяц, квартал, год) и только для способов, которые оператор одобрил в панели, — у каждого способа своя настройка. Согласие клиент даёт выбором пункта: на шаге «Подтвердите оплату» (при продлении — «Подтвердите продление») кабинет до кнопки «Перейти к оплате» объясняет, как пройдёт первый платёж и как будут списываться следующие, и напоминает, что отключить автосписание можно на странице «Способы оплаты». Страница «Способы оплаты» показывает автосписание Antilopay: «Автосписание с карты» или «Автосписание через СБП», следующее списание и, если Antilopay назвала дату, когда списания заканчиваются. Если оператор выключил способ или Antilopay отказала в автосписании, клиент читает «Автоматическое списание сейчас недоступно. Выберите обычную оплату.» — эта формулировка теперь и у Platega с RollyPay, когда оператор выключил их переключатель, пока страница была открыта; раньше там стояло «недоступно для этой покупки», которое обвиняло исправную покупку. И ещё: кабинет теперь передаёт странице «Продление» причину отказа в автосписании, как странице покупки.
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml нет. docker compose pull && docker compose up -d обновит кабинет как обычно.
📌 Коротко
- Порядок обновления не важен — что бывает в каждом промежутке, раздел «🤝».
- Два пункта «для автоматического списания» у AntiloPay: «картой, для автоматического списания» и «по СБП, для автоматического списания» — на шаге «Способ оплаты», под обычной оплатой AntiloPay, у каждого свой значок способа (карта или СБП) рядом со значком шлюза. Сначала карта, потом СБП; показывается только то, что оператор одобрил.
- Когда пункты видны: срок тарифа — 7, 30, 90 или 365 дней; на покупке — ещё цена в рублях без копеек и без одноразовой скидки на следующую покупку (её даёт, например, промокод); не пробный тариф; не «Улучшение» (кроме покупки рядом с пробной подпиской); на продлении — одна подписка и тот же тариф, а цену и скидку проверяет панель. Панель Rezeis Admin должна быть 0.9.7.72 или новее и должна одобрять способ.
- Где: покупка — нижнее меню «Подписки» → значок «Купить» вверху экрана (у клиента без подписки — кнопка «Купить» на карточке «У вас нет активной подписки») → «Тарифы» → тариф → «Выберите срок» → «Способ оплаты». Продление — «Подписки» → под карточкой подписки «Продлить» → «Продление» → «Способ оплаты».
- Согласие — выбор пункта. На «Подтвердите оплату» / «Подтвердите продление» над кнопкой «Перейти к оплате» — блок «Автоматическое списание» с текстом для карты или для СБП. Отдельной галочки нет.
- «Настройки» → «Способы оплаты» (пункт виден, когда есть что отключать): карточка автосписания Antilopay с суммой и периодом («каждый месяц», «раз в 3 месяца»), значком способа, датой следующего списания или подписью «Автосписание с карты» / «Автосписание через СБП», строкой «Списания заканчиваются …» (если Antilopay назвала дату) и кнопкой «Отключить автосписание».
- «Автоматическое списание сейчас недоступно. Выберите обычную оплату.» — когда оператор выключил способ, пока страница была открыта, или Antilopay отказала в автосписании (ошибки Antilopay 30, 29 или 25). Деньги не списаны, страница оплаты не открылась.
- Старая панель или старый кабинет — пунктов Antilopay нет, обычная оплата работает.
- Откат кабинета на 0.9.7.54: пунктов Antilopay не станет, оформленные автосписания продолжают работать (раздел «↩️»).
✅ Что сделать после обновления
- Порядок любой. Панель можно обновить до Rezeis Admin 0.9.7.72 до или после кабинета (врезка выше).
- Настраивать в кабинете ничего не нужно. Пункты появятся сами, когда оператор в Rezeis Admin 0.9.7.72 включит «Автосписание картой одобрено провайдером» и/или «Автосписание по СБП одобрено провайдером» (в заметках панели — как это сделать и о чём просить Antilopay). Кабинет читает список способов оплаты не чаще раза в 5 минут (после перезагрузки страницы — заново), поэтому на уже открытой странице пункты могут появиться не сразу.
- Оператору — проверить своими глазами, когда переключатели включены. Выпуск проверен автотестами, не на живом устройстве и не на настоящей оплате.
- Войдите в кабинет тестовым клиентом. Нажмите значок «Купить» вверху экрана «Подписки» (нижнее меню; у клиента без подписки — кнопку «Купить» на карточке), выберите тариф на 7, 30, 90 или 365 дней и на шаге «Выберите срок» — срок из этого же списка (шаг пропускается, если у тарифа один срок). Вкладка «Тарифы» в нижнем меню по умолчанию скрыта, её включает оператор в «WEB Reiwa» → вкладка «Навигация».
- На шаге «Способ оплаты» под обычной оплатой AntiloPay должны быть строки «картой, для автоматического списания» и/или «по СБП, для автоматического списания» — по одобренным способам, сначала карта.
- Нажмите строку — на «Подтвердите оплату» должен появиться блок «Автоматическое списание» с текстом для этого способа. «Перейти к оплате» откроет страницу оплаты Antilopay (в Mini App, если она не открылась сама, на странице возврата есть кнопка «Открыть страницу оплаты»); кнопка «Изменить» возвращает к выбору способа, где есть обычная оплата.
- Так же проверьте продление: «Подписки» → под карточкой подписки «Продлить» → «Продление» (выберите подписку и срок, «Продолжить») → «Способ оплаты» → «Подтвердите продление». На «Подтвердите продление» кнопки «Изменить» нет — назад ведёт стрелка в шапке.
- После оплаты откройте «Настройки» → «Способы оплаты»: должна появиться карточка автосписания с кнопкой «Отключить автосписание». Пункт «Способы оплаты» есть в разделе «Настройки», только когда есть что отключать, а автосписание Antilopay попадает туда, когда Antilopay подтвердила подписку.
- Проверьте на телефоне и в Mini App: значки способов, тексты блока и кнопки.
- Откат. На 0.9.7.54 — без подготовки (раздел «↩️»).
🔁 «Для автоматического списания» у AntiloPay: картой и по СБП
Где: покупка — нижнее меню «Подписки» → значок «Купить» вверху экрана (у клиента без подписки — кнопка «Купить» на карточке «У вас нет активной подписки») → «Тарифы» → тариф → «Выберите срок» (шаг пропускается, если у тарифа один срок) → «Способ оплаты». Продление — «Подписки» → под карточкой подписки «Продлить» → «Продление» → «Способ оплаты». Название шлюза кабинет пишет «AntiloPay».
Как было. У AntiloPay была одна обычная оплата. Пункт «для автоматического списания» кабинет предлагал у ЮKassa (способ сохраняется, панель списывает сама), у Platega и RollyPay (подписку ведёт провайдер).
Как стало.
- Под строкой обычной оплаты AntiloPay — до двух строк. «AntiloPay» с подписью «картой, для автоматического списания» (значок шлюза и значок банковской карты) и «AntiloPay» с подписью «по СБП, для автоматического списания» (значок шлюза и значок СБП). Порядок — сначала карта, потом СБП. Способ клиент выбирает до того, как откроется страница оплаты: у Antilopay это две разные категории рекуррентных платежей.
- Что значит каждый пункт (по документации Antilopay и по тому, как панель просит Antilopay оформить подписку; настоящей оплатой не проверено).
- Картой: первый платёж клиент делает картой на странице оплаты Antilopay, дальше Antilopay сама списывает с этой карты.
- По СБП: клиент оформляет подписку на странице Antilopay; панель просит Antilopay сделать первое списание сразу при активации, дальше Antilopay списывает сама.
- Сумма каждого списания — цена тарифа на момент оформления, одна и та же каждый период; период — срок тарифа: 7 дней — неделя, 30 — месяц, 90 — квартал, 365 — год.
- Когда пункты видны. Все условия сразу:
- панель прислала список одобренных способов (
autopayMethods) — это Rezeis Admin 0.9.7.72 и новее — и способ в нём есть. Панель, которая списка не присылает, для Antilopay не даёт ничего, что бы ни говорила её обычная настройка автосписания, а способ, которого кабинет не знает, игнорируется; - срок — ровно 7, 30, 90 или 365 дней (14, 60, 180 дней не подходят: у Antilopay таких периодов нет);
- на покупке — у выбранного срока есть цена для AntiloPay, она в рублях, целая, без копеек, и к ней не применена одноразовая скидка на следующую покупку (её даёт, например, промокод): такая скидка повторялась бы в каждом списании. Постоянная персональная скидка пункт не прячет;
- тариф не пробный; покупка — новая, покупка рядом с пробной подпиской (пробная подписка становится тарифом) или продление; смена тарифа платной подписки («Улучшение») и докупки («Дополнительные опции») пунктов не получают;
- на продлении — выбрана ровно одна подписка, она продлевается на свой же тариф, и срок подходит. Цену и скидку кабинет там заранее не проверяет, поэтому пункт может быть показан и при промокоде или копейках, а панель откажет при оформлении (раздел «⛔»).
- панель прислала список одобренных способов (
- **Если AntiloPay — единств...
Reiwa v0.9.7.54
Reiwa v0.9.7.54
Патч про то, чтобы кабинет и панель работали в любом порядке обновления, и про уход лендинга. Кабинет теперь сообщает панели, кто он и что умеет — в каждом запросе к ней: Rezeis Admin 0.9.7.71 по этим сведениям решает, что можно продавать через этот кабинет, и показывает оператору его версию, а со старой панелью всё работает, как в 0.9.7.53. Поэтому порядок обновления пары больше не важен. Лендинга в кабинете больше нет: главная для посетителя без входа всегда открывает форму входа, а ссылки на /welcome — её же, со всеми метками ссылки; перенесите лендинг на свой сайт до обновления. В превью ссылки на кабинет и на вкладке браузера — название вашего сервиса, а не «Reiwa». Отказ в покупке опции называет причину и возвращает туда, где это исправляется, вместо «Не удалось создать платёж. Попробуйте позже.». Заблокированный клиент выходит из кабинета — и со старой панелью, а Mini App пишет ему «Аккаунт заблокирован…». «Смена пароля» больше не отвечает «Текущий пароль неверен.» на любой сбой. И ещё: сигнал версии при запуске кабинета повторяется, пока панель его не примет, а главная по-прежнему отвечает мониторам доступности на HEAD.
- Этот кабинет, панель ещё 0.9.7.70. Работает всё, что работало в 0.9.7.53, и исправления этого выпуска: причины отказа в покупке опции (кабинет узнаёт их по точному тексту отказа старой панели), выход заблокированного клиента из кабинета и «Аккаунт заблокирован…» в Mini App, «Смена пароля», название вашего сервиса в превью ссылки. Новые заголовки старая панель не читает, тела запросов прежние, поэтому ошибок нет; в логах
reiwaиreiwa-botодин раз появится строкаpanel capabilities: the panel does not say what it can do (a panel older than 0.9.7.71); kept as legacy. Лендинг кабинет не показывает, хотя в старой панели «Веб-лендинг» ещё открывается и публикует: сигнал о публикации кабинет принимает и пропускает, поэтому карточки о недошедшем изменении не будет. Докупку трафика «до сброса» старая панель продаёт через любой кабинет, и этот показывает её, как 0.9.7.53, — со сбросом и предупреждением. Блока «Кабинет Reiwa» и карточки «🧩 Кабинет старше панели» в старой панели нет. - Панель уже 0.9.7.71, кабинет ещё 0.9.7.53. Всё работает, как с панелью 0.9.7.70, включая продажу докупки «до сброса»: кабинет 0.9.7.53 панель узнаёт по сверке настроек. Опубликованный лендинг кабинет перестаёт показывать сам — самое большее примерно через 5 минут после запуска панели, — а превью ссылки на него называется «Reiwa». «Заблокировать» в панели уже выпускает клиента и из этого кабинета. Причины отказа в покупке опции, «Аккаунт заблокирован…» в Mini App, исправленная «Смена пароля» и ваше название в превью — с этим выпуском.
- Панель уже 0.9.7.71, кабинет 0.9.7.52 или старше. Докупку трафика «до сброса» панель через такой кабинет не продаёт: он показал бы её без слов о сбросе и по часам телефона. В «Дополнительных опциях» её нет, а оплата со страницы, открытой раньше, не создаётся — деньги не списываются. Остальное, о чём предупреждали врезки Reiwa 0.9.7.53 и Rezeis Admin 0.9.7.70, остаётся до обновления кабинета, а «WEB Reiwa» → «Кабинет Reiwa» и карточка «🧩 Кабинет старше панели» перечисляют оператору, что из этого не работает на сайте. Опубликованный лендинг такой кабинет перестаёт показывать примерно через минуту; страница лендинга, уже открытая у посетителя, остаётся, пока её не обновят.
Лендинг пропадает, как только обновлена любая из половин: этот кабинет не показывает его ни с какой панелью, а Rezeis Admin 0.9.7.71 отвечает старым кабинетам «лендинга нет».
✅ Миграций, новых переменных окружения и изменений в docker-compose.yml нет. docker compose pull && docker compose up -d обновит кабинет как обычно.
📌 Коротко
- Порядок обновления не важен — что бывает в каждом промежутке, во врезке выше.
- Кабинет сообщает панели, кто он и что умеет: сайт и API (
reiwa), бот (reiwa-bot) и воркер — в двух заголовках каждого запроса к панели. С Rezeis Admin 0.9.7.71 панель продаёт через этот кабинет докупку «до сброса» и показывает его версию в «WEB Reiwa» → «Кабинет Reiwa». - Кабинет запоминает, что панель сообщает о себе, — пока ни на что не опираясь.
- Сигнал версии при запуске повторяется, пока панель его не примет: через 5 секунд, дальше реже, но не реже раза в 5 минут; потом — раз в час, как раньше.
- Главная без входа — всегда форма входа,
/welcome— тоже, со всеми параметрами ссылки; лендинг не показывается ни с какой панелью. - «Условия и документы» → «Назад», когда возвращаться некуда, ведёт на главную кабинета, а не на лендинг.
- Превью ссылки и вкладка — ваше название: «Заголовок веб-страницы», если он пуст — «Название проекта», если пусто и оно — «Название бренда»; название сайта в превью — «Название бренда» (если там осталось «Reiwa» — тот же заголовок).
- Отказ в покупке опции называет причину — выключенная, изменённая или ненужная опция, неактивная подписка, недоступный способ оплаты, Telegram Stars вне Telegram, молчащая платёжная система, «Режим доступа» — и возвращает к нужному шагу.
- Заблокированный клиент выходит из кабинета при следующей загрузке — с Rezeis Admin 0.9.7.70 тоже.
- Mini App заблокированному клиенту: «Аккаунт заблокирован. Если это ошибка, напишите в поддержку.».
- «Смена пароля»: «Текущий пароль неверен.» — только когда панель действительно отвергла пароль.
HEAD /отвечает 200, как раньше.
✅ Что сделать после обновления
- Порядок любой. Панель до Rezeis Admin 0.9.7.71 можно обновить до или после кабинета (врезка выше). Если панель уже 0.9.7.71, а кабинет был 0.9.7.52 или старше, докупка «до сброса» появится в «Дополнительных опциях» сама, сразу после обновления кабинета.
- Проверьте название вашего сервиса. Если в панели «WEB Reiwa» → «Идентичность» → «Название бренда» осталось «Reiwa», а «Платформа» → «Брендинг» → «Заголовок веб-страницы» и «Название проекта» пусты, превью ссылки и вкладка по-прежнему называются «Reiwa»: впишите название своего сервиса в «Название бренда» и нажмите «Сохранить» (или в «Заголовок веб-страницы» — там кнопка «Сохранить брендинг»). Кабинет подхватит его обычно через несколько секунд, без перезапуска.
- С Rezeis Admin 0.9.7.71 проверьте, что панель видит новый кабинет: «WEB Reiwa» → блок «Кабинет Reiwa» — «Сайт и API: Reiwa 0.9.7.54 · был на связи …» и «Бот: Reiwa 0.9.7.54 · был на связи …», без «сообщает версию, но не возможности».
- Копию лендинга в Redis (
reiwa:lkg:landing:v1) трогать не нужно: этот кабинет её не читает, и она ни на что не влияет. - Откат. На 0.9.7.53 — без подготовки. На 0.9.7.52 или старше при панели 0.9.7.71 — сначала выключите в панели «Доп. услуги» → вкладка «Настройки» → «Учёт докупок» → «Докупка трафика до сброса» (подробно — заметки Rezeis Admin 0.9.7.71, раздел «↩️»).
- Больше настраивать ничего не нужно: заголовки, повтор сигнала версии, форма входа на главной и название в превью работают сами.
- Проверьте в браузере и на телефоне — выпуск проверен автотестами, не на живом устройстве. Откройте главную кабинета в окне без входа — должна открыться форма входа. Откройте
https://<адрес кабинета>/welcome?utm_source=test— форма входа сutm_source=testв адресе. Отправьте ссылку на кабинет в Telegram — в превью должно быть название вашего сервиса (если Telegram показывает прежнее превью, он хранит его сам). Заблокируйте тестового клиента («Пользователи» → клиент → «Заблокировать») и откройте Mini App с его Telegram — «Ошибка входа» и «Аккаунт заблокирован. Если это ошибка, напишите в поддержку.». Откройте в кабинете «Дополнительные опции», дойдите до «Подтверждение», в панели «Доп. услуги» выключите эту опцию и нажмите в кабинете «Перейти к оплате» — «Эта опция больше недоступна для вашей подписки. Список опций обновлён — выберите другую.», и откроется список опций.
🤝 Кабинет сообщает панели, кто он и что умеет
Как было. Панель знала о кабинете только версию сайта, которую тот присылал при запуске и раз в час, и не знала, что он умеет. Поэтому порядок обновления пары приходилось держать врезкой «порядок важен» в заметках.
Как стало.
- Два заголовка в каждом запросе к панели. Сайт и API (контейнер
reiwa), бот (reiwa-bot) и воркер сообщают, кто спрашивает, версию и сборку кабинета, имя контейнера и список своих возможностей.reiwaзаявляет возможности сайта и API: докупку «до сброса» с датой сброса по часовому поясу панели и предупреждением, если сброс меньше чем через сутки; объяснения у бессрочной подписки; колокольчик «Докупка не применена», который открывает «Поддержку»; даты по часовому поясу панели; отчёт о непринятых полях оформления; сверку версий настроек. Бот заявляет свою сверку версий настроек и ответ «Меню обновилось» на старую кнопку, воркер — ничего. - Что с этим делает панель — в заметках Rezeis Admin 0.9.7.71. Коротко: с этим кабинетом панель 0.9.7.71 продаёт докупку «до сброса» с первого же запроса и пишет в «WEB Reiwa» → «Кабинет Reiwa» «Сайт и API: Reiwa 0.9.7.54 · был на связи …» и «Бот: Reiwa 0.9.7.54 · был на связи …». Кабинет 0.9.7.54 называет себя сам, поэтому рядом с ним на одной панели можно держать один кабинет 0...