Skip to content

feat(dashboard): Rate a Reply once with the reader and a bad-reply comment - #2830

Merged
betegon merged 5 commits into
mainfrom
feat/reply-rating-comment
Nov 6, 2026
Merged

betegon merged 5 commits into
mainfrom
feat/reply-rating-comment

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Follow-up to #2763, from testing it in prod. Rating one Reply up, down, then up made three "Anonymous User" feedbacks in Sentry.

  • Reader: each rating now sends the reader's name and email from /api/me. Sentry shows the person instead of "Anonymous User".
  • One feedback per Reply, with time to change it: Good fills at once but waits 5 seconds before it sends. In that time, click it again to clear it, or click Bad to switch. Leaving the page or the Conversation sends a pending Good at once. After a rating sends, it is final: the chosen thumb stays filled and the other one hides. Ratings are still not stored, so a reload can rate again.
  • Bad asks why: Bad opens a popover (the same base-ui Popover as the profile menu, not a dialog) with an optional comment and Send. Cmd/Ctrl+Enter also sends. Nothing sends until Send, so a mistaken Bad can switch to Good, or close with Escape or an outside click. A comment becomes Bad reply: <comment>. With no comment it is Bad reply.
  • After Send, focus goes back to the filled thumb, so the actions row stays visible and keyboard users keep their place.

TELEMETRY.md and the unit test now describe the new payload. The privacy statement changed: a rating used to have "no person", and now it has the reader's name and email. It still has no Reply text.

Bad popover (dark) Bad popover (light) Mobile
After Bad + Send After Good sends

Testing

  • The e2e scenario in conversations.spec.ts checks the real browser feedback envelopes, with Playwright's fake clock for the 5-second delay. It covers: clearing Good, switching Good to Bad, switching Bad to Good, nothing sent before the delay, one feedback with contact_email and name after it, a pending Good sent when the reader leaves the Conversation, Escape on Bad, and Bad with a comment. It passed 5/5 with --repeat-each. All of conversations.spec.ts passes.
  • Three quick submits of the Bad form send one feedback.
  • Checked by hand in dark, light, desktop, and mobile.
  • Typecheck, oxlint, unit tests, file length, and the test architecture check pass.

via @betegon.

--

View Session in Sentry

…mment

Reply ratings now carry the reader's name and email, so Sentry no longer
shows them as Anonymous User. The first rating is final, so changing the
thumb no longer sends another feedback. Bad opens a popover with an
optional comment and Send.

Co-Authored-By: bete <28983162+betegon@users.noreply.github.com>
@vercel

vercel Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
junior-docs Ready Ready Preview Nov 6, 2026 7:25pm UTC

Request Review

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

163 screenshot changes — 0 changed · 163 added · 0 removed

Review screenshots in Frameshift

Good now waits 5 seconds before it sends. In that time the reader can
click it again to clear it or open Bad to switch. Leaving the page or the
Conversation sends a pending Good at once. A Reply still sends at most
one feedback.

Co-Authored-By: bete <28983162+betegon@users.noreply.github.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d292a9c. Configure here.

Transcript rows unmount outside the viewport. The rating lived in the row,
so an unmount sent a pending Good early and a remount could rate again.
Hold ratings per transcript list instead, so the undo window and the
one-feedback rule survive scrolling.

Co-Authored-By: bete <miguel.betegon@sentry.io>
@blacksmith-sh

blacksmith-sh Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Found 3 test failures on Blacksmith runners:

Failures

Test View Logs
[chromium] › packages/junior-dashboard/e2e/
conversations-read-position.spec.ts:364:1 › jumps to the latest page without the newer
pages
View Logs
[chromium] › packages/junior-dashboard/e2e/
conversations-read-position.spec.ts:95:1 › catches the reader up on several unread Turn
s
View Logs
packages/junior-dashboard/e2e/conversations-read-position.spec.ts/
catches the reader up on several unread Turns
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

renderToStaticMarkup needs getServerSnapshot for useSyncExternalStore.
@betegon
betegon merged commit 24db865 into main Nov 6, 2026
58 of 60 checks passed
@betegon
betegon deleted the feat/reply-rating-comment branch November 6, 2026 20:00

This branch was successfully deployed

1 active deployment
Preview – junior-docs — 593f6f6b Deployed Nov 6, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high PR risk score: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant