description: "The Web feedback surface: the Like/Dislike pair in the finalized assistant message's action row, the feedback dialog behind both ratings and /feedback, and its acknowledgement and failure toasts; for users and maintainers of the feedback experience."
English | 中文
This package is the Web GUI's feedback surface: the Like/Dislike pair in the finalized assistant message's action strip, the feedback dialog with its acknowledgement and failure toasts in the composer overlay, and a decoration that opens the dialog from a bare /feedback. Like and Dislike both open the dialog, which collects a category and an optional description before recording the selected rating. One surface per Session backs every entry, so a single list read seeds the whole transcript and one dialog serves the Session and its messages. Ratings, categories, and notes are log-only Session events that never enter model context.
Mount this plugin alongside ui-conversation and ui-commands; the Like/Dislike pair then appears in the action row of each turn's closing assistant message, between copy and branch, and the Feedback row of the composer menu opens the dialog. A recorded rating shows the filled glyph and stays visible without hover. Like and Dislike both open the dialog: seven category chips and a detail box are optional, and Submit records the selected judgment with whatever was filled in before the toast thanks the user; the conversation log travels with every feedback event. Clicking the recorded rating retracts it without opening the dialog. A bare /feedback, picked from the menu or typed and sent without text, opens the same dialog for the Session; /feedback <text> keeps the Host command path and its acknowledgement row.
A rating or list-load failure shows inline in the row; a submission failure shows in a warning toast while the dialog stays open so the draft can be corrected. Only finalized messages reach the message entry — an interruption-frozen partial carries no messageId and therefore no feedback controls.
Read these pages when the feedback surface is not enough. They move from the browser strip to the Session-log backends and the conversation shell.
/feedback command, the sessionFeedback Remote, and the category taxonomy./feedback row goes through.None, as ratings, categories, and notes are log-only events, not model input. Optional Session-log delivery uses request metadata rather than model context.
None; feedback mutations leave the model-visible history unchanged.
These limits define the current feedback surface. They are current package constraints, not a general rating comparison or a task backlog.
maxNoteBytes (8192 in the Web bundle) and the Host rejects an oversized note with note-too-large. The dialog does not pre-check the limit, so an oversized description for a message fails on submit rather than while typing; a Session remark has no bound.messageId.Runtime invariant: No companion is published. The plugin owns two slot registrations, one command decoration, and one per-session controller-pair map, all released by the plugin fiber's effect disposers. The lifecycle spec proves the registrations are withdrawn and every controller pair is dropped when the owning fiber is disposed, so no second authority exists to check at runtime.