Skip to content

Update for Dynamic Plugin Pages and Settings Hub Integration #72

@mdwigley

Description

@mdwigley

Task Description

Enhance the application’s dependency injection setup and MainViewModel logic to support dynamic discovery and navigation of plugin-contributed pages, as well as seamless integration of the consolidated settings hub (including the plugin manager). This will ensure that:

  • Plugin pages are correctly injected, registered, and displayed in the navigation menu at runtime.
  • The SettingsView and SettingsPluginsView are permanently available in navigation as part of the settings hub.
  • Navigation actions seamlessly switch between plugin pages and the settings hub without errors or conflicts.
    The outcome is a consistent and extensible navigation system that dynamically adapts to plugins and always provides a unified settings hub entry.

Acceptance Criteria

  • Dependency injection registers SettingsView, SettingsViewModel, SettingsPluginsView, and SettingsPluginsViewModel with the service provider.
  • MainViewModel maintains a dynamic collection (MainPageItems) that includes both core app pages and plugin-contributed pages at runtime.
  • A permanent "Settings" entry exists in the navigation that opens the consolidated settings hub (with plugin manager included).
  • Selecting any plugin page updates the displayed main content to the correct view and viewmodel.
  • Navigation gracefully handles missing or invalid plugin pages without breaking the app.

Steps to Complete

  • Update App.axaml.cs to register SettingsView and SettingsViewModel in the DI container.
  • Update Bootstrapper to register SettingsPluginsView and SettingsPluginsViewModel.
  • Extend MainViewModel to maintain a permanent settings entry and support dynamic injection of plugin-provided pages.
  • Implement navigation logic to switch to the settings hub when "Settings" is selected.
  • Ensure plugin page descriptors are properly resolved, instantiated, and added to the navigation menu.

Stakeholders / Reviewers

  • PlugHub Core Engineering Team
  • Plugin Developers
  • End Users

Dependencies / Blockers

Metadata

Metadata

Assignees

Labels

approvedChange issue has been accepted for implementationenhancementNew feature or request

Type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions