[GH-ISSUE #23171] issue: message.done state is unreliable — switching chats or refreshing the page causes premature display of thinking process and action buttons #58570

Closed
opened 2026-05-05 23:27:13 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @ShirasawaSama on GitHub (Mar 28, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/23171

Check Existing Issues

  • I have searched for any existing and/or related issues.
  • I have searched for any existing and/or related discussions.
  • I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
  • I am using the latest version of Open WebUI.

Installation Method

Git Clone

Open WebUI Version

v0.8.12

Ollama Version (if applicable)

No response

Operating System

Mac 26

Browser (if applicable)

No response

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

The thinking process block and action buttons should only appear when the message has genuinely finished generating, regardless of page navigation or refresh.

Actual Behavior

Currently, the message.done flag is used to determine whether a message has finished generating. However, this state is unreliable — it can be lost when the user switches to another conversation or refreshes the page while a response is still being generated.

This leads to a concrete UI bug: even though a message may still be actively generating, the thinking/reasoning process block and action buttons (copy, regenerate, etc.) appear prematurely, because message.done defaults to a "completed" state after the state is lost.

Steps to Reproduce

  1. Start a conversation and trigger a long response (e.g., a complex reasoning task).
  2. While the response is still streaming, switch to another conversation or refresh the page.
  3. Switch back to the original conversation.
  4. Observe that the thinking process and action buttons are already visible, even though the generation may not have actually completed.

Logs & Screenshots

Image Image Image

Additional Information

Proposed Solution

Instead of relying solely on message.done (a per-message, easily-lost flag), use context to pass down two key pieces of state:

  1. Whether the current message is the last message in the conversation
  2. Whether there are any active/ongoing tasks (e.g., streaming responses)

With this approach, the UI logic becomes:

  • Show thinking blocks and action buttons only when the message is the last message and there are no ongoing tasks, or when the message is not the last message (meaning subsequent messages already exist, so this one must have completed).

This makes the "done" state derived and deterministic rather than relying on a flag that can be lost due to client-side state resets.

Originally created by @ShirasawaSama on GitHub (Mar 28, 2026). Original GitHub issue: https://github.com/open-webui/open-webui/issues/23171 ### Check Existing Issues - [x] I have searched for any existing and/or related issues. - [x] I have searched for any existing and/or related discussions. - [x] I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!). - [x] I am using the latest version of Open WebUI. ### Installation Method Git Clone ### Open WebUI Version v0.8.12 ### Ollama Version (if applicable) _No response_ ### Operating System Mac 26 ### Browser (if applicable) _No response_ ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior The thinking process block and action buttons should only appear when the message has genuinely finished generating, regardless of page navigation or refresh. ### Actual Behavior Currently, the message.done flag is used to determine whether a message has finished generating. However, this state is unreliable — it can be lost when the user switches to another conversation or refreshes the page while a response is still being generated. This leads to a concrete UI bug: even though a message may still be actively generating, the thinking/reasoning process block and action buttons (copy, regenerate, etc.) appear prematurely, because message.done defaults to a "completed" state after the state is lost. ### Steps to Reproduce 1. Start a conversation and trigger a long response (e.g., a complex reasoning task). 2. While the response is still streaming, switch to another conversation or refresh the page. 3. Switch back to the original conversation. 4. Observe that the thinking process and action buttons are already visible, even though the generation may not have actually completed. ### Logs & Screenshots <img width="2380" height="774" alt="Image" src="https://github.com/user-attachments/assets/bd9fa936-fd1f-46d8-ac05-704f6b68628e" /> <img width="1344" height="808" alt="Image" src="https://github.com/user-attachments/assets/428cf212-94ee-4602-ad13-0e5539a2151b" /> <img width="1386" height="1046" alt="Image" src="https://github.com/user-attachments/assets/96f9610b-68ba-445c-b1c4-5abc6fbfb3df" /> ### Additional Information ## Proposed Solution Instead of relying solely on `message.done` (a per-message, easily-lost flag), use **context** to pass down two key pieces of state: 1. **Whether the current message is the last message in the conversation** 2. **Whether there are any active/ongoing tasks (e.g., streaming responses)** With this approach, the UI logic becomes: - Show thinking blocks and action buttons **only when** the message is the last message **and** there are no ongoing tasks, **or** when the message is not the last message (meaning subsequent messages already exist, so this one must have completed). This makes the "done" state **derived and deterministic** rather than relying on a flag that can be lost due to client-side state resets.
GiteaMirror added the bug label 2026-05-05 23:27:13 -05:00
Author
Owner

@tjbck commented on GitHub (Apr 1, 2026):

Fixed in dev.

<!-- gh-comment-id:4169074073 --> @tjbck commented on GitHub (Apr 1, 2026): Fixed in dev.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#58570