Skip to content

Release v3.0.0 - Major Feature Update

Choose a tag to compare

@boexler boexler released this 08 Oct 11:47
· 100 commits to master since this release

🎉 What's New in v3.0.0

This major release brings significant enhancements to the NLogViewer control library, including new filtering capabilities, improved control buttons, dynamic column visibility, subscription management for docking systems, and an upgrade to .NET 8.

✨ New Features

🔍 Filter Buttons

  • New filter functionality to hide/show specific log levels (Trace, Debug, Info, Warn, Error, Fatal)
  • Toggle buttons for each log level with intuitive filtering
  • Programmatic control through new filter properties
  • Visibility control for the entire filter button group
  • XAML binding support for MVVM scenarios

🎛️ Enhanced Control Buttons

  • Improved UI for control buttons with better visual design
  • Visibility control for the entire control button group
  • Enhanced documentation with comprehensive usage examples
  • Better integration with existing AutoScroll, ClearCommand, and Pause functionality

📊 Dynamic Column Visibility

  • Hide/show individual columns (ID, Level, TimeStamp, LoggerName)
  • Programmatic control through new dependency properties
  • XAML binding support for dynamic column management
  • Message column remains always visible for core functionality

🔗 Subscription Management

  • New StartListen()/StopListen() methods for manual subscription control
  • Docking system support - fixes subscription disposal when undocking controls
  • Memory leak prevention with proper subscription cleanup
  • Enhanced lifecycle management for complex UI scenarios

🚀 .NET 8 Upgrade

  • Upgraded from .NET 6 to .NET 8 for better performance and latest features
  • Updated dependencies to latest compatible versions
  • Improved build pipeline with updated GitHub Actions

🛠️ Technical Improvements

Build & Infrastructure

  • Updated GitHub Actions workflow with latest artifact upload actions
  • Improved build pipeline reliability
  • Enhanced project structure and dependencies

UI/UX Enhancements

  • Better Visual Studio designer experience with improved design-time data context
  • Fixed design-time issues with problematic d:DataContext attributes
  • Improved ListViewLayoutManager column resizing timing

Code Quality

  • Enhanced type checking in GetChildObjects method
  • Improved tree traversal with cycle detection
  • Better error handling and edge case management

📋 Breaking Changes

⚠️ Target Framework Change: This release upgrades from .NET 6 to .NET 8. Applications using this library will need to target .NET 8 or later.

🔧 Migration Guide

For Filter Functionality

// New filter properties available
nLogViewer.TraceFilter = true;  // Hide Trace entries
nLogViewer.DebugFilter = true;  // Hide Debug entries
nLogViewer.ShowFilterButtons = false; // Hide filter group

For Column Visibility

// New column visibility properties
nLogViewer.ShowIdColumn = false;
nLogViewer.ShowLevelColumn = false;
nLogViewer.ShowTimeStampColumn = false;
nLogViewer.ShowLoggerNameColumn = false;

For Docking Systems

// New subscription management methods
private void OnDockChanged(object sender, DockChangedEventArgs e)
{
    nLogViewer.StartListen(); // Required after undocking
}

📦 Package Information

  • Package ID: Sentinel.NLogViewer
  • Target Framework: .NET 8
  • Dependencies: NLog 5.2.4, System.Reactive 6.0.0
  • NuGet: Available on nuget.org

🐛 Bug Fixes

  • Fixed subscription disposal issues in docking systems (Issue #90)
  • Improved Visual Studio designer experience
  • Enhanced ListViewLayoutManager column resizing
  • Better error handling for edge cases

📚 Documentation

  • Comprehensive README updates with new feature documentation
  • Detailed usage examples for all new functionality
  • Migration guides for breaking changes
  • Enhanced API documentation

🔗 Related Issues & PRs

  • PR #115: Add filter buttons functionality
  • PR #114: Fix subscription disposal when undocking viewer parent container
  • PR #113: Update to .NET 8
  • PR #112: Add column visibility functionality
  • PR #108: Various improvements and fixes
  • PR #107: Fix type checking in GetChildObjects
  • PR #106: Additional improvements
  • PR #105: Fix build pipeline

🎯 What's Next

This release establishes a solid foundation for future enhancements. We're planning additional features for upcoming releases including:

  • Enhanced export functionality
  • Improved performance optimizations
  • Additional customization options

🙏 Acknowledgments

Thank you to all contributors and users who provided feedback and suggestions that made this release possible!


Full Changelog: v2.0.1...v3.0.0