Skip to content

feat: Phase 1a : MAUI alpha on .NET 10 (44 components + tests) - #1

Merged
Shewart merged 40 commits into
mainfrom
feat/initial-foundation
Jul 15, 2026
Merged

Shewart merged 40 commits into
mainfrom
feat/initial-foundation

Conversation

@Shewart

@Shewart Shewart commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Takes shellui-native from the 6-month-stale skeleton on main (3 components, .NET 8, docs stubs)
to a working MAUI alpha on .NET 10 with 44 registered components, a compositional overlay
pattern, an xUnit test suite (147 tests), and an Avalonia-ready platform model. See
docs/DEVELOPMENT_PLAN.md for the phased branch strategy and full
Phase 1a checklist.

Scope: 44 files changed (39 modified, 5 new). Cold multi-TFM build is 0 warnings / 0 errors
across net10.0-{android,ios,maccatalyst,windows}. dotnet test is 147/147.

What's new

Platform / infra

  • All projects on .NET 10 — Core, Templates, CLI, tests, and the MAUI demo
  • global.json pins SDK 10.0.100 with rollForward: latestFeature
  • Solution migrated from .sln → .slnx (XML-format, post-.NET-9)
  • CI (ci.yml, pr-check.yml, release.yml) upgraded to dotnet-version: 10.0.x; the
    build-examples job builds MAUI.Demo end-to-end on the Windows head with the MAUI workload
  • CI now runs dotnet test and uploads TRX + coverage artifacts
  • MAUI demo .csproj: WindowsPackageType=None, explicit RuntimeIdentifier=win-x64, explicit
    Microsoft.Maui.Controls + Microsoft.Extensions.Logging.Debug PackageReferences

Platform model — Avalonia-ready

  • NativePlatform.Avalonia added to the enum
  • Avalonia project detection via PackageReference prefix or App.axaml presence
  • Avalonia option in the init prompt and platform-name display
  • CLI description reflects "MAUI or Avalonia"
  • ComponentInstaller warns when the target platform isn't MAUI (templates are MAUI-only until
    Phase 1b — Template System v2 — lands)

Components (44 templates, see docs/COMPONENTS_ROADMAP.md)

  • P0 complete: shell, button, input, label, checkbox, switch, card (+ header/content/footer), separator, badge, progress, alert
  • P1 complete: dialog (+ trigger/content/header/footer/title/description/close), drawer (+ trigger/content), sheet (+ trigger/content), dropdown (+ trigger/content/item), popover (+ trigger/content)
  • P2 partial: textarea, slider, select, radio-group (+ item), date-picker, time-picker
  • All overlays use the compositional Parent + Trigger + Content pattern via the auto-installed element-extensions utility (Element.FindParentOfType<T>())

Template hygiene (regression fixes)

  • All 18 RoundRectangle-using templates now include using Microsoft.Maui.Controls.Shapes; in their Content string (was silently producing non-compiling code on install)
  • All 14 compositional-container Children properties (Card, CardFooter, Dialog{Content,Header,Footer}, DrawerContent, SheetContent, PopoverContent, DropdownContent, RadioGroup) marked new to silence CS0108 against TemplatedView.Children
  • Switch.IsEnabledProperty and Checkbox.IsEnabledProperty marked static new (intentional shadows of VisualElement.IsEnabledProperty)
  • Switch uses _ = TranslateToAsync(...) instead of the obsolete TranslateTo (CS0618)

Tests — new tests/ShellUI.Native.Tests

  • xUnit + Microsoft.NET.Test.Sdk + coverlet, mirroring shellui-blazor's setup
  • 147 tests covering:
    • Every registered component has non-empty Content (all 44 templates)
    • Every template using RoundRectangle imports Microsoft.Maui.Controls.Shapes (regression lock)
    • Every template has the YourProjectNamespace placeholder
    • Every metadata Name matches its registry key
    • Every declared dependency is itself registered (catches typos)
    • ProjectDetector.DetectPlatform maps .csproj XML → NativePlatform for MAUI / Avalonia (both PackageReference and App.axaml paths) / WinUI / WPF / Unknown, plus the MAUI-over-Avalonia precedence edge case
    • NativePlatform.Unknown is default
  • DetectPlatform promoted private → internal + InternalsVisibleTo so tests hit the pure XML→enum core without cwd manipulation

Docs

  • New DEVELOPMENT_PLAN.md — branch strategy, phase deliverables + exit criteria, cross-cutting concerns
  • PLAN.md — WPF → Avalonia phase-2 revision with rationale, Template System v2 section, .NET 10 specs
  • ARCHITECTURE.md — Avalonia detection table + limitation note, project structure with tests/, theming table, planned Avalonia TemplatedControl pattern example
  • COMPONENTS.md — reconciled with the registry: removed stale "Coming Soon" entries, added docs for the 6 P2 form components, updated category summary
  • QUICKSTART.md — .NET 10.0 SDK prereq, platform prereq updated for MAUI-today / Avalonia-Phase-2
  • README.md — Supported Platforms table now MAUI (active) / Avalonia (Phase 2) / WinUI (conditional Phase 3); WPF is detection-only

Verification

  • dotnet build ShellUI.Native.slnx -c Release → 0 warnings, 0 errors (cold multi-TFM, ~13min)
  • dotnet test tests/ShellUI.Native.Tests -c Release → 147/147
  • dotnet build examples/MAUI.Demo/MAUI.Demo.csproj --framework net10.0-windows10.0.19041.0 → green

…sage examples, and updated ASCII logo for ShellUI Native
… links to ShellUI for improved clarity and consistency
…ity and change markup method for logo display
…updating AppShell, and removing unused components for improved organization and clarity
…ton, Card, Icon, Input, Label, ThemeToggle, and their associated styles and variants for enhanced user interface flexibility
…, buttons, inputs, and labels, along with improved event handling for button clicks and loading states
…pdate shellui-native.json with new UI component installations
…nd their associated properties and variants to enhance user interface options
…, Label, Card variants, and Badge for enhanced user interface capabilities
…witch, separator, progress, and alert for enhanced UI capabilities
…t, title, description, trigger, and close for enhanced modal functionality
…downContent, DropdownItem, DropdownTrigger for enhanced dropdown functionality
…ntent, and DrawerTrigger for enhanced overlay functionality
…rContent, and PopoverTrigger for enhanced overlay functionality
…nt, SheetTrigger, and associated utilities for enhanced overlay functionality
…rioritized components, architectural patterns, and usage guidelines for enhanced development clarity
…er, Dialog, Drawer, Dropdown, and Progress for enhanced user interaction and feedback
…uding RadioGroup, RadioGroupItem, Select, Slider, Textarea, TimePicker for enhanced user input functionality
…x, Switch, Progress, Alert, Textarea, Slider, Select, RadioGroup, DatePicker, TimePicker, and overlays for improved user interaction and functionality
Shewart added 10 commits July 12, 2026 23:55
…modifier for IsEnabled and Children properties, ensuring proper shadowing of base class members
… for MAUI-only components in ComponentInstaller
… workflows; enhance CI workflow to restore and test specific projects, and upload test results
…aui.Controls.Shapes' directive and apply 'new' modifier for Children property declarations for proper shadowing
…s to reflect Avalonia support; enhance documentation for platform detection and component usage
…e NativePlatform enum with Avalonia support and detailed comments
…Native.slnx to organize project structure and documentation
…orm, ProjectDetector, and template content validation
…changes in project structure, including support for Avalonia and enhancements in platform detection and component usage
Copilot AI review requested due to automatic review settings July 15, 2026 09:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added documentation Improvements or additions to documentation cli core templates examples ci labels Jul 15, 2026
@Shewart
Shewart merged commit 00b89cb into main Jul 15, 2026
3 of 4 checks passed
@Shewart
Shewart deleted the feat/initial-foundation branch October 6, 2026 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci cli core documentation Improvements or additions to documentation examples templates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants