fix(seer): Stop drawing an empty reasoning box while Seer works - #125151
Merged
Merged
Conversation
While a response is in flight but has reported nothing yet — most visibly when the agent is off running an autofix — the Explorer drew a bordered but empty card under the "Thinking..." header, which reads as a broken or stuck panel. `ThinkingBlock` opens that card only when it is given children, but `ResponseGroup` handed it `group.map(...)`. An array is truthy even when every `Fragment` inside it renders nothing, so the guard never fired. The blocks are now gated on `hasTrace`, the predicate that already decides whether any reasoning, narration, or tool row will actually appear, so the header stands alone until there is something to put under it. The block itself still renders throughout, so the live title, the Seer spinner, and the elapsed timer are unchanged.
ryan953
marked this pull request as ready for review
September 22, 2026 17:46
natemoo-re
approved these changes
Sep 22, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While a Seer Explorer response is in flight but has reported nothing yet, the
chat drew a bordered but empty card under the
Thinking...header. It is mostvisible when the agent goes off to run an autofix, because that can sit for tens
of seconds with nothing to narrate — the panel reads as broken or stuck rather
than as work in progress.
Before, the whole panel was a
Thinking...row with an elapsed timer and anempty rounded box beneath it. After, it is the row on its own.
ThinkingBlockopens its content card only when it is given children, butResponseGrouphanded itgroup.map(...). An array is truthy even when everyFragmentinside it renders nothing, so that guard never fired. The blocks arenow gated on
hasTrace— the predicate that already decides whether anyreasoning prose, narration, or tool row will actually appear — so the header
stands alone until there is something to put under it.
Hardening
ThinkingBlockinstead was the other option, and it was not taken:React cannot ask a subtree whether it rendered anything, and
React.Children.countcounts theFragments, not their output. The caller isthe only place that knows, and
hasTracealready encodes it.The block itself still renders the whole time, so the live tool title, the Seer
spinner, and the elapsed timer are unchanged.
No feature flag — this is on the existing Seer Explorer chat path.
The existing
renders a ThinkingBlock placeholder before any trace content arrivestest asserted only that the disclosure exists, which passed either way;it now also asserts the content panel is absent, and that assertion fails
against
master.