feat(ux): robust sync ETA, persist Explorer settings, gate export-all out of lite
- Sync ETA: a new pure util::SyncRateEstimator (App-owned) replaces the function-local statics that went stale after a rescan/restart (producing the "412h" ETA). It self-resets on a height drop and on connect/disconnect/rescan/ restart (via an atomic flag, since onConnected can run off-thread), formats with days, and uses the Warning() token. - Settings: the Explorer-tab URL fields + custom-fees/fetch-prices checkboxes now persist on edit — they were the only controls still relying on the About-only Save button that a user on this tab never sees. - Export-all-keys: hidden in the lite build (which has its own key export), instead of dead-ending on "Not connected to the daemon". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -741,6 +741,7 @@ void App::tryConnect()
|
||||
void App::onConnected()
|
||||
{
|
||||
maint_abort_.store(false); // maintenance calls queued before this connect have already failed (FIFO)
|
||||
sync_eta_reset_pending_.store(true, std::memory_order_relaxed); // fresh connect → recompute sync ETA
|
||||
++rpc_session_;
|
||||
if (consolidation_.abort()) ui::Notifications::instance().warning(TR("merge_run_aborted_toast"));
|
||||
state_.connected = true;
|
||||
@@ -854,6 +855,7 @@ void App::onConnected()
|
||||
|
||||
void App::onDisconnected(const std::string& reason)
|
||||
{
|
||||
sync_eta_reset_pending_.store(true, std::memory_order_relaxed);
|
||||
// Persist what the history snapshot is still missing while the rows, the address set (the cache identity),
|
||||
// the pending-send filter and the cache key are all live: state_.clear(), pending_opids_.clear() and the
|
||||
// session reset below empty them, which would turn a later flush into a silent no-op.
|
||||
|
||||
Reference in New Issue
Block a user