Summary
During headers pre-sync, the pre-sync height and the accepted-header height can describe different phases of initial sync. The GUI previously allowed both HEADER_PRESYNC and normal header/block sync updates to repaint the same status and modal overlay labels.
As a result, an active Pre-syncing Headers (...) display could be replaced by a lower Syncing Headers (...) accepted-header progress value while headers pre-sync was still active. The modal overlay could also continue showing normal block verification progress during headers pre-sync.
This PR keeps the headers pre-sync display active until accepted headers catch up, then restores normal header/block sync display behavior. It also labels modal progress as headers pre-sync progress during that phase instead of showing stale block verification progress.
This is a GUI display-only change. It does not change header validation, block validation, peer behavior, block download, or sync state.
Testing
cmake -B build-qt -DCMAKE_BUILD_TYPE=Debug -DBUILD_GUI=ON -DBUILD_TESTS=ON -DBUILD_GUI_TESTS=ON -DBUILD_BENCH=OFF -DBUILD_FUZZ_BINARY=OFFcmake --build build-qt --target test_bitcoin-qt -j"$(sysctl -n hw.ncpu)"ulimit -n 10240 && ctest --test-dir build-qt -R test_bitcoin-qt --output-on-failure
The new regression coverage is ModalOverlayTests::headersPresyncProgressStaysVisible.