Snap release/2.0-stable to release/2.0-experimental - #6634
Merged
agniuks merged 44 commits intoJul 21, 2026
Merged
Conversation
…it/DCPP build 20260602.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1024.260527-1035.1 -> To Version 2.0.0-stable-27200.1026.260601-1300.3 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.15 -> To Version 2.0.16-stable-Rolling.20260602.3
…ly pre-prune + test infra) [release/2.0-stable cherry-pick] (#6535) * RuntimeCompatibilityOptions: Containment v2 foundation (catalog + Apply pre-prune + cpp-local release enum) [release/2.0-stable cherry-pick] Cherry-pick of the Containment v2 foundation to release/2.0-stable. Companion to PR #6534 on main. The diff is the same shape as PR #6534 with one important difference: s_catalogGroupsProd is populated with the eight production change IDs shipping on the 2.0 servicing branch, grouped under WinAppSDK_2_1_0 and WinAppSDK_2_1_5 (file-local enumerators in RuntimeCompatibilityOptions.cpp's anonymous-namespace WinAppSDKReleaseVersion enum). This is what lets Apply pre-prune the disabled list correctly for apps pinned below those releases. The release-version enum (formerly named WinAppSDKPatchVersion in FrUdk's public header) is now WASDK-internal and lives only in Apply's .cpp - in the anonymous namespace, named WinAppSDKReleaseVersion to sidestep the visible-name collision with the still-unscoped legacy FrUdk enum. The FrUdk-side rename to WinAppSDKPatchVersionDeprecated + UINT32(-1) sentinel happens in companion ADO PR 15764977 (os.2020). The two existing 2-arg production callsite macros on this branch (#define WINAPPSDK_CHANGEID_61684930 in dev/ApplicationData/M.W.S.ApplicationData.cpp and #define WINAPPSDK_CHANGEID_62382643 in dev/MRTCore/.../Helper.cpp, both expanding to ", WinAppSDK_2_1_5") are NOT migrated in this PR. The new catalog encodes the same patch association, so the worker's existing patch check and Apply's pre-prune both agree (belt-and- suspenders, no semantic conflict). Macro migration to the 1-arg form will happen in a follow-up PR alongside the Microsoft.FrameworkUdk package bump (companion to PR 3 on main); that PR is gated on the os.2020 FrUdk publish. Validation: TestAll.ps1 on x64 Debug runs CompatibilityTests with the catalog populated; 6/6 pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * RuntimeCompatibilityOptions: sync WinAppSDKReleaseVersion comment with merged #6534 wording The merged version of #6534 on main refined the WinAppSDKReleaseVersionFromValues helper's preamble comment to explicitly call out release engineering's catalog-growth role. Forward-port that wording to the 2.0 cherry-pick so the two diverge only on the intentional branch-specific deltas (populated catalog enumerators, populated s_catalogGroupsProd, and the FrUdk-bump-pending comment in Apply). --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…it/DCPP build 20260605.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1024.260527-1035.1 -> To Version 2.0.0-stable-27200.1027.260605-1010.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.15 -> To Version 2.0.16-stable-Rolling.20260605.2
…it/DCPP build 20260609.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1024.260527-1035.1 -> To Version 2.0.0-stable-27200.1028.260608-1010.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.15 -> To Version 2.0.16-stable-Rolling.20260609.1
…rOnStable Bring in the Removal of the MinorUpdateLibrary task and the Revision numbers to stable
…c1-9144-4b4f-b90c-58a097e7cc03
…ngs() (#6558) (#6566) * Fix bad regkey path for ApplicationData.GetForUnpackaged().LocalSettings() (#6558) * Fix bad regkey path for ApplicationData.GetForUnpackaged().LocalSettings() * Fixed Clear*() * Removed obsolete references to Roaming* * Fixed tests to use consistent test data --------- Co-authored-by: Scott Jones <sjones@microsoft.com> * Added containment * Incorporated feedback * Revert "Incorporated feedback" This reverts commit c045b9a. --------- Co-authored-by: Scott Jones <sjones@microsoft.com>
…c1-9144-4b4f-b90c-58a097e7cc03
…it/DCPP build 20260617.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1024.260527-1035.1 -> To Version 2.0.0-stable-27200.1029.260616-0840.3 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.15 -> To Version 2.0.16-stable-Rolling.20260617.1
…7c1-9144-4b4f-b90c-58a097e7cc03 [release/2.0-stable] Update DCPP and Containment v2
…it/DCPP build 20260622.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1030.260622-0700.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260622.2
…it/DCPP build 20260629.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1031.260629-0710.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260629.1
…it/DCPP build 20260630.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1032.260629-2200.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260630.1
…ateInstance failures (#6568) * Fix UniversalBGTask crash and gracefully handle CoCreateInstance failures (#6507) UniversalBGTask::Task::Run could crash backgroundTaskHost.exe in two scenarios: 1. When LocalSettings has no entry for the task's TaskId, ApplicationDataContainerSettings::Lookup returns S_OK with a null IInspectable. The subsequent unbox_value<guid> then throws hresult_no_interface, and because the broker treats the failure as transient it re-fires the trigger forever. 2. When CoCreateInstance fails (e.g. the COM class isn't registered against the package), the wrapped THROW_IF_FAILED produced no diagnostic context. Fix: - If LocalSettings.Lookup returns null, log via wil and unregister the orphaned OS task so the broker stops re-firing it. - If CoCreateInstance fails, log the HR with the CLSID and TaskId and return cleanly. The registration is left in place so the broker can retry on the next trigger in case the failure is transient. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * [2.0 Servicing] Add containment for UniversalBGTask::Task::Run crash fix (bug 62755661) Wrap the crash-hardening behavior behind WINAPPSDK_CHANGEID_62755661 (WinAppSDK_2_2_2) and add the RuntimeCompatibilityChange.UniversalBGTask_RunCrash enum entry so apps can opt out via RuntimeCompatibilityOptions. * Update dev/WindowsAppRuntime_UniversalBGTaskDLL/Task.cpp Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> * [2.0 Servicing] Fix build break: import FrameworkUdk targets in UniversalBGTaskDLL Task.cpp now includes <FrameworkUdk/Containment.h> for the containment fix, but WindowsAppRuntime_UniversalBGTaskDLL.vcxproj did not import the Microsoft.FrameworkUdk targets, so the FrameworkUdk include directory was missing from the compiler command line, causing: Task.cpp(10,10): error C1083: Cannot open include file: 'FrameworkUdk/Containment.h': No such file or directory Import Microsoft.FrameworkUdk.targets (which adds the include path and the Microsoft.Internal.FrameworkUdk.lib link dependency) plus the matching package-restore Error check, mirroring the existing pattern used by Microsoft.Windows.ApplicationModel.Resources.vcxproj and other Containment consumers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com>
…it/DCPP build 20260701.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1033.260630-2330.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260701.1
…it/DCPP build 20260701.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1033.260630-2330.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.17
…n.Details.xml to #6513 state (#6592) * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260617.1" This reverts commit 78720cd. * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260609.1" This reverts commit 7a2bed8. * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260605.2" This reverts commit 85f0069. * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260602.3" This reverts commit b9c6dc6. * Keep Microsoft.FrameworkUdk at post-bump 260616-0840.3 so 1-arg IsChangeEnabled callsites compile The revert to #6513 downgraded FrameworkUdk to the pre-bump build, whose IsChangeEnabled template lacks the defaulted patchVersion param, breaking the 1-arg callsites in Helper.cpp and Task.cpp (C2672). Keep FrameworkUdk post-bump while leaving InteractiveExperiences reverted to 2.0.15 to fix the NuGet restore failure.
…it/DCPP build 20260705.3 On relative base path root Microsoft.FrameworkUdk From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1034.260705-0915.2 Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1024.260527-1035.1 -> To Version 2.0.0-stable-27200.1034.260705-0915.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.15 -> To Version 2.0.17-stable-Rolling.20260705.3
…it/DCPP (#6594) Microsoft.FrameworkUdk: 2.0.0-stable-27200.1029.260616-0840.3 -> 2.0.0-stable-27200.1033.260630-2330.1 Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage: 2.0.0-stable-27200.1024.260527-1035.1 -> 2.0.0-stable-27200.1033.260630-2330.1 Microsoft.WindowsAppSDK.InteractiveExperiences: 2.0.15 -> 2.0.17
…it/DCPP build 20260708.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1033.260630-2330.1 -> To Version 2.0.0-stable-27200.1036.260708-1000.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.17 -> To Version 2.0.17-stable-Rolling.20260708.3
…it/DCPP build 20260708.4 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1033.260630-2330.1 -> To Version 2.0.0-stable-27200.1036.260708-1000.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.17 -> To Version 2.0.17-stable-Rolling.20260708.4
Add 2.3.0 runtime compatibility enums
…it/DCPP build 20260709.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1033.260630-2330.1 -> To Version 2.1.0-stable-27200.1036.260708-1000.3 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.17 -> To Version 2.1.1
…on/_git/WindowsAppSDKClosed build 2.0.0-stable.20260709.4 On relative base path root Microsoft.WindowsAppSDK.AppLicensingInternal.TransportPackage From Version 2.0.0-stable.20260423.1 -> To Version 2.0.0-stable.20260709.4
…71-4ad2-4e2e-81a5-f3f80a993420
…b71-4ad2-4e2e-81a5-f3f80a993420 [release/2.0-stable] Update dependencies from microsoft/LiftedIXP/DCPP
…88-b005-41dc-bfa5-6735c5a7c80a
…588-b005-41dc-bfa5-6735c5a7c80a [release/2.0-stable] Update dependencies from microsoft/ProjectReunion/WindowsAppSDKClosed
WinUI PR 16052384 (bug 62927180) merged the GetKeyboardModifiersState race fix into release/2.0-stable with containment gate WINAPPSDK_CHANGEID_62927180, but the corresponding RuntimeCompatibilityChange enum was missing from Foundation, leaving apps unable to opt out of the change. Add the enum in numeric order.
…keyboardmodifiers Add WindowsServices_GetKeyboardModifiersStateRace enum (62927180)
Containment v2 (2.0 train) requires the catalog entry alongside the IDL enum. Fold WindowsServices_GetKeyboardModifiersStateRace (62927180) into s_changes_2_3_0[] in ascending order so RuntimeCompatibilityOptions::Apply's pre-prune walk covers it.
…80-keyboardmodifiers Add 62927180 to 2.3.0 containment catalog group
…6603) (#6612) * Cherry-pick MrmGetFilePathFromName S_OK fallback (gated) into release/2.0-stable Cherry-picks PR #6603 into release/2.0-stable, but gates the behavior change behind a RuntimeCompatibilityOptions containment check so apps can disable it. MrmGetFilePathFromName is documented to always succeed and return a best-effort path even when no PRI file exists. On 2.0-stable it fails with ERROR_FILE_NOT_FOUND, which makes `new ResourceManager()` throw when there is no resources.pri (the XAML-island / no-PRI scenario). Because this changes an HRESULT from a failure to S_OK, the change is contained under WINAPPSDK_CHANGEID_63048673: - Enabled (default): MrmGetFilePathFromName returns S_OK with a non-null best-effort path (the provided filename, else resources.pri) under the base directory (if set) otherwise the module directory. - Disabled (via RuntimeCompatibilityOptions): behavior reverts byte-for-byte to the current 2.0-stable behavior (ERROR_FILE_NOT_FOUND). Both terminal search passes jump to Final, skipping the DefaultFallback pass. Changes: - MRM.cpp: gate the reachable DefaultFallback pass + S_OK return on IsChangeEnabled<WINAPPSDK_CHANGEID_63048673>(). Add #include <FrameworkUdk/Containment.h> and an inline #define for the change ID, following the existing 62382643 precedent in Helper.cpp. Preserve the module directory since the parent-folder search mutates exeDir in place. - MRM.vcxproj: link the FrameworkUdk Containment worker (targets import + EnsureNuGetPackageBuildImports). - MrmUnitTest.vcxproj: deploy Microsoft.Internal.FrameworkUdk.dll next to the test host (mrm.dll now imports it). - Helper.cpp (GetDefaultPriFile): inside the existing 62382643 block, gate the sparse-packaged [modulename].pri fallback on actual file existence (CheckFile) so it still fires once MrmGetFilePathFromName returns S_OK. Correct whether 63048673 is enabled or disabled; preserves 62382643 behavior. - MrmTests.cpp: strengthen GetFilePath to assert the fallback path is under the module directory. - BypassTests.json: remove the now-passing UnitTest::BasicTest::GetFilePath and MrtCoreUnpackagedTests.TestClass.DefaultResourceManager entries so they gate. Note for release engineering: per the ContainmentV2 model this PR only defines and gates the change ID; associating 63048673 to a release group in RuntimeCompatibilityOptions.cpp's s_catalogGroupsProd[] is the separate branch-cut step. Verified locally (x64 Debug): MrmUnitTest 21/21 (change enabled by default). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add unit test confirming pre-fix behavior when fallback change is disabled Adds ContainmentDisabledTest::GetFilePathFallbackDisabled to MrmUnitTest. It disables WINAPPSDK_CHANGEID_63048673 via the FrameworkUdk containment worker (WinAppSdk::Containment::SetConfiguration) and verifies MrmGetFilePathFromName reverts to the previous behavior: ERROR_FILE_NOT_FOUND (null path) for a non-existent PRI file, instead of S_OK with a best-effort path. The class uses IsolationLevel=Method so it runs in its own process. This is required because IsChangeEnabled<>() caches its result in a process-lifetime function-local static, so the disabled-state test must not share a process with BasicTest::GetFilePath (which exercises the enabled default state). MrmUnitTest.vcxproj: import the FrameworkUdk targets so the test can call the Containment worker (mrm.dll already imports Microsoft.Internal.FrameworkUdk.dll, deployed next to the test host). Verified locally (x64 Debug): MrmUnitTest 22/22, including both the enabled (GetFilePath) and disabled (GetFilePathFallbackDisabled) cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lease/2.0-experimental-20260717
Contributor
Author
|
/azp run |
|
Azure Pipelines: Successfully started running 1 pipeline(s). 2 pipeline(s) were filtered out due to trigger conditions. |
…get for LiftedIXP Shas)
Contributor
Author
|
/azp run |
|
Azure Pipelines: Successfully started running 1 pipeline(s). 2 pipeline(s) were filtered out due to trigger conditions. |
…lease/2.0-experimental-20260717
Contributor
Author
|
/azp run |
|
Azure Pipelines: Successfully started running 1 pipeline(s). 2 pipeline(s) were filtered out due to trigger conditions. |
ssparach
approved these changes
Jul 21, 2026
agniuks
deleted the
user/autosnap/snap-to-release/2.0-experimental-20260717
branch
July 21, 2026 22:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated snap from release/2.0-stable to release/2.0-experimental
Source commit: 783728c
IMPORTANT: Do NOT squash merge this PR!
Use 'Merge (preserve all commits)' to maintain the complete commit history.