Конкурентные analyze делили один cancelledRef: новая мутация ставила ref=false и воскрешала спящий poll-цикл предыдущей — лишние fetch-status/ POST analyze и setFetchingState(null) затирали баннер активного запроса. Patch: shared boolean ref → per-call AbortController, signal проброшен в apiFetch/apiFetchWithStatus, добавлен abortableSleep чтобы цикл просыпался мгновенно на cancel. setFetchingState(null) guarded signal.aborted — зомби-цикл не может перезаписать состояние актуальной мутации. 82/82 frontend тестов зелёные. Closes #1242 |
||
|---|---|---|
| .. | ||
| app | ||
| components | ||
| hooks | ||
| lib | ||
| types | ||
| instrumentation.ts | ||