|
| 1 | +# BlueMeter v1.4.4 Release Notes |
| 2 | + |
| 3 | +## 🐛 Bug Fixes |
| 4 | + |
| 5 | +### Critical Crash Fix: Mouse-Through Mode Interaction |
| 6 | + |
| 7 | +**Issue**: Application crashed when interacting with the damage meter window after disabling mouse-through mode following a long raid. |
| 8 | + |
| 9 | +**Error**: `System.Windows.Markup.XamlParseException: A TwoWay or OneWayToSource binding cannot work on the read-only property 'EffectiveDamage'` |
| 10 | + |
| 11 | +**Problems Identified**: |
| 12 | +1. **XAML Binding Mode**: WPF attempted to create two-way bindings on read-only computed properties |
| 13 | +2. **Template Context**: Bindings within popup templates defaulted to TwoWay mode in certain contexts |
| 14 | +3. **Crash Trigger**: Occurred when hovering over player stats after untoggling mouse-through mode |
| 15 | + |
| 16 | +**Fixes Applied**: |
| 17 | + |
| 18 | +#### 1. Fixed EffectiveDamage Binding (`DpsStatisticsView.xaml:308`) |
| 19 | +- **Explicit OneWay mode** added to `EffectiveDamage` binding |
| 20 | +- Prevents WPF from attempting two-way binding on read-only property |
| 21 | +- Property computes: `DamageTaken + DamageMitigated` |
| 22 | + |
| 23 | +#### 2. Fixed MitigationPercent Binding (`DpsStatisticsView.xaml:321`) |
| 24 | +- **Explicit OneWay mode** added to `MitigationPercent` binding |
| 25 | +- Property computes: `(DamageMitigated / EffectiveDamage) × 100` |
| 26 | + |
| 27 | +#### 3. Fixed EffectiveTps Binding (`DpsStatisticsView.xaml:327`) |
| 28 | +- **Explicit OneWay mode** added to `EffectiveTps` binding |
| 29 | +- Property computes: `EffectiveDamage / Duration` |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## 🔧 Technical Details |
| 34 | + |
| 35 | +### Root Cause Analysis |
| 36 | + |
| 37 | +**The Problem**: |
| 38 | +- Three computed properties in `StatisticDataViewModel` are read-only (no setters): |
| 39 | + - `EffectiveDamage` (line 26) |
| 40 | + - `MitigationPercent` (line 31) |
| 41 | + - `EffectiveTps` (line 38) |
| 42 | +- XAML bindings in the `PopupTemplate` didn't explicitly specify `Mode=OneWay` |
| 43 | +- WPF's default binding mode in template contexts sometimes defaults to `TwoWay` |
| 44 | +- When popup was instantiated during mouse-over, WPF tried to create two-way binding |
| 45 | +- **Result**: Immediate crash with XamlParseException |
| 46 | + |
| 47 | +**The Solution**: |
| 48 | +- Add explicit `Mode=OneWay` to all three bindings |
| 49 | +- Forces WPF to use one-way binding regardless of context |
| 50 | +- Properties remain read-only as designed |
| 51 | +- Popup template loads successfully |
| 52 | + |
| 53 | +### When Did This Crash Occur? |
| 54 | + |
| 55 | +The crash was triggered by this specific sequence: |
| 56 | +1. Long raid in progress (damage meter tracking data) |
| 57 | +2. Mouse-through mode enabled during raid |
| 58 | +3. User disables mouse-through mode |
| 59 | +4. User hovers mouse over player stats to view popup |
| 60 | +5. WPF attempts to render popup template |
| 61 | +6. **CRASH**: Two-way binding fails on read-only property |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## 🎯 What's Fixed |
| 66 | + |
| 67 | +- ✅ No more crashes when interacting with damage meter after disabling mouse-through mode |
| 68 | +- ✅ Tank stats popup displays correctly (Effective Damage, Mitigation %, Effective TPS) |
| 69 | +- ✅ All popup tooltips work reliably |
| 70 | +- ✅ Computed properties remain read-only (correct design) |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +## 📦 Installation |
| 75 | + |
| 76 | +Download the latest release and extract to your preferred location. This hotfix resolves a critical crash affecting users who toggle mouse-through mode during raids. |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +**Thank you for using BlueMeter!** 🎉 |
0 commit comments