feat(mining): persistent start/stop error caption + timeout-aware pool status
- A mining start/stop/pool failure now sets a persistent App::mining_last_error_ (cleared on the next attempt), rendered as a red caption with "Press Mine to try again" below the Mine button (plus a Dismiss, and a Windows-Defender "How to fix" on an AV block), so a crashed/blocked/failed miner is no longer just a button that "did nothing" once its toast faded. Two more hardcoded English strings (pool-payout-invalid, AV-blocked) moved to i18n. - Pool connection status is now a persistent "Status" row in the pool stats card (PoolMiningState.running_since / last_error): it flips from "Connecting…" to "Can't reach pool — check the URL" after a 30s timeout instead of sitting on red forever, and no longer vanishes once logs arrive. The old transient banner in mining_tab.cpp was removed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -389,6 +389,11 @@ public:
|
||||
void startMining(int threads);
|
||||
void stopMining();
|
||||
bool isMiningToggleInProgress() const { return mining_toggle_in_progress_.load(std::memory_order_relaxed); }
|
||||
// Persistent mining error (last start/stop/pool failure) so a failed miner isn't just a fading toast.
|
||||
const std::string& miningLastError() const { return mining_last_error_; }
|
||||
bool miningErrorIsAntivirus() const { return mining_error_av_; }
|
||||
void clearMiningError() { mining_last_error_.clear(); mining_error_av_ = false; }
|
||||
void showAntivirusHelp() { pending_antivirus_dialog_ = true; } // Windows-only dialog; inert elsewhere
|
||||
|
||||
// Pool mining (xmrig)
|
||||
void startPoolMining(int threads);
|
||||
@@ -1745,6 +1750,10 @@ private:
|
||||
|
||||
// Mining toggle guard (prevents concurrent setgenerate calls)
|
||||
std::atomic<bool> mining_toggle_in_progress_{false};
|
||||
// Mining error state (main-thread only — every writer is in a MainCb or render).
|
||||
std::string mining_last_error_;
|
||||
bool mining_error_av_ = false;
|
||||
void setMiningError(std::string msg, bool av = false) { mining_last_error_ = std::move(msg); mining_error_av_ = av; }
|
||||
|
||||
// True from a successful startPoolMining() until the miner is confirmed connected/hashing in the
|
||||
// poll — drives the "connecting…" → "connected" feedback for pool mining (which has a connect delay).
|
||||
|
||||
Reference in New Issue
Block a user