feat(activity): polish the Activity page to match the Inbox redesign (LC-690) #656
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/LC-690-activity-polish"
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?
What
The Activity page (
/activity) read as an undifferentiated gray wall - identical to the pre-LC-685 Inbox: everythingtext-content-muted, flatdivide-yrows, no avatar, DM rows showing the peer's raw UUID, bare-paragraph empty state. Same data, same route, same tabs - this ports the LC-685 Inbox polish to Activity.Changes
partials/avatar.html). The handler already fetched the actor record and kept only the label; now threadsavatar_ext/ effective status / custom status ontoActivityItem.partials/empty_state.html(icon + muted copy).Tests
routes_activityintegration tests pass (3, incl. empty-state + peer-mention). Full lib suite (317).cargo fmt+clippyclean.Follow-up
Tracked separately: UI-consistency sweep across the remaining nav pages (Scheduled, Kudos, Your stats, Transcripts). Inbox / Saved / Activity are now the reference pattern.
🤖 Generated with Claude Code
https://claude.ai/code/session_01PBAyCesyqJkZ5JgixXf9Lf
The Activity page read as an undifferentiated gray wall, identical to the pre-LC-685 Inbox: every part of a row (kind, room, actor, action) was text-content-muted, rows were flat divide-y lines with no avatar, DM rows showed the peer's raw UUID, and the empty state was a bare paragraph. Same data, same route, same tabs - this is the LC-685 Inbox polish ported to Activity. - Actor avatar: each row now shows the acting user's avatar with the live presence dot, reusing partials/avatar.html. The handler already fetched the actor record and kept only the label; it now threads avatar_ext / effective status / custom status onto ActivityItem. - Visual hierarchy: actor name in text-content (prominent) as the row heading, the action line in readable text-content, the kind + room caption and timestamp as quiet secondary text. Because the actor is the heading, the action line drops the leading name ("@vas replied..." -> "replied...") - no redundancy, and the existing i18n strings already read correctly without it. - Card rows: flat divide-y lines become per-event cards on token surfaces (border, rounded, elevated, hover). The whole card stays one deep-link to the message; token colors only, so all four themes + both densities hold. - DM name bug: a DM row showed "DM with @<uuid>" because the handler formatted the peer id. It now resolves the peer's display name (it already resolves the peer id for the deep-link) so it reads "DM with <name / @handle>". Same class of bug fixed in LC-684 (Saved) and LC-685 (Inbox). - Empty state: the bare centered paragraph becomes the shared partials/empty_state.html treatment (icon + muted copy). routes_activity integration tests pass (3), 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