Roo-Code/webview-ui
Hannes Rudolph f27014377a refactor(ChatView): consolidate button state into useReducer
Replace 5 independent useState calls (clineAsk, enableButtons,
sendingDisabled, primaryButtonText, secondaryButtonText) with a single
useReducer to eliminate partial-update race windows.

The race condition: when an api_req_started message clears state via 5
separate setState calls, React can render between updates, leaving
clineAsk as undefined while button text still shows 'Start New Task'.
Clicks during this window are silently swallowed.

With useReducer, all 5 fields update atomically in a single dispatch,
making the race structurally impossible.

Also preserves the fix for stale isStreaming on secondary button clicks:
api_req_failed/mistake_limit_reached/resume_task cases are checked
before the isStreaming guard in handleSecondaryButtonClick.

4 action types:
- SET_ASK_STATE: atomic update of all 5 fields
- SET_SENDING_DISABLED: partial update for retry delay/condensing
- SET_BUTTON_TEXT: partial update for subtask resume
- RESET_WITHOUT_BUTTON_TEXT: resets without clearing button text

Tests: 26/26 pass, tsc clean, lint clean
2026-02-12 19:02:04 -07:00
..
audio feat: move play audio to webview to ensure cross-platform (#3659) 2025-05-20 01:15:05 -04:00
public Remove CRA cruft 2025-01-30 14:38:41 -08:00
src refactor(ChatView): consolidate button state into useReducer 2026-02-12 19:02:04 -07:00
.gitignore PR cleanup 2025-03-12 11:23:06 -04:00
components.json Remove lucide 2025-01-30 14:47:59 -08:00
eslint.config.mjs Preserve model settings when selecting a specific OpenRouter provider (#3915) 2025-05-23 23:22:41 -07:00
index.html Fix linter warning + run prettier on everything (#3581) 2025-05-13 15:16:24 -07:00
package.json Add React Compiler integration to webview-ui (#9565) 2026-01-29 01:32:27 -05:00
tsconfig.json Move @roo-code/cloud to the Roo-Code repo (#7503) 2025-08-28 11:18:45 -07:00
turbo.json Improve turbo task dependency declarations (#4323) 2025-06-04 09:32:27 -07:00
vite.config.ts refactor: remove browser use functionality entirely (#11392) 2026-02-11 18:11:21 -07:00
vitest.config.ts Show console logging in vitests when the --no-silent flag is set (#7467) 2025-08-28 12:51:21 -04:00
vitest.setup.ts Show console logging in vitests when the --no-silent flag is set (#7467) 2025-08-28 12:51:21 -04:00