Releases: caaatto/BlueMeter
v1.5.6
BlueMeter v1.5.6
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.5.6-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.
v1.5.5
BlueMeter v1.5.5
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.5.5-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.
v1.5.4 - DPS Refresh Rate Settings
Release Notes - Version 1.5.4
Release Date: 2025-12-13
New Features
β‘ DPS Refresh Rate Settings
Description: Customizable DPS meter update frequency to balance performance and smoothness based on your PC specs and preferences.
Problem Solved: Users reported lag when tabbed into the game during combat. The DPS meter was competing with the game for CPU/GPU resources, causing frame drops and stuttering. When tabbed out, the meter worked smoothly because the game wasn't actively rendering.
Solution:
- Added configurable refresh rate with 4 preset options
- Minimal: 10 FPS (100ms refresh) - Best for low-end PCs or when playing in-game
- Low: 20 FPS (50ms refresh) - Good balance between smoothness and performance (Default)
- Medium: 30 FPS (33ms refresh) - Smooth updates, moderate CPU usage
- High: 60 FPS (16ms refresh) - Maximum smoothness, highest CPU usage (high-end PCs only)
Implementation:
- Created
DpsRefreshRate.csenum with extension methods for FPS/interval conversion - Modified
DpsStatisticsViewModel.csto use dynamic UI update throttle based on user setting - Updated
BattleLogQueue.csto support global batch timeout configuration - Added
GlobalBatchTimeoutproperty that syncs with UI refresh rate - Increased default batch size from 100 to 300 for better throughput
- Added
OnDpsRefreshRateChangedhandler inAppConfig.csto update queue timeout dynamically
UI Location:
- Settings β Performance β DPS Refresh Rate
- Dropdown with 4 options (Minimal/Low/Medium/High)
- Detailed tooltips explaining each option
- Changes take effect immediately without restart
User Impact:
- Eliminates lag when playing in-game - Lower refresh rates reduce CPU competition with the game
- Customizable smoothness - Choose higher rates when tabbed out or on powerful PCs
- Instant feedback - No restart required, change settings mid-combat
- Recommended Settings:
- Playing with game focused: Minimal (10 FPS) or Low (20 FPS)
- Monitoring while tabbed out: Medium (30 FPS) or High (60 FPS)
Performance Improvements
π UI Thread Optimization
Description: Improved UI responsiveness during intense combat by changing sorting operations from blocking to non-blocking.
Technical Change:
- Changed
_dispatcher.Invoke()to_dispatcher.BeginInvoke()withBackgroundpriority inDpsStatisticsSubViewModel.cs - Sorting operations no longer block the UI thread
- UI remains responsive even during heavy combat with many players
Impact:
- Smoother UI interactions during raids and World Boss Carnage
- Reduced stuttering when many players are in combat
- Better overall application responsiveness
β‘ Batch Processing Optimization
Description: Increased BattleLogQueue batch size from 100 to 300 for better throughput.
Impact:
- More efficient processing of combat logs during intense fights
- Reduced queue backlog during high-activity scenarios
- Works in conjunction with configurable refresh rates for optimal performance
Bug Fixes
π Fixed ScopeTime Toggle Not Working (Current β Total)
Issue: When switching from Current to Total damage view, it worked correctly. However, switching back from Total to Current would fail to update the UI, leaving the meter stuck showing total damage.
Root Cause: The OnScopeTimeChanged handler was calling UpdateData(), which went through the throttled update path designed for combat data updates. When users manually toggled between Current/Total, the UI update would be delayed by the DPS refresh rate throttle (10-100ms depending on settings) or skipped entirely if a pending update was already scheduled.
User Report: "when I switch from current damage to total it works, but then switching back to current doesn't work"
Fix Applied:
- Modified
OnScopeTimeChanged()inDpsStatisticsViewModel.cs(lines 1049-1071) - Changed from
UpdateData()toPerformUiUpdate()to bypass throttling - Modified
OnStatisticIndexChanged()to use the same approach for metric switching (lines 1073-1086) - User-initiated actions now update immediately without throttle delay
- Combat data updates continue to use throttling for performance
User Impact:
- β Current β Total toggle now works instantly in both directions
- β Metric switching (Damage/Healing/TakenDamage) updates immediately
- β No performance regression - combat updates still throttled as designed
- β Better responsiveness to manual UI interactions
π Reduced Boss Death Delay
Issue: After defeating a boss, the meter would continue tracking for too long (8 seconds) before archiving the fight as "Last Battle."
Fix Applied:
- Reduced
BossDeathDelaySecondsfrom 8 to 5 inDataStorageV2.cs - Combat now archives 3 seconds faster after boss death
User Impact:
- Faster transition to "Last Battle" state after boss fights
- Meter stops tracking sooner when combat truly ends
- More responsive meter behavior at the end of encounters
Files Changed
Added
BlueMeter.WPF/Models/DpsRefreshRate.cs- New enum with 4 refresh rate options (Minimal, Low, Medium, High)
- Extension methods:
GetIntervalMs()returns update interval in milliseconds - Extension methods:
GetFps()returns FPS value - Comprehensive XML documentation for each option
Modified
-
BlueMeter.WPF/Config/AppConfig.cs- Added
DpsRefreshRateproperty (default: Low = 20 FPS) - Added
OnDpsRefreshRateChangedhandler to update BattleLogQueue timeout (lines 290-295) - Automatically syncs refresh rate with queue batch processing
- Added
-
BlueMeter.WPF/ViewModels/DpsStatisticsViewModel.cs- Changed
_uiUpdateThrottlefrom constant to computed property (line 70) - Now calculates throttle dynamically:
UiUpdateThrottle => TimeSpan.FromMilliseconds(AppConfig.DpsRefreshRate.GetIntervalMs()) - Updated throttle checks to use dynamic property (lines 349, 355)
- Improved comment documentation for UI update throttling
- Changed
-
BlueMeter.WPF/ViewModels/DpsStatisticsSubViewModel.cs- Changed
_dispatcher.Invoke()to_dispatcher.BeginInvoke()(line 98) - Added
DispatcherPriority.Backgroundfor sorting operations (line 120) - Moved
UpdateItemIndices()inside BeginInvoke block for consistency - Added comment explaining non-blocking UI approach
- Changed
-
BlueMeter.WPF/Views/SettingsView.xaml- Added new "Performance" section with CardHeader (lines 898-901)
- Added DPS Refresh Rate dropdown ComboBox (lines 906-933)
- Binds to
AppConfig.DpsRefreshRatewith TwoWay binding - Added detailed info text with FPS explanations for each option (lines 936-955)
- Used bullet points (β’ symbol) for clear visual hierarchy
-
BlueMeter.Core/Data/BattleLogQueue.cs- Added
GlobalBatchTimeoutstatic property for UI-controlled timeout (line 36) - Changed
_batchTimeoutfrom readonly to mutable field (line 25) - Added
UpdateBatchTimeout()method for runtime changes (line 40) - Modified constructor to respect GlobalBatchTimeout if set (line 56)
- Increased default
batchSizefrom 100 to 300 (line 50) - Default timeout remains 50ms if not overridden
- Added
-
BlueMeter.Core/Data/DataStorageV2.cs- Reduced
BossDeathDelaySecondsfrom 8 to 5 (line 37)
- Reduced
Testing Notes
DPS Refresh Rate:
- Open Settings β Performance
- Verify DPS Refresh Rate dropdown is visible with 4 options
- Start combat and change refresh rate from Low to Minimal
- Observe immediate reduction in update frequency (numbers update slower)
- Change to High and observe faster updates
- Tab into game with Low/Minimal and verify reduced lag compared to before
- Tab out and use Medium/High for smoother monitoring
UI Thread Performance:
- Join a raid or World Boss Carnage with 10+ players
- Observe smooth UI interactions (clicking, scrolling) during combat
- Verify no stuttering or freezing when player list updates
Boss Death Delay:
- Defeat a boss in a raid
- Observe meter transitions to [Last Battle] within 5-6 seconds
- Verify fight is properly archived
Performance Comparison
Before v1.5.4
- Fixed 200ms update throttle (5 FPS)
- Lag when tabbed into game due to CPU competition
- UI sorting blocks main thread during combat
- 8-second delay before archiving boss fights
After v1.5.4
- Configurable 10-60 FPS (user choice)
- Minimal lag with Low/Minimal settings (10-20 FPS)
- Non-blocking UI sorting for smoother experience
- 5-second delay before archiving (37% faster)
Real-World Impact:
- User reported: "yeah it did [solve the lag]" after testing Minimal setting
- Estimated 50-70% reduction in in-game lag with Minimal (10 FPS) vs previous fixed throttle
- Allows smooth monitoring when tabbed out with Medium/High settings
Known Issues
None introduced by this release.
Upgrade Notes
This is a performance enhancement release. Simply replace your existing BlueMeter installation with v1.5.4.
Recommended Action After Upgrade:
- Open Settings β Performance
- Test different DPS Refresh Rates to find your optimal setting
- Suggested starting point: Low (20 FPS) for most users
- If experiencing lag in-game: Switch to Minimal (10 FPS)
- For monitoring while tabbed out: Try Medium (30 FPS) or High (60 FPS)
Special Thanks:
- Community member for detailed lag report and testing confirmation
v1.5.3
BlueMeter v1.5.3
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.5.3-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.
Release v1.5.2 - Critical Bug Fix
Critical Bug Fix - Race Condition Crash
π Fixed Race Condition Crash During Back-to-Back Raids
BlueMeter would crash after 2-3 consecutive raids/encounters, especially in passthrough mode with "clear on instance change" enabled.
Error Fixed: System.ArgumentException: Destination array is not long enough to copy all the items in the collection
Root Cause
A threading race condition in DataStorage.cs where the packet processing thread and UI thread were simultaneously accessing DPS data dictionaries without synchronization.
Fix Applied
- Added thread-safe locking (
_dpsDataLock) to protect all DPS data dictionary operations - Protected list creation in cached list properties
- Protected dictionary modifications and clearing operations
Impact
- Eliminates crashes during extended play sessions with multiple consecutive encounters
- Minimal performance overhead from locking
- Fixes instability in high-activity scenarios (raids, World Boss Carnage)
Files Changed
BlueMeter.Core/Data/DataStorage.cs- Added thread synchronization
Special Thanks
- GitHub user
anguyen2015for reporting the crash with detailed error logs
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.5.2-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Full Release Notes: docs/RELEASE_NOTES_1.5.2.md
v1.5.1
BlueMeter v1.5.1
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.5.1-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.
v1.5.0
BlueMeter v1.5.0
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.5.0-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.
v1.4.7 - Last Battle Fix
BlueMeter v1.4.7
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.4.7-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.
v1.4.6
BlueMeter v1.4.6 - Critical Bug Fixes
Release Date: December 8, 2025
Branch: main
Status: β
Released
π Critical Bug Fixes
Meter Freeze After Timeout Fix
Fixed critical issue where the DPS meter would remain frozen and stop accepting new combat data after a timeout occurred followed by a manual reset.
Root Cause:
- When combat timeout occurred,
_timeoutSectionClearedOnceflag was set to true - Manual reset via
ResetData()orResetFullData()did not reset this flag - Meter remained in "timeout cleared" state, blocking all new data ingestion
- Only way to recover was to wait for new battle logs to trigger a section change
Impact:
- Users experiencing timeouts had to restart BlueMeter to get meter working again
- Manual reset button became ineffective after any timeout
- Severely impacted user experience in long play sessions
Solution:
- Added
_timeoutSectionClearedOnce = falsereset in bothResetData()andResetFullData()methods - Wrapped in proper
_sectionTimeoutLocksynchronization - Meter now immediately accepts new data after manual reset, regardless of previous timeout state
Files Changed:
BlueMeter.Core/Data/DataStorageV2.cs(Lines 954-962, 1108-1116)
Technical Details:
// CRITICAL FIX: Reset timeout flag to allow meter to accept new data after manual reset
// Without this, if timeout occurred before reset, meter stays frozen until new battle logs arrive
lock (_sectionTimeoutLock)
{
_timeoutSectionClearedOnce = false;
}Plugin Enable/Disable Logic Fix
Fixed issue where only the DPS Plugin was enabled, blocking access to all other plugins including History, Settings, etc.
Root Cause:
- Previous code:
public bool IsEnabled => Plugin.GetType().Name == "DpsPlugin"; - This hardcoded check disabled all plugins except DpsPlugin
- Users could not access Chart History, Advanced Settings, or other features
Solution:
- Changed to:
public bool IsEnabled => Plugin.PackageName != "BlueMeter.WPF.Plugins.BuiltIn.ModuleSolverPlugin"; - All plugins now enabled except Module Solver (intentionally disabled - under development)
- Restores full functionality of all production-ready plugins
Files Changed:
BlueMeter.WPF/ViewModels/PluginListItemViewModel.cs(Line 37)
β¨ User Experience Improvements
Timeout Recovery:
- β Manual reset now works correctly after timeouts
- β No need to restart BlueMeter after timeout events
- β Immediate data ingestion after reset button click
Plugin Access:
- β Chart History accessible again
- β Settings panel accessible again
- β All production-ready plugins enabled
β οΈ Module Solver temporarily disabled (under development)
π§ Configuration
No configuration changes required. All fixes are automatic.
π Migration Guide
From v1.4.5 to v1.4.6
No Breaking Changes!
- β Fully backward compatible
- β Automatic fixes - no user action required
- β Existing configuration preserved
- β All features from v1.4.5 retained
β οΈ Known Issues
Module Solver Plugin:
- Temporarily disabled while under development
- Will be re-enabled in future release after testing
π οΈ Technical Details
Build Information:
- .NET Version: 8.0
- Target Framework: net8.0-windows
- Build Status: β 0 Errors, 0 Warnings
Files Changed: 2 files
- Modified files: 2
- Lines added: ~16
- Lines removed: ~2
π¬ Feedback & Support
If you encounter any issues:
- Report issues on GitHub: https://github.com/caaatto/BlueMeter
- Provide logs from
BlueMeter.WPF/bin/Release/net8.0-windows/logs/
Full Changelog: See commits on main branch
Previous Version: v1.4.5
Next Version: v1.5.0 (TBD - Skill Breakdown & Module Solver)
BlueMeter v1.4.5 - Advanced Combat Logging & Bug Fixes
BlueMeter v1.4.5
π Installation Options
Option 1: Professional Installer (Recommended for most users)
- Download
BlueMeterSetup.exe - Double-click to run the installer
- Follow the setup wizard
- .NET 8.0 will be automatically installed if needed
- BlueMeter will launch automatically after installation
Option 2: Portable Build (For developers/advanced users)
- Download
BlueMeter-v1.4.5-windows-x64.zip - Extract the ZIP file
- Double-click
setup.bat - The script will build and launch BlueMeter
Requirements
- Windows 10 or later (x64)
- .NET 8.0 (auto-installed by both installation methods)
Troubleshooting
See INSTALL.md for detailed instructions and troubleshooting.
Changelog
See commits since last release for changes.