Skip to content

feat(notifications): readability redesign#6272

Open
tsahimatsliah wants to merge 4 commits into
mainfrom
claude/busy-elion-c46b7f
Open

feat(notifications): readability redesign#6272
tsahimatsliah wants to merge 4 commits into
mainfrom
claude/busy-elion-c46b7f

Conversation

@tsahimatsliah

@tsahimatsliah tsahimatsliah commented Jul 1, 2026

Copy link
Copy Markdown
Member

Changes

Readability pass across every notification surface — the feed row, the real-time in-app popup, and the rail bell — plus Storybook coverage for each. Engineering-ready port of the design mock-up in #6254 (playground/exploration stories dropped).

Components (packages/shared):

  • NotificationItem — scannable hierarchy: regular title with the actor name bold at ~15px (typo-callout), relative time inline after the title, description dropped to text-text-tertiary, avatar/cover top-aligned, three-dots menu pinned top-right (no reserved gap when a row has no menu), title no longer truncates, denser rows below laptop.
  • Lead with the human actor (getNotificationLeadAvatar) instead of avatars[0] — squad comments/posts arrive source-first, which previously showed a source logo instead of the person who acted. Falls back to the source for source-only rows.
  • Multi-actor stack — more than three actors render as a tight overlap of up to three rounded-square faces, sized like one avatar so the lead never grows wider; the exact count stays in the title.
  • NotificationItemLead (new) — shared avatar + category badge / type icon, so the row and the in-app popup render leads identically.
  • InAppNotificationItem — redesigned to match the row.
  • NotificationsBell — compact corner badge (the full-size bubble blanketed the 24px rail glyph).
  • Rounded-square avatars everywhere; SourceButton gains an optional rounded prop (defaults to 'full', all other callers unchanged).
  • Category badges — Squads shares the Followers purple (dropped the low-contrast cheese yellow); per-badge glyph color for contrast on bright vs. dark fills.

Webapp:

  • NotificationsFeed — tighter page header→tabs spacing; tab strip matches the Squad/Explore header.
  • NotificationFilterBar — XSmall tabs on mobile, Small on laptop (Squads parity).

Storybook (Components/Notifications/*): Overview, Bell & badge, Icons & badges, Full page, In-app popup, Toast (live), Use cases.

Events

No new tracking events.

Experiment

No new experiments.

Manual Testing

Caution

NotificationItem / NotificationsBell are shared — used in the webapp header, the notifications page, and the extension companion. Worth a sanity check there.

Verified: strict tsc on changed files, ESLint (shared + webapp), and the notification Jest suites (NotificationItem, utils, Toast, NotificationsContext — 32 tests) all pass.

Did you test the modified components media queries?

  • MobileL (420px)
  • Laptop (1020px)

Preview domain

https://claude-busy-elion-c46b7f.preview.app.daily.dev

Improve notification readability across the feed row, the real-time in-app
popup, and the rail bell, and add Storybook coverage for each surface.

Components (shared):
- NotificationItem: scannable hierarchy — regular title with the actor name
  bold at ~15px (typo-callout), relative time inline after the title, tertiary
  low-glare description, top-aligned avatar/cover, three-dots menu pinned to
  the top-right (no reserved gap when a row has no menu), no title truncation,
  denser rows below laptop.
- Lead with the human actor, not whatever avatar the backend lists first
  (squad comments/posts arrive source-first) via getNotificationLeadAvatar.
- More than three actors render as an overlapping stack of up to three
  rounded-square faces sized like one avatar, so the lead never grows wider.
- Extract shared NotificationItemLead (avatar + category badge / type icon)
  so the feed row and the in-app popup render leads identically.
- InAppNotificationItem: redesigned to match the row (lead + bold-name headline).
- NotificationsBell: compact corner badge instead of a full-size bubble that
  blanketed the 24px rail glyph.
- Rounded-square avatars everywhere; SourceButton gains an optional `rounded`
  prop (defaults to 'full', so all other callers are unchanged).
- Category badges: Squads shares the Followers purple (dropped the low-contrast
  cheese yellow); each badge gets a glyph color picked for contrast.

Webapp:
- NotificationsFeed: tighter page header→tabs spacing, tab strip matching the
  Squad/Explore header.
- NotificationFilterBar: XSmall tabs on mobile, Small on laptop (Squads parity).

Storybook (Components/Notifications/*):
- Overview, Bell & badge, Icons & badges, Full page, In-app popup, Toast (live),
  and Use cases documenting the avatar + badge logic per scenario.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Jul 2, 2026 11:27am
storybook Building Building Preview Jul 2, 2026 11:27am

Request Review

Review follow-ups on the readability redesign:
- Extract the colored category badge (duplicated between the single-actor
  lead and the >3-actor stack front face) into a shared
  NotificationCategoryBadge; corner positioning stays per-call via className.
- Drop the now-dead `group` class on the row — the options menu no longer
  uses group-hover after the readability pass made it always visible.
- Fix stale comments (2x2 grid -> overlapping stack; the stack badge
  straddles the corner rather than "matching" the lead pixel-for-pixel).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant