SIGN IN SIGN UP

✨ feat(pipeline-status): probe + throttled refresh for prompt scan/upload feedback

Backend:
- /health derives pipeline_active = busy || scanning || destructive_busy || pending_enqueues > 0
- Also exposes pipeline_scanning / pipeline_destructive_busy / pipeline_pending_enqueues
- Closes the gap where the scan classification phase set only `scanning` and
  the pipeline-busy button stayed grey for 5~10s

Frontend:
- Add activity probe: exponential-backoff /health bursts at t=0/1/2/4/8/16s
  fired by scan_started and the first successful upload in a batch. Exits as
  soon as both pipelineActive=true AND the document list has caught up.
- Add refreshDocumentsThrottled(): wall-clock 2s minimum between any two
  /documents/paginated requests, with trailing-call coalescing.
- Scan/upload no longer rely on resetHealthCheckTimerDelayed + adhoc fast
  polling windows — probe + active polling cover both paths.
- Polling stays at 5s while pipelineActive=true even if doc list hasn't
  surfaced new rows yet, so the 30s idle gap right after scan disappears.
- Stale trailing refresh is dropped via latestRefreshRequestVersionRef check
  so 2s-window page/filter/sort changes can't be overwritten by a captured
  old query.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Y
yangdx committed
de72efc66353f511ec8cb5b4128eda563ab4a852
Parent: ab892c8