Cockatrice/tests
BruebachL c99113ab0e
[Client] Tabbed room channels with unread states and collapsible chat (#7478)
* [Client] Add room channel selector with per-channel chat views

* [Client] Tabbed room channels with unread states, collapse, read-only, banners

Reworks the room chat channel display: channels move out of the combobox
into a tab bar below the message input showing every channel available
to the user.

- Each tab shows its unread message count and is tinted when it holds
  unreads or a mention; both colors are user-configurable chat settings
  (channelUnreadColor, channelMentionColor) with a settings-page section.
- Clicking the active tab collapses the chat: message view and input
  hide and the splitter section minimizes to the tab strip; expanding
  restores the previous splitter sizes. Viewing a channel clears its
  unread state.
- Channels the user may read but not write (per write_access_level)
  show with the message input disabled and a read-only placeholder;
  sends are guarded locally, the server still enforces.
- Channel banner_message strings render at the top of their channel
  view on join, like the room join message on Main.
- Replayed channel history no longer inflates unread counts; moderation
  redaction now applies across all channel views.

* Fixup: keep chat tab bar visible when chat is collapsed

QSplitter children are collapsible by default, so setSizes({1, 0})
hid the whole chat group box including the channel tab bar.
Mark the chat widget non-collapsible so collapsing clamps to its
minimum size (title + tab bar) instead.

* [Room] Explicitly initialize MAIN_CHANNEL per review

* [Room] Address channel tab review follow-ups

- gate @all mentions on moderator/admin sender to match ChatView,
  whole-word matching for own name and highlight words
- hide single-channel tab bar so old servers do not show a lone Main
  tab that collapses chat on misclick
- capture target ChatView in sendMessage so errors land in the
  channel the message was sent from
- share ignore/unregistered filtering between RoomSay and
  RoomChannelSay via isRoomMessageIgnored

* [Client] Fix tab_room.cpp formatting per clang-format-18

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: BruebachL <bruebachl@cockatrice.example>
2026-10-16 22:46:39 +02:00
..
card_zone_algorithms [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
carddatabase [CardDB] Reload after the first run enables all sets without freezing startup (#7470) 2026-10-13 06:29:16 +02:00
deck_list_model [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
deck_list_zones [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
loading_from_clipboard Support tab-separated deck imports (#4222) (#7267) 2026-10-11 21:19:10 +02:00
movecard_tests [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
oracle [CI] Publish a gcovr line-coverage report from the test run (#7404) 2026-10-11 15:05:28 +02:00
picture_loader_benchmark [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
settings [Client] Tabbed room channels with unread states and collapsible chat (#7478) 2026-10-16 22:46:39 +02:00
theme_migration [Tests] Register each test case with CTest instead of each test binary (#7399) 2026-10-11 14:50:09 +02:00
card_update_progress_test.cpp [Client] Improve card database update visibility (#7458) 2026-10-09 11:07:48 +02:00
clamped_arithmetic_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
CMakeLists.txt [Installer][Client] Back up user data before old uninstallers can delete it (#7503) 2026-10-16 22:05:42 +02:00
deck_hash_performance_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
expression_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
lag_monitor_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
latency_tracker_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
loader_local_matching_test.cpp [Tests] Scope loader matcher settings to the process to fix parallel-run flakes (#7504) 2026-10-15 12:21:40 +02:00
metrics_registry_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
password_hash_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
playmat_resolver_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
rate_limiter_test.cpp [Server] Inform client of login/registration rate limit timeout (#7468) 2026-10-16 05:47:43 +02:00
report_categories_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_card_counter_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_counter_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_developer_role_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_dump_zone_test.cpp [Server] Resolve a zone dump request to an in-range index span (#7401) 2026-10-13 11:23:13 +02:00
server_game_join_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_moderator_role_test.cpp [Report] Add report reopen action for closed reports (#7442) 2026-10-11 15:28:45 +02:00
server_rate_limiter_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
single_instance_manager_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
test_age_formatting.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
translation_loader_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
translation_loader_test.ts [Translations] Load Qt's own translations and build ours with the binary (#7384) 2026-10-03 15:04:30 +02:00
user_data_backup_test.cpp [Installer][Client] Back up user data before old uninstallers can delete it (#7503) 2026-10-16 22:05:42 +02:00
warning_categories_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00