feat(mining): thread-count stepper, adaptive tiles, dropdown click-through fix, xmrig version state

Mining-tab UI improvements:
- Thread selector: a centered [-] N [+] stepper (top-aligned in the header) to pick an exact
  thread count — number centered, -/+ step by one (clamped to [1, cores]), still typeable
  (commits on Enter so it doesn't restart the miner mid-typing).
- Thread tiles now render at an adaptive step (1/2/4/8 by core count) plus 1 and the max, so a
  high-core CPU (e.g. a 192-thread EPYC) shows ~25 tiles instead of one-per-thread and no longer
  overflows the card. Unchanged for <=24-core machines.
- Fix: clicking the X (or a row) in an open saved-pools / payout-address dropdown no longer bleeds
  through to the thread tiles / Mine button — the custom drawlist hit-tests now gate on
  IsPopupOpen(AnyPopup).
- xmrig update button: shows "xmrig releases" when installed >= latest (numeric version compare),
  else "Update <latest>"; the "Current: <ver>" text and the button are subtle green when up to date
  and subtle orange when an update is available (neutral when either version is unknown).

New i18n keys back-filled across all 8 languages; CJK subset font rebuilt for the new glyphs.
Verified across full-node, lite, and Windows builds; the stepper layout confirmed via the UI sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-18 15:39:43 -05:00
parent 06afbee4f8
commit 0de44569b7
11 changed files with 165 additions and 15 deletions

View File

@@ -1296,6 +1296,9 @@ void I18n::loadBuiltinEnglish()
strings_["start_mining"] = "Start Mining";
strings_["stop_mining"] = "Stop Mining";
strings_["mining_threads"] = "Mining Threads";
strings_["mining_threads_input_tooltip"] = "Type an exact thread count (press Enter to apply)";
strings_["mining_threads_minus_tooltip"] = "Fewer threads";
strings_["mining_threads_plus_tooltip"] = "More threads";
strings_["mining_statistics"] = "Mining Statistics";
strings_["local_hashrate"] = "Local Hashrate";
strings_["network_hashrate"] = "Network Hashrate";
@@ -1933,6 +1936,7 @@ void I18n::loadBuiltinEnglish()
// --- Miner (xmrig) updater ---
strings_["xmrig_update_button"] = "Update miner…";
strings_["xmrig_update_short"] = "Update";
strings_["xmrig_releases"] = "xmrig releases";
strings_["xmrig_current"] = "Current:";
strings_["xmrig_none"] = "none";
strings_["xmrig_update_title"] = "Update Miner";