feat(timeline): polish room message hierarchy (LC-558) #542

Merged
longjacksonle merged 1 commit from feat/lc558-timeline-polish into main 2026-07-11 04:47:24 +02:00

Delivers LC-558 / LC-UI-05 (room timeline polish). Four token-level tunings, chosen from a visual pass (current vs proposed, light + dark, on the real Blue Harbor tokens): all-recommended, author Option A. Polish only - no structural change, density unchanged, every OOB id preserved.

Changes

  1. Author / timestamp hierarchy - author name font-medium -> font-semibold across all actor types (user link, self, webhook, email, bridge; system-event actor left alone). The header timestamp moves off the shared .lc-caption onto a new .lc-msg-time (0.6875rem, content-subtle, tabular-nums), so "who / when" reads with a clean weight + size split. Author keeps its accent-blue DM affordance (Option A).

  2. Hover action chip - dropped the hard 1px border; softened to a diffuse shadow-md + rounded-lg so it floats over the sunken hover row instead of reading as a boxed cutout. Icon buttons, focus-within reveal, and the :has(details[open]) stay-open behavior are untouched.

  3. Self-mention highlight - wash now tracks the palette's --accent-surface token (color-mix 55%) instead of a hard-coded accent 8% mix that ignored the token and read too faint. The 3px accent bar stays the primary signal; layout-neutral; hover still wins.

  4. Day-divider contrast - .lc-day-chip label content-subtle -> content-muted so it clears WCAG AA on the elevated pill. Shared by the server render and the live day-boundary insert, so both inherit it. Unread (danger) divider unchanged.

The bg-yellow-50 -> bg-warning-surface edit-form sub-task had already landed.

Preserved (OOB ids, per the ticket)

msg-{id} · reactions-{id} · seen-{id} · followup-{id} · reply-count-{id} · poll-{id} - none renamed. Follow-up grouping and keyboard reachability intact.

Verification

dev/cargo check compiles all templates; dev-web rebuilt and healthy; served /assets/main.css carries .lc-msg-time and the retuned .lc-mentioned. Two files: room/message.html (levers 1-2) and main.css (levers 3-4 + the new time class).

🤖 Generated with Claude Code

https://claude.ai/code/session_01GJbJChgMXj7m1Q8GdnTPyT

Delivers **LC-558 / LC-UI-05 (room timeline polish)**. Four token-level tunings, chosen from a visual pass (current vs proposed, light + dark, on the real Blue Harbor tokens): all-recommended, author **Option A**. Polish only - no structural change, density unchanged, every OOB id preserved. ## Changes 1. **Author / timestamp hierarchy** - author name `font-medium` -> `font-semibold` across all actor types (user link, self, webhook, email, bridge; system-event actor left alone). The header timestamp moves off the shared `.lc-caption` onto a new `.lc-msg-time` (`0.6875rem`, `content-subtle`, tabular-nums), so "who / when" reads with a clean weight + size split. Author keeps its accent-blue DM affordance (Option A). 2. **Hover action chip** - dropped the hard `1px` border; softened to a diffuse `shadow-md` + `rounded-lg` so it floats over the sunken hover row instead of reading as a boxed cutout. Icon buttons, `focus-within` reveal, and the `:has(details[open])` stay-open behavior are untouched. 3. **Self-mention highlight** - wash now tracks the palette's `--accent-surface` token (`color-mix 55%`) instead of a hard-coded `accent 8%` mix that ignored the token and read too faint. The 3px accent bar stays the primary signal; layout-neutral; hover still wins. 4. **Day-divider contrast** - `.lc-day-chip` label `content-subtle` -> `content-muted` so it clears WCAG AA on the elevated pill. Shared by the server render and the live day-boundary insert, so both inherit it. Unread (danger) divider unchanged. The `bg-yellow-50` -> `bg-warning-surface` edit-form sub-task had already landed. ## Preserved (OOB ids, per the ticket) `msg-{id}` · `reactions-{id}` · `seen-{id}` · `followup-{id}` · `reply-count-{id}` · `poll-{id}` - none renamed. Follow-up grouping and keyboard reachability intact. ## Verification `dev/cargo check` compiles all templates; dev-web rebuilt and healthy; served `/assets/main.css` carries `.lc-msg-time` and the retuned `.lc-mentioned`. Two files: `room/message.html` (levers 1-2) and `main.css` (levers 3-4 + the new time class). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01GJbJChgMXj7m1Q8GdnTPyT
feat(timeline): polish room message hierarchy (LC-558)
All checks were successful
check-secrets / Nosey parker (pull_request) Successful in 4s
check-secrets / Kingfisher (pull_request) Successful in 7s
check-secrets / TruffleHog (pull_request) Successful in 8s
check-secrets / Nosey parker (push) Successful in 8s
check-secrets / TruffleHog (push) Successful in 10s
check-secrets / Kingfisher (push) Successful in 12s
Check / clippy + fmt + tests (pull_request) Successful in 3m12s
Create release / Create release from merged PR (pull_request) Has been skipped
33486fef0c
LC-UI-05 polish pass, four token-level tunings approved from the visual pass (all recommended, author Option A). No structural change; density and every OOB id (msg / reactions / seen / followup / reply-count / poll) preserved.

1. Author/timestamp hierarchy: author name font-medium -> font-semibold across all actor types (user link, self, webhook, email, bridge); system-event actor left as-is. The header timestamp moves off the shared .lc-caption onto a new .lc-msg-time (0.6875rem, content-subtle, tabular-nums) so "who / when" reads with a clean weight+size split. Author keeps its accent-blue DM affordance (Option A).

2. Hover action chip: dropped the hard 1px border, softened to a diffuse shadow-md and rounded-lg so the chip floats over the sunken hover row instead of reading as a boxed cutout. Icon buttons, focus-within reveal, and the :has(details[open]) stay-open behavior are untouched.

3. Self-mention highlight: the wash now tracks the palette's --accent-surface token (color-mix 55%) instead of a hard-coded accent 8% mix that ignored the token and read too faint. The 3px accent bar stays the primary signal; layout-neutral; hover still wins.

4. Day-divider contrast: .lc-day-chip label content-subtle -> content-muted so it clears WCAG AA on the elevated pill. Shared by the server render and the live day-boundary insert, so both paths inherit it. Unread (danger-toned) divider unchanged. The edit-form bg-yellow-50 -> bg-warning-surface token fix had already landed.

Verified: dev/cargo check compiles all templates; dev-web rebuilt and healthy; served /assets/main.css carries .lc-msg-time and the retuned .lc-mentioned.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GJbJChgMXj7m1Q8GdnTPyT
longjacksonle deleted branch feat/lc558-timeline-polish 2026-07-11 04:47: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!542
No description provided.