Description
The direct user shell path in packages/opencode/src/session/prompt.ts awaits sessions.updatePart for every decoded process-output chunk. Chatty commands therefore couple OS-pipe consumption to SQLite projection and event broadcast work, producing many cumulative durable updates.
Expected: consume process output continuously, publish cumulative running snapshots at a bounded cadence, and persist one authoritative final snapshot without late updates.
A 20-write paced command currently permits up to 20 running updates. A 100 ms publisher reduces this to 4 updates while preserving byte-for-byte final output.
Plugins
None
OpenCode version
dev at f557328
Steps to reproduce
- Run a direct shell command that emits many paced chunks, for example
i=0; while [ $i -lt 20 ]; do printf '%02d\n' $i; i=$((i + 1)); sleep 0.02; done.
- Observe
MessageV2.Event.PartUpdated events for the running tool part.
- Each decoded output chunk triggers another cumulative durable running-part update.
Screenshot and/or share link
No response
Operating System
macOS 26.5.1
Terminal
Ghostty
Description
The direct user shell path in
packages/opencode/src/session/prompt.tsawaitssessions.updatePartfor every decoded process-output chunk. Chatty commands therefore couple OS-pipe consumption to SQLite projection and event broadcast work, producing many cumulative durable updates.Expected: consume process output continuously, publish cumulative running snapshots at a bounded cadence, and persist one authoritative final snapshot without late updates.
A 20-write paced command currently permits up to 20 running updates. A 100 ms publisher reduces this to 4 updates while preserving byte-for-byte final output.
Plugins
None
OpenCode version
dev at f557328
Steps to reproduce
i=0; while [ $i -lt 20 ]; do printf '%02d\n' $i; i=$((i + 1)); sleep 0.02; done.MessageV2.Event.PartUpdatedevents for the running tool part.Screenshot and/or share link
No response
Operating System
macOS 26.5.1
Terminal
Ghostty