- Add DeleteSessionAsync to ISessionStore/SessionService (unpublish portfolio card,
remove bot-created empty forum topic, update batch message).
- Add DeleteSessionForCurrentUserAsync to AuthorizedSessionService with audit log.
- Add delete button + confirmation dialog to GroupDetails.razor.
- Extend dashboard Playwright tests with edit persistence and delete verification.
- Update AuthorizedSessionServiceTests with delete authorization coverage.
- Mark issue #150 as done in tests/e2e/README.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add NewSessionScenario that walks the Telegram wizard:
single game, title, skip description/cover, D&D 5e, 4h, datetime,
capacity, online format, join link, public visibility, publish, confirm
- Add ClickInlineButtonAsync / ClickInlineButtonByTextAsync to TelegramUserClient
- Add local WizardCallback/Step constants mirroring GmRelay.Shared wizard wire format
- Program.cs now runs full flow: group setup + /newsession + cleanup
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add GroupSetupScenario: create supergroup, invite GmRelay bot, send /start,
wait for reply, then delete the group
- Extend TelegramUserClient with DeleteGroupAsync and channel cache
- Update Program.cs to run the scenario with cleanup in finally
- Update README status table and runner documentation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add standalone C# console runner tests/e2e/runner/ using WTelegramClient
- Provide TelegramUserClient wrapper: login, create supergroup, invite bot,
send messages/commands, read recent messages, wait for bot reply
- Add .env.example and runner .gitignore to keep secrets/session files out of git
- Update E2E README with runner instructions and status table
- Runner project intentionally excluded from GM-Relay.slnx to avoid CI/AOT impact
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>