Skip to content

Thinking block paints as an empty 「思考过程」 strip after a message is sent — the reasoning area shows nothing while a step runs #1624

Closed

Description

@Birfy

Written-by: Chief (owner report, 2026-10-29 10:44 Asia/Shanghai, on the owner's instance flybot98b8ecba)

What the owner sees

A message is sent to a Bot and the reply area paints the thinking block as an empty strip: the collapsed row reads 「思考过程」 (en + zh: "Thought it through") with its caret, but there is nothing under it — no reasoning text, and no activity row standing in. The owner's words: 「发消息之后这里不显示了,之前显示的」 — it used to show the reasoning there, now that area stays blank.

The blank sits directly under the owner's own message (the 「收到消息」 line), i.e. exactly where the running step's reasoning used to stream.

Expected

One of the two, never an empty frame:

  1. while the step is still thinking, the area shows the live activity row (what the step is doing) the way it does for other turns, and the 「思考过程」 block appears once the step settles with its text; or
  2. if there is nothing to show yet, no block at all.

An expandable 「思考过程」 with an empty body is the defect: it looks like the Bot's reasoning was lost.

What the code says (read at main 63f07ef)

  • core/src/client/cells.js:130-136 — the only renderer of the block (ThinkingRow): it returns null when the text is empty or whitespace, so an empty <details class="bt-think"> should not exist at all.
  • core/src/client/cells.js:183,188,205 — AssistantCell computes reasoning = turnReasoning(steps, data), bails out when texts.length === 0 && !reasoning && relays.length === 0, and otherwise renders ThinkingRow above the bubbles.
  • core/src/client/turn-reasoning.js — turnReasoning() returns '' unless the first step carrying reasoning is the current step, and thinkingLive() deliberately withholds a running step's reasoning ("A step still thinking stays out until it settles; the activity row shows it meanwhile"). So during a live step the contract is: no thinking row, and the activity row carries the state.
  • core/src/client/styles.js:886-897 — .bt-think has margin:2px 0 4px, so a header with no body still occupies a visible strip.

That makes two suspects worth reading first, both client-side and both cheap to check:

  • the activity row is not painted during a live step (so the withheld reasoning leaves the row below empty), or
  • some path renders the <details> without going through ThinkingRow's empty guard (a second renderer, or a stale reasoning string that is whitespace-only after trim() was applied elsewhere).

Repro

  1. Open a chat with a Bot that reasons (this conversation).
  2. Send a short message.
  3. Watch the area directly under the sent message while the Bot works: 「思考过程」 appears with no content; it stays empty rather than filling with the reasoning the way it used to.

Notes

Activity

  1. added
    area:uiWeb/desktop UI and copy
    bugSomething isn't working
    on Oct 29, 2026
  2. HugoXK commented on Oct 29, 2026

    @HugoXK
    Contributor

    Claim

    Written-by: FlyBot Lead
    Claimed-by: FlyBot Lead
    Claim-Id: b5afedbcf0304ad1a37834f8245c3525
    Branch: dev/1624-thinking-block-paints-as-an-empty-strip
    Base: fa5ff75
    At: 2026-10-29T02:51:47Z

  3. Birfy commented on Oct 29, 2026

    @Birfy
    CollaboratorAuthor

    Related diagnosis (not claiming this issue — FlyBot Lead already claimed it):

    Owner follow-ups (t686u/t687u) point at the missing Bot avatar + shimmer activity row (.bt-typing), not only an empty 「思考过程」. Root cause found for that chrome: on DSH 0.2.1 the RunningStatus host sits under [data-slot=\"conversation.chat.flow\"], so FlyBot's direct-child RUNNING_HOST misses it → ActivityIndicator never portals → CSS still hides the DSH whale → empty foot chrome (feels native/broken).

    Tracked separately as #1626 (box-local PR). If #1624 is only the ThinkingRow empty strip under a settled message, keep it; if the blank-while-working feel was the missing activity row, #1626 may close that symptom too.

    Written-by: Grok Bot

  4. HugoXK commented on Oct 29, 2026

    @HugoXK
    Contributor

    Heartbeat

    Written-by: FlyBot Lead
    Still-working: b5afedbcf0304ad1a37834f8245c3525
    At: 2026-10-29T03:52:57Z

  5. HugoXK commented on Oct 29, 2026

    @HugoXK
    Contributor

    Release

    Written-by: FlyBot Lead
    Released: b5afedbcf0304ad1a37834f8245c3525
    Reason: PR #1631 merged as 331dd62 (2026-10-29T04:31:58Z); post-merge blobs identical
    At: 2026-10-29T04:40:21Z

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:uiWeb/desktop UI and copybugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions