{"repo":"NousResearch/hermes-agent","public_id":"97810","display_label":"Tasks panel list replacement bug and fix","summary":"A bug where the desktop Tasks panel replaces its list instead of merging on todo writes, along with a fix to patch todo updates incrementally and maintain panel state across merges, reconnects, and hidden tool progress.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":98248,"merged_at":"2026-08-30T01:40:52+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-08-30T01:40:52+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":97810,"pr_number":98248,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-30T01:40:52+00:00"}],"members":[{"kind":"issue","number":97810,"title":"[Bug]: desktop Tasks panel replaces the list on merge:true todo writes","url":null,"state":"closed"},{"kind":"pr","number":97811,"title":"fix(desktop): merge todo patches instead of replacing the Tasks list","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"c0875ba503","number":0},{"kind":"pr","value":"#98248","number":98248}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":98248,"title":"fix(todo): Tasks panel stays live across merges, reconnects, and hidden tool progress (salvage #97815, #97811)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/src/app/chat/composer/status-stack/collapsed-indicator.test.tsx","apps/desktop/src/app/session/hooks/use-message-stream/gateway-event/tools.ts","apps/desktop/src/app/session/hooks/use-message-stream/index.ts","apps/desktop/src/app/session/hooks/use-message-stream/todo-cleanup.test.tsx","apps/desktop/src/app/session/hooks/use-session-actions/index.ts","apps/desktop/src/components/chat/status-section.tsx","apps/desktop/src/lib/chat-messages/types.ts","apps/desktop/src/lib/todos.test.ts","apps/desktop/src/lib/todos.ts","apps/desktop/src/store/todos.test.ts","apps/desktop/src/store/todos.ts","apps/desktop/src/types/hermes.ts","apps/shared/src/json-rpc-gateway.ts","run_agent.py","tests/run_agent/test_run_agent.py","tests/tools/test_todo_tool.py","tests/tui_gateway/test_todo_state_events.py","tools/todo_tool.py","tui_gateway/methods_session.py","tui_gateway/server.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}