feat(nav): UI-consistency sweep across Scheduled, Kudos, Your stats (LC-691) #657

Merged
longjacksonle merged 1 commit from feat/LC-691-nav-sweep into main 2026-08-09 06:01:08 +02:00

What

Brings the remaining left-nav pages in line with the Inbox / Saved / Activity redesign: card rows on token surfaces, quiet metadata, avatars where a person is involved, and the shared empty-state partial. Presentation only - no data, route, or behavior changes. Token colors throughout (all four themes + both densities).

Pages

  • Scheduled - pending + dropped lists become card rows (was flat divide-y); bare-paragraph empty state -> shared partials/empty_state.html; Cancel restyled to the standard secondary/destructive control (keeps hx-confirm). Bug fix: the dropped section rendered <a href="{{ room_label }}"> - a dead link pointing at the label text ("#general"), not a URL. DroppedRow has no room path, so the room is now plain text.
  • Kudos - the receivers / givers leaderboards now show each person's avatar with live presence on elevated card rows; empty state uses the shared partial. The route resolves each ranked user's record once (label + avatar + presence) instead of a labels-only lookup (lists capped at LIMIT, so per-id lookups are cheap). New shared kudos/row.html renders both lists.
  • Your stats - chart/tile page, so only a token-consistency pass: stat tiles + top-channels rows move onto rounded-lg elevated surfaces to match the card language. No change to which stats show.

Transcripts already uses its own polished card + empty-state treatment (lc-tx-*), so it needs no change and is intentionally untouched.

Tests

  • routes_scheduled (16) + routes_stats (3) integration tests pass. Full lib suite (317). cargo fmt + clippy clean; Tailwind rebuild confirms classes resolve.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PBAyCesyqJkZ5JgixXf9Lf

## What Brings the remaining left-nav pages in line with the Inbox / Saved / Activity redesign: card rows on token surfaces, quiet metadata, avatars where a person is involved, and the shared empty-state partial. **Presentation only** - no data, route, or behavior changes. Token colors throughout (all four themes + both densities). ## Pages - **Scheduled** - pending + dropped lists become card rows (was flat `divide-y`); bare-paragraph empty state -> shared `partials/empty_state.html`; Cancel restyled to the standard secondary/destructive control (keeps `hx-confirm`). **Bug fix:** the dropped section rendered `<a href="{{ room_label }}">` - a dead link pointing at the label text ("#general"), not a URL. `DroppedRow` has no room path, so the room is now plain text. - **Kudos** - the receivers / givers leaderboards now show each person's **avatar with live presence** on elevated card rows; empty state uses the shared partial. The route resolves each ranked user's record once (label + avatar + presence) instead of a labels-only lookup (lists capped at `LIMIT`, so per-id lookups are cheap). New shared `kudos/row.html` renders both lists. - **Your stats** - chart/tile page, so only a token-consistency pass: stat tiles + top-channels rows move onto `rounded-lg` elevated surfaces to match the card language. No change to which stats show. **Transcripts** already uses its own polished card + empty-state treatment (`lc-tx-*`), so it needs no change and is intentionally untouched. ## Tests - `routes_scheduled` (16) + `routes_stats` (3) integration tests pass. Full lib suite (317). `cargo fmt` + `clippy` clean; Tailwind rebuild confirms classes resolve. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01PBAyCesyqJkZ5JgixXf9Lf
feat(nav): UI-consistency sweep across Scheduled, Kudos, and Your stats (LC-691)
All checks were successful
check-secrets / TruffleHog (push) Successful in 4s
check-secrets / Nosey parker (push) Successful in 5s
Create release / Create release from merged PR (pull_request) Has been skipped
check-secrets / Kingfisher (push) Successful in 5s
check-secrets / TruffleHog (pull_request) Successful in 5s
check-secrets / Nosey parker (pull_request) Successful in 6s
check-secrets / Kingfisher (pull_request) Successful in 9s
Check / clippy + fmt + tests (pull_request) Successful in 4m39s
aa78e8087a
Brings the remaining left-nav pages in line with the Inbox / Saved / Activity redesign: card rows on token surfaces, quiet metadata, avatars where a person is involved, and the shared empty-state partial. Presentation only - no data, route, or behavior changes. Token colors throughout, so all four themes + both densities hold.

- Scheduled (scheduled.html, scheduled_row.html): pending + dropped lists become card rows instead of flat divide-y lines; the bare-paragraph empty state becomes the shared partials/empty_state.html; the Cancel action is restyled to the standard secondary/destructive control (keeps its hx-confirm). Also fixes a dead link in the dropped section - it rendered `<a href="{{ room_label }}">` (href pointing at the label text, e.g. "#general", not a URL); DroppedRow carries no room path, so the room is now plain text.

- Kudos (kudos/page.html + new kudos/row.html, view, route): the receivers / givers leaderboards now show each person's avatar with live presence, on elevated card rows, and the empty state uses the shared partial. The route resolves each ranked user's record once (label + avatar + presence) instead of a labels-only lookup; the lists are capped at LIMIT so per-id lookups are cheap. A new shared kudos/row.html renders both lists.

- Your stats (stats/page.html): chart/tile page, so only a token-consistency pass - the stat tiles and the top-channels rows move onto rounded-lg elevated surfaces to match the card language. No change to which stats show or their computation.

Transcripts already uses its own polished card + empty-state treatment (lc-tx-*), so it needs no change and is intentionally untouched.

routes_scheduled (16) and routes_stats (3) integration tests pass; full lib suite (317); fmt + clippy clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PBAyCesyqJkZ5JgixXf9Lf
longjacksonle deleted branch feat/LC-691-nav-sweep 2026-08-09 06:01:08 +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!657
No description provided.