* fix(web): stop Nexus AI agent when user clicks Stop
Wire AbortController through chat streaming so Stop cancels the LangGraph
run instead of only hiding the loading UI. Fixes#1615.
* fix(web): address PR review feedback for Nexus AI stop
Guard stream cleanup against Stop-then-Send races, remove dead cancelled
handler, tighten abort error detection, add stopped tool-call status, and
extend abort unit tests. Fixes#1615.
* chore(autofix): apply prettier + eslint fixes via /autofix command
* fix(web): address review findings for Nexus AI stop/cancel
- Fix race conditions in useAppState.tsx abort lifecycle:
- Replace stale isChatLoading closure guard with chatStateRef
- Track and cancel rAF handles in stopChatResponse/finally
- Move cancelled chunk check before onChunk dispatch
- Simplify finally block to unconditional cleanup via chatStateRef
- Guard tool_result from overwriting stopped status
- Have clearChat abort in-flight streams before clearing
- Reorder isAbortError to check error identity before signal.aborted
- Refactor AgentStreamChunk to discriminated union for exhaustive switch
- Fix test assertions to use exact .toEqual() per DoD §2.7
- Add test for plain Error with name AbortError
- Remove dead markStopped alias, simplify signal spread-conditional
---------
Co-authored-by: Gergő Magyar <gergomagyar@icloud.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Test <test@example.com>