Skip to content

feat(chat): always-visible config for thumbs feedback#354

Open
herikwebb wants to merge 3 commits into
plmbr:mainfrom
herikwebb:feat/feedback-enhancements
Open

feat(chat): always-visible config for thumbs feedback#354
herikwebb wants to merge 3 commits into
plmbr:mainfrom
herikwebb:feat/feedback-enhancements

Conversation

@herikwebb
Copy link
Copy Markdown
Contributor

@herikwebb herikwebb commented Jun 1, 2026

Summary

The feedback buttons are only visible when you hover over them and are very easy to miss. After seeing very low engagement with this mechanism, adding the option to make them always visible, similar to other popular IDEs.

  • Add an admin-controlled enable_chat_feedback_always_visible traitlet (default False, mirrors the existing enable_chat_feedback plumbing end-to-end) that renders the thumbs feedback buttons at full opacity on every assistant reply instead of revealing them only on hover.
  • In always-visible mode, drop the !showGenerating gate on the feedback container — the buttons were previously held back until the StreamEnd WebSocket message arrived, which lands noticeably after the last text chunk and produced a perceptible lag between "reply visible" and "buttons visible". Hover mode keeps the gate, so its behavior is unchanged.
  • Rename the thumbs tooltips and screen-reader aria-labels from "Helpful"/"Not helpful" to "Good response"/"Bad response" — frames the rating as feedback on the reply rather than a self-report, and keeps the visible label and aria text in sync.

Test plan

  • With enable_chat_feedback = True only (default for the new flag): thumbs hover-reveal as before; CSS gate behaves identically.
  • With enable_chat_feedback_always_visible = True (and enable_chat_feedback = True): thumbs render at full opacity for every copilot reply.
  • In always-visible mode, thumbs appear with the reply rather than after the StreamEnd signal — no perceptible gap between text-visible and buttons-visible.
  • Tooltip reads "Good response" / "Bad response"; screen reader announces "Rate response as good" / "Rate response as bad".
  • chat_feedback_always_visible defaults to false in GET /notebook-intelligence/capabilities when the traitlet is unset.
  • Verify in both light and dark JupyterLab themes.

herikwebb added 2 commits June 1, 2026 17:36
The thumbs-up/down feedback buttons were only revealed on hover, which
made them easy to miss; engagement with the in-process telemetry event
was correspondingly low. Add an admin-controlled traitlet,
`enable_chat_feedback_always_visible`, that mirrors the existing
`enable_chat_feedback` plumbing — exposed via the capabilities
endpoint, read by `NBIAPI.config.chatFeedbackAlwaysVisible`, and
applied as an `always-visible` modifier on `.chat-message-feedback`
so the buttons render at full opacity for every assistant reply.

Also drop the `!showGenerating` gate on the feedback container in
always-visible mode: it previously held the buttons hidden until the
`StreamEnd` WebSocket message arrived, which lands noticeably after
the last text chunk and produced a perceptible lag between "reply
visible" and "buttons visible." Hover mode keeps the gate, so its
behavior is unchanged.
"Helpful"/"Not helpful" reads as a self-report ("was this helpful to
you?") rather than a rating of the assistant's reply. "Good response"
and "Bad response" frame the rating as feedback on the response
itself, which is what the click actually captures. Update both the
visible tooltip (title) and the screen-reader aria-label so the
wording stays consistent across assistive tech.
@pjdoland pjdoland added the enhancement New feature or request label Jun 1, 2026
Pad the trailing whitespace on the new
`enable_chat_feedback_always_visible` row so the closing `|` aligns
with the surrounding rows in the traitlet table. Restores
`jlpm run lint:check` to passing.
@pjdoland pjdoland added this to the 5.1.x milestone Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants