Skip to content

Added initial UI integration and plugin manager#77

Merged
mdwigley merged 1 commit intoenterlucent:mainfrom
mdwigley:issue#69-mdwigley
Sep 5, 2025
Merged

Added initial UI integration and plugin manager#77
mdwigley merged 1 commit intoenterlucent:mainfrom
mdwigley:issue#69-mdwigley

Conversation

@mdwigley
Copy link
Member

@mdwigley mdwigley commented Sep 5, 2025

Description

This PR extends the application bootstrap process and navigation system to enable full plugin-contributed UI integration. Plugins can now dynamically contribute styles, main navigation pages, and settings pages, which are automatically registered with the host at runtime.

Key changes include:

  • Bootstrapper Enhancements

    • Loads plugin-provided style resources (IPluginStyleInclusion) into Application.Current.Styles.
    • Registers navigation pages defined by IPluginPages into MainViewModel.
    • Adds settings pages from IPluginSettingsPages into the consolidated settings hub.
    • Provides basic handling for duplicate or missing resources.
  • Navigation & Settings Hub

    • Added a permanent Settings entry in navigation that opens the consolidated settings hub.
    • Introduced SettingsView / SettingsViewModel and SettingsPluginsView / SettingsPluginsViewModel.
    • Integrated a Plugin Manager to list installed plugins with basic metadata.
    • Prepared framework for plugin-specific settings integration.

Related Issue

Motivation and Context

This change establishes the foundation for runtime UI extensibility, allowing plugins to seamlessly extend navigation, settings, and styles without manual configuration. It reduces wiring overhead for plugin developers and provides a consistent integration point for end users.

How Has This Been Tested?

Only basic smoke testing was performed using MockPlugin for basic functionality. Future updates will include proper automated test coverage.

Screenshots (if appropriate):

  • NA

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Asset change (adds or updates icons, templates, or other assets)
  • Documentation change (adds or updates documentation)
  • Plugin change (adds or updates a plugin)

Checklist:

  • I have read the CONTRIBUTING document.
  • My change requires a change to the core logic.
    • I have linked the project issue above.
  • My change requires a change to the assets.
    • I have linked the asset issue above.
  • My change requires a change to the documentation.
    • I have linked the documentation issue above.
  • My change requires a change to a plugin.
    • I have linked the plugin issue above.

@mdwigley mdwigley self-assigned this Sep 5, 2025
@mdwigley mdwigley added the approved Change issue has been accepted for implementation label Sep 5, 2025
@mdwigley mdwigley merged commit f1424f4 into enterlucent:main Sep 5, 2025
3 checks passed
@mdwigley mdwigley deleted the issue#69-mdwigley branch September 5, 2025 07:55
mdwigley added a commit that referenced this pull request Sep 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment