Skip to content

feat(avalonia): add scheduler integration packages - #145

Merged
glennawatson merged 4 commits into
mainfrom
CP_add-avalonia-sequencers
Jul 25, 2026
Merged

feat(avalonia): add scheduler integration packages#145
glennawatson merged 4 commits into
mainfrom
CP_add-avalonia-sequencers

Conversation

@ChrisPulman

Copy link
Copy Markdown
Member

What kind of change does this PR introduce?

A feature addition that migrates Avalonia dispatcher scheduling into paired lean and System.Reactive integration packages.

What is the new behavior?

  • Adds ReactiveUI.Primitives.Avalonia with ReactiveUI.Primitives.Concurrency.AvaloniaScheduler implementing ISequencer through the shared coalescing dispatch state.
  • Adds ReactiveUI.Primitives.Avalonia.Reactive with ReactiveUI.Primitives.Reactive.Concurrency.AvaloniaScheduler implementing the System.Reactive scheduler surface through CoalescingDispatchScheduler.
  • Preserves AvaloniaScheduler.Instance, Dispatcher, and configurable DispatcherPriority, while binding both posted and delayed work to the selected Avalonia dispatcher.
  • Adds Avalonia.Headless TUnit tests for net8.0, net9.0, net10.0, and net11.0, plus public API baselines and NuGet packaging integration.
  • Documents the new packages, selection guidance, migration commands, dependencies, target frameworks, and repository layout.

What is the current behavior?

Avalonia scheduling lives in the ReactiveUI.Avalonia repository and is not available as a standalone ReactiveUI.Primitives lean or System.Reactive integration package.

Checklist

  • Tests have been added or updated (for bug fixes / features)
  • Docs have been added or updated (for bug fixes / features)
  • Changes target the main branch
  • PR title follows Conventional Commits

Additional information

Validation completed locally:

  • Full Release solution build: 0 warnings, 0 errors.
  • Full Microsoft Testing Platform run: 11,900 passed, 0 failed, 0 skipped.
  • New package test matrices: net8.0 through net11.0 pass for both variants.
  • Representative net10 scheduler coverage through Mtpunittestmcp: 100% line and 100% branch coverage for both AvaloniaScheduler classes.
  • Both projects produce Release NuGet packages successfully.

Ready work follows the established Primitives coalescing sequencer pattern. This intentionally replaces the legacy scheduler's inline zero-delay execution with queued/coalesced dispatcher execution.

Packages:
- add lean ISequencer and System.Reactive AvaloniaScheduler integrations
- bind ready and delayed work to the selected dispatcher and priority
- add central Avalonia package versions, target frameworks, solution entries, and API baselines

Tests:
- add Avalonia.Headless TUnit suites for net8.0 through net11.0
- cover singleton configuration, dispatch threading, delays, validation, and cancellation

Documentation:
- add package badges, selection guidance, scheduler behavior, migration commands, and repository layout entries
- exclude paired platform implementations from Sonar duplication analysis
@codecov

codecov Bot commented Jul 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.12%. Comparing base (37841ed) to head (3aaa3a1).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #145      +/-   ##
==========================================
+ Coverage   98.10%   98.12%   +0.01%     
==========================================
  Files         676      678       +2     
  Lines       20940    20983      +43     
  Branches     2528     2531       +3     
==========================================
+ Hits        20544    20589      +45     
+ Misses        197      195       -2     
  Partials      199      199              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread .github/workflows/sonarcloud.yml Outdated
Package catalog:\n- synchronize README and skill metadata with all 20 packable projects\n- document the standalone R3 bridge analyzer package\n- identify Extensions.Core as source-only implementation code\n\nFramework guidance:\n- correct the current MAUI, Avalonia, platform, and generator target frameworks\n- align package layering and dependency descriptions with evaluated project files
Remove the unintended Avalonia entries from sonarCpdExclusions so the new packages remain subject to the repository's normal SonarCloud duplication checks. The workflow now matches current main.
@ChrisPulman
ChrisPulman marked this pull request as ready for review July 25, 2026 15:39
@sonarqubecloud

Copy link
Copy Markdown

@glennawatson
glennawatson merged commit 6ded101 into main Jul 25, 2026
13 checks passed
@glennawatson
glennawatson deleted the CP_add-avalonia-sequencers branch July 25, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants