Problem
In the Live Block tool display, some tools occasionally remain showing the "running" status (◇) even after they've completed, while other tools on the same screen correctly show the "completed" checkmark (✓).
Screenshot Evidence
In the screenshot:
✓ task @git-agent — correctly marked done
✓ bash remory search ... — correctly marked done
✓ read ratcher/README.md — correctly marked done
✓ read ratcher/AGENTS.md — correctly marked done
◇ read ratcher/CONTRIBUTING.md — STILL SHOWS RUNNING (bug)
✓ bash remory add ... — correctly marked done (tools after it completed fine)
Expected
All completed tools should show ✓ checkmark.
Actual
Occasional tools get "stuck" showing ◇ running status even though they completed.
Likely Causes
- Race condition in
liveblock.ts — tool_end event arrives but the render doesn't update that specific tool
- ID mismatch — the tool_end callID doesn't match the tool_start callID in the idMap
- Dedup logic interference — the deduplication logic (
lastToolKey) might be causing some tool_end events to update the wrong tool
- log-update timing — the rewrite might be happening before the state is fully updated
Key Files
packages/opencode/src/cli/lite/liveblock.ts — toolStart(), toolEnd(), render()
packages/opencode/src/cli/lite/index.ts — tool event handling with idMap and dedup
Acceptance Criteria
Problem
In the Live Block tool display, some tools occasionally remain showing the "running" status (◇) even after they've completed, while other tools on the same screen correctly show the "completed" checkmark (✓).
Screenshot Evidence
In the screenshot:
✓ task @git-agent— correctly marked done✓ bash remory search ...— correctly marked done✓ read ratcher/README.md— correctly marked done✓ read ratcher/AGENTS.md— correctly marked done◇ read ratcher/CONTRIBUTING.md— STILL SHOWS RUNNING (bug)✓ bash remory add ...— correctly marked done (tools after it completed fine)Expected
All completed tools should show
✓checkmark.Actual
Occasional tools get "stuck" showing
◇running status even though they completed.Likely Causes
liveblock.ts— tool_end event arrives but the render doesn't update that specific toollastToolKey) might be causing some tool_end events to update the wrong toolKey Files
packages/opencode/src/cli/lite/liveblock.ts—toolStart(),toolEnd(),render()packages/opencode/src/cli/lite/index.ts— tool event handling with idMap and dedupAcceptance Criteria