From 4dcf878a1799e3a85ae13172d5e62aa24a4fc5e4 Mon Sep 17 00:00:00 2001 From: mx57 <38256814+mx57@users.noreply.github.com> Date: Tue, 14 Jul 2026 05:37:24 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Complete:=20UX/UI=20improvements,?= =?UTF-8?q?=20logging=20cleanup,=20and=20anti-exploit=20measures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixed layout bug in `StatsDialog` where points and KPS labels were not displayed correctly. - Added visual `QProgressBar` for locked achievements in `StatsDialog`. - Implemented anti-exploit measures for petting in `InputManager` (500ms cooldown + 30px movement requirement). - Removed redundant `log_event` calls in `TrayMenu` and `InputManager`. - Replaced deprecated `flush_points()` with `flush_all()`. - Added Bolt journal entry for 2026-07-05. --- .jules/bolt.md | 8 ++++ src/core/input_manager.py | 29 +++++++----- src/ui/stats_dialog.py | 50 +++++++++++++++----- src/ui/tray_menu.py | 6 --- verification/screenshots/stats_history.png | Bin 0 -> 21004 bytes verification/screenshots/stats_progress.png | Bin 0 -> 33589 bytes 6 files changed, 65 insertions(+), 28 deletions(-) create mode 100644 verification/screenshots/stats_history.png create mode 100644 verification/screenshots/stats_progress.png diff --git a/.jules/bolt.md b/.jules/bolt.md index c35890c..211b7ef 100644 --- a/.jules/bolt.md +++ b/.jules/bolt.md @@ -62,3 +62,11 @@ ## 2026-07-04 - [Activity History for User Engagement] **Инсайт:** Пользователи ценят возможность видеть историю своих действий (кормление, достижения). Разделение статистики на «Прогресс» и «Историю» через QTabWidget позволяет сохранить компактность окна, предоставляя при этом больше информации. **Действие:** Для логов и списков истории использовать QTabWidget с QListWidget, чтобы не перегружать основной экран статистики. + +## 2026-07-05 - [UI/UX Improvement: Achievement Progress Bars] +**Инсайт:** Текстовое отображение прогресса достижений (например, "5/10") менее информативно и визуально скучно по сравнению с графическими индикаторами. Использование компактных QProgressBar внутри списков достижений позволяет пользователю мгновенно оценить прогресс. +**Действие:** Всегда визуализировать численный прогресс через QProgressBar, если есть четкая цель (goal). + +## 2026-07-05 - [Code Quality: Redundant Event Logging] +**Инсайт:** Логирование событий одновременно в UI-слое (TrayMenu) и в слое логики (InputManager) приводит к дублированию записей в БД. Это замусоривает историю и может сбивать пользователя с толку. +**Действие:** Централизовать логирование ключевых событий (level_up, achievement) в InputManager. В TrayMenu логировать только те действия, которые инициируются напрямую пользователем через меню (кормление, запуск таймера). diff --git a/src/core/input_manager.py b/src/core/input_manager.py index 26ef6c9..8f4d435 100644 --- a/src/core/input_manager.py +++ b/src/core/input_manager.py @@ -60,6 +60,8 @@ def __init__(self, pet_window, data_store=None): self.last_mouse_pos = (0, 0) self.last_input_time = time.time() self.last_purr_time = 0 + self.last_pet_time = 0 + self.last_pet_mouse_pos = (0, 0) self.laser_mode = False self.monitor.key_pressed.connect(self.handle_key) @@ -165,15 +167,14 @@ def add_points(self, points): # Сохраняем в БД только когда накопилось 10 очков (примерно каждые 10 сек активной работы) if self.pending_points >= 10: - self.flush_points() + self.flush_all() # Проверка уровня (визуально можно чаще, используя буферизованные очки) virtual_total = self.last_affection_points + self.pending_points new_level = get_level(virtual_total) if new_level > old_level: - self.flush_points() # Обязательно сбрасываем перед уведомлением - self.db.log_event("level_up", f"Новый уровень: {new_level}") + self.flush_all() # Обязательно сбрасываем перед уведомлением self.window.show_message(f"Уровень дружбы повышен: {new_level} ❤️") self.window.sound_manager.play_sound("happy") self.db.log_event("level_up", f"Уровень повышен до {new_level}") @@ -334,14 +335,20 @@ def handle_mouse(self, x, y): # Оптимизация: сравнение квадрата расстояния (порог 60px -> 3600) if dist_sq_pet < 3600: - if self.window.animation_manager.current_state not in ["playing", "hunting", "shaking"]: - self.window.animation_manager.play_state("playing") - self.pending_stats["petting_count"] += 1 - if self.pending_stats["petting_count"] % 5 == 0: - self.check_for_achievements() - if now - self.last_purr_time > 2.0: - self.window.sound_manager.play_sound("purr") - self.last_purr_time = now + # Анти-фарм: требуем кулдаун 500мс и движение мыши хотя бы на 30пкс с прошлого поглаживания + m_dx = x - self.last_pet_mouse_pos[0] + m_dy = y - self.last_pet_mouse_pos[1] + if now - self.last_pet_time > 0.5 and (m_dx*m_dx + m_dy*m_dy) > 900: + if self.window.animation_manager.current_state not in ["playing", "hunting", "shaking"]: + self.window.animation_manager.play_state("playing") + self.pending_stats["petting_count"] += 1 + self.last_pet_time = now + self.last_pet_mouse_pos = (x, y) + if self.pending_stats["petting_count"] % 5 == 0: + self.check_for_achievements() + if now - self.last_purr_time > 2.0: + self.window.sound_manager.play_sound("purr") + self.last_purr_time = now def toggle_laser_mode(self): self.laser_mode = not self.laser_mode diff --git a/src/ui/stats_dialog.py b/src/ui/stats_dialog.py index afa5377..f287560 100644 --- a/src/ui/stats_dialog.py +++ b/src/ui/stats_dialog.py @@ -45,12 +45,14 @@ def setup_progress_tab(self, widget): # Общие очки и KPS в одной строке stats_row = QHBoxLayout() points_label = QLabel(f"Всего: {points} ❤️") + stats_row.addWidget(points_label) max_kps = self.db.get_stat("max_kps") - kps_label = QLabel(f"Рекорд скорости: {max_kps} кл/сек ⚡") - kps_label.setAlignment(Qt.AlignCenter) - kps_label.setStyleSheet("color: #555; font-size: 11px; margin-bottom: 5px;") - layout.addWidget(kps_label) + kps_label = QLabel(f"Рекорд: {max_kps} кл/сек ⚡") + kps_label.setAlignment(Qt.AlignRight) + kps_label.setStyleSheet("color: #555; font-size: 11px;") + stats_row.addWidget(kps_label) + layout.addLayout(stats_row) # Прогресс бар if points_for_next_level > 0: @@ -88,8 +90,14 @@ def setup_progress_tab(self, widget): ach_item_layout.addWidget(item_label) # Расчет прогресса - progress_text = "" - if not is_unlocked and 'goal' in ach_info and 'stat' in ach_info: + ach_text_layout = QVBoxLayout() + ach_text_layout.setSpacing(2) + + progress_val = 0 + goal = ach_info.get('goal', 0) + show_progress_bar = False + + if not is_unlocked and goal > 0 and 'stat' in ach_info: if self.parent() and hasattr(self.parent(), 'input_manager') and self.parent().input_manager: im = self.parent().input_manager if ach_info['stat'] == 'bonding_points': @@ -106,14 +114,34 @@ def setup_progress_tab(self, widget): if ach_info['stat'] == 'level': current_val, _, _, _ = get_level_info(points) - goal = ach_info['goal'] - if goal > 0: - progress_text = f" ({current_val}/{goal})" + progress_val = current_val + show_progress_bar = True - info_label = QLabel(f"{ach_info['title']}{progress_text}
{ach_info['desc']}") + info_label = QLabel(f"{ach_info['title']}
{ach_info['desc']}") if not is_unlocked: info_label.setStyleSheet("color: #888;") - ach_item_layout.addWidget(info_label) + ach_text_layout.addWidget(info_label) + + if show_progress_bar: + ach_progress = QProgressBar() + ach_progress.setMaximum(goal) + ach_progress.setValue(min(progress_val, goal)) + ach_progress.setFixedHeight(10) + ach_progress.setTextVisible(False) + ach_progress.setStyleSheet(""" + QProgressBar { + border: 1px solid #ddd; + border-radius: 5px; + background-color: #f0f0f0; + } + QProgressBar::chunk { + background-color: #4CAF50; + border-radius: 4px; + } + """) + ach_text_layout.addWidget(ach_progress) + + ach_item_layout.addLayout(ach_text_layout) ach_item_layout.addStretch() scroll_layout.addWidget(ach_widget) diff --git a/src/ui/tray_menu.py b/src/ui/tray_menu.py index 6ee6c32..55a1d1a 100644 --- a/src/ui/tray_menu.py +++ b/src/ui/tray_menu.py @@ -117,8 +117,6 @@ def show_message(self, title, message): def start_work_timer(self, checked=False): if self.window.timer_system: self.window.timer_system.start_pomodoro("work") - if self.window.input_manager and self.window.input_manager.db: - self.window.input_manager.db.log_event("pomodoro_start", "Начало работы") self.window.show_message("Пора работать! 🛠") if self.window.input_manager and self.window.input_manager.db: self.window.input_manager.db.log_event("pomodoro_start", "Начата сессия работы") @@ -126,8 +124,6 @@ def start_work_timer(self, checked=False): def start_break_timer(self, checked=False): if self.window.timer_system: self.window.timer_system.start_pomodoro("break") - if self.window.input_manager and self.window.input_manager.db: - self.window.input_manager.db.log_event("pomodoro_start", "Перерыв") self.window.show_message("Отдыхаем! ☕") if self.window.input_manager and self.window.input_manager.db: self.window.input_manager.db.log_event("pomodoro_start", "Начата сессия отдыха") @@ -152,8 +148,6 @@ def show_stats(self, checked=False): def feed_pet(self, checked=False): self.window.animation_manager.play_state("eating") if self.window.input_manager: - if self.window.input_manager.db: - self.window.input_manager.db.log_event("feeding", "Котик покормлен") self.window.input_manager.add_points(5) self.window.show_message("Мням! +5 ❤️") self.window.input_manager.pending_stats["total_feedings"] += 1 diff --git a/verification/screenshots/stats_history.png b/verification/screenshots/stats_history.png new file mode 100644 index 0000000000000000000000000000000000000000..a212016ab2389939ddadc4ac725baab9f6274759 GIT binary patch literal 21004 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 literal 0 HcmV?d00001 diff --git a/verification/screenshots/stats_progress.png b/verification/screenshots/stats_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..c87fd56c88a0d8891b689517cba9e9f706b981de GIT binary patch literal 33589 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%0AsV>hR`oqKeiz4 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
    92=kx7I(?W$}p$tV{Mw1pd3BjiI-Fv zdC{}WQBJR6m1F6cd(!7vzO}}yOv!eC;ZP8wMR#mGnVX@E�T$nn-FA+v}GR#CAp2aAem>^(y+dSm&`y0QQnO}YwNk5z-v*AtVhvU3m zWL-nrJ+r}XV6VNh=PGb|`Ql}^DSy^luOn9GJayvWDILCHvkAIWDZkH({Qa-u0i2Vz zhvCef@Yj}#I~kSXV**oyPv@a$rgz5~z&}XH*Y1+yUdDB8 z=d-bY8`5=@{~PNUj$nps8dS(hi$l9+m#127KtK)I9Ow5oS1Q5zv?VIf1+x7)oqLzS ztHM_|2YvS~dV9UY!b<;M5woD*%~ZU`6r#VYuHR%-DQN^xn0XUX`uOOa{qT6iG#jca zWvviC%uZFNP*0HXH8_uO-kz~s1>e204|QTv)tt`b4x!SquB_;N{Eno~>dU_`SVYK> z21pG~noTE@g;LcVf?;OpiumB!wm}cU0M9f=ol{EUU5Zv7)-@5rpq+vkGE)W9=)xPc z8}fxkPbVQhHW)snv}jmEB3rm(x?h^Lt1k~|`q9J7m61~(Wj4ycL259G>@O3Gl6!v~ z?gA+Y+2xtBzytS?-aMreW0s|_YeZ?OP=ofcBq6;dAizX3&`!NmB>RQUg^yIIM1vM4 z>5&3GS_`7Y3e^`chS zsCpn%i;f15ALZ$Yvk!)CMz6_J<;CbQ697S4Sd!YCTE0(|-DqKbdk*%i5(OXgET9;c zUrG*5VSAEHJLJp=WGSOM3@P6z(IfgX#5^z=TmOY7DP#}#r2Z8rK@l9QHccyMlmy(# z-RcrZQQ{)gZC0OXx{W{#`8CgNzK}T7#Q(JxEyynpK>uGJJ{2>v9k<=@hv6RdSz?QZ z@d~O4og;ts3i?FVy+ds-=@#mAs`-^e^ee*`a)D_`EPWo*IZV)D}J#rpCnbLdaG>$J9=dM8L4j+d9g zOdlOHReI+^kFRR3nnO&V`&cPXz4fInrC692XXabUkXEQ0u|K-M2z)@DM(#kMR^zgu|)TO>45A;JB zP2RNF9HwsIrfJP@s#{zB%oOZek4!3U!Xm-635v$l%!x}$DJcLa$rjY9M$*y>Ry%2U z*uXojv^+GjQe6mIvyiT{nA~DV_~{;f@HG(P$4Q5G2ieeXB2OH9u$)OO*lTP*w)HR* zp-nL8SSs>`A zWW)X8xI;I3K6NY)dEwJah=dz(8H3=7qQLUh+h#P1rXM1FGK6?pQSuHp#S zBnr>vbgj#_PD-F9y)ZE>#LVa$zeOsA1K%zOTP-Xd;&EvvKkqZPE^RX5~G?1a(a=2m%sXWdOB9QUUzFHN`59J zAlP@EkG*HD;iEHGLHnnI`ZYYq5Gz6BpZsDlzxlMW)-cPyzVcxN=ZAZq*wxtDLc6;@ zJBSLIb?s_v+1nt9;rwRj3}pldJqeSgDAUkL)wo==(Us}B?ll+Jz)?n(5fA9of1;rq zZ$W~Zs~x>Xt{s^~%6V)DM?1DzE2K1hZt<+fdC(L#(WJrYlZX&w%uTiXYTjUync8 z6EJ+ck;6As&=nJ? z2g(!fN)V4EAnEx)DcfNlvgVXt%!IToD+qI4Y6Oi6~@rL~%iJEpT&`2K*2AuwO|HyRhk$&_t+-Yi0 z%n{ybaHPF}8-C zQ%u4&g}^$TKN0K1_T%!EKx|@S%+BSQjc&nf>&$~g^Uu?(4Fj8_mTLK!j_38b!0b6bGZG zN02!G)Gx=^Im_<$@;;Gh^3)nNef>`~~ zq7aboeE_3Qw=6a%WKsawE`IqJ12hty=S4_?TdeYIu6m<)mSjczjK!sIXN6SKmSo7~ z;DDcyp2?N9$64i=9qMCxv0R%Rh&%N%HEqYL}`DR38rY`*OQMo{O|r11ybfipR?3MX`!!hx>qbGlIN*TbqMnR zFXl<$cx0(R1iMF^1>bn+PrV2wr<1us#`<=n$L`Cxd9dc~El{Lt;g;W0u(d8+!L23& zF%%i5sAdTRo(r&Ps(E$FXL|Qhd-t(P1Lnrxu;GF5RBSQpE&_9~K4wg3`56Uiw*=PZ zd{;z1b%g)Gql^-iS0S|=qhGI9f&c(#r^zXJ^osAot|zd7r|!O3o)1=CU@MfakoyCS zn2$NSWBTGxaGJa?RIBXM%UJO~@KDu5OBem;)0-j^tyxCb8Vcs9BwUrO5CO@<* z6SK1$iIOC23A27<*yTWitDL`jqIz)O#ewnWD?V&caWX8LM_Y&rG`SwXmL zbXl{7;|}(CP}HS<1+zHd_iXFCm`A_bCOdjfkg{$=$jc;*H;+LuVaKk+U`-%5AHVZ+ zbZXk08k=MS>yo>Jux;Vs)}a#+mtV_>pBD>`QqMSpt!|oGCSwhX0EEz*zVMUKQw=LB zE}^^iv2C6-y0|f47K~S%SHq4k2IuzD)d**>O|fl7viu7i@s*73fdaTG>#Hh#QXv3X z9;*U>nktFH3TBEQCV$!YDs*#aQMWo(%c3A)5!f0Wx1jeT=ccc`uiLRL_&V*<2@4z=n2d6F$9H{|@_$1$ z$;FV;av&%q!mkj)5F3s>f#(bkE&i!wGa+rut+tMtgw@5+bg|vn;{!=8#EF|Gc%kee5dV!>BgEU^ya@yDh1(RQGD zAKv#|-j{}In{0_rbj`$;6I*YDY6pxVptST$!4!4M=#MmLqf>_#O)V{WI5^X^)5oiw zpFe-rG1`=Lb#IZdef_?gKu}8xYgk)o^Oe&nyxu}jCu0%&o$jGj{pMb6Y|`#&5|bdy zll)l&D?lA3f=J&(iI<*su3>pQK2%?6Pd=d$UzjgU47qyo7WaC^ZG~M(0Qg%*#kp+$ zzpA%2wh3l|#<;$`Ju3`LN+lR!qU0SifhHO?>gB3s-krq+TtC&x z1Ec~5cN9y$8!{g$RL`m>CynkA#vEv11*Q7ygP-0!4P`IZk%AzIqWvGJ!X{f#e8DTr zhx-438T^(n`#5$j+Dau(=SQIwRH<5JO#c;T#A9`wjEdt1re)Iqjwa}XBLHY&qNH)n zYap7D<#C|%uZhOTjSBwdx`d|muN5)F_Z>}?zMIJZ519FM!N(*_=ZI}o<=SX4$vgl* zhaLu*N{kslx@Tc)o6}Lo_z84g88#0zcpy@zojrLP#y;zj2^&FGMTP%uThi~7p?_Gv zVT*P&l@RQfIi|73pHEExN@0XU@qanGNgvGMSmk15~_tO?2#JnP|?hH zGKv+;A|&pM{YkcVyzVxc3>W*Qh`+xU#X%Vix0u&?Hs9!5-1e2(Tn&hch>(_rL&^mn zl~jMf&9_O=T5a#H<*ec^`Q9B4^SYFOTY0FFjcab$eK@G_5}k;9EAbK;97HB<#a~&jFq%zs#;G?`h^ANb|T-Qy9}jRHc#_np=Awb|C_>7OD;b+a#oCw zH2@xDhrr4?I=N9^o?C%e`brt}!>Tx7Zh%T+#yhG)M0xOBh^%4n&V_BybOUJb*a{pq zsd$e~T6x&THu;`=b9}VTLsiCESQU%NKDXB4wamz)tsfsHzwTMpAD^5~+M>3i;aZ}e z=S`BZ+L@g?<$2NZu@ayWR9QHTU(L67Tylv28F%nyx z(Ofw0^d0k`2g$@0ldI~f*71O#l{F3}nKLRYuia+1KLiY=Kpp6fJ3Jp4Hc27XARt2j zs8+%qwXU%#X?c*{|CF8D39K*>7y<)EC+ekBFG@dCV$u-LQtE5X%PLDW5mW~SeR@2b>E7(lgjVPde~LLD*Z7piRKmxqf%?3lUUm;1Ao zHrI9#XQd3>uf?)G{7`vh+5Jtg4 z+fHO9N+@cetyB71RKZvn&Q`TtYw|PvqRYLemJv375u+|#ymy>EO6Lv2JB$8~Q?Pyh z*!xl@|!2i(Vg2ZPEFm&RVKR zIJ?acTX!5euEylV@batGbxb;}Mm{uR+re|e67`(a=Gt=W()5jU+O6wH34JzSzNn*D zT{mpBxYxDjIVN(XMjgXAni$R-2e*295=h!eE-5vq#hf>CVi2|>iBN}8JKIXQwqAh6!r};2*|h#b`lm4(&tDm5 z>ESSmyEQ8s+uOY+hMj=cnl5mCa3(2`ZPB7ErxTE&V)J&U?!K&WFK4(yrHGUK^5x4u zYawVQe(t9i@&nBR&+(yz6y^hSfD9&vj07!L|Br*!c{DyKMiXR)(F@2&fn=WYYPA^m zW)AG#QqR3cfxL2?wYWP)AJc)DBE5BO`(W z36yiTN< zZMu`R-LMG&dS86{f$YhF8U$ISq+bfOh2VWf)!V7Dm{ANmZGJpw*JH!Q`_2|de;os6 z&FtY5gvT(L8|Y3T8fNhBs|+hIsR}~9P6}wyJdVhT~2PW>GdbVc({T!@;%xpHu?C?!)0Kf z?fOBwy;=1VFz+jvh|%>2!xm00BzUl#slQ5c`6Fju|D!6x@MHV;Lz-_D+zIP)j?*=M+zE~y91AbsI zp7P!|Nknd4@8^tqp?OT=Ku=jp)2vy&XA>1RZkhv*I~pCeir->Vi&Xa6+~Y_Qy|X(Ga>f$_CLxz2RzKiFX6*o$K^ zU9ECq%tH%a`=1@}!y*bobo;P@oncV#OC;(52GFgpaP`(_7(^vNo;(i@jZH>e9FT%W z@o6dqEJ&>VzMv{|^r`n~f-EP-UhU&5$LBR8J~)qf{IU|PeS_a+a-=)T_pQx8@o=il zlD9PuOuAf`K@y^5M9SiYE?hgy6Kep40Udk(dAq6597Yb2}N8 zBJGAX>TK(X5D7y7Hs+>8j=r*EyBf@2r&Q^^wy|+6-kj@Qyf4c;jx+&)I4l_)0OY+q zc`JODf%{Nfvek<Demw#8lQ_<4?U1N+bu(;{;v1&-TZks57GWh z<;Q)^#fQYsa@9T__3YmDNd7lw3+OA66kp%kv<)tw-+{7=)g+OKzIRl5{EmmVzFKyt zH<-{yo9FLW8_@)>!|-tsRPPH!T8>?DWza!HAPZ95chM_t6e9%e-Zx|{K`SLeH?H-4 zQwl?9N8#vGY5LE6T^wvnFuJDH9SjQBj5&{K4U$`-(m#czSI3Q7{}_=x$L*y zvz?MSa+1=pL|>}uRYXRU$Pj!H)Z@LYv3=*cs9^lfoV?pne;hbz^PW6csPQta_x|E< zCnOyCG@wVIdq;)3@7`iQ8S~Drru|YZ_0qi~d-(FwjcxSt^CPbAn8@$ou==#>{c%S; z{575t)xsw%Z=n=1%aM0q|K*A2@AMr_Bs#LbT9KoFmZHH%xzx!#;Pf(y=J0Sm~kGDw>Ovpl? zLg}ATw?b{2t~#}&zvxi-9FDzj@#8wP5i{irSZASwK5+E_$If5-bY%% z6!Uj-Ql*OJct6`^qTnxZ8FAC#%ul9rCIYX>6F|IQ&BMUf`}@VAXN0>rQ_b&FfO@uM m7gqoZ6R2