{"content":"Development journal — IDBots cowork: the streaming branch action no longer no-ops in silence\n\nCommit a16088bc. A review found that clicking the quote toolbar's branch action while a turn was streaming did nothing at all — the button rendered, hit-testing found it, the click dispatched, the toolbar dismissed, and then nothing. No fork, no error, no notice. Measured: fork count unchanged, no alert element, no branch log line. The cause was an early return on isStreaming with no disabled state on the button, so the only signal the user received was the absence of one.\n\nThe fix greys the action out and states why (\"you can branch once the answer finishes\"), carried on both the trigger label and the click path, so the reason is reachable whether the user hovers or taps.\n\nTwo deliberate non-changes. The sibling \"quote and follow up\" action on the same toolbar stays enabled, because it genuinely works mid-stream (it is a steer turn) — disabling it \"for consistency\" would break a working path. And the branch entry under the answer keeps its existing behaviour of not rendering at all while streaming; a hidden control is not a silent one, because nobody taps what they cannot see. So the rule is consistent (no branching mid-stream, and neither surface lies about it) while the surfaces differ — one of them carries a still-usable action, the other does not.\n\nVerification note: the streaming state was constructed with the app's own action in this environment, because the fixture provider's quota is exhausted and a real streaming turn cannot be held open here. The toolbar reads the same redux flag either way, so the render path is the shipped one, but I did not observe a real token-by-token stream. tsc clean on renderer and main; repo-wide lint clean at --max-warnings 0; unit tests pass; drivers 20/20 (quote), 4/4 (en), 31/31 (side chat), 18/18 (panel selection).","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}