feat(chat): suppress adjacent quote-stub, soften thread panel edge (LC-462) #445
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/reply-adjacency-suppress"
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?
What
Two polish items on the room reply/thread rendering (follow-up to LC-461). Ref
data/ref-room-thread_1.png.1. Suppress the redundant inline quote-reference for adjacent parents (Slack-style)
A quote-reply showed its "Replying to … [quoted text]" stub even when the quoted message was the row directly above it, so the same text appeared twice in adjacent rows.
The main-timeline list builder already tracks per-row context (
is_follow_up, day dividers). It now also tracks the previous rendered message id and sets a newMessageView.suppress_quote_previewwhenquote_id == previous_message_id; the template omits the stub in that case.Kept when the parent is further up, in a different group, or not currently rendered: every non-list construction site (single-message, WS, thread-reply renders) leaves the flag
false, so those render exactly as before. Inline timeline reference only - the thread panel, the "N replies" pill, and what is stored as a reply are untouched.2. Soften the thread panel's left edge
The replies list had a heavy accent left rail that read as a wall. The parent block + count divider already convey hierarchy, so the rail is dropped; the scroll region instead gets a thin, unobtrusive overlay scrollbar (
scrollbar-width: thin+ a low-contrast webkit thumb). The panel now feels attached to the conversation rather than walled off.Scope / safety
Rendering/CSS only. No change to storage, reply/thread server functions, WS events, or
hx-swap-oobtargets. The new bool was threaded through all 11MessageViewconstructors (compiler-enforced).Verification
just build-css,just check(clippy + fmt clean),just test,just test-saasall green (the LC-77 render fixtures were unaffected - the suppression branch only exists inside the already-conditional quote block).just verifybuilt the release binary clean; itsserver-upharness lacks the mandatoryLETS_CHAT_BUNYIP_SSO_*startup vars, so the standalone server cannot boot to serve/loginin this sandbox (environmental, not a regression).🤖 Generated with Claude Code