feat(issues): Consolidate user feedback activity styles#116318
Conversation
Legacy user feedback was the last consumer of the shared activity author/item/bubble wrappers. Move the markup into the component so the styling is local and easier to reason about. Also types event user reports, keeps comments as escaped plain text with preserved newlines, and covers the copy/email rendering behavior. Co-authored-by: Codex GPT-5 <noreply@openai.com>
📊 Type Coverage Diff✅ No new type safety issues introduced. Coverage: 93.58% |
Add a tiny story for the legacy user feedback component and simplify the copy-email button branch while we're here. Co-authored-by: Codex GPT-5 <noreply@openai.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2ce3909. Configure here.
|
|
||
| if (!user) { | ||
| return undefined; | ||
| } |
There was a problem hiding this comment.
Avatar shows loading placeholder instead of user initials
Medium Severity
When report.user is null, getAvatarUser returns undefined, causing ActivityAvatar to render a Placeholder (a gray loading-shimmer circle) instead of a meaningful avatar. The old code created a fallback user object from report.name and report.email, so UserAvatar could render initials or a gravatar. Now anonymous reporters see a generic loading-style placeholder with data-test-id="loading-placeholder", which is both visually degraded and semantically incorrect. This is a behavioral regression in a PR described as a style consolidation.
Reviewed by Cursor Bugbot for commit 2ce3909. Configure here.
When the event user is missing, legacy user feedback still has reporter name and email. Use that local identity for the avatar so it renders initials instead of falling back to the empty placeholder. Adds a small test for the null user report case. Co-authored-by: Codex GPT-5 <noreply@openai.com>


Legacy user feedback is the last place using ActivityItem. This moves the markup and styles into the component so it owns the avatar + speech bubble layout locally.
Types event.userReport and hides email when it is the same as the display name.
Redash query where you can find issues that use legacy user feedback https://redash.getsentry.net/queries/11330/source
New story for component