Implement Provider Pattern for Changelog Viewers and Split WebView2 Package#731
Open
w4po wants to merge 3 commits intoravibpatel:masterfrom
Open
Implement Provider Pattern for Changelog Viewers and Split WebView2 Package#731w4po wants to merge 3 commits intoravibpatel:masterfrom
w4po wants to merge 3 commits intoravibpatel:masterfrom
Conversation
Implements a flexible plugin system for displaying changelog content with multiple viewer options: - Add IChangelogViewer interface for viewer implementations - Add RichTextBox viewer for simple text display - Add WebBrowser viewer for legacy IE-based browser - Add WebView2 viewer for modern Edge WebView2 - Add ChangelogViewerFactory for viewer instantiation Users can now: - Choose their preferred viewer type via AutoUpdater.ChangelogViewerType - Load content directly as text or from URL (where supported) - Extend the system with custom viewer implementations The system automatically handles viewer initialization, cleanup, and fallback behavior when preferred viewers are unavailable.
- Move WebView2 viewer into its own NuGet package to reduce core dependencies - Implement extension-based architecture for changelog viewers - Add auto-discovery of viewer extensions at runtime - Update core package to dynamically load WebView2 when available - Remove WebView2 dependency from core package - Clean up project structure and dependencies This change makes the WebView2 viewer optional, reducing the core package size and dependencies. Users who want WebView2 support can install the additional package, while the core functionality remains lightweight.
f40dbeb to
4710dbd
Compare
…kage Introduce a new package for rendering Markdown changelogs with enhanced styling and flexibility: - Add AutoUpdater.NET.Official.Markdown package with modern CSS styling and emoji support - Implement composite viewer pattern allowing to use and viewer like Webview2/WebBrowser/RichTextBox - Improve documentation with XML comments and see tags - Update build scripts to include Markdown package compilation - Bump version to 1.9.5.1 across all packages - Update copyright year to 2025 The new Markdown package provides: - GitHub-style Markdown rendering - Customizable viewer priority system - Support for both WebView2 and WebBrowser rendering - Proper cleanup handling for viewer resources
4710dbd to
bedddef
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR introduces a flexible provider pattern for changelog viewers, splits the WebView2 functionality into a separate package, and adds a new Markdown package for enhanced changelog rendering. These changes improve the modularity, extensibility, and maintainability of the AutoUpdater.NET library.
Features
Multiple Viewer Options:
Content Loading Options:
User Configuration:
AutoUpdater.ChangelogViewerProviderExtensibility:
IChangelogViewerinterface for custom viewersKey Changes
1. Provider Pattern Implementation
IChangelogViewerProviderinterface for implementing custom changelog viewersChangelogViewerFactoryto manage and create viewer instances2. Package Split
AutoUpdater.NET.Official.WebView2)AutoUpdater.NET.Official.Markdown)3. Markdown Support
Segoe UI Emojifont4. Configuration and Control
AutoLoadExtensionsproperty to control automatic loading of viewer extensionsChangelogViewerProviderproperty for explicit viewer selection5. Default Viewers
Benefits
Breaking Changes
None. All changes are backward compatible:
Usage Example
Testing Notes
Future Considerations
Related Issues
#470 #496 #73 #692