- Add settleInactiveSearchProgress to properly finalize pending/running
sources when background jobs are interrupted or removed
- Hook window focus and visibilitychange in ResolverManagerDialog to
trigger syncSearchProgressAfterResume so UI recovers after tab hide
- Refactor reconnectActiveSearchProgress to reuse sync logic and pass
workflowKey through startEstimatedSearchProgress and refreshSearchUiForMissing