feat(tui): chat rooms — browsable list, multiple open rooms, unread badges

Add a chat-rooms popup (open with 'c') satisfying the requested UX:
- Browsable, /-filterable room list showing per-room user counts,
  busiest first; already-open rooms are marked.
- Multiple rooms open at once as tabs; Tab/Shift-Tab switch, 'x' leaves.
- Per-room chat log with a live member list and an inline compose line
  (Enter to type, Enter to send; the server echo renders the message).
- Unread indicators: bold tab name + 'room (n)' badge per room, plus
  'chat (n)' and 'inbox (n)' counters in the shortcut bar; viewing a
  room clears its badge.

RoomsState is unit-tested (routing, unread accounting, tab lifecycle,
filtering).
This commit is contained in:
michel
2026-07-19 19:58:32 +02:00
parent 7d94b2caa3
commit 08272ac867
6 changed files with 924 additions and 7 deletions
+2
View File
@@ -1,6 +1,7 @@
mod app_state;
mod browse;
mod file_display_data;
mod rooms;
pub use app_state::{
AppState, ChatMessage, CommandBarMode, DownloadEntry, FocusedPane,
@@ -8,3 +9,4 @@ pub use app_state::{
};
pub use browse::{BrowseState, BrowseStatus, files_under, find_node};
pub use file_display_data::FileDisplayData;
pub use rooms::{RoomLine, RoomsState, RoomsView};