Skip to content

Releases: caaatto/BlueMeter

v1.5.6

15 Dec 18:04

Choose a tag to compare

BlueMeter v1.5.6

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.5.6-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

15 Dec 17:29

Choose a tag to compare

BlueMeter v1.5.5

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.5.5-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

13 Dec 12:07

Choose a tag to compare

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.cs enum with extension methods for FPS/interval conversion
  • Modified DpsStatisticsViewModel.cs to use dynamic UI update throttle based on user setting
  • Updated BattleLogQueue.cs to support global batch timeout configuration
  • Added GlobalBatchTimeout property that syncs with UI refresh rate
  • Increased default batch size from 100 to 300 for better throughput
  • Added OnDpsRefreshRateChanged handler in AppConfig.cs to 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() with Background priority in DpsStatisticsSubViewModel.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() in DpsStatisticsViewModel.cs (lines 1049-1071)
  • Changed from UpdateData() to PerformUiUpdate() 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 BossDeathDelaySeconds from 8 to 5 in DataStorageV2.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 DpsRefreshRate property (default: Low = 20 FPS)
    • Added OnDpsRefreshRateChanged handler to update BattleLogQueue timeout (lines 290-295)
    • Automatically syncs refresh rate with queue batch processing
  • BlueMeter.WPF/ViewModels/DpsStatisticsViewModel.cs

    • Changed _uiUpdateThrottle from 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
  • BlueMeter.WPF/ViewModels/DpsStatisticsSubViewModel.cs

    • Changed _dispatcher.Invoke() to _dispatcher.BeginInvoke() (line 98)
    • Added DispatcherPriority.Background for sorting operations (line 120)
    • Moved UpdateItemIndices() inside BeginInvoke block for consistency
    • Added comment explaining non-blocking UI approach
  • 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.DpsRefreshRate with 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 GlobalBatchTimeout static property for UI-controlled timeout (line 36)
    • Changed _batchTimeout from 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 batchSize from 100 to 300 (line 50)
    • Default timeout remains 50ms if not overridden
  • BlueMeter.Core/Data/DataStorageV2.cs

    • Reduced BossDeathDelaySeconds from 8 to 5 (line 37)

Testing Notes

DPS Refresh Rate:

  1. Open Settings β†’ Performance
  2. Verify DPS Refresh Rate dropdown is visible with 4 options
  3. Start combat and change refresh rate from Low to Minimal
  4. Observe immediate reduction in update frequency (numbers update slower)
  5. Change to High and observe faster updates
  6. Tab into game with Low/Minimal and verify reduced lag compared to before
  7. Tab out and use Medium/High for smoother monitoring

UI Thread Performance:

  1. Join a raid or World Boss Carnage with 10+ players
  2. Observe smooth UI interactions (clicking, scrolling) during combat
  3. Verify no stuttering or freezing when player list updates

Boss Death Delay:

  1. Defeat a boss in a raid
  2. Observe meter transitions to [Last Battle] within 5-6 seconds
  3. 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:

  1. Open Settings β†’ Performance
  2. Test different DPS Refresh Rates to find your optimal setting
  3. Suggested starting point: Low (20 FPS) for most users
  4. If experiencing lag in-game: Switch to Minimal (10 FPS)
  5. 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

10 Dec 22:49

Choose a tag to compare

BlueMeter v1.5.3

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.5.3-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

09 Dec 14:23

Choose a tag to compare

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 anguyen2015 for reporting the crash with detailed error logs

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.5.2-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

08 Dec 22:20

Choose a tag to compare

BlueMeter v1.5.1

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.5.1-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

08 Dec 20:41

Choose a tag to compare

BlueMeter v1.5.0

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.5.0-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

08 Dec 13:17

Choose a tag to compare

BlueMeter v1.4.7

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.4.7-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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

08 Dec 12:50

Choose a tag to compare

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, _timeoutSectionClearedOnce flag was set to true
  • Manual reset via ResetData() or ResetFullData() 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 = false reset in both ResetData() and ResetFullData() methods
  • Wrapped in proper _sectionTimeoutLock synchronization
  • 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:

  1. Report issues on GitHub: https://github.com/caaatto/BlueMeter
  2. 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

04 Dec 07:42

Choose a tag to compare

BlueMeter v1.4.5

πŸš€ Installation Options

Option 1: Professional Installer (Recommended for most users)

  1. Download BlueMeterSetup.exe
  2. Double-click to run the installer
  3. Follow the setup wizard
  4. .NET 8.0 will be automatically installed if needed
  5. BlueMeter will launch automatically after installation

Option 2: Portable Build (For developers/advanced users)

  1. Download BlueMeter-v1.4.5-windows-x64.zip
  2. Extract the ZIP file
  3. Double-click setup.bat
  4. 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.