Client and server: TUI status UI, read receipts, reconnect, commands, rate limit, unread#89
Open
Cod-e-Codes wants to merge 3 commits intomainfrom
Open
Client and server: TUI status UI, read receipts, reconnect, commands, rate limit, unread#89Cod-e-Codes wants to merge 3 commits intomainfrom
Cod-e-Codes wants to merge 3 commits intomainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Client: contextual status footer, full-width banner strips (error/warn/info), debounced read receipts at transcript tail,
#channelin the footer when not ingeneral, transcript cleared on each successful WebSocket connect so handshake replay does not duplicate lines. After every successful WebSocket write for normal chat (text/dm/ E2E path) and foradmin_command, clearm.sendingso[Sending...]does not depend on a latershared.Message(covers server rate drops and other silent paths).Server: unknown admin
:command (after plugin and built-in handling) returnsSystemtext(Unknown command:plus first token). When per-connection message rate burst is exceeded, send oneSystemtextnotice then cooldown (see PROTOCOL.md).Client unread: increment footer unread only for other users' new
text,dm, orfilewhile the viewport is not at the bottom; exclude typing, reactions, read receipts, edits, deletes, pin/search/admin wire types, channel control types, and your own sender.Footer vs banner
#channelwhen the current room is notgeneral, help hint when disconnected or help overlay open). Not used for transient command success text that belongs above the input.[OK]connection line as info-tier strip). Long text truncates to one line.Read receipts
Reference client sends
read_receiptdebounced when the user is scrolled to the newest messages (tail), including after paging to bottom. Flush scheduling is cleared when the WebSocket closes.Reconnect and transcript
On
wsConnected, the client clearsmessages,reactions,typingUsers,receivedFiles, andunreadCount, then re-renders the viewport. Scrollback is rebuilt from the server handshake replay (documented cap in PROTOCOL.md). Wire protocol is unchanged.Rendering and themes
Systemtranscript lines use severity-based styling instead of reusing the timestamp color for all system text. Built-in themes adjust banner strip colors where needed. Customthemes.jsonmay set optionalbanner_error_bg,banner_error_fg,banner_warn_bg,banner_warn_fg,banner_info_bg,banner_info_fg(see THEMES.md andthemes.example.json). Custom themes do not add new JSON keys for system-line colors; those styles are derived in code from existingmessage,banner, andmentioncolors (and footer colors for the info strip fallback).Files
New:
client/chrome.go,client/chrome_test.go,client/render_test.go. Modified:client/main.go,client/websocket.go,client/render.go,client/theme_loader.go,client/commands.go,client/main_test.go,client/theme_loader_test.go,client/code_snippet_test.go,server/client.go,server/client_test.go,themes.example.json, ARCHITECTURE.md, PROTOCOL.md, README.md, TESTING.md, THEMES.md.Breaking changes
themes.jsonparsing. Old theme files still load. New keys are optional.:export). Cached received-file metadata for:savefileis cleared on connect; files must be received again or saved before disconnect if the user relied only on the in-memory cache.Systemtranscript lines differently than before. Custom themes pick up default banner strip colors when the newbanner_*keys are omitted, and system-line colors follow the derivation above, so the UI can shift even without editingthemes.json. Set the optionalbanner_*fields if you need explicit control over strip colors after upgrade.Systemtextfor unknown admin:commands; oneSystemtextwhen message rate burst is exceeded for a connection. Unread semantics and clientm.sendingclearing are client-side reference behavior.