Skip to content

ChatMessage: improve delivery status, hover states, and time display#5628

Open
jamesacklin wants to merge 11 commits intodevelopfrom
jamesacklin/retry-padding-fix
Open

ChatMessage: improve delivery status, hover states, and time display#5628
jamesacklin wants to merge 11 commits intodevelopfrom
jamesacklin/retry-padding-fix

Conversation

@jamesacklin
Copy link
Copy Markdown
Member

@jamesacklin jamesacklin commented Mar 23, 2026

Summary

Improves chat message UX with hover highlights on desktop, relocates the delivery retry action inline, fixes the message highlight fade-out on web, and extracts a shared SentTimeText component to deduplicate time formatting. Also allows users to unhide a previously-hidden message.

Fixes TLON-5498
Fixes TLON-4120
Fixes TLON-5460

Changes

  • ChatMessage: Add hover background color on desktop/web ($secondaryBackground with $m border radius), desktop-only
  • ChatMessage: Show sent time on hover for subsequent messages in a series (non-author rows)
  • ChatMessage: Pipe delivery failure state through ChatMessageReplySummary instead of a standalone absolute-positioned retry button
  • ChatMessage: Reposition overflow menu based on whether author row is shown
  • ChatMessage: Fix "Show anyway" for hidden posts — was reusing the blocked-author handler which had no effect; now uses a dedicated showHiddenContent state
  • ChatMessageDeliveryStatus: Restore correct left-to-right arrow fill direction (left chevron lights first, then right); remove stray 3; expression
  • ChatMessageHighlight: Add CSS transition-based fade-out for web (reanimated doesn't run on web, so the highlight was stuck visible); uses positiveBackground color
  • ChatMessageReplySummary: Add deliveryFailed and onPressRetry props; render retry indicator with redo icon inline; stopPropagation on retry press to prevent bubbling to outer reply-navigation Pressable on web
  • AuthorRow: Replace duplicated timeDisplay memo logic with shared SentTimeText
  • SentTimeText: New shared component for formatted sent-at timestamps with optional full date display, color override, and View positioning props

How did I test?

Visual inspection via local dev server (pnpm run dev:web).

Risks and impact

  • Safe to rollback without consulting PR author? Yes
  • Affects important code area:
    • Channel display
    • Onboarding
    • State / providers
    • Message sync
    • Notifications
    • Other:

Rollback plan

Revert the PR; all changes are cosmetic/UI-only with no data model or API changes.

Screenshots / videos

New location for failure indicator / retry action:

Screenshot 2026-03-23 at 10 00 46 AM

Hover background / timestamps in action:

Screen.Recording.2026-03-23.at.11.59.54.AM.mov

…relocate click-to-retry action; ChatMessageDeliveryStatus: invert arrow fill direction
…meText: add; ChatMessage: add sent time to subsequent messages in a series; ChatMessage: add hover background color + reposition ... menu
@linear
Copy link
Copy Markdown

linear bot commented Mar 23, 2026

jamesacklin and others added 4 commits March 23, 2026 10:49
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…stray expression

- ChatMessageReplySummary: stopPropagation on retry press to prevent
  bubbling to outer reply-navigation Pressable on web
- ChatMessage: add separate showHiddenContent state so "Show anyway"
  for hidden posts actually reveals the content
- ChatMessageDeliveryStatus: remove stray `3;` expression

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jamesacklin and others added 3 commits March 25, 2026 13:24
…or both

react-native-reanimated works on web, so the separate CSS transition
path was unnecessary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…or both

Use withSequence to express the full opacity timeline in a single
assignment, fixing the fade-out on web where back-to-back shared value
assignments were not triggering the delayed animation.

Co-Authored-By: Claude Opus 4.6 <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.

2 participants