feat(ui): widen same-author message grouping to 15 min + day-break (LC-387) #398

Merged
longjacksonle merged 1 commit from feat/lc-387-grouping-pills into main 2026-06-20 04:42:24 +02:00

Closes LC-387. Part of the LC-383 room-polish-2 epic.

What

Consecutive same-author messages a few minutes apart repeated the full avatar + name + timestamp header (the noisy "Stripe Integrator x4" run in the screenshots) because the grouping window was only 5 minutes - a normal back-and-forth burst from one person breaks it.

  • Widen the window MESSAGE_GROUPING_WINDOW_SECONDS 300 -> 900, so such a burst groups under one header, with follow-ups indented and their HH:MM revealed on row hover (LC-377).
  • Day-boundary break. Add a same-UTC-day guard to is_follow_up_of so a near-midnight follow-up cannot render headerless under the day divider the client inserts - a day change always starts a fresh header, even inside the window.
  • Different-author and over-window breaks are unchanged.

Pills

Reactions already render as compact count pills (rounded-full chips with counts) distinct from the smiley add-reaction control (LC-374/LC-377), on the indented content column - confirmed, no change needed.

Tests

  • Grouping tests updated for the 15-minute window (window_is_fifteen_minutes, the gap/boundary cases) and a new not_follow_up_across_day_boundary.
  • Pure predicate change, no template/markup change, so the LC-77 fixtures are unaffected.
  • ./dev/cargo check, just test, just test-saas - all green.

🤖 Generated with Claude Code

Closes LC-387. Part of the LC-383 room-polish-2 epic. ## What Consecutive same-author messages a few minutes apart repeated the full avatar + name + timestamp header (the noisy "Stripe Integrator x4" run in the screenshots) because the grouping window was only **5 minutes** - a normal back-and-forth burst from one person breaks it. - **Widen the window** `MESSAGE_GROUPING_WINDOW_SECONDS` 300 -> 900, so such a burst groups under one header, with follow-ups indented and their HH:MM revealed on row hover (LC-377). - **Day-boundary break.** Add a same-UTC-day guard to `is_follow_up_of` so a near-midnight follow-up cannot render headerless under the day divider the client inserts - a day change always starts a fresh header, even inside the window. - Different-author and over-window breaks are unchanged. ## Pills Reactions already render as compact count pills (`rounded-full` chips with counts) distinct from the smiley add-reaction control (LC-374/LC-377), on the indented content column - confirmed, no change needed. ## Tests - Grouping tests updated for the 15-minute window (`window_is_fifteen_minutes`, the gap/boundary cases) and a new `not_follow_up_across_day_boundary`. - Pure predicate change, no template/markup change, so the LC-77 fixtures are unaffected. - `./dev/cargo check`, `just test`, `just test-saas` - all green. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(ui): widen same-author message grouping to 15 min + day-break (LC-387)
All checks were successful
check-secrets / Kingfisher (push) Successful in 4s
check-secrets / TruffleHog (push) Successful in 4s
check-secrets / Nosey parker (push) Successful in 4s
check-secrets / Nosey parker (pull_request) Successful in 3s
check-secrets / TruffleHog (pull_request) Successful in 5s
check-secrets / Kingfisher (pull_request) Successful in 6s
Create release / Create release from merged PR (pull_request) Has been skipped
Check / clippy + fmt + tests (pull_request) Successful in 3m28s
9d17e7137e
Consecutive same-author messages a few minutes apart were repeating the full avatar + name + timestamp header (the noisy "Stripe Integrator x4" run in the screenshots) because the grouping window was only 5 minutes - a normal back-and-forth burst from one person breaks it.

Widen MESSAGE_GROUPING_WINDOW_SECONDS from 300 to 900 so such a burst groups under one header, with the follow-ups indented and their HH:MM revealed on row hover (LC-377). Add a same-UTC-day guard to is_follow_up_of so a near-midnight follow-up cannot render headerless under the day divider the client inserts - a day change always starts a fresh header even inside the window. Different-author and over-window breaks are unchanged.

Reaction display already renders as compact count pills distinct from the smiley add-reaction control (LC-374/LC-377), on the indented content column - no change needed there.

Grouping tests updated for the 15-minute window and a new across-day-boundary case. Pure predicate change; no template/markup change, so the LC-77 fixtures are unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
longjacksonle deleted branch feat/lc-387-grouping-pills 2026-06-20 04:42:24 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/lets-chat!398
No description provided.