-
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.cs—BuildCommandпринимаетint?,?? 0убран (теперь null не превращается в 0, что нарушало DB CHECKck_sessions_max_players).src/GmRelay.DiscordBot/Features/Sessions/Wizard/DiscordWizardStep.cs— кнопка♾ Без лимитавRenderCapacityиRenderPoolSlotCapacity. ВBuildConfirmDescriptionприMaxPlayers = nullтеперь явно пишется👥 Без лимита, waitlist вкл/выклвместо игнорирования строки.src/GmRelay.DiscordBot/Features/Sessions/Wizard/DiscordWizardSubmitter.cs—BuildCommandпринимаетint?,?? 0убран.src/GmRelay.DiscordBot/Properties/AssemblyInfo.cs—InternalsVisibleTo("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.razor→ 3.9.3.
🗡 Что это даёт
- Пользователь: может создать сессию без лимита мест одной кнопкой в Telegram или Discord. Раньше приходилось сначала вводить лимит 1..50, потом менять через web-дашборд.
- DB-контракт: восстановлен —
CreateSessionCommand.MaxPlayers: int?корректно пробрасываетnullвsessions.max_players(DB CHECKmax_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