Skip to content

Chat shows assistant as thinking after page refresh without new message #449

@kiosvantra

Description

@kiosvantra

Bug Description

Refreshing the Hermes Workspace chat view can make the assistant appear to enter a "thinking" / generating state even though the user did not submit a new message.

This looks like a frontend state/reconnect issue rather than actual autonomous assistant behavior. The UI seems to conflate one or more of these states:

  • loading session/model metadata after page remount
  • reconnecting to an existing stream/SSE connection
  • recovering from an interrupted SSE stream
  • an actual assistant generation triggered by a new user message

Steps to Reproduce

  1. Open Hermes Workspace and enter an existing chat session.
  2. Send a message and let the assistant respond, or interrupt/refresh while a stream may still be active.
  3. Refresh the browser page.
  4. Return to the chat screen.
  5. Observe that the assistant may show a "thinking"/pending generation indicator without a new user message being sent.

Expected Behavior

Refreshing or remounting the chat view should not display assistant generation unless a new user message was explicitly submitted or a real backend generation is actively in progress.

The UI should distinguish between:

  • loading chat/session metadata
  • refreshing model/capability information
  • reconnecting to a stream
  • recovering from a disconnected/interrupted stream
  • assistant generation

Actual Behavior

After refresh, the chat UI can appear as if the assistant started thinking/generating on its own. This is confusing because no new user message was submitted.

Suggested Fix

  • Do not create a new chat POST/stream on component mount unless there is an explicit new user message.
  • Clear or reconcile stale pending/generating state when the page reloads and the prior stream is gone/interrupted.
  • Cancel or mark orphaned streams on refresh/unload where possible.
  • Use separate UI states/labels for "loading", "reconnecting", or "recovering stream" instead of reusing the assistant "thinking" indicator.
  • If the backend reports an interrupted/disconnected SSE stream, reflect that as stopped/interrupted rather than still pending.

Evidence / Notes

Local logs showed normal model/capability refresh activity around the page refresh, plus prior SSE client disconnect/interruption events. No evidence indicated that a new user-submitted chat message was intentionally sent by the user during the refresh.

Environment

  • App: Hermes Workspace
  • Mode observed: Workspace connected to Hermes Gateway in zero-fork mode
  • Browser action: manual page refresh / chat view remount

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions