feat(ui): refine the day / unread divider styling (LC-379) #388

Merged
longjacksonle merged 1 commit from feat/lc-379-day-divider into main 2026-06-19 18:35:48 +02:00

Closes LC-379. Part of the LC-375 room-view deep-polish epic.

What

Refines the "TODAY" day separator into a lighter Slack/Discord-style divider: a hairline rule on each side of a small rounded, muted pill label.

  • The container / rule / pill are factored into shared .lc-day-divider / .lc-day-rule / .lc-day-chip classes, so the server render (room/message.html) and the client insert for live day-boundary arrivals (partials/auto_scroll.html) stay byte-identical by construction instead of by matching long Tailwind strings. role="separator" is preserved on both.
  • The unread divider is migrated to the same pill shape, danger-toned (.lc-day-rule-danger / .lc-day-chip-danger), so the two separators read as one family. It is server-rendered only (auto_scroll just queries [data-unread-divider] for scroll positioning, never inserts it), so no client parity is needed there.

Tests

  • ./dev/cargo check, just build-css, just test, just test-saas - all green.
  • The LC-77 message fixtures carry no day_label, so none needed regenerating.

🤖 Generated with Claude Code

Closes LC-379. Part of the LC-375 room-view deep-polish epic. ## What Refines the "TODAY" day separator into a lighter Slack/Discord-style divider: a hairline rule on each side of a small rounded, muted pill label. - The container / rule / pill are factored into shared `.lc-day-divider` / `.lc-day-rule` / `.lc-day-chip` classes, so the server render (`room/message.html`) and the client insert for live day-boundary arrivals (`partials/auto_scroll.html`) stay byte-identical **by construction** instead of by matching long Tailwind strings. `role="separator"` is preserved on both. - The unread divider is migrated to the same pill shape, danger-toned (`.lc-day-rule-danger` / `.lc-day-chip-danger`), so the two separators read as one family. It is server-rendered only (auto_scroll just queries `[data-unread-divider]` for scroll positioning, never inserts it), so no client parity is needed there. ## Tests - `./dev/cargo check`, `just build-css`, `just test`, `just test-saas` - all green. - The LC-77 message fixtures carry no `day_label`, so none needed regenerating. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(ui): refine the day / unread divider styling (LC-379)
All checks were successful
check-secrets / Kingfisher (push) Successful in 4s
check-secrets / Nosey parker (push) Successful in 7s
check-secrets / TruffleHog (pull_request) Successful in 3s
check-secrets / Nosey parker (pull_request) Successful in 4s
check-secrets / Kingfisher (pull_request) Successful in 4s
check-secrets / TruffleHog (push) Successful in 4s
Create release / Create release from merged PR (pull_request) Has been skipped
Check / clippy + fmt + tests (pull_request) Successful in 6m25s
bb86b82760
Replace the day separator's plain uppercase label-between-two-lines with a lighter, more refined Slack/Discord-style separator: a hairline rule on each side of a small rounded, muted pill label. The container, rule, and pill are factored into shared .lc-day-divider / .lc-day-rule / .lc-day-chip classes so the server render (room/message.html) and the client insert for live day-boundary arrivals (partials/auto_scroll.html) stay byte-identical by construction rather than by matching long Tailwind strings. role="separator" is preserved on both.

The unread divider is migrated to the same pill shape, danger-toned (.lc-day-rule-danger / .lc-day-chip-danger), so the two separators read as one family. It is server-rendered only (auto_scroll just queries [data-unread-divider] for scroll positioning, never inserts it), so no client parity is required there.

No backend or i18n changes; the LC-77 message fixtures carry no day_label, so none needed regenerating.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
longjacksonle deleted branch feat/lc-379-day-divider 2026-06-19 18:35:48 +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!388
No description provided.