Stage 2: Official client (rechat) #2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
proj-rechat-client tier-3-hard
Build the official Limoni TUI client (
rechatbinary).Scope
&indexchannel rendered as server/channel browser/msg srv profileCharacter limit
The official client enforces a shorter message length limit than the IRC 512-byte cap, specifically to avoid the server-side chunking jank from stage 1. The limit is auto-calculated:
max_len = 512 - len(":srv PRIVMSG #<channel> :") - len("<uuidv7> <uid> <nick> ") - len("\r\n")Since the prefix length varies by channel name and nick, the client computes it per-message and truncates/warns before sending. The goal: official client messages never trigger server chunking.
Depends on
Shared UI package (Zach, 2026-10-16)
The TUI/UIX code MUST live in a shared location in the rechat repo so both the client binary and the server (SSH gateway, #8) can use it — same pattern as residual core's shared UI elements. Proposed:
internal/ui/for Limoni components,internal/tui/for the I/O backend interface.internal/is fine (same module); public vs internal doesn't matter so long as both binaries reach it.Implemented and pushed in
9702904.internal/ui/shared Limoni components (channel sidebar, message pane, input with live char counter, status bar, slash commands) — usable by both client and SSH gateway (#8)internal/tui/I/O backend interface (local terminal + SSH stub); Limoni natively supportsProgram.RunTerminalfor the SSH use caseinternal/client/IRC client with UUIDv7 chunk reassembly and per-message character budget so client messages never trigger server chunking