Emit scholar_progress SSE events during two-pass ingestion so the
Activity Monitor shows "X / N visited · Y finished · Z new publications"
in real time instead of static post-run counts.
- scholar_processing: add on_progress callback to _run_first_pass and
_run_depth_pass; build _emit closure in run_scholar_iteration that
publishes visited/finished/total via run_events; batch-emit scholars
finished in first pass before depth pass; skip emission on abort/cancel
- run_status store: add scholarProgress state, reset on stream open and
reset(); subscribe to scholar_progress SSE events with safe parsing
- DashboardPage: show live counter during run, fall back to static text
when run is not active or no progress received yet
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>