Конкурентные 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 |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .eslintrc.json | ||
| Dockerfile | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| sentry.client.config.ts | ||
| sentry.edge.config.ts | ||
| sentry.server.config.ts | ||
| tsconfig.json | ||
| vitest-env.d.ts | ||
| vitest.config.ts | ||
| vitest.setup.ts | ||