diff --git a/src/app.cpp b/src/app.cpp index 098a427..c0b8ba0 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -2637,7 +2637,9 @@ void App::renderNodeStatusBanner() // wallet switch, an in-flight daemon restart, the screenshot sweep (forces demo state), and // shutdown. tryConnect() sets connection_in_progress_ before the first render on normal // startup, so the ordinary boot path is covered by the evaluator's own in-progress guard. - if (capture_mode_ || isShuttingDown()) return; + // Suppressed during a UI sweep (its forced demo state would otherwise paint a banner over every + // tab) — except on the one sweep target that exists to capture the banner itself. + if ((capture_mode_ && !sweep_show_node_banner_) || isShuttingDown()) return; if (getWizardPhase() != WizardPhase::None) return; if (wallet_switch_phase_.load() != 0) return; if (daemon_restarting_.load()) return; diff --git a/src/app.h b/src/app.h index aaba7ff..5f7130d 100644 --- a/src/app.h +++ b/src/app.h @@ -1676,6 +1676,7 @@ private: // The full sweep's private temp dir (demo wallet files and folders); "" when none. std::string sweep_sandbox_; bool sweep_chat_identity_fabricated_ = false; // seedChatDemoData() made the demo chat identity + bool sweep_show_node_banner_ = false; // let the node-status banner render on its sweep target void applyHealthyDemoState(); // reset the connection/encryption flags to the healthy demo values void sweepEnsureDemoChatIdentity(); // re-fabricate a demo chat identity if none (sweep teardown) void writeSweepManifest() const; diff --git a/src/app_sweep.cpp b/src/app_sweep.cpp index a0a9b8b..c518321 100644 --- a/src/app_sweep.cpp +++ b/src/app_sweep.cpp @@ -754,8 +754,10 @@ void App::buildSweepCatalog() a.state_.sync.syncing = false; a.state_.sync.blocks = 3124322; a.state_.sync.headers = 3124322; a.connection_status_ = "Connected"; + a.connection_in_progress_ = false; // else the evaluator treats it as "connecting", not no-peers + a.sweep_show_node_banner_ = true; // allow the banner (suppressed on every other target) }, - resetDemoSync); + [resetDemoSync](App& a) { a.sweep_show_node_banner_ = false; resetDemoSync(a); }); // Chat with no derived identity yet — the states that previously ALL said "unlock your wallet" (P3). // Setup clears the fabricated demo identity (clearIdentity wipes only the key; the demo messages stay