Skip to content

Component: Smrt.Settings.UI.WinUI3

Canonical source: SmrtApps/src/Smrt.Settings.UI.WinUI3/README.md (mirrored below)


Smrt.Settings.UI.WinUI3

Overview & Responsibilities

  • Reusable WinUI 3 Settings pages and controls shared by SmrtHub host apps.
  • Defines the Settings page stack (page types, deep-link targets) to keep navigation stable across shells.
  • UI-only: does not own config/state/secrets persistence.
  • UI can request host-provided diagnostics operations via an injected contract.

Non-Responsibilities

  • Does not own the Settings window shell (that is SettingsHost).
  • Does not store secrets (credential entry is hosted via Providers UI and ultimately delegated to Smrt.CloudProviders).
  • Does not define its own operational data slug.

Configuration

  • This component does not define or persist configuration.
  • Host apps (e.g., SettingsHost) own config/state via Smrt.Config and related stores.

Operational Data (Paths)

  • This component does not write logs/config/state directly.
  • Host apps own operational data paths and must follow README.Files/System/Policies/SmrtHub-Operational-Data-Policy-v1.0.README.md.

Observability & Logging

  • UI surfaces should remain safe-by-default: never log secrets.
  • Avoid logging profile identifiers and other potentially sensitive metadata unless explicitly approved.

Support Bundle

  • This component does not directly emit support bundles.
  • Host apps should rely on Support Bundle tooling to include their logs and diagnostics.
  • The Diagnostics page invokes host actions via Services/ISettingsDiagnosticsActions.cs.

Current State

  • The library project exists and is ready to host the Settings page stack.
  • Pages are migrated from SettingsHost so the host can be a thin shell.

Key files and folders

  • Navigation/SettingsNavigation.cs — stable section keys, alias normalization, and page-type mapping (used by SettingsHost).
  • Navigation/SettingsNavigationViewModel.cs — ViewModel-level selection + persistence logic (store is injected by the host).
  • Models/ProvidersPageArgs.cs — optional deep-link args used to target the Providers page (vendor/profile preselection).
  • Models/DiagnosticsPageArgs.cs — navigation args used to inject host diagnostics actions into the Diagnostics page.
  • Services/ISettingsDiagnosticsActions.cs — host-provided contract for diagnostics operations (logs export + SmrtSupport presets).

Pages

  • Pages/ProvidersPage.xaml — hosts Smrt.CloudProviders.UI.WinUI3 provider management UI.
  • Pages/DiagnosticsPage.xaml — local-first diagnostics actions (host-injected).
    • Unified HTML logs export.
    • SmrtSupport presets (Assist / Legal / Compliance).

Key Integrations

  • Smrt.UI provides theming resources; consuming apps should merge Smrt.UI dictionaries at startup.
  • Smrt.CloudProviders.UI.WinUI3 is hosted inside the Providers page.

Testing & Validation

  • Build: dotnet build SmrtApps/src/Smrt.Settings.UI.WinUI3/Smrt.Settings.UI.WinUI3.csproj -c Debug -r win-x64
  • Unit tests: dotnet test SmrtApps/src/Smrt.Settings.UI.WinUI3.Tests/Smrt.Settings.UI.WinUI3.Tests.csproj -c Debug -r win-x64
  • Run C# tests via repo scripts under Tools/Run-Tests/.

Theming and DPI validation

Manual validation checklist (recommended when adding/modifying XAML):

  • Light/Dark + High Contrast mode rendering is readable and uses theme resources.
  • Per-monitor DPI scaling does not clip controls and preserves spacing at common scales (100%, 150%, 200%).
  • Keyboard focus visuals remain visible and consistent.
  • Embedded provider management surfaces (Smrt.CloudProviders.UI.WinUI3) remain visually coherent inside Settings.

Policy References

  • Documentation: README.Files/System/Policies/SmrtHub-Documentation-Policy-v1.0.README.md
  • UI theming: README.Files/System/Policies/SmrtHub-UI-Theming-Policy.README.md
  • WinUI3 DPI discipline: README.Files/System/Policies/SmrtHub-WinUI3-DPI-Discipline.README.md
  • Privacy/security: README.Files/System/Policies/SmrtHub-Privacy-and-Security-Policy.README.md
  • Operational data: README.Files/System/Policies/SmrtHub-Operational-Data-Policy-v1.0.README.md
  • Settings host: SmrtApps/CSApps/SettingsHost/README.md
  • vNext plan: README.Files/SmrtHub-vNext-Architecture/Plans/Smrt.Settings.UI.WinUI3.plan.md