• v1.9.9 5dee2d87f5

    Release v1.9.9 — Telegram landing smoke coverage
    Deploy Telegram Bot / build-and-push (push) Successful in 5m32s
    Deploy Telegram Bot / deploy (push) Successful in 12s
    Stable

    Toutsu released this 2026-05-05 13:07:22 +03:00 | 351 commits to main since this release

    Новое в этой версии:

    🧪 Smoke-сценарий обещаний лендинга для Telegram

    • Добавлен функциональный smoke-тест TelegramLandingPromisesSmokeTests, который фиксирует основной сценарий Telegram-лендинга без внешнего Telegram API.
    • Сценарий покрывает batch-сессии на несколько дат, inline-кнопки записи/выхода, лимит игроков, waitlist и автоповышение из ожидания.
    • Проверяется голосование за перенос времени, выбор победившего варианта и сброс RSVP после обновления карточки расписания.
    • Fake Telegram messenger сохраняет отправленные и отредактированные сообщения, поэтому тест проверяет user-visible тексты и клавиатуры без сетевых зависимостей.
    • Сценарий оставлен расширяемым для следующих Mini App и Discord smoke-проверок.

    📊 Dashboard и синхронизация

    • Smoke фиксирует обещание, что изменение карточки расписания из Web/Dashboard-слоя приводит к обновлению Telegram-сообщения.
    • Добавлен регрессионный тест, который сверяет версию в NavMenu.razor с Directory.Build.props, чтобы Web Dashboard не отставал от релизной версии.

    🛠 Технические изменения

    • Тестовый FakeSessionStore синхронизирован с текущим ISessionStore после методов управления участниками.
    • Версия проекта обновлена до 1.9.9 в Directory.Build.props, compose.yaml, deploy workflow, README, Web UI badge и дизайн-системе.
    • README дополнен разделом про запуск тестов и новое smoke-покрытие.
    • Wiki обновлена под v1.9.9: быстрый старт, деплой, разработка, архитектура, база данных, руководство ГМа и главная страница.

    Решённые issues

    • #18test: покрыть smoke-сценарий обещаний лендинга для Telegram.

    🧪 Проверка

    • dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage" — 95 passed, 0 failed.
    • dotnet build GM-Relay.slnx -c Release — 0 warnings, 0 errors.
    • Новых SQL-миграций и env/config требований нет.
    Downloads
  • v1.9.8 b71488097e

    Release v1.9.8 — Player list, kick & waitlist promotion
    Deploy Telegram Bot / build-and-push (push) Successful in 21s
    Deploy Telegram Bot / deploy (push) Successful in 7s
    Stable

    Toutsu released this 2026-05-04 20:28:55 +03:00 | 352 commits to main since this release

    Новое в этой версии:

    🎮 Управление игроками в Web Dashboard

    • На странице группы теперь можно развернуть список участников любой сессии (▶/▼).
    • Для каждого игрока показывается: имя, Telegram username, статус RSVP, статус регистрации.
    • Owner и co-GM могут исключить активного игрока кнопкой 🚪 Исключить.
    • При исключении активного игрока бот автоматически переводит первого ожидающего в основной состав и обновляет Telegram-пост.
    • ГМ не может быть исключён из сессии через интерфейс.

    🛠 Технические изменения

    • SessionStore: новые методы GetSessionParticipantsAsync и RemovePlayerFromSessionAsync.
    • SessionService: добавлена логика автоповышения из waitlist.
    • GroupDetails.razor: раскрывающийся список участников (desktop + mobile).
    • app.css: стили для списка участников (participant-panel, participant-row, btn-gm-link).
    • Bumped version to 1.9.8.
    Downloads
  • v1.9.7 c874f7b797

    Release 1.9.7: единый Telegram-пост с картинкой и расписанием
    Deploy Telegram Bot / build-and-push (push) Successful in 4m2s
    Deploy Telegram Bot / deploy (push) Successful in 10s
    Stable

    Toutsu released this 2026-05-04 10:33:06 +03:00 | 356 commits to main since this release

    🛠 Patch 1.9.7 — единый Telegram-пост с картинкой и расписанием

    Этот patch-релиз фиксит визуальную проблему из v1.9.6: картинка сессии и расписание теперь объединены в один Telegram-пост вместо двух раздельных сообщений.

    Решённые issues

    • Прямой фидбек: при создании сессии с картинкой бот отправлял два отдельных сообщения (фото + текст), что выглядело разорвано в чате.

    🧩 Что вошло в релиз

    • при создании сессии с картинкой бот теперь отправляет одно SendPhoto с текстом расписания в caption и кнопками записи — всё в одном посте;
    • если текст расписания превышает лимит Telegram caption (1024 символа), бот автоматически откатывается на два сообщения (фото + текст), как было раньше;
    • добавлен BatchMessageEditor — общий helper в GmRelay.Shared, который автоматически определяет тип batch-сообщения (текст или фото) и использует EditMessageText или EditMessageCaption соответственно;
    • все обработчики обновлений расписания (Join, Leave, Cancel, Promote, Reschedule) и Web-сервис обновлены на использование BatchMessageEditor;
    • при ошибке отправки фото бот корректно переключается на текстовый режим с логированием warning.

    🛡 Что это даёт

    • посты с расписанием в Telegram выглядят цельно: одна карточка с картинкой, текстом и кнопками;
    • обновления расписания (запись/отписка/отмена/повышение из листа ожидания) корректно работают как для фото-, так и для текстовых батч-сообщений;
    • нет breaking changes — существующие сессии без картинок работают как раньше.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.7 в Directory.Build.props, compose.yaml и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.7;
    • локально пройдены dotnet test93/93 passed;
    • локально пройден dotnet build GM-Relay.slnx -c Release0 warnings, 0 errors;
    • Gitea Actions run #55 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.6 aefed5abd4

    Release 1.9.6: обложки расписаний и чище Telegram-посты
    Deploy Telegram Bot / build-and-push (push) Successful in 4m28s
    Deploy Telegram Bot / deploy (push) Successful in 11s
    Stable

    Toutsu released this 2026-05-04 09:52:07 +03:00 | 357 commits to main since this release

    🛠 Patch 1.9.6 — обложки расписаний и чище Telegram-посты

    Этот patch-релиз закрывает обратную связь по Telegram-постам с наборами на игры: к расписанию теперь можно приложить картинку, а GM-действия больше не показываются всем участникам в публичном посте.

    Решённые issues

    • Отдельного Gitea issue для фикса не было: релиз закрывает прямой фидбек по удобству поиска приключений в длинном списке событий и по лишним GM-кнопкам в общем Telegram-посте.

    🧩 Что вошло в релиз

    • /newsession теперь поддерживает опциональную строку Картинка: https://..., а также алиасы Изображение: и Обложка:;
    • команду /newsession можно отправить подписью к Telegram-фото: бот использует самое крупное фото как обложку расписания;
    • при наличии обложки бот публикует отдельное фото с подписью 🎲 Название приключения рядом с основным расписанием;
    • сбой отправки картинки не ломает создание сессий: расписание всё равно публикуется, а ошибка логируется warning-сообщением;
    • публичный пост расписания больше не содержит кнопки ❌ Отменить, и ⬆️ Из ожидания;
    • GM-панель действий перенесена в /listsessions и показывается только владельцу или co-GM сессии;
    • cancel/promote действия из GM-панели корректно обновляют исходный публичный batch-пост через сохранённый batch_message_id;
    • /help, README и wiki обновлены под новый формат создания сессий и новый сценарий GM-управления;
    • версия проекта, Docker Compose, Gitea Actions workflow, Web UI version badge и design system обновлены под 1.9.6.

    🛡 Что это даёт

    • в длинном Telegram-списке событий игрокам проще визуально найти нужное приключение по обложке;
    • обычные участники больше не видят лишние GM-кнопки, которые они всё равно не могут использовать;
    • GM сохраняет быстрые действия управления сессиями, но в отдельной персональной панели /listsessions;
    • новый функционал не требует миграций БД и не меняет существующую схему хранения сессий.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.6 в Directory.Build.props, compose.yaml, README, Web design system и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.6;
    • wiki обновлена под новый сценарий /newsession с обложками и GM-кнопками в /listsessions;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage"93/93 passed;
    • локально пройден dotnet build GM-Relay.slnx -c Release0 warnings, 0 errors;
    • Gitea Actions run #54 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.5 25c22b2ff5

    Release 1.9.5: исправление layout сессий в dashboard
    Deploy Telegram Bot / build-and-push (push) Successful in 4m6s
    Deploy Telegram Bot / deploy (push) Successful in 12s
    Stable

    Toutsu released this 2026-05-02 15:40:24 +03:00 | 358 commits to main since this release

    🛠 Patch 1.9.5 — исправление layout сессий в dashboard

    Этот patch-релиз исправляет UI regression в списке сессий Web Dashboard: на узком desktop viewport и внутри Telegram Mini App колонка действий больше не обрезает кнопку «Изменить».

    Решённые issues

    • Отдельного Gitea issue для фикса не было: релиз закрывает прямую UI-правку после Mini App dashboard/safe-area изменений из ветки 1.9.x.

    🧩 Что вошло в релиз

    • desktop-таблица сессий больше не использует inline overflow: hidden, который срезал правую колонку;
    • стили ссылки подключения и action-кнопок вынесены в отдельные CSS-классы;
    • для desktop-таблицы добавлен безопасный overflow-x: auto, минимальная ширина таблицы и фиксированная ширина колонки действий;
    • кнопки действий в таблице теперь сохраняют white-space: nowrap, чтобы текст не ломался внутри кнопки;
    • Telegram Mini App всегда использует карточный layout списка сессий вместо зажатой desktop-таблицы;
    • при ширине до 1024px список сессий также переключается на карточки, потому что sidebar оставляет таблице слишком мало места;
    • добавлены regression-тесты на overflow таблицы, Mini App карточки, breakpoint до 1024px и отсутствие старого inline overflow;
    • версия проекта, Docker Compose, Gitea Actions workflow, Web UI version badge и design system обновлены под 1.9.5.

    🛡 Что это даёт

    • кнопка «Изменить» больше не уезжает за край карточки на desktop-экранах около 820px;
    • Mini App получает мобильный карточный список сессий без поломанной таблицы;
    • будущие изменения CSS не смогут вернуть старый обрезающий layout без падения regression-тестов;
    • backend, авторизация, миграции БД и Telegram bot сценарии не менялись.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.5 в Directory.Build.props, compose.yaml, README, Web design system и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.5;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage"88/88 passed;
    • локально пройден dotnet build GM-Relay.slnx -c Release0 warnings, 0 errors;
    • локально проверен узкий session layout в браузере через fixture: вместо обрезанной таблицы отображается карточка, кнопка действий видна целиком;
    • Gitea Actions run #53 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.4 cb40c2438d

    Release 1.9.4: понятнее описание Mini App dashboard
    Deploy Telegram Bot / build-and-push (push) Successful in 4m18s
    Deploy Telegram Bot / deploy (push) Successful in 12s
    Stable

    Toutsu released this 2026-04-28 21:01:30 +03:00 | 359 commits to main since this release

    🛠 Patch 1.9.4 — понятнее описание Mini App dashboard

    Этот patch-релиз упрощает README-секцию про Telegram Mini App Dashboard: технический auth-flow заменён на описание сценария обычного ГМа — где открыть dashboard, что можно сделать с телефона и что нажать, если автоматический вход не сработал.

    Решённые issues

    • Отдельного Gitea issue для фикса не было: релиз закрывает прямую документационную правку README после Mini App login fixes из ветки 1.9.x.

    🧩 Что вошло в релиз

    • раздел Telegram Mini App Dashboard в README переписан без endpoint/HMAC/cookie/fallback-терминов;
    • текст теперь объясняет вход через кнопку меню бота или Открыть dashboard после /start;
    • явно сказано, что dashboard показывает только группы, где пользователь owner или co-GM;
    • fallback-вход описан как обычная кнопка входа через Telegram в том же окне;
    • версия проекта, Docker Compose, Gitea Actions workflow, Web UI version badge и design system обновлены под 1.9.4.

    🛡 Что это даёт

    • README стал понятнее для простого ГМа без знания внутренней авторизации;
    • поведение Mini App, права owner/co-GM, миграции БД и настройки BotFather не менялись;
    • Docker-образы и deploy-конфигурация снова совпадают с актуальным релизным тегом.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.4 в Directory.Build.props, compose.yaml, README, Web design system и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.4;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage"84/84 passed;
    • локально пройден dotnet build GM-Relay.slnx -c Release0 warnings, 0 errors;
    • Gitea Actions run #52 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.3 2a76ec0fb8

    Release 1.9.3: стабильный вход и safe-area для Mini App
    Deploy Telegram Bot / build-and-push (push) Successful in 3m53s
    Deploy Telegram Bot / deploy (push) Successful in 17s
    Stable

    Toutsu released this 2026-04-28 20:31:21 +03:00 | 360 commits to main since this release

    🛠 Patch 1.9.3 — стабильный Mini App login и mobile safe-area

    Этот patch-релиз закрывает оставшийся regression в Telegram Mini App: fallback-вход больше не уводит cookie в отдельный redirect-flow, а выполняет Telegram Login Widget callback прямо внутри активного WebView. Заодно Mini App shell теперь учитывает safe-area телефона и верхнюю панель Telegram, чтобы dashboard не уезжал под системный интерфейс.

    Решённые issues

    • Исправлен regression в функциональности из #17 — Telegram Mini App dashboard: после нажатия «Войти» пользователь мог успешно получить cookie, но текущий Mini App WebView не обновлялся до dashboard до ручного закрытия и повторного открытия.

    🧩 Что вошло в релиз

    • добавлен POST /auth/telegram-login для callback-based Telegram Login Widget flow;
    • /login теперь использует data-onauth и отправляет Telegram user payload на /auth/telegram-login из текущего WebView вместо data-auth-url redirect;
    • старый GET /auth/telegram сохранён для совместимости;
    • /miniapp получил диагностичные состояния для Telegram.WebApp missing, пустого initData и server auth failed;
    • Mini App shell добавляет класс telegram-mini-app при наличии Telegram.WebApp, вызывает ready() / expand(), синхронизирует safeAreaInset и contentSafeAreaInset, слушает safeAreaChanged, contentSafeAreaChanged, viewportChanged;
    • mobile CSS добавляет safe-area отступы для .mini-app-page, контента, .nav-header и .nav-toggle, при этом навигация остаётся доступной;
    • README, wiki, Docker Compose, Gitea Actions workflow, Web UI version badge и design system обновлены под 1.9.3.

    🛡 Что это даёт

    • fallback-вход авторизует пользователя в том же Telegram WebView и сразу переводит в dashboard;
    • Mini App больше не требует ручного закрытия и повторного открытия после успешного Telegram Login;
    • верхняя навигация и первый экран dashboard учитывают статус-бар телефона и Telegram UI;
    • новых миграций и новых действий в BotFather нет, если TELEGRAM_MINI_APP_URL и домен уже настроены на HTTPS /miniapp.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.3 в Directory.Build.props, compose.yaml, README, Web design system, wiki и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.3;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage"84/84 passed;
    • локально пройден dotnet build GM-Relay.slnx -c Release0 warnings, 0 errors;
    • runtime smoke: /miniapp вернул 200 и диагностичный auth-card, /auth/status вернул {"authenticated":false}, мобильный safe-area smoke подтвердил применение top/bottom inset;
    • Gitea Actions run #51 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.2 57c8714889

    Release 1.9.2: исправление fallback-входа Mini App
    Deploy Telegram Bot / build-and-push (push) Successful in 4m11s
    Deploy Telegram Bot / deploy (push) Successful in 12s
    Stable

    Toutsu released this 2026-04-28 17:26:51 +03:00 | 361 commits to main since this release

    🛠 Patch 1.9.2 — Mini App login fallback fix

    Этот patch-релиз закрывает оставшийся сценарий из входа Telegram Mini App: если Mini App всё же попадает на обычную страницу /login и Telegram Login открывает внешний браузер, текущая Mini App-страница теперь сама перечитывает состояние после возврата и не требует закрывать Mini App вручную.

    Решённые issues

    • Отдельного Gitea issue для hotfix не было: исправлен regression в функциональности из #17 — Telegram Mini App dashboard. Версия 1.9.1 добавила watcher на /miniapp, но реальный fallback-вход через Telegram Login Widget выполнялся уже на /login, поэтому активная Mini App-страница могла оставаться в старом unauthenticated-состоянии.

    🧩 Что вошло в релиз

    • /login теперь запускает watchTelegramMiniAppLogin после загрузки Telegram Login Widget;
    • watcher получил режим reloadOnReturn: после ухода во внешний Telegram Login и возврата фокуса он проверяет /auth/status, а если активный WebView ещё не применил cookie в текущем circuit, делает один full reload;
    • если watcher уже был запущен на /miniapp, переход на /login повышает его до режима reloadOnReturn, а не создаёт второй интервал;
    • повторная попытка внешнего входа снова получает право на один reload после возврата;
    • regression-тест фиксирует, что login fallback тоже подключает watcher;
    • README, wiki, Docker Compose, Gitea Actions workflow, Web UI version badge и design system обновлены под 1.9.2.

    🛡 Что это даёт

    • пользователь после Telegram Login возвращается в текущий Mini App и попадает в dashboard без ручного закрытия/открытия;
    • исправление покрывает оба fallback-места: /miniapp и /login;
    • обычная Telegram Login Widget авторизация продолжает использовать ту же cookie-auth модель;
    • права owner/co-GM и серверные проверки доступа не менялись.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.2 в Directory.Build.props, compose.yaml, README, Web design system, wiki и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.2;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage" и dotnet build GM-Relay.slnx -c Release;
    • runtime smoke: /login содержит watcher, reload hook и Telegram widget container; /auth/status вернул {"authenticated":false} без cookie; /miniapp ответил 200;
    • Gitea Actions run #50 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.1 8220f2060f

    Release 1.9.1: исправление входа в Mini App
    Deploy Telegram Bot / build-and-push (push) Successful in 4m23s
    Deploy Telegram Bot / deploy (push) Successful in 12s
    Stable

    Toutsu released this 2026-04-28 17:10:20 +03:00 | 362 commits to main since this release

    🛠 Patch 1.9.1 — Mini App login refresh fix

    Этот patch-релиз исправляет сценарий входа в Telegram Mini App: после нажатия Telegram Login и возврата из внешнего браузера текущая Mini App-страница больше не остаётся в старом состоянии. Пользователь попадает в dashboard без закрытия и повторного открытия Mini App.

    Решённые issues

    • Отдельного Gitea issue для hotfix не было: исправлен regression в функциональности из #17 — Telegram Mini App dashboard, где cookie появлялась после внешнего Telegram Login, но открытая Mini App-страница не перечитывала состояние авторизации.

    🧩 Что вошло в релиз

    • Mini App auth bridge теперь ждёт Telegram.WebApp.initData до показа fallback, чтобы Telegram JS API успел передать данные в WebView;
    • добавлен клиентский watcher watchTelegramMiniAppLogin, который проверяет состояние входа через /auth/status после fallback-login;
    • добавлен endpoint /auth/status, возвращающий текущее cookie-auth состояние для Mini App;
    • /miniapp запускает watcher при fallback-сценарии и автоматически переводит пользователя в dashboard после появления auth-cookie;
    • README, wiki, Docker Compose, Gitea Actions workflow, Web UI version badge и design system обновлены под 1.9.1;
    • добавлены regression-тесты на ожидание initData, watcher fallback-login и /auth/status.

    🛡 Что это даёт

    • Mini App не требует закрывать и открывать её заново после Telegram Login;
    • медленная инициализация Telegram WebApp больше не отправляет пользователя в fallback слишком рано;
    • обычный Web Dashboard и Telegram Login Widget продолжают работать через ту же cookie-auth модель;
    • owner/co-GM сохраняют прежнюю модель доступа: все dashboard-операции по-прежнему проходят через серверные проверки ролей.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.1 в Directory.Build.props, compose.yaml, README, Web design system, wiki и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.1;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage" и dotnet build GM-Relay.slnx -c Release;
    • runtime smoke: /miniapp ответил 200, /auth/status вернул {"authenticated":false} без cookie;
    • Gitea Actions run #49 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads
  • v1.9.0 41f2ea6e90

    Release 1.9.0: Telegram Mini App dashboard
    Deploy Telegram Bot / build-and-push (push) Successful in 23s
    Deploy Telegram Bot / deploy (push) Successful in 10s
    Stable

    Toutsu released this 2026-04-28 15:02:39 +03:00 | 363 commits to main since this release

    🚀 Версия 1.0 — Telegram Bot + Mini App Dashboard

    Этот релиз закрывает следующую задачу этапа «Версия 1.0 — Telegram Bot + Mini App Dashboard»: dashboard теперь открывается прямо внутри Telegram как Mini App. GM получает мобильный вход из бота без отдельной копии бизнес-логики: Mini App использует те же Web Dashboard страницы, application-сервисы и модель доступа owner/co-GM.

    Закрытые issues

    • #17 — feat: добавить Telegram Mini App dashboard как мобильную копию Web Dashboard: добавлен вход /miniapp, серверная проверка Telegram WebApp initData, кнопка открытия dashboard из /start, default menu button при Telegram:MiniAppUrl и мобильная раскладка существующего Web Dashboard.

    🧩 Что вошло в релиз

    • TelegramAuthService теперь проверяет WebApp initData по алгоритму Telegram Mini Apps: HMAC через ключ WebAppData, проверка auth_date и чтение Telegram user из payload;
    • добавлен endpoint /auth/telegram-webapp, который выдаёт ту же cookie-сессию, что и Telegram Login Widget, поэтому Web Dashboard и Mini App используют одну auth-модель;
    • добавлена страница /miniapp: внутри Telegram она вызывает Telegram.WebApp.initData, отправляет его на сервер и открывает dashboard, а в обычном браузере показывает fallback на стандартный login;
    • подключён telegram-web-app.js и компактный Mini App CSS-режим для мобильного dashboard;
    • мобильная навигация Web Dashboard исправлена так, чтобы header и кнопка меню были доступны на узком viewport;
    • /start показывает inline WebApp-кнопку «Открыть dashboard», если настроен Telegram:MiniAppUrl;
    • добавлен TelegramMiniAppMenuButtonService, который при старте бота настраивает default Telegram menu button на Mini App URL;
    • Docker Compose, .env.example и deploy workflow получили TELEGRAM_MINI_APP_URL / Telegram__MiniAppUrl;
    • README и wiki обновлены под 1.9.0: описаны Mini App вход, BotFather menu button, deployment checklist, отсутствие новой миграции и общий auth flow;
    • добавлены regression-тесты для WebApp initData, /miniapp, JS bridge, bot /start entry point и menu button сервиса.

    🛡 Что это даёт

    • owner/co-GM может открыть dashboard прямо из Telegram и управлять своими группами с телефона;
    • неавторизованный пользователь не получает доступ к чужим группам: после Mini App auth все операции всё равно проходят через AuthorizedSessionService;
    • Mini App не расходится с Web Dashboard: редактирование сессий, waitlist, шаблоны и batch bulk-операции идут через существующие сервисы;
    • изменения из Mini App сохраняют текущую синхронизацию Telegram-сообщений расписания;
    • обычный Web Dashboard продолжает работать через Telegram Login Widget.

    📦 Версия и деплой

    • версия проекта обновлена до 1.9.0 в Directory.Build.props, compose.yaml, README, Web design system, wiki и Gitea Actions workflow;
    • Docker-образы и deploy-конфигурация используют тег 1.9.0;
    • локально пройдены dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --collect:"XPlat Code Coverage" и dotnet build GM-Relay.slnx -c Release;
    • локально проверен /miniapp в браузере: fallback-страница рендерится без console errors;
    • Gitea Actions run #48 успешно собрал, опубликовал и задеплоил bot/web образы.
    Downloads