feat(web): make pending questions easy to find without moving threads - #9810
feat(web): make pending questions easy to find without moving threads#9810maria-rcks wants to merge 5 commits into
Conversation
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a new pending-question navigation workflow across shared sidebar and chat components. The navigation currently ignores active project/search filters, and the collapsed sidebar has a reported overflow issue, so the cross-cutting behavior and unresolved runtime concerns need human review. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort 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 cbbcb3e. Configure here.

Pending questions now have a fixed Needs input count that opens each waiting thread in turn, while thread order stays unchanged and a static border marks pending rows. Submitted answers appear beside the activity label, expand into the original question details, and composer questions render Markdown links.
Verified next-question navigation in the real app with 80 demo threads and 8 pending questions, no border animation, web typecheck, targeted lint, and the existing 318-test pass from the initial implementation.
Original sidebar (sampled capture):
Previous animated proposal:
Final static navigation, same demo threads:
Implemented with gpt-5.6-sol in the Codex harness.
Note
Low Risk
Mostly sidebar and timeline presentation; work-log derivation changes how resolved user-input rows read in the activity feed but does not touch auth or persistence.
Overview
Adds a fixed Needs input · N control at the top of the sidebar (via
SidebarQuestionIndicators) that cycles through non-archived threads withhasPendingUserInput, callingnavigateToThreadwithout reordering the list. Pending rows are highlighted withdata-pending-question, thesidebar-question-pendingindigo border overlay, and the same styling in bothSidebarandLegacySidebar.Resolved user-input activities in
deriveWorkLogEntriesnow populate optionaluserInputSummaryand richerdetail(questions, options, answers); the message timeline shows the summary next to the work-log label and includes it in accessible text. Pending composer questions render throughChatMarkdowninstead of plain text.Reviewed by Cursor Bugbot for commit cbbcb3e. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add pending-question sidebar indicators and user-input summaries to timeline
SidebarQuestionIndicatorscomponent that lists non-archived threads with pending user input, shows a count, and cycles to the next pending thread when activatedSidebarContentrenders the indicator above its scroll area when a navigation callback is supplied; bothSidebarandLegacySidebarwire up the callbackpending-questionclass and data attribute; a CSS overlay adds an indigo border to marked rowsComposerPendingUserInputCardnow renders the active question asChatMarkdowninstead of plain textderiveWorkLogEntriesin session-logic.ts parses submitted answers for resolved user-input activities and attaches a compactuserInputSummaryplus structured detail to the work-log entry;PlainWorkEntryRowdisplays the summary as truncated secondary textWorkLogEntry.userInputSummaryis a new optional field — existing consumers ofWorkLogEntrythat do not handle the field will simply ignore it, but timeline rendering changes for entries that now carry summariesMacroscope summarized cbbcb3e.