• v3.9.3 3db2b703d6

    Release v3.9.3 — fix(bot,discord): /newsession «Без лимита»
    Deploy Telegram Bot / build-and-push (push) Successful in 7m43s
    Deploy Telegram Bot / scan-images (push) Successful in 2m28s
    Deploy Telegram Bot / deploy (push) Successful in 46s
    Stable

    Toutsu released this 2026-06-08 19:01:58 +03:00 | 41 commits to main since this release

    🔧 Patch 3.9.3 — В /newsession добавлена опция «♾ Без лимита»

    В визарде создания сессий (Telegram + Discord) на шаге «Лимит мест» добавлена третья кнопка — «♾ Без лимита», которая сохраняет сессию без ограничения количества участников (max_players = NULL в БД). Раньше пользователь, нажав «Без waitlist», ошибочно принимал её за «без лимита» и получал от бота « Не заполнены поля: лимит мест».

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

    • src/GmRelay.Shared/Features/Sessions/CreateSession/Wizard/WizardStepViewBuilder.cs — кнопка ♾ Без лимита в BuildCapacity (Telegram-рендер).
    • src/GmRelay.Shared/Features/Sessions/CreateSession/Wizard/GameCreationWizard.cs — обработка no_limit в ApplyCapacityChoice: ставит MaxPlayers = null и переходит на Visibility. SetMaxPlayers переведён с int на int?.
    • src/GmRelay.Bot/Features/Sessions/CreateSession/CreateSessionHandler.csBuildCommand принимает int?, ?? 0 убран (теперь null не превращается в 0, что нарушало DB CHECK ck_sessions_max_players).
    • src/GmRelay.DiscordBot/Features/Sessions/Wizard/DiscordWizardStep.cs — кнопка ♾ Без лимита в RenderCapacity и RenderPoolSlotCapacity. В BuildConfirmDescription при MaxPlayers = null теперь явно пишется 👥 Без лимита, waitlist вкл/выкл вместо игнорирования строки.
    • src/GmRelay.DiscordBot/Features/Sessions/Wizard/DiscordWizardSubmitter.csBuildCommand принимает int?, ?? 0 убран.
    • src/GmRelay.DiscordBot/Properties/AssemblyInfo.csInternalsVisibleTo("GmRelay.Bot.Tests") для unit-тестов.
    • 9 новых регрессионных тестов (Telegram + Discord) — рендер кнопки, FSM-переход с null MaxPlayers, null/value propagation в BuildCommand обоих submitter'ов.
    • tests/GmRelay.Bot.Tests/Web/CampaignTemplatesNavigationTests.cs — обновлена строка v3.9.2 → v3.9.3.
    • Синхронизированы версии: Directory.Build.props, compose.yaml (bot + discord + web), .gitea/workflows/deploy.yml, NavMenu.razor3.9.3.

    🗡 Что это даёт

    • Пользователь: может создать сессию без лимита мест одной кнопкой в Telegram или Discord. Раньше приходилось сначала вводить лимит 1..50, потом менять через web-дашборд.
    • DB-контракт: восстановлен — CreateSessionCommand.MaxPlayers: int? корректно пробрасывает null в sessions.max_players (DB CHECK max_players IS NULL OR max_players > 0 соблюдается). Аудит SessionCapacityRules.CanPromoteWaitlistedPlayer подтвердил корректную обработку null.
    • Discord UX: в embed подтверждения теперь явно видно «👥 Без лимита», а не молчаливое отсутствие строки.

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

    • версия обновлена до 3.9.3
    • Docker-образы используют тег 3.9.3: git.codeanddice.ru/toutsu/gmrelay-bot:3.9.3, git.codeanddice.ru/toutsu/gmrelay-discord-bot:3.9.3, git.codeanddice.ru/toutsu/gmrelay-web:3.9.3
    • Gitea Actions run #302 (PR checks) — success
    • Gitea Actions run #303 (deploy) — success
      • build-and-push: 3/3 образа собраны и запушены
      • scan-images: 3/3 образа просканированы (Trivy, без HIGH/CRITICAL)
      • deploy: .env создан, контейнеры развёрнуты

    🔗 Ссылки

    Downloads