From cc617dd5be35c055c05dab75f2a382d2787d6015 Mon Sep 17 00:00:00 2001 From: dan_s Date: Sat, 7 Mar 2026 13:42:31 -0600 Subject: [PATCH] Add mine-when-idle, default banlist, and console parsing improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mine-when-idle: - Auto-start/stop mining based on system idle time detection - Platform::getSystemIdleSeconds() via XScreenSaver (Linux) / GetLastInputInfo (Win) - Settings: mine_when_idle toggle + configurable delay (30s–10m) - Settings page UI with checkbox and delay combo Console tab: - Shell-like argument parsing with quote and JSON bracket support - Pass JSON objects/arrays directly as RPC params - Fix selection indices when lines are evicted from buffer Connection & status bar: - Reduce RPC connect timeout to 1s for localhost fast-fail - Fast retry timer on daemon startup and external daemon detection - Show pool mining hashrate in status bar; sidebar badge reflects pool state UI polish: - Add logo to About card in settings; expose logo dimensions on App - Header title offset-y support; adjust content-area margins - Fix banned peers row cursor position (rawRowPosB.x) Branding: - Update copyright to "DragonX Developers" in RC and About section - Replace logo/icon assets with updated versions Misc: - setup.sh: checkout dragonx branch before pulling - Remove stale prebuilt-binaries/xmrig/.gitkeep --- CMakeLists.txt | 5 ++ prebuilt-binaries/xmrig/.gitkeep | 0 res/ObsidianDragon.rc | 4 +- res/default_banlist.txt | 13 +++ res/img/ObsidianDragon.ico | Bin 4650 -> 205974 bytes res/img/logos/logo_ObsidianDragon.png | Bin 1687 -> 14989 bytes res/img/logos/logo_ObsidianDragon_dark.png | Bin 3456 -> 15173 bytes res/img/logos/logo_ObsidianDragon_light.png | Bin 3754 -> 14989 bytes res/themes/ui.toml | 12 ++- setup.sh | 4 +- src/app.cpp | 20 +++-- src/app.h | 10 +++ src/app_network.cpp | 62 ++++++++++++++ src/app_security.cpp | 61 +++++++++++++ src/config/settings.cpp | 4 + src/config/settings.h | 8 ++ src/rpc/rpc_client.cpp | 2 +- src/ui/pages/settings_page.cpp | 78 +++++++++++++++-- src/ui/windows/console_tab.cpp | 89 ++++++++++++++----- src/ui/windows/peers_tab.cpp | 2 +- src/util/platform.cpp | 90 ++++++++++++++++++++ src/util/platform.h | 8 ++ 22 files changed, 431 insertions(+), 41 deletions(-) delete mode 100644 prebuilt-binaries/xmrig/.gitkeep create mode 100644 res/default_banlist.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index c8af3a5..9f76ac2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -503,6 +503,11 @@ embed_resource( ${CMAKE_BINARY_DIR}/generated/ui_toml_embedded.h ui_toml ) +embed_resource( + ${CMAKE_SOURCE_DIR}/res/default_banlist.txt + ${CMAKE_BINARY_DIR}/generated/default_banlist_embedded.h + default_banlist +) # Note: xmrig is embedded via build.sh (embedded_data.h) for Windows builds, # following the same pattern as daemon embedding. diff --git a/prebuilt-binaries/xmrig/.gitkeep b/prebuilt-binaries/xmrig/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/res/ObsidianDragon.rc b/res/ObsidianDragon.rc index 4d3a586..8f02ffa 100644 --- a/res/ObsidianDragon.rc +++ b/res/ObsidianDragon.rc @@ -31,11 +31,11 @@ BEGIN BEGIN BLOCK "040904B0" // US-English, Unicode BEGIN - VALUE "CompanyName", "The Hush Developers\0" + VALUE "CompanyName", "DragonX Developers\0" VALUE "FileDescription", "ObsidianDragon Wallet\0" VALUE "FileVersion", "@DRAGONX_VERSION@\0" VALUE "InternalName", "ObsidianDragon\0" - VALUE "LegalCopyright", "Copyright 2024-2026 The Hush Developers. GPLv3.\0" + VALUE "LegalCopyright", "Copyright 2024-2026 DragonX Developers. GPLv3.\0" VALUE "OriginalFilename", "ObsidianDragon.exe\0" VALUE "ProductName", "ObsidianDragon\0" VALUE "ProductVersion", "@DRAGONX_VERSION@\0" diff --git a/res/default_banlist.txt b/res/default_banlist.txt new file mode 100644 index 0000000..968f281 --- /dev/null +++ b/res/default_banlist.txt @@ -0,0 +1,13 @@ +# Default Ban List — DragonX Wallet +# IPs listed here are banned automatically when the wallet connects. +# One IP or subnet per line. Comments start with #. Blank lines are ignored. +# +# Examples: +# 192.168.1.100 +# 10.0.0.0/8 +# 203.0.113.42 +# +# Rebuild the wallet after editing this file. + +185.159.129.12 +185.228.233.222 \ No newline at end of file diff --git a/res/img/ObsidianDragon.ico b/res/img/ObsidianDragon.ico index 13a0f9c8e8ed9940518a1bbfeb47eff90e008523..19c2051524feaff7ac37f250341acde101c74a7c 100644 GIT binary patch literal 205974 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 z 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 delta 4466 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 Kvuaa((*FRn2JoZ+ diff --git a/res/img/logos/logo_ObsidianDragon.png b/res/img/logos/logo_ObsidianDragon.png index 993523145b1eed6aeff1423773a1202516ff08b5..8e3e9e99d7f1636aa4bb85ff2e5648dde23e76c0 100644 GIT binary patch literal 14989 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 EA6IE=q5uE@ literal 3456 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 diff --git a/res/img/logos/logo_ObsidianDragon_light.png b/res/img/logos/logo_ObsidianDragon_light.png index 0bb0be0275cee28191707c8fd4bc9c56fe81088f..8e3e9e99d7f1636aa4bb85ff2e5648dde23e76c0 100644 GIT binary patch literal 14989 zcmW+-cRW@7A3yiH_TC=Z2_Y*L3YYA%%HD*m?3H=ROm+y_D@n=-*(6CKk|epZ$qL#0 zK7N0Ayk0%H=bZ0nyw{1<(Nd)(V8i=@xv)oqmxJ!GF8ttoz^_sk@r77lM$} zoqnN)CPEJ3AJ2Fz8+qS$v-kG1_OwH;+qrn%_u{(k?PKfc#--=x=F(9%6@(yMh`N%3 zp8wO8U_XC`+13-kkE<^It|^*p>~u1`SWL+c;;L{-LR~x?BjGi}#wF>tgQs2tvKGo1 z+GJ0iV&=sQk9Fu|H0TvcP`A{y-;8GF>>a&s?z5F>BBjB6-Z;3n`Nt)DEN5WebaL&0 z>b(csp~y*VxNH%o9pPd@Y@0`&Q0;rRA)jl626#~Jh?;nIe{WyxcXwn1|G5l&DN?P7(4W65g zjtI%kB>zTt-+%;1fQ=Y)S@r+@F80mlT>qJ%qy23TM@L8bfn3>xgQ>1)P6Q|DAnUG% zkh~gSIZsJRsSwa&L3ifNa=S;fUdb(e0vsdqJ#c$j8SgMTsZOx+|(Oa6ZTHoA00R8@&G5`(M41k$hh%wtLRb&h%bhUeksz z&BmHaOZkL_gqAzo!wBLeE?%rS|Iky1!On)IG{Md|iiY3Ds2fC3ibQKCg+fuje*M~S z#%}{Prk<-6r5T zLrlGJE31@VNKlZDlIZ%({`T@P6`NF&zM0w2FSDM#;uHiFT~NR)Me|Y#UJS~Oon2jP zTZ_YYhkH0fo8^RsUyvOW3L^&Q<~dtmR5{}xB_vSA$H)7eOJ6)&KHN4(Dr4>s_~fWOA%c zD&O#(KfmbY?d`2^Vqy}hQdC|h@bUQq&*u$wQJ8A-yT*y3&P>C0-U5 z7FN;(vGs5Z3;+3db*;I^W~f-*8GiS_pTuTp#MZ~>(z#?c?~#!aTE5itpBBA|a^yqh z{zA{NyZ&rQHn@E|wcUdaHOOK+<%QbKH>kK^Y;4>kckrjCpOlo;5W!3M3*#@I@3%t< z){jpV<>zzV+xXpmN8`qgCUJ@)41$-UGD;_`AE$J!Kf@AbEuG-?fM3gfO6v2o5vMyD zBIY5`P@he5v@(d1D5k^G^}YVtB-5$4*auYQRyJ&Sg9Csnl4sPHPFtH@hQ?M z5p;5J(2>shO!J_F#@Nu1*+wE0?d;^FcXuE+zQto&#mvsmuC~J}#)?HH>i*2JGR>~v zR3L&#B|Oj*v?CxOa1%9pWidcN9L%`D&W^Nk>fVmI^o*=knwtzdDFKZ zcowgO<6aAsQ*?2m{dXo@ufWX+rag>{i4k~u?f&0t7;9^UxK8`e%0rSl$KA}9&40V7 z<(o~QVLlS)Xrs&ZKKiWvI$F$mocQcyr3rqyTJps?4L?6payf^c7o z4HDd&QGSa`H1P}*PW8*OoxXK5g z^W^2<+1C*M4V$OO*%{{xkbQN!q{f@_c6Fj@ZErL0q}fC;Efd(>5 zzki8_B-y!2kE9X^)Kh2}7;Gi7`+Z;{OEgWqEOj)2*fuuNV7Br_rmanRkl35lUd-b0`f36`7sNZs_?u}-Su#e8P*!HGu z%+AiP1UbqFJnpsC(bp$5s2CwnS9|x1XT6(4I)NaZ3pXtVmx6oAsH{8pIp=EL6G_Kg z7NalC$?56ot6(lWts4nvD;awG;>8OBD7#;*?Cim0h+x4YA(?=XP~ZM~7xko6(C)fUMqddd z9oB&qesN(tK#VoMz1k&?1eZ%7NodxP2v@~MEV-iVnlRnW%SF=3NJn>Ts7N*OA^|Z~ zGt+k|_bXCv)Y92M>DM?ZRR^Hbj@D`kmt^qc>jLnVK>-i5nerbQ`{ zc~eFSrgOg!2;xb@)WX8bq`FTOT-S|Kdz{oce1)-O zNbeQ5U!M-=vfWgm7d#t=7mHb{7Bz3ar%vHZ!VeAVh?TPTbH%5B1iC#G<*1lj%cCc9^m0A7+pQdE*}5oM1@)zvPs z7heK9*YbnedK_T_eqHpQwYIj_=jP_#78e)ynVOoSgflPI5uo5zXSJ2cOyeRslQ1pW zSIySrA=TsYc)~S9I!8;fY*>2y%{^0QT3TIHE>Fg?HP$Ki+DEITudem=vfc}WNy>3d znw8I=YfNQ_X7tSx=FO8WUA%bFYchCeLKaF#niA>8Tl;_fm?oqewAp{<4%F1uJ1i=@ zJUE)5SS2)593chK17Ou) zYI0|GQ$2;j2Zd3;;NgBSZ?>;%015tSlvIaahODE4*W^Qm?rb3Xs{J7+B zE)rE0mG|ZKa6EV@;lyR{x6b(g!b6ImlVRvn%emynRq@V83Sow-E$V=4MBv7rn?>|7qFH54^D z&E{Tb{94%_9)+tHj1>{7rc*?(i%M4CTu7dlf?aAW@m~_}*n;+E$86rb0txPOqFfh0 z!CNgDbLuHn8GXucCtQ*aqyapw_Hb3Dz<$uTELOyYP$gn9)f@FXu}e=!jl zK~8V=iy>{Yg_Z`AcXNkr@^M^WL%gX%u=7GJ7>5@}itAs95U$i-Y^A{!k4r&Z$t1&9 zYZE#4dQ?WQ`)kReczAdOhlhq2{@MSd(W6sJVXq;r^;5zP@Jw zn4E-!1h&lBLSkHUdj=t%xLdJ4CO7WU6?Z^-s<4xq%HcyY9JA&G9@?m<)WS973usX1 z@_psk0Dg>Tzv}zQvcY}os=mJdy&ziLq_AR2F*A#J`w=bfBp6u_Pb6{;nmtsDKxK%o z%scZc>jLJ$FevXy9xPnq748e~oBc~v0_|`Eu{>Y6?pIn`nwt#>aNp1}*oRqJ*AE|3 zWmlo*OpC1v+*v&_YWCmwG+yuK$3%y#I)YzU;@MD{ZpFIA-oP@oyVetE4#yJ(upX(? z)`*s_DE80O!-9uf!~uI#vClpEATOsmY*jzrVP6y0HRVt|)o(`_q$|L%FMj9!;Z_GR zr;GFWn-x-r*}36wJUAJ7`IGK*H`1GZR)01!NAe}Op~NUQOAV3M{x)}{$CAiOA`_rj zm8qkM)BJ%Y!`1bUIp&DnRVAKeoI%C5nH0y^?#mcEW56p`HDk^17;fw!`MqAPcE4|U zdj1tXEsy;I^7cm?2ou*cp^Aa6nqP7GzW%E<_~89s-w{xa9mPv!M=@NjL-N`E zL}_VhTxl8#CAY$qcpOvM^YaG`w^oG6dc;1RF>Nq=$!DM-5QEUgVgw$d!?{=+v!c0? z6EhDFkG7EY4&pQK%luO+)`(w08*tE#Mzax?EypxClLJg3+0onb|UZ>%G_nR}!oX zzk)n0#PTFVqiG(Nv7mN&@!262BV?duSY6IOqtBo($cP~(4kWl4(mFtFNph`iEAByjJDpdr53W9Yi%ygs3CQ*#XP%sVpeuh#am@wF; zC`mKNOpv`_k@@)&ILQ3ycI!9{PZu3p>=^@}gxv(wRe1}+R1 zL{EkstQ3JjH;Ul-cJo5_{7GKHXz+l=k);ou|2=0KJ^D`^612V@&{E%>eUi&UOJjAI zh5FbL87aV!u|7?2o4a?1+y;Z-R4_C`9HbW>JUIvI4k&8aiV<{_^#%0g=-t(1+=zoD zcS_q<3u17;hhnC2E(d`l0 zHt<@wuXon-`mI|-X`_~*NBAe=cSM}(eq`e_{ijFI)f!ObPgL9W?Vjpq|Nm4Pe{nS8 zud?w}>uwRZO~}-T(K+W28IwEFA3G1dV)jB12Swzy6-~aQ$rzntj4=u(1+Whq7MAa9 zulieiYvmpeJ!+;MVtzWwgg z<;iyv6a-pjHD7R~OKsD{H*GL~PuP{^G*A-tc1V1O0(CGI? zAi7JzgN=VmO6%dY)Lf$N!nH%I!O{04(!sAQmP1 zg6?nF6af<(o7s;t?YsxEv9a})20~NrQY4=@6_^kfpjGwb7wX1bB(h5F>gwuPL59&W zFkmvYwB+m)yNMub@1oMWCBo-eHQpiL93*KN8AqN;eP!Ei#W5e;w70ka{JT4j`P{j4 z>=^mf8}N`|1aq6damkbjJw6K0^EfRnauXRx_*hg(X@sFqau5vDcayzk-e?k>6f@$Pg6 zw8I2dh=J}sMl{H65iUO)JeI-<$?c6RzqyO2_Pa&?CKzaY_00BD;>RP##0bJO2$H6u zFYB}P)lRf!>sIcq@@53t=Hj3%5-qZuu|@JhFX#Yi*e{(?Iud1Trh7F5K z=gxFcez)4-(;GmE0KjrfNYEkq#`)b*l}C+4btdMoZMq+x^nLpDGha{8IoRyMxBquf zScxM_chX)v}l_?*3EL=0j*00@T zl&(y!B)P{ic~~T0s3U;o+x$taC?z%H{7UT!Ee%E?Iy%}iTgGQ;AB3RWx5~Hf`mc8v zt0Ow&EB_j@uejL*w6412>gw7CxZrZ93zp=OXnq6+a6wX15`N_(1KkZ4_x&Ynd@62- z^{VZMB+b0we`8C7gM-)cXQ>=6q2bIn>Htp-TxOwoO%ham)akVzT)rNCn_-sy3;o4| z&e4d*t8Rn6jLgh_AwOyz&s_Cha1ZD0wVaxI>tGAQN^?O$!F9NRInd5kK^CsRYs|F6 zNE}1knQ;a-2JXod7R2G2wl0hIIw==hAI)37T24krA3IovmSte8pgCIzDphclXD;8| z``afvc_q7FT!5OHs*Y!h9=qEmPO+JgcV+%0yLUo5g_nJCaZ$BYJFit1*eo-$+TInP zMT^iBk1jU>YqzZeO+EW)j&Nh9xN~%bp2tD0ZJHn)Xq13bDd>cH z_xwQ+{`G;jRIHLs@bTWfp?2=IJslmLL0bP^<2oq>v%I}8a*E>MN!^}w9(}nDvURaM zIhQ@*E_T^lMonEERcEqt>A)tB`E!HoYQxUIM%^Nn%DschljG}FR(Nq5?$8RF{5Nkd zZFlAcuew)KZ zM_k8>x_s}4qz|a*H50CW0_{h3dd>WFj@2{-oaO)-2wCIbn+`D&;SQ%$cpbGhG-Pse za)S9l7!ZlF=A-EPDV5N-70}XLT&z^4Cm0X1wMkx9mI-Czw_EWj+8)ojyRh7bQ9mzgv!jf#^%Q7kU#4Mar(|Sg)VX!* zxA}5RD0}j^A_d7>(PXvei4Put-@=<%jOq+&98c(r>)KV`G; z%8w-ASQPRwqa5nTHAydxFz+hzSbueO^|jf)jJ5_~tFN`nZl8bj{iqwY@S{lb)tfhObmvpug`q{> zU4B@&z--}feWu6b9Xze3w2X`%F^UJO%F5=yY8{71X=!Oq72H)*4YFAjhrK^mn$`!n z{cLzW3_c*Sq@*OT4aY{sQD+d-p2D#pXD1bxcNl^MY%kRvP>1ezrEp)5Vj~_X>~AYc zg7Gm0n@&{3xY~9>wCzwL#+s#2dOZ@8q{jQJHlXINym6b9`)VZ?0R!#siQCMFkwUSGhCq zHUGK$6tF!usHn7j<1#im@n* zSd(dYDIgv(Z-Qf!^TA{>ExVcdcl*?V=}K+#a!`YfxCUoIJq{(T1j@>u24N(g0Cxpf zGv=bX&k5QbFX|z|(9n=p5IB*RP$nLn{(_-kEyyr2GWKQ&8xP(4JJWj~_>U|>Vlsl{ zBIkLoT=AO$v6dfxVjJyntJLMzZ(A0kKfX8-OtJ*%%@xN6qFgPkkmU8A2hGawjoyA!0vcSsNXggkR zJFbVh+=Oqv#Eatk3y7T;T1P`e+vUsV!CG6MCmbQ^f~2ZQ25?A<(<}gW zoTI$u=9jl8oji&1XbM(Ihw0soY3A+4;d!=e@0HU`xjI1RUD;fzpG=U2TMiwR)FeBS zn_DIh1%NO^kF*y(KAaZ6p<+*7c(>0^*l>V%D979I^q26x!*)jHh5F1=@j^RW;Fk z|6&|<>);xB)zz&1_x!k5u?E6B^YqXZds|PXz2w%umJiGM4`CXD4}5>XthQeTaa=-k z*pnNT6k0px0zyo4H)kjl_St_sB(GLyGb}Bhz)(iz9tH`*DhortmfXmAdjZhwT*38di|xDnd&ivZ z!`$~kC9-~E-`|#m0nEuuM_OE3IydlCdUG>@{VE5JA5b&y6|4j8F&IJPfX&n8KZJ#! zEk1h2yVQr?btYOIuU~s>XmQ`p14w9y>tbHWBc7I^J7Ts2DgOgZeUan&(Bt`eFa^I;NT1lCpsh&i zUz#_$a$a)!S_mH^TYgK-l0h|*W2MDulqF^{Ii0$q&s1w9Zn`-Nq-S2RtZ= zJXrKUPF0Jl!0ja;w28w%jv|MDs}olpMxN^ri&`{GA^GCFHW=)l{Btx9GhP&7aDB!P zLQD2!=*iIlZ1dymSS;>)%YWG)rg?GpC&x$E>s`hqie9~1Cv4qQCE)yUNKVT2b7zDM z3{3E>tk+^_&$fmDR!i(k<;Mok9&I5kr6-v`>tcvvx(rwv+}Sl!4OA~kc`Nk`2$)~_>1*!yX#Zr zd30!{)2caqu3z!1A#lg_DsqA^!VlQjfd25SE~1+i8?l%tM$k~-NKDPq>22f zqnV1k6H}3gKY#vYesgd9-zqdn6dCDy{@mnf0~R*j4%L~1j;+2@vzve$Exkz z4tJ*$Z$DDG^SEk*TnSw<^1~t1v^Kx?3Hkcn{rfX`8Q(t*e*0UCHvs!mDUgT%?oo!! zQaG4l2d5}`2}T#u1}W}G)9#PS6ukC#d*4JP5QgBJS1?ic)@@0-ghWNxb|F`!IRVy^J^Eh}svr;g;s`<{Kd2lO9(+1G zd6|l}-fRlLNUD={vvdYTO^TmT>Oz2n*mqI+gQKzfsK~Xwp<+NcE9`PXyM^=6Pb}Ar z(U?3LA16Fyb*@bP8LNQ=&d#NzSuj&{MGwLvHBw?}M@k^g)1dJ@n=RT2^s-}-E; z?XTu@Mj}SR!7a@V4MqUMwBI-m6U}(u*SUA^UQFNYL*eu1)vpEZx+j7PGjA@E@l>89 zqR{+nzo5Y(w|WXdCf|pJF1+g1uJxu`!?h{XQlyiK@F)20!g7iOaXpxY!|L8s1E$Vd z&u%wB`KQV$pT41CJuSJBaXMjK_fYYEY)nG+*a9CFs|MQCdU~xVv5Jm!E2tWm&U4v@>2S zCe_=;E>6l0=74|s9K?9=o@arh`N{aLnk8js8W)Z@ZSQ<~GQ8re3brk;>tt(-n}UKu zdavz68{>3912UJLzCJqz8hHfTQAkABRLodg=*cs{Jc&)P&!}797isZ-U0LqyrhRub zq60TEN%xAzzcx_~%(?6?$Vwc-qj6%Eq$iPcqQIiD2!cUlUwv_)0HegLb3p#&=iI-Q zamP!SE`8xkRli$5PQVhyO%mR|N*OGZrcq*CuE%=)`t`n))Kv1ot%VI|0|SFtpaBE} zWQLaztEhu|wPXUU4gAOwbYjyyn2hC+ygIeGFTy;Fd_Y7QKnGbuY#?;3D~N=wb%1$2 zsG`rZw4O6rlbQ2%9G)11MT7INw*lP=rAUa`ydzfc+8hB@5w7m_Z>h3@2VUS;ws|s{$D& zLKcD4uGPSRvxeZ=rL!uJjP`%WiE`j3TQ8VdOR|oyet&(Z9b^nkh}nF2Cq}_cFp)P` zq#E6Yf`|*=x2fg4#f=L%e9dQo4<~*A4Bmi5+UC)IXPFp5E+I+?b_PV|E{MvEy)G=| z5tfy0DGomP*PWS}S>I7J7cA>_$8m(VpP$wiTd~vNzjENX|s@9m+EfWP-1Gb5{&!ct{4`#zJj@ zvVySrog|c8_>YL`EDmVseTZSs`793EWrGd3NR;b?K1>fs;f8Epzhh)#^0ffjYV*`1 zum*G%XH!6yE1J6ImJ|osl;_W#B$Xf*d6;`5u$;R!2H*SO@4O=&ibxpYfxiT*VN$t z=FYLCC5as9XXfUVV9@*`*Cxe#?Q)cL{_r9hOqv77prAvo-5i8k z_!cra^6eYnQz?(aX#lx09P%N}ra(uDAbrBJYctn!?ugQ$g7K8jyIeka${?80r@)tb ze@%_=6GlmbN<>;(+V9&74h7h4#IMGqh> z1Mw{S@R@;`E5xVQ3Gpb9Pc>`vPS`=2hVgU*EH&1WSVbNUUb=CJ544>Tw|Qrfrr|>r zl8DM;BtpfVneCH( zjisStN^YPC%so&QEztQpdk?gv60Y0Y&WM7fZ_GqbUt=nmX3#!uc7E$WW;9ZZ(D>~A zot=R|@X+qN7ew?EtEz%RrY;VUZ3Z|v-s@nvuL%0@fGtSE{-{nu6YQ?1T zGAGBT1HOj$7D7UV8-$Ih0xP!M8LAnU&**JP=-hV5GT6%s`_soOAH#^}1Z<^n|GqRt zR4zLbFux}`jWBw_Vibg=mXwrK0}APMa&nT8O1NDxP^eip%-FK?D=-eM@iue8wEY%S zlJ+)Y)MI??()Ey|?a^Y0aeK>n&E5O~pEe9$#I%`62Hj@Ng0O9Y?;GBaJB%CC4fCa= zr#gXS8$zh{C1a8q+*wO902IzAAn1Z3nC&~`AKB$Y4qtC=ZQVe0oW)oIf`N0cF)%al*ccmx zeZH>ycx8Lk@?;-^mxt%MxbSq>rrxYinux7S#zT=;LiQsLn32^!433LrWMp)Zzx)k3 z=qINxfZ4CS-kprOjgIXr<;o;-LqQ?SSLEBL%YrZpVvs0P2B07(1*H29L~+^>ETRA3 zJy*-1jqY7&#hacoIWk)W!n@47)p zfmp-xiv3yVYYDHA(2BM=~_ei1ccGh^v92Fe@khdMg`&XFPxH7 z?VVMcp~9;V<()A};XU=s6hzlQzE814&<&shw&#e?|Xh) z@s;0MEX&in3Qmha{dgq|T4`y36KNp2kCP%kgPq$+d4%XB{Ng1FB3u$Vvxw5%+}s;! z07}_`KRAN5$L$dOh%YjUKe)I@U3BEYxxJlzlMn3iU-v_82(BrjA!QU67N*}4ur0Io z!?|kKd-dlYgTL$kg7Z|x4cSW@1sij}H~ zKoEC^JH7jv*Ll^!2IYVA-R1IH_&0~h+ZlaDFQgIz4Kdq3W^%g_y2{PX4cV_7wHTiO zXmHlEv6&_-Zlq%wHYe>&b6(xf2}xoZLmdq=TvEorV%OZz_*uWACDx|Gk7ULNGo z=PN2IZbQJop~H#<>}$`gQc}q-lKjOLvoD{{ik~D{Oef~VmEaT=gtFE%D$5*MVL%!7 zeObfyppY*kt?$}1)Oc6Hp1X0UCt>0etcdG?u?_R>xNMLlS%?^B0J?Ppy=FBC!t&?* z+gm@BB_J?owLbUtoe2Qo8Uk+Ry?%QyXak9KJCE8|#qLw*UfX?-?5oKSMjX(WLys(` zirgzLL;G6RJ5=Xs!w1|Z`PAu7D-p65er?D5%T1tkeC{H^xFdu10K7=SqH4gZEU6G6m^`|7TDkaC#2_Xb&o%frA38Xi0E%X11Z2_tLBUcS zmh6W7q@6?LflY+tXOsN-Uz~FULC39qvrZDrhH8jKbk$XH@eRmT(!WVy5w~f($=5_h zEvFqWf9a%PHR5kAEl!l>XIohnq*MtF^z@V_8@>2jo13rAf%YdJ85wyGK>hgl6<^A% zh$V7=%f$Xh@-Lixbl&h%f~^m=cwXY=N(0l8D$BNs;WF(>y8r&WPjxNTF2w787AY44 z-RcB>%&CqDkpGp|+FHrFSFglYhe~cZf5Cz!x*rB{?dqBs{F^*$%!62}ty3IgzK)KnragXK+XyeD`~}tH zEfW)yy|HjQmo04&t%3^y4K)V!PE#&n+G737;7j>_)j4_CvS2H6kDt17#sxZN5&ZS9 zx-Z^9cm?c9UKt5{oL*NVr+lslL@JJ9gOyWs>DY)P0aQo`DPD*Od%)InpIrX1FohtpZ6D5>f+}vMDy2n(=JdpIdQZRkzBQ;1w=vt=wz(0|9rd zJCvFq)Te~n!5>$n(Fbp;1%`siRo_1>cO^1;q!YS2yt41ZOJ3P#BBRj}5s$&xTY`oC zh#uAT8kW!*;_B{q1A1XqbnMNr!R{$K`Z0dJm+?)7dPLkLe> zORIIT-fi+C=!t>=zs?Ui)pg^I>E_iZe|{7?p~4{Rk8k=g#g+8HgjZxFBV=b|a~XE3 z(k zW(Qezpm`M#XCRKIVh?~CI>;S;>py>Dyq5@87>qzrmYw18@B6Uo6G!o2WxATzV`>`+OS^ ze(d<~zyH#K5?nzTI&ME6kbiOde@TgQjn&n1_ZM1A;Ex{n&z=yRA$#8Gdrlm{HiD=t LYbm`{vrY@o>8^42F#u3qy|^Hs=YswK0JVjtijuMKi>+LO&b>*dKK8Hx!lN3}LyDOz zWwFfY++~w^$vYq8Ol%AvIf<#3%eLwWcaGkK07-mvSfI=vXc3YbNp9SrK$@V zWrb5EH*!_E_!(qeBDn%>NKaS9Rwkv_By~M}>suX7yfl^vNeUoXj%+jct>y)c?X{2k zjRbW5`6EyJRfM_WJ_P5@0X19I0BdX&Fd%%DBGK7DTlvOtDZ$9dh#v?MdM0!)MFIQk z20I0S=THB8cCXu*W(-xGy#j1*a^lAXmSsb&eC^>0vei6lsHd~XO?zlVP?*0 zTiv^M`&X=0^itezAv8@3y@|c??~zZ|)MWtp;VJ%zpD$~!<;g<>6fHbL zxxg)U<@ZAg-J?*rN^&g}dwln;hb*#M39hhx;9E#WMwYVF$lWkCIV^cIo6pUp_|-iPn94qhImC+!T}d-uR1Mm)Y3z?bA64%F<4PYSJ%Gv!9U>q zt?JD?4ecZEGg4W_)pAA5lZDJbn%pv2sRjaXEm&vicn9(zi(6Y;(3boAc3aw(LU0b> zDTnaWXQ$;B1&g=>{6kI6fxf94Q!!6nfIopWUx=xkdeVnp-(17UFA!6=WM9RY=UmCA zW{YFWlThJG){xUBZj*&5&K$(1ibHo!0;Bk1{g1x-ykp?q^ro~7wRnpW&smDk$XGip zdrQHU+|Ta$k!vLk;Gfbw^un<46W#^C;aF%tPA_kqdfEJa_-2;z4~H*9kbX~7u^cE~ z*SD?AIXh_m3vU^Bu(R8!i9$oy#_;e?mF2(ugC4W?uk?I?hA)D4+JNMed(%d5fAs#5 zQ2VExMPVW;Vv+1Ds*Y%f&@TCWsUMf9&E57;zTzqYJ~qZygQ1)V-Q}M8@s4+`2E$9 z5%RJ!5tk<|ZGml3?|7`bHrhHG{>}wdR>tfS7k{i_HY+OUFM8-7Y?FVO?~bCtd$9O? zuQ{u!sIRHPPVx|bUnw!9bR5ZxCkW5Un6 z%bxyVQ{jA-wZ>U9Mbzo1ow5+}+4`~Ttd&lZ(UCC567Y2H)#?8sCK08U|_DxSC zG)?toToV$y>fgS_#j6o1fzrmbMn*{aH_b!bxYP2z zn3c>bPLWEFV&llz^m^%;XV-M|x5?{93<525IA=+Ub;L^t9vR~6*2-9&O*^ItS_@AZ z8_&quOU~828fBFD$nK>Ya0hyhZvwqYy>DBQplGN*J0VPjLMUsG_T!W3_?(X(N9oJS zErC+<>e^6fn|3svffKc`<>30bD$NLrfdUT{! z6w+4aV1SQOZlGq6s(2Fu9=atbiPOpJpMup!82YV0u>Dzmp~87Ws63-Klq`)cEccn& zVh3N8**Z*=!ZRGWR-PD%VfsAW=1zZQgu#NEM^EzDnhxfK$oo9D%Tg545In;~V3+Il zJ!j6s<%l`q0!-!2^!EaYj@3O@?>Ubc*V?@2Ol&uxldPFNVAlh_?O15ifL))QoNT|l zTi*E8xB(`0AfYzR4GsA+1PhmNKHE#&Q&7OtU;Yf>_sRnk8Gznn4Ifi!@Il(I8du8R zFY7)IzQw?i*rAio&7QH6$x5d4Xzl{Rgr zMh>71wJM}2zd*;eYBiXWpVQ1>q;m`uJG*xh3#+12!m~|(t-}(M0eMAVon1L^__D2& zI~;5gb!Ymg6?ettC14jkqard=qJnDKl-_esKYz4u zwkmkFgRwh9$W@F2Wj>1(X_kBvLxD=Yy^PKxXwuh>TyT*VQvEms4seJua+{<~c_#zC z_erD@6`-($fdlCipD3ckrQ0Fvm<*(8*^kURYcEErFpFI6I6pgb&CD9^`WlTw+B=BP zwg+z?cD+%BVuVWvFiHKIZ+1B$YwVMW&p*Xb&D&Hvur8ZMXz#Iq!$Jz;rCGrm+9SjlBOt9@k4xUa#o?)u)~~sdgaO>^ zQ#X%_nfil4l-7aOq@H6S(ToO<2Y7|g#m+lP6u7}kI)b*+rV@C zocP2RI@qFpju6|qNb8tmiFT38d$!SL#N(ScCHQHWkT>Ff?w>y0iDp(cHK+e3V2Wun zUnc*Z0Q&k0f}BFYg12?Ka14+6GVQfvC1@+j1;;)9l=HX%U;d;dPyq3=xOm03JM|eR zi*tm1aL55)H9=$8EQc+zUrN>}K9A2}6jMs$WjQD2+kkC_^!I#}A*Jg_?-UyqG;Bg= z%f330os&+Tvr8AW(2C8nCU!edo(QI;r3DJ64$js}mwB;sa8SLUpS>(rF_c@m3+X@D zEmTU{AVC)S`#drg>w=pG`{03lq36mV0>rAjjsfRK)Du6wD7>?EmP~W9P0lc(yblO2 zVYxg;W>rL1v#r-v1n4s87>@qlrgyHTl%iTeA57_{OBGm=GPC|7!nBS6y*{73Ec_s# zvTC5M>+Xt;rKOHR^_m)dOMms`O{*7(*Ei-{b6<N!`Fo%<>Xr;+Et#_wiCTRpRUnL8BGFVD$f6d{ow5I+B~;(JiLp# zh^}Qc_n-Qp!_1PBlKfXC)sj>I&@tMe&Q?@T0{JMN^fJj3G^_D(=_Axt=R2Z90S|>l zxS#;=e8*p;t~%HU1RKX)%^@1lg+^W|Fxw(0(698~Nz>aqJhHH?B5v6uCrZQ}M|;5& zR2qwxkDwuu*^QC)EP>?one)-@p|?wD+Lg|9Wh-z#ZPv-i-OWqv7 zO0)?Ozwe1QZj^x|d>`MI$||M7VaB%{{~#6Te;krTJ5|*eW~qykYbT>KSk<^Jy!MCf zTZZ)`CO@*8=ell(YZN!0%{C*M1hsNOd0k9cAzH=!MB)}eqhuvE>v|Lf@^k9ogz4w; zjN9Jd4}qlzYX%pq$C*0tlOuj0cY-q-V6(B|ouZ{X~SqX*}L>o`2^Fom~R7_`5JFcjt{j;4BI-bj(>u{Y+<{e{Q*>D z<{7I&c;`;KG5>@zV;oJA0!>|#mUoH*Dhk)F4d+MX@(dC*My@i+&d(Cta!np>!1Yobm{IQnQes{v{2&0W6 zH68KAx`15Nl$Dc3?9FlYwEH%ipQEnEyeVt3RmXVh0UrMy7_aEoMbn055~RxA$`c2# zA%qzajXwsj=WC20tRRv|5*NH+wN@r~(Q7~ab-UuKo`}(Z2j1a=)|d zPW)tg%CmTDWOA|cGO&@qf2;j2MbMg6n}C+pE&LBT7(twcL1ijzo~L$n_grBI^8!Yj zo!5^@URbkmTL1ZtT@{K;m$;?dStG~C4HgAL1ph~7VU<<%%`+?T+HKB@oM&`o=shZZ zAaAP4gVbAJUq2Oa%W`~dG10~hgOKjket!uEXPnPMD$;gaxIWWGqhH^9=PHDNK||d! z`?{b>Z!L9xGWGj+)K^Uqs-cDkkQZnp5?MYwNfC0gvkf5~DFR~cFTEN rprE$A%0o~vn!dSdovRG18#xiFF;-(1hJ9-WlTScXRZpb`XBGB;v(E21 diff --git a/res/themes/ui.toml b/res/themes/ui.toml index 314a1e5..728da3c 100644 --- a/res/themes/ui.toml +++ b/res/themes/ui.toml @@ -779,6 +779,8 @@ pool-url-input = { width = 300.0, height = 28.0 } pool-worker-input = { width = 200.0, height = 28.0 } log-panel-height = { size = 120.0 } log-panel-min = { size = 60.0 } +idle-row-height = { size = 28.0 } +idle-combo-width = { size = 64.0 } [tabs.peers] refresh-button = { size = 110.0 } @@ -1249,8 +1251,8 @@ inset-shadow-fade-ratio = { size = 5.0 } [components.content-area] padding-x = 0.0 padding-y = 0.0 -margin-top = { size = 4.0 } -margin-bottom = { size = -40.0 } +margin-top = { size = 6.0 } +margin-bottom = { size = -39.0 } edge-fade-zone = { size = 0.0 } [components.content-area.window] @@ -1262,10 +1264,10 @@ page-fade-speed = { size = 8.0 } collapse-hysteresis = { size = 60.0 } header-icon = { icon-dark = "logos/logo_ObsidianDragon_dark.png", icon-light = "logos/logo_ObsidianDragon_light.png" } coin-icon = { icon = "logos/logo_dragonx_128.png" } -header-title = { font = "subtitle1", size = 14.0, pad-x = 16.0, pad-y = 12.0, logo-gap = 8.0, opacity = 0.7 } +header-title = { font = "subtitle1", size = 14.0, pad-x = 22.0, pad-y = 6.0, logo-gap = 4.0, opacity = 0.7, offset-y = 4.0 } [components.main-window.window] -padding = [12, 38] +padding = [12, 36] [components.shutdown] content-height = { height = 120.0 } @@ -1309,6 +1311,8 @@ rpc-label-width = { size = 85.0 } security-combo-width = { size = 120.0 } port-input-min-width = { size = 60.0 } port-input-width-ratio = { size = 0.4 } +idle-combo-width = { size = 64.0 } +about-logo-size = { size = 64.0 } [components.main-layout] app-bar-height = { size = 64.0 } diff --git a/setup.sh b/setup.sh index d672bbd..6c55dd4 100755 --- a/setup.sh +++ b/setup.sh @@ -416,8 +416,8 @@ clone_dragonx_if_needed() { git clone https://git.dragonx.is/DragonX/dragonx.git "$DRAGONX_SRC" else ok "dragonx source already present" - info "Pulling latest dragonx..." - (cd "$DRAGONX_SRC" && git pull --ff-only 2>/dev/null || true) + info "Switching to dragonx branch and pulling latest..." + (cd "$DRAGONX_SRC" && git checkout dragonx 2>/dev/null && git pull --ff-only 2>/dev/null || true) fi } diff --git a/src/app.cpp b/src/app.cpp index 82bba8b..36859e4 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -292,6 +292,9 @@ void App::update() checkAutoLock(); } + // Mine-when-idle check (runs every frame, internally rate-limited by idle detection) + checkIdleMining(); + // P8: Dedup rebuildAddressList — only rebuild once per frame if (address_list_dirty_) { address_list_dirty_ = false; @@ -715,13 +718,14 @@ void App::render() const float brandPadX = hdrF("pad-x", mainPadX / hdp); const float brandPadY = hdrF("pad-y", 8.0f); const float logoGap = hdrF("logo-gap", 8.0f); + const float brandOffY = hdrF("offset-y", 0.0f); const float hdrOpacity = (hdrElem.opacity >= 0.0f) ? hdrElem.opacity : 0.7f; // Logo float logoSize = mainPadTop - brandPadY * 2.0f; // fit within header if (logoSize < 16.0f * hdp) logoSize = 16.0f * hdp; float logoX = winPos.x + brandPadX; - float logoY = winPos.y + brandPadY; + float logoY = winPos.y + brandPadY + brandOffY; if (logo_tex_ != 0) { float aspect = (logo_h_ > 0) ? (float)logo_w_ / (float)logo_h_ : 1.0f; float logoW = logoSize * aspect; @@ -740,7 +744,7 @@ void App::render() ? hdrElem.size * hdp : titleFont->LegacySize; if (titleFont) { - float textY = winPos.y + (mainPadTop - titleFontSize) * 0.5f; + float textY = winPos.y + (mainPadTop - titleFontSize) * 0.5f + brandOffY; ImU32 textCol = ui::material::OnSurface(); // Apply header text opacity int a = (int)((float)((textCol >> 24) & 0xFF) * hdrOpacity); @@ -803,7 +807,7 @@ void App::render() // Build sidebar status for badges + footer ui::SidebarStatus sbStatus; sbStatus.peerCount = static_cast(state_.peers.size()); - sbStatus.miningActive = state_.mining.generate; + sbStatus.miningActive = state_.mining.generate || state_.pool_mining.xmrig_running; // Load logo texture lazily on first frame (or after theme change) // Also reload when dark↔light mode changes so the correct variant shows @@ -1370,8 +1374,9 @@ void App::renderStatusBar() } } - // Mining indicator (if mining) - if (state_.mining.generate) { + // Mining indicator (if mining — solo or pool) + const bool anyMining = state_.mining.generate || state_.pool_mining.xmrig_running; + if (anyMining) { ImGui::SameLine(0, sbSectionGap); ImGui::TextDisabled("|"); ImGui::SameLine(0, sbSeparatorGap); @@ -1379,8 +1384,11 @@ void App::renderStatusBar() ImGui::TextColored(ImVec4(0.3f, 0.8f, 0.3f, 1.0f), ICON_MD_CONSTRUCTION); ImGui::PopFont(); ImGui::SameLine(0, sbIconTextGap); + double displayHashrate = state_.pool_mining.xmrig_running + ? state_.pool_mining.hashrate_10s + : state_.mining.localHashrate; ImGui::TextColored(ImVec4(0.3f, 0.8f, 0.3f, 1.0f), "%.1f H/s", - state_.mining.localHashrate); + displayHashrate); } // Decrypt-import background task indicator diff --git a/src/app.h b/src/app.h index a8c51a8..596df25 100644 --- a/src/app.h +++ b/src/app.h @@ -174,6 +174,9 @@ public: void startPoolMining(int threads); void stopPoolMining(); + // Mine-when-idle state query + bool isIdleMiningActive() const { return idle_mining_active_; } + // Peers const std::vector& getPeers() const { return state_.peers; } const std::vector& getBannedPeers() const { return state_.bannedPeers; } @@ -264,6 +267,8 @@ public: // Logo texture accessor (wallet branding icon) ImTextureID getLogoTexture() const { return logo_tex_; } + int getLogoWidth() const { return logo_w_; } + int getLogoHeight() const { return logo_h_; } // Coin logo texture accessor (DragonX currency icon for balance tab) ImTextureID getCoinLogoTexture() const { return coin_logo_tex_; } @@ -564,6 +569,9 @@ private: // Auto-lock on idle std::chrono::steady_clock::time_point last_interaction_ = std::chrono::steady_clock::now(); + // Mine-when-idle: auto-start/stop mining based on system idle state + bool idle_mining_active_ = false; // true when mining was auto-started by idle detection + // Private methods - rendering void renderStatusBar(); void renderAboutDialog(); @@ -582,6 +590,7 @@ private: void tryConnect(); void onConnected(); void onDisconnected(const std::string& reason); + void applyDefaultBanlist(); // Private methods - data refresh void refreshData(); @@ -590,6 +599,7 @@ private: void refreshPrice(); void refreshWalletEncryptionState(); void checkAutoLock(); + void checkIdleMining(); }; } // namespace dragonx diff --git a/src/app_network.cpp b/src/app_network.cpp index 400a00a..fbcbd2c 100644 --- a/src/app_network.cpp +++ b/src/app_network.cpp @@ -13,6 +13,7 @@ #include "daemon/embedded_daemon.h" #include "daemon/xmrig_manager.h" #include "ui/notifications.h" +#include "default_banlist_embedded.h" #include "util/platform.h" #include "util/perf_log.h" @@ -52,6 +53,7 @@ void App::tryConnect() if (embedded_daemon_ && embedded_daemon_->externalDaemonDetected()) { connection_status_ = "Waiting for daemon config..."; VERBOSE_LOGF("[connect #%d] External daemon detected on port, waiting for config file to appear\n", connect_attempt); + refresh_timer_ = REFRESH_INTERVAL - 1.0f; return; } @@ -63,9 +65,11 @@ void App::tryConnect() if (startEmbeddedDaemon()) { // Will retry connection after daemon starts VERBOSE_LOGF("[connect #%d] Embedded daemon starting, will retry connection...\n", connect_attempt); + refresh_timer_ = REFRESH_INTERVAL - 1.0f; } else if (embedded_daemon_ && embedded_daemon_->externalDaemonDetected()) { connection_status_ = "Waiting for daemon config..."; VERBOSE_LOGF("[connect #%d] External daemon detected but no config yet, will retry...\n", connect_attempt); + refresh_timer_ = REFRESH_INTERVAL - 1.0f; } else { VERBOSE_LOGF("[connect #%d] startEmbeddedDaemon() failed — lastError: %s, binary: %s\n", connect_attempt, @@ -148,10 +152,14 @@ void App::tryConnect() state_.connected = false; connection_status_ = "Waiting for dragonxd to start..."; VERBOSE_LOGF("[connect #%d] RPC connection failed — daemon still starting, will retry...\n", attempt); + // Fast retry: force the refresh timer to fire on the next cycle + // instead of waiting the full 5-second REFRESH_INTERVAL. + refresh_timer_ = REFRESH_INTERVAL - 1.0f; } else if (externalDetected) { state_.connected = false; connection_status_ = "Connecting to daemon..."; VERBOSE_LOGF("[connect #%d] RPC connection failed — external daemon on port but RPC not ready yet, will retry...\n", attempt); + refresh_timer_ = REFRESH_INTERVAL - 1.0f; } else { onDisconnected("Connection failed"); VERBOSE_LOGF("[connect #%d] RPC connection failed — no daemon starting, no external detected\n", attempt); @@ -286,6 +294,9 @@ void App::onConnected() // Initial data refresh refreshData(); refreshMarketData(); + + // Apply compiled-in default ban list + applyDefaultBanlist(); } void App::onDisconnected(const std::string& reason) @@ -1403,6 +1414,57 @@ void App::clearBans() }); } +void App::applyDefaultBanlist() +{ + if (!state_.connected || !rpc_ || !worker_) return; + + // Parse the embedded default_banlist.txt (compiled from res/default_banlist.txt) + std::string data(reinterpret_cast(embedded::default_banlist_data), + embedded::default_banlist_size); + + std::vector ips; + size_t pos = 0; + while (pos < data.size()) { + size_t eol = data.find('\n', pos); + if (eol == std::string::npos) eol = data.size(); + std::string line = data.substr(pos, eol - pos); + pos = eol + 1; + + // Strip carriage return (Windows line endings) + if (!line.empty() && line.back() == '\r') line.pop_back(); + // Strip leading/trailing whitespace + size_t start = line.find_first_not_of(" \t"); + if (start == std::string::npos) continue; + line = line.substr(start, line.find_last_not_of(" \t") - start + 1); + // Skip empty lines and comments + if (line.empty() || line[0] == '#') continue; + + ips.push_back(line); + } + + if (ips.empty()) return; + + // Apply bans on the worker thread to avoid blocking the UI + worker_->post([this, ips]() -> rpc::RPCWorker::MainCb { + int applied = 0; + for (const auto& ip : ips) { + try { + // 0 = permanent ban (until node restart or manual unban) + // Using a very long duration (10 years) for effectively permanent bans + rpc_->call("setban", {ip, "add", 315360000}); + applied++; + } catch (...) { + // Already banned or invalid — skip silently + } + } + return [applied]() { + if (applied > 0) { + DEBUG_LOGF("[Banlist] Applied %d default bans\n", applied); + } + }; + }); +} + // ============================================================================ // Address Operations // ============================================================================ diff --git a/src/app_security.cpp b/src/app_security.cpp index f5bbaf1..21052af 100644 --- a/src/app_security.cpp +++ b/src/app_security.cpp @@ -413,6 +413,67 @@ void App::checkAutoLock() { } } +// =========================================================================== +// Mine when idle — auto-start/stop mining based on system idle state +// =========================================================================== + +void App::checkIdleMining() { + if (!settings_ || !settings_->getMineWhenIdle()) { + // Feature disabled — if we previously auto-started, stop now + if (idle_mining_active_) { + idle_mining_active_ = false; + if (settings_ && settings_->getPoolMode()) { + if (xmrig_manager_ && xmrig_manager_->isRunning()) + stopPoolMining(); + } else { + if (state_.mining.generate) + stopMining(); + } + } + return; + } + + int idleSec = util::Platform::getSystemIdleSeconds(); + int delay = settings_->getMineIdleDelay(); + bool isPool = settings_->getPoolMode(); + + // Check if mining is already running (manually started by user) + bool miningActive = isPool + ? (xmrig_manager_ && xmrig_manager_->isRunning()) + : state_.mining.generate; + + if (idleSec >= delay) { + // System is idle — start mining if not already running + if (!miningActive && !idle_mining_active_ && !mining_toggle_in_progress_.load()) { + // For solo mining, need daemon connected and synced + if (!isPool && (!state_.connected || state_.sync.syncing)) return; + + int threads = settings_->getPoolThreads(); + if (threads <= 0) threads = std::max(1, (int)std::thread::hardware_concurrency() / 2); + + idle_mining_active_ = true; + if (isPool) + startPoolMining(threads); + else + startMining(threads); + DEBUG_LOGF("[App] Idle mining started after %d seconds idle\n", idleSec); + } + } else { + // User is active — stop mining if we auto-started it + if (idle_mining_active_) { + idle_mining_active_ = false; + if (isPool) { + if (xmrig_manager_ && xmrig_manager_->isRunning()) + stopPoolMining(); + } else { + if (state_.mining.generate) + stopMining(); + } + DEBUG_LOGF("[App] Idle mining stopped — user returned\n"); + } + } +} + // =========================================================================== // Restart Setup Wizard (from Settings) // =========================================================================== diff --git a/src/config/settings.cpp b/src/config/settings.cpp index f3529d2..a804f77 100644 --- a/src/config/settings.cpp +++ b/src/config/settings.cpp @@ -148,6 +148,8 @@ bool Settings::load(const std::string& path) if (j.contains("pool_tls")) pool_tls_ = j["pool_tls"].get(); if (j.contains("pool_hugepages")) pool_hugepages_ = j["pool_hugepages"].get(); if (j.contains("pool_mode")) pool_mode_ = j["pool_mode"].get(); + if (j.contains("mine_when_idle")) mine_when_idle_ = j["mine_when_idle"].get(); + if (j.contains("mine_idle_delay")) mine_idle_delay_= std::max(30, j["mine_idle_delay"].get()); if (j.contains("saved_pool_urls") && j["saved_pool_urls"].is_array()) { saved_pool_urls_.clear(); for (const auto& u : j["saved_pool_urls"]) @@ -231,6 +233,8 @@ bool Settings::save(const std::string& path) j["pool_tls"] = pool_tls_; j["pool_hugepages"] = pool_hugepages_; j["pool_mode"] = pool_mode_; + j["mine_when_idle"] = mine_when_idle_; + j["mine_idle_delay"]= mine_idle_delay_; j["saved_pool_urls"] = json::array(); for (const auto& u : saved_pool_urls_) j["saved_pool_urls"].push_back(u); diff --git a/src/config/settings.h b/src/config/settings.h index 9e223b1..a6454bb 100644 --- a/src/config/settings.h +++ b/src/config/settings.h @@ -208,6 +208,12 @@ public: bool getPoolMode() const { return pool_mode_; } void setPoolMode(bool v) { pool_mode_ = v; } + // Mine when idle (auto-start mining when system is idle) + bool getMineWhenIdle() const { return mine_when_idle_; } + void setMineWhenIdle(bool v) { mine_when_idle_ = v; } + int getMineIdleDelay() const { return mine_idle_delay_; } + void setMineIdleDelay(int seconds) { mine_idle_delay_ = std::max(30, seconds); } + // Saved pool URLs (user-managed favorites dropdown) const std::vector& getSavedPoolUrls() const { return saved_pool_urls_; } void addSavedPoolUrl(const std::string& url) { @@ -289,6 +295,8 @@ private: bool pool_tls_ = false; bool pool_hugepages_ = true; bool pool_mode_ = false; // false=solo, true=pool + bool mine_when_idle_ = false; // auto-start mining when system idle + int mine_idle_delay_= 120; // seconds of idle before mining starts std::vector saved_pool_urls_; // user-saved pool URL favorites std::vector saved_pool_workers_; // user-saved worker address favorites diff --git a/src/rpc/rpc_client.cpp b/src/rpc/rpc_client.cpp index 17a7896..33a8027 100644 --- a/src/rpc/rpc_client.cpp +++ b/src/rpc/rpc_client.cpp @@ -87,7 +87,7 @@ bool RPCClient::connect(const std::string& host, const std::string& port, curl_easy_setopt(impl_->curl, CURLOPT_HTTPHEADER, impl_->headers); curl_easy_setopt(impl_->curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(impl_->curl, CURLOPT_TIMEOUT, 30L); - curl_easy_setopt(impl_->curl, CURLOPT_CONNECTTIMEOUT, 3L); + curl_easy_setopt(impl_->curl, CURLOPT_CONNECTTIMEOUT, 1L); // localhost — fails fast if not listening // Test connection with getinfo try { diff --git a/src/ui/pages/settings_page.cpp b/src/ui/pages/settings_page.cpp index aa08383..1da3607 100644 --- a/src/ui/pages/settings_page.cpp +++ b/src/ui/pages/settings_page.cpp @@ -104,6 +104,10 @@ static LowSpecSnapshot s_lowSpecSnap; // Daemon — keep running on close static bool sp_keep_daemon_running = false; static bool sp_stop_external_daemon = false; + +// Mining — mine when idle +static bool sp_mine_when_idle = false; +static int sp_mine_idle_delay = 120; static bool sp_verbose_logging = false; // Debug logging categories @@ -165,6 +169,8 @@ static void loadSettingsPageState(config::Settings* settings) { Layout::setUserFontScale(sp_font_scale); // sync with Layout on load sp_keep_daemon_running = settings->getKeepDaemonRunning(); sp_stop_external_daemon = settings->getStopExternalDaemon(); + sp_mine_when_idle = settings->getMineWhenIdle(); + sp_mine_idle_delay = settings->getMineIdleDelay(); sp_verbose_logging = settings->getVerboseLogging(); sp_debug_categories = settings->getDebugCategories(); sp_debug_cats_dirty = false; @@ -212,6 +218,8 @@ static void saveSettingsPageState(config::Settings* settings) { settings->setFontScale(sp_font_scale); settings->setKeepDaemonRunning(sp_keep_daemon_running); settings->setStopExternalDaemon(sp_stop_external_daemon); + settings->setMineWhenIdle(sp_mine_when_idle); + settings->setMineIdleDelay(sp_mine_idle_delay); settings->setVerboseLogging(sp_verbose_logging); settings->setDebugCategories(sp_debug_categories); @@ -1075,6 +1083,46 @@ void RenderSettingsPage(App* app) { if (scale < 1.0f) ImGui::SetWindowFontScale(1.0f); } + // Mine when idle — checkbox + delay combo + { + if (ImGui::Checkbox("Mine when idle", &sp_mine_when_idle)) { + saveSettingsPageState(app->settings()); + } + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("Automatically start mining when the\nsystem is idle (no keyboard/mouse input)"); + + if (sp_mine_when_idle) { + ImGui::SameLine(0, Layout::spacingMd()); + ImGui::AlignTextToFramePadding(); + ImGui::TextColored(ImVec4(1, 1, 1, 0.5f), "after"); + ImGui::SameLine(0, Layout::spacingSm()); + + struct DelayOption { int seconds; const char* label; }; + static const DelayOption delays[] = { + {30, "30s"}, {60, "1m"}, {120, "2m"}, {300, "5m"}, {600, "10m"} + }; + const char* previewLabel = "2m"; + for (const auto& d : delays) { + if (d.seconds == sp_mine_idle_delay) { previewLabel = d.label; break; } + } + + ImGui::SetNextItemWidth(schema::UI().drawElement("components.settings-page", "idle-combo-width").sizeOr(64.0f)); + if (ImGui::BeginCombo("##IdleDelay", previewLabel, ImGuiComboFlags_NoArrowButton)) { + for (const auto& d : delays) { + bool selected = (d.seconds == sp_mine_idle_delay); + if (ImGui::Selectable(d.label, selected)) { + sp_mine_idle_delay = d.seconds; + saveSettingsPageState(app->settings()); + } + if (selected) ImGui::SetItemDefaultFocus(); + } + ImGui::EndCombo(); + } + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("How long to wait before starting mining"); + } + } + // Bottom row — Keys & Data left-aligned, Setup Wizard right-aligned { const char* r1[] = {"Import Key...", "Export Key...", "Export All...", "Backup...", "Export CSV..."}; @@ -1583,7 +1631,23 @@ void RenderSettingsPage(App* app) { ImGui::SetCursorScreenPos(ImVec2(cardMin.x, cardMin.y + pad)); ImGui::Indent(pad); - float contentW = availWidth - pad * 2; + // Logo on the left side of the about card + ImTextureID logoTex = app->getLogoTexture(); + float logoAreaW = 0; + if (logoTex != 0) { + float logoMaxH = schema::UI().drawElement("components.settings-page", "about-logo-size").sizeOr(64.0f); + float logoH = logoMaxH; + float aspect = (app->getLogoHeight() > 0) ? (float)app->getLogoWidth() / (float)app->getLogoHeight() : 1.0f; + float logoW = logoH * aspect; + ImVec2 logoPos = ImGui::GetCursorScreenPos(); + dl->AddImage(logoTex, + ImVec2(logoPos.x, logoPos.y), + ImVec2(logoPos.x + logoW, logoPos.y + logoH)); + logoAreaW = logoW + Layout::spacingLg(); + ImGui::Indent(logoAreaW); + } + + float contentW = availWidth - pad * 2 - logoAreaW; // App name + version on same line ImGui::PushFont(sub1); @@ -1601,7 +1665,7 @@ void RenderSettingsPage(App* app) { ImGui::Dummy(ImVec2(0, Layout::spacingSm())); ImGui::PushFont(body2); - ImGui::PushTextWrapPos(cardMin.x + availWidth - pad); + ImGui::PushTextWrapPos(cardMin.x + availWidth - pad - logoAreaW); ImGui::TextUnformatted( "A shielded cryptocurrency wallet for DragonX (DRGX), " "built with Dear ImGui for a lightweight, portable experience."); @@ -1611,14 +1675,18 @@ void RenderSettingsPage(App* app) { ImGui::Dummy(ImVec2(0, Layout::spacingSm())); ImGui::PushFont(capFont); - ImGui::TextColored(ImVec4(1,1,1,0.5f), "Copyright 2024-2026 The Hush Developers | GPLv3 License"); + ImGui::TextColored(ImVec4(1,1,1,0.5f), "Copyright 2024-2026 DragonX Developers | GPLv3 License"); ImGui::PopFont(); ImGui::Dummy(ImVec2(0, Layout::spacingMd())); - // Buttons — consistent equal-width row + // Buttons — consistent equal-width row (full card width) + if (logoAreaW > 0) { + ImGui::Unindent(logoAreaW); + } { - float aboutBtnW = (contentW - Layout::spacingMd() * 3) / 4.0f; + float fullContentW = availWidth - pad * 2; + float aboutBtnW = (fullContentW - Layout::spacingMd() * 3) / 4.0f; if (TactileButton("Website", ImVec2(aboutBtnW, 0), S.resolveFont("button"))) { util::Platform::openUrl("https://dragonx.is"); diff --git a/src/ui/windows/console_tab.cpp b/src/ui/windows/console_tab.cpp index 5034705..aeedb3c 100644 --- a/src/ui/windows/console_tab.cpp +++ b/src/ui/windows/console_tab.cpp @@ -1630,12 +1630,39 @@ void ConsoleTab::executeCommand(const std::string& cmd, rpc::RPCClient* rpc, rpc return; } - // Parse command and arguments + // Parse command and arguments (shell-like: handles quotes and JSON brackets) std::vector args; - std::istringstream iss(cmd); - std::string token; - while (iss >> token) { - args.push_back(token); + { + size_t i = 0; + size_t len = cmd.size(); + while (i < len) { + // Skip whitespace + while (i < len && (cmd[i] == ' ' || cmd[i] == '\t')) i++; + if (i >= len) break; + + std::string tok; + if (cmd[i] == '"' || cmd[i] == '\'') { + // Quoted string — collect until matching close quote + char quote = cmd[i++]; + while (i < len && cmd[i] != quote) tok += cmd[i++]; + if (i < len) i++; // skip closing quote + } else if (cmd[i] == '[' || cmd[i] == '{') { + // JSON array/object — collect until matching bracket + char open = cmd[i]; + char close = (open == '[') ? ']' : '}'; + int depth = 0; + while (i < len) { + if (cmd[i] == open) depth++; + else if (cmd[i] == close) depth--; + tok += cmd[i++]; + if (depth == 0) break; + } + } else { + // Unquoted token — collect until whitespace + while (i < len && cmd[i] != ' ' && cmd[i] != '\t') tok += cmd[i++]; + } + if (!tok.empty()) args.push_back(tok); + } } if (args.empty()) return; @@ -1647,24 +1674,31 @@ void ConsoleTab::executeCommand(const std::string& cmd, rpc::RPCClient* rpc, rpc for (size_t i = 1; i < args.size(); i++) { const std::string& arg = args[i]; - // Try to parse as number - try { - if (arg.find('.') != std::string::npos) { - params.push_back(std::stod(arg)); - } else { - // Check for bool - if (arg == "true") { - params.push_back(true); - } else if (arg == "false") { - params.push_back(false); + // Try to parse as JSON first (handles objects, arrays, etc.) + if (!arg.empty() && (arg[0] == '{' || arg[0] == '[')) { + auto parsed = nlohmann::json::parse(arg, nullptr, false); + if (!parsed.is_discarded()) { + params.push_back(parsed); + continue; + } + } + + // Try to parse as number or bool + if (arg == "true") { + params.push_back(true); + } else if (arg == "false") { + params.push_back(false); + } else { + try { + if (arg.find('.') != std::string::npos) { + params.push_back(std::stod(arg)); } else { - // Try as integer params.push_back(std::stoll(arg)); } + } catch (...) { + // Keep as string + params.push_back(arg); } - } catch (...) { - // Keep as string - params.push_back(arg); } } @@ -1757,9 +1791,24 @@ void ConsoleTab::addLine(const std::string& line, ImU32 color) lines_.push_back({line, color}); - // Limit buffer size + // Limit buffer size — adjust selection indices when lines are removed + // from the front so the highlight stays on the text the user selected. + int popped = 0; while (lines_.size() > 10000) { lines_.pop_front(); + popped++; + } + if (popped > 0 && has_selection_) { + sel_anchor_.line -= popped; + sel_end_.line -= popped; + if (sel_anchor_.line < 0 && sel_end_.line < 0) { + // Entire selection was in the removed range + has_selection_ = false; + is_selecting_ = false; + } else { + if (sel_anchor_.line < 0) { sel_anchor_.line = 0; sel_anchor_.col = 0; } + if (sel_end_.line < 0) { sel_end_.line = 0; sel_end_.col = 0; } + } } // Track new output while user is scrolled up diff --git a/src/ui/windows/peers_tab.cpp b/src/ui/windows/peers_tab.cpp index c465a99..f41e0c0 100644 --- a/src/ui/windows/peers_tab.cpp +++ b/src/ui/windows/peers_tab.cpp @@ -907,7 +907,7 @@ void RenderPeersTab(App* app) effects::ImGuiAcrylic::EndAcrylicPopup(); } - ImGui::SetCursorScreenPos(ImVec2(rowPos.x, rowEnd.y)); + ImGui::SetCursorScreenPos(ImVec2(rawRowPosB.x, rowEnd.y)); if (i < state.bannedPeers.size() - 1) { ImVec2 divStart = ImGui::GetCursorScreenPos(); diff --git a/src/util/platform.cpp b/src/util/platform.cpp index 4edba35..197575e 100644 --- a/src/util/platform.cpp +++ b/src/util/platform.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #ifdef __APPLE__ #include #include @@ -596,5 +597,94 @@ double Platform::getDaemonMemoryUsageMB() #endif } +// ============================================================================ +// System-wide idle time detection +// ============================================================================ + +int Platform::getSystemIdleSeconds() +{ +#ifdef _WIN32 + LASTINPUTINFO lii; + lii.cbSize = sizeof(lii); + if (GetLastInputInfo(&lii)) { + DWORD elapsed = GetTickCount() - lii.dwTime; + return (int)(elapsed / 1000); + } + return 0; +#elif defined(__APPLE__) + // macOS: use IOKit HIDSystem idle time + // Fallback to 0 (feature not supported) to keep it simple + return 0; +#else + // Linux: dynamically load libXss to query X11 screensaver idle time + // This avoids a hard link dependency on X11/Xss libraries. + typedef struct { + int type; + unsigned long serial; + int/*Bool*/ send_event; + void* /*Display**/ display; + unsigned long/*Drawable*/ window; + int state; + int kind; + unsigned long til_or_since; + unsigned long idle; + unsigned long eventMask; + } XScreenSaverInfo; + + // Function pointer types + typedef void* (*XOpenDisplay_t)(const char*); + typedef unsigned long (*XDefaultRootWindow_t)(void*); + typedef XScreenSaverInfo* (*XScreenSaverAllocInfo_t)(void); + typedef int (*XScreenSaverQueryInfo_t)(void*, unsigned long, XScreenSaverInfo*); + typedef int (*XCloseDisplay_t)(void*); + typedef void (*XFree_t)(void*); + + static bool s_tried = false; + static void* s_x11 = nullptr; + static void* s_xss = nullptr; + static XOpenDisplay_t s_XOpenDisplay = nullptr; + static XDefaultRootWindow_t s_XDefaultRootWindow = nullptr; + static XScreenSaverAllocInfo_t s_XScreenSaverAllocInfo = nullptr; + static XScreenSaverQueryInfo_t s_XScreenSaverQueryInfo = nullptr; + static XCloseDisplay_t s_XCloseDisplay = nullptr; + (void)s_XCloseDisplay; // retained for potential cleanup + static XFree_t s_XFree = nullptr; + static void* s_display = nullptr; + + if (!s_tried) { + s_tried = true; + s_x11 = dlopen("libX11.so.6", RTLD_LAZY); + s_xss = dlopen("libXss.so.1", RTLD_LAZY); + if (s_x11 && s_xss) { + s_XOpenDisplay = (XOpenDisplay_t)dlsym(s_x11, "XOpenDisplay"); + s_XDefaultRootWindow = (XDefaultRootWindow_t)dlsym(s_x11, "XDefaultRootWindow"); + s_XCloseDisplay = (XCloseDisplay_t)dlsym(s_x11, "XCloseDisplay"); // NOLINT + s_XFree = (XFree_t)dlsym(s_x11, "XFree"); + s_XScreenSaverAllocInfo = (XScreenSaverAllocInfo_t)dlsym(s_xss, "XScreenSaverAllocInfo"); + s_XScreenSaverQueryInfo = (XScreenSaverQueryInfo_t)dlsym(s_xss, "XScreenSaverQueryInfo"); + + if (s_XOpenDisplay && s_XDefaultRootWindow && s_XScreenSaverAllocInfo && s_XScreenSaverQueryInfo) { + s_display = s_XOpenDisplay(nullptr); + } + } + } + + if (!s_display || !s_XScreenSaverAllocInfo || !s_XScreenSaverQueryInfo || !s_XDefaultRootWindow) { + return 0; + } + + XScreenSaverInfo* info = s_XScreenSaverAllocInfo(); + if (!info) return 0; + + int idleSec = 0; + unsigned long root = s_XDefaultRootWindow(s_display); + if (s_XScreenSaverQueryInfo(s_display, root, info)) { + idleSec = (int)(info->idle / 1000); // idle is in milliseconds + } + if (s_XFree) s_XFree(info); + return idleSec; +#endif +} + } // namespace util } // namespace dragonx diff --git a/src/util/platform.h b/src/util/platform.h index 210bbc7..24ca6d7 100644 --- a/src/util/platform.h +++ b/src/util/platform.h @@ -123,6 +123,14 @@ public: * @return Combined daemon RSS in MB, or 0 if no daemon found */ static double getDaemonMemoryUsageMB(); + + /** + * @brief Get system-wide idle time in seconds + * Uses platform-specific APIs: GetLastInputInfo (Windows), + * XScreenSaverQueryInfo via dlopen (Linux), IOKit (macOS). + * @return Seconds since last user input, or 0 on failure + */ + static int getSystemIdleSeconds(); }; /**