feat(chat): clarify thread/reply rendering (LC-460) #443
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/chat-thread-reply-clarity"
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
Clarifies thread/reply rendering in the chat view (LC-460, flagged during LC-454). The view muddled two different "reply" concepts that looked alike: the inline quoted-reply chip (a top-level message quoting a parent) and the thread reply-count pill (which opens the side panel). Neither made the parent / reply / thread relationship obvious.
Changes
message_id/room_id/reply_count/oob) are unchanged, so the WebSocket OOB reply-count swap and the inline render keep sharing it.Scope / safety
Presentational only - no data models, routes, authz, or
hx-swap-oobtargets changed. Askama + HTMX + Tailwind, inline SVGs, token-based colors (light/dark). The four LC-77 webhook/email render golden fixtures were regenerated; the delta is whitespace-only (extra blank lines from the new template comments), confirmed withgit diff --ignore-all-spacebeing empty of structural change.Verification
just build-css,just check(clippy + fmt clean),just test,just test-saasall green.🤖 Generated with Claude Code
The chat view muddled two different "reply" concepts: the inline quoted-reply chip (a top-level message quoting a parent) and the thread reply-count pill (which opens the side panel). They looked alike and neither made the parent/reply/thread relationship obvious. - Inline quote chip now reads as an explicit reply pointer: a reply-arrow icon + "Replying to {author}" label, accent left edge + tint matching the composer's "Replying to" bar, and a "jump to the replied message" tooltip. Distinct from the thread affordance. - Reply-count pill is redesigned as a thread-entry chip: a branch icon + "N replies" + a trailing chevron with a "View thread" label, so it clearly opens the thread rather than reading as another quote. Inputs (message_id/room_id/reply_count/oob) are unchanged, so the WebSocket OOB reply-count swap and the inline render share it. - Thread panel gains hierarchy: an uppercase "N replies" count divider separates the root message from its replies, and a left rail nests the replies beneath the root. Presentational only: no data models, routes, authz, or hx-swap-oob targets changed. The four LC-77 webhook/email render golden fixtures were regenerated (whitespace-only delta from the new template comments). Verified with just build-css, just check, just test, just test-saas. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>