The daemon-output parser treats autonomous background witness rebuilds as a rescan (they set state_.sync.rescanning via the foundWitness branch), so one completing fired "Blockchain rescan complete" even though the user never started a rescan — most visibly after a minimize, where a whole rebuild's start+finish arrives in one batch. Add user_initiated_rescan_ (atomic — some triggers run on worker threads), set it at the wallet's real rescan triggers (the Rescan button, a -rescan/salvage/zap/reindex restart, key import, seed migration), and gate the three "rescan complete" toasts on it, clearing it when shown. The rescan/witness progress state machine is untouched — only the toast is gated — so background rebuilds no longer announce a completed rescan while genuine user rescans still do (and can't double-toast). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
337 KiB
337 KiB