[Server] Add room chat channels with per-channel fan-out and history (#7476)

* [Server] Add room chat channels with per-channel fan-out and history

* Fixup: redact all channel histories on message removal

removeSaidMessages only redacted the main history, so banned/warned
content stayed visible to late joiners on every other channel.
Drop the unused channelId parameter and redact up to amount messages
per channel across the whole channelChatHistory map.

* [Server] Validate room channel ids and fix catalog schema per review

- servatrice.sql: expand rooms_channels access_level enum to full set
  to match 0037->0038 migration
- servatrice.cpp: skip empty, reserved (__main__) and duplicate channel
  ids when loading from ini and DB with qWarning
- server_protocolhandler.cpp: clarify catalog replay comment (filtering
  happens in moderator stack)
- server_room: drop duplicate channelIndex, linear search preserves
  catalog order

* [Server] Fix server_room.cpp formatting per clang-format-18

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: BruebachL <bruebachl@cockatrice.example>
This commit is contained in:
BruebachL 2026-10-16 22:46:38 +02:00 • committed by GitHub
parent be38e8d429
commit 17d2e8d86e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 281 additions and 34 deletions

View file

@ -5,6 +5,7 @@ message RoomCommand {
ROOM_SAY = 1001;
CREATE_GAME = 1002;
JOIN_GAME = 1003;
ROOM_CHANNEL_SAY = 1004;
}
extensions 100 to max;
}
@ -22,6 +23,14 @@ message Command_RoomSay {
optional string message = 1;
}
message Command_RoomChannelSay {
extend RoomCommand {
optional Command_RoomChannelSay ext = 1004;
}
optional string channel_id = 1;
optional string message = 2;
}
// Create a new game in the room
message Command_CreateGame {
extend RoomCommand {