feat(ui): message grouping rhythm + add-reaction affordance (LC-377) #386
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/lc-377-message-grouping"
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?
Closes LC-377. Part of the LC-375 room-view deep-polish epic.
What
Tightens the message timeline's vertical rhythm and fixes the stray
+, building on LC-376.pl-8content column (avatar width + gap), so they align under the author name rather than under the avatar.is_follow_up) is unchanged; a grouped follow-up keeps hiding its author/timestamp header, and on row hover a compact HH:MM reveals in the empty avatar gutter to its left. That uses a newdata-lc-ts-mode="time"branch in the relative-timestamp formatter (the gutter is too narrow for "2 minutes ago"); it is absolutely placed, so it reserves no height at rest.+under every message (which read as a stray artifact) becomes a smiley pill: visible as an "add more" control when the message already has reactions, but hover-only (group-hover+group-focus-withinfor keyboard) when it has none, so it no longer reserves a blank row of height under every message.Preserved
The reaction picker mechanism, the
#reactions-{id}OOB target, allhx-*wiring, and the LC-376 action toolbar are untouched.cancel_pickernow returns the same smiley pill (replacing the legacy off-tokentext-slate-500 +). One existing i18n key reused (partials-reaction-add).Tests
./dev/cargo check,just build-css,just test,just test-saas- all green.🤖 Generated with Claude Code
Tighten the message timeline's vertical rhythm and fix the stray `+`. The message body, quote chip, attachments, poll, reactions, and meta now sit in a `pl-8` content column so they align under the author name instead of under the avatar (Slack/Discord left-nav rhythm). The existing same-author 5-minute grouping is unchanged; a grouped (follow-up) message keeps hiding its author/timestamp header, and on row hover a compact HH:MM now reveals in the empty avatar gutter to its left, via a new `data-lc-ts-mode="time"` branch in the relative-timestamp formatter (the gutter is too narrow for "2 minutes ago"). The gutter time is absolutely placed, so it reserves no layout height at rest. The always-on bare `+` under every message (which read as a stray artifact) becomes a smiley pill add-reaction control: it stays visible as an "add more" affordance when the message already has reactions, but with no reactions it is hover-only (`group-hover` on the row) plus `group-focus-within` so keyboard users tabbing into the row can still reach it - and so it no longer reserves a blank row of height under every message. The reaction picker mechanism is unchanged; `cancel_picker` is updated to return the same smiley pill (replacing the legacy off-token `text-slate-500 +`). Reactions OOB target (`#reactions-{id}`), all hx-* wiring, and the LC-376 action toolbar are untouched. One existing i18n key reused (partials-reaction-add). The four LC-77 golden render fixtures are regenerated; diff verified to contain only the content-column wrapper, the follow-up gutter timestamp, and the add-reaction restyle. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>