{"repo":"NousResearch/hermes-agent","public_id":"19543","display_label":"UI stuck in running/thinking state after turn ends","summary":"A cluster of bugs and fixes around chat, todo, and thinking indicators remaining in active/spinning states after assistant turns complete, affecting desktop, mobile, TUI, and dashboard surfaces. Fixes address stale UI state, reconnection recovery, session watchdog healing, and turn-end synchronization.","subsystem":"apps/desktop","counts":{"members":17,"open_issues":2,"open_issues_distinct":2,"open_prs":1,"closed_issues":5,"merged_prs":3,"attempt_prs":7},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":65239},"resolution":{"state":"partially_resolved","by":"pr-65239"},"freshness":{"state":"verified","last_verified_at":"2026-08-15T20:27:08+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.08941176470588233},"fix_edges":[{"issue_number":46517,"pr_number":86923,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":46517,"pr_number":87234,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":59344,"pr_number":65239,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":62158,"pr_number":86923,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":19543,"title":"Bug: Web UI chat does not auto-refresh new messages and running status stays stuck","url":null,"state":"open"},{"kind":"issue","number":38371,"title":"[Bug]: Mobile web UI stays stuck in “generating” after Codex finishes when returning from background","url":null,"state":"closed"},{"kind":"issue","number":42662,"title":"[Bug]: Desktop todo panel shows archived in_progress items as still running after the assistant turn has completed","url":null,"state":"closed"},{"kind":"issue","number":46517,"title":"[Bug]: TUI (Desktop App) shows \"Running Code...\" indicator indefinitely after session has completed","url":null,"state":"open"},{"kind":"issue","number":50159,"title":"[Bug]: Desktop stays stuck on stale \"Thinking\" state after turn completes and transcript is persisted","url":null,"state":"closed"},{"kind":"issue","number":59344,"title":"Dashboard UI: /reset leaves chat section stale requiring refresh","url":null,"state":"closed"},{"kind":"issue","number":61820,"title":"Desktop todo list stays 0/N after work is done (stale UI)","url":null,"state":"closed"},{"kind":"pr","number":42666,"title":"fix(desktop): stop spinning animation on archived in_progress todo items","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"d62979a6f","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":42669,"title":"fix(desktop): stop archived todo rows from looking live after turn completion","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"3e21cfdebbf790e3b2a89b01084a8aa86914c9a5","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":46572,"title":"fix(desktop): settle idle turns missing assistant payload","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#87234","number":87234},{"kind":"pr","value":"#74163","number":74163}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":50644,"title":"fix(tui): ignore stale idle inflight on session activate","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"5ff11a689b561fdb","number":0}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":53665,"title":"fix(desktop): settle in-progress todo spinner when turn ends","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"3e21cfdebbf790e3b2a89b01084a8aa86914c9a5","number":0},{"kind":"pr","value":"#61820","number":61820}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":59932,"title":"fix(dashboard): clear xterm terminal buffer on /reset (#59344)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#65239","number":65239},{"kind":"pr","value":"#59344","number":59344}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":65239,"title":"fix(dashboard): redraw TUI after fresh session","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["ui-tui/src/__tests__/createSlashHandler.test.ts","ui-tui/src/__tests__/useSessionLifecycle.test.ts","ui-tui/src/app/useMainApp.ts","ui-tui/src/app/useSessionLifecycle.ts"]},{"kind":"pr","number":74163,"title":"fix(desktop): settle a turn that ends with no assistant payload","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"b0f371e8f","number":0},{"kind":"pr","value":"#87234","number":87234},{"kind":"pr","value":"#86923","number":86923}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":86923,"title":"fix(desktop): arm the turn progress timer at submit instead of waiting for message.start","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/src/app/session/hooks/use-message-stream/gateway-event.ts","apps/desktop/src/app/session/hooks/use-prompt-actions/index.test.tsx","apps/desktop/src/app/session/hooks/use-prompt-actions/submit.ts"]},{"kind":"pr","number":87234,"title":"fix(desktop): settle no-payload turns via turnLive discriminator (salvage #74163)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/src/app/contrib/hooks/use-background-sync.ts","apps/desktop/src/app/session/hooks/use-message-stream/gateway-event.ts","apps/desktop/src/app/session/hooks/use-message-stream/index.ts","apps/desktop/src/app/session/hooks/use-message-stream/session-info-side-effects.test.tsx","apps/desktop/src/app/session/hooks/use-prompt-actions/index.ts","apps/desktop/src/app/session/hooks/use-session-actions.test.tsx","apps/desktop/src/app/session/hooks/use-session-actions/index.ts","apps/desktop/src/app/types.ts","apps/desktop/src/lib/chat-runtime.ts"]}],"trust":{"default_tier":"verified","includes_suggested":false}}