Skip to content

Dev/bc public api phase4#23619

Open
ramezgerges wants to merge 23 commits into
feature/breakingchangesfrom
dev/bc-public-api-phase4
Open

Dev/bc public api phase4#23619
ramezgerges wants to merge 23 commits into
feature/breakingchangesfrom
dev/bc-public-api-phase4

Conversation

@ramezgerges

Copy link
Copy Markdown
Contributor

GitHub Issue: closes https://github.com/unoplatform/uno-private/issues/2126

PR Type:

What changed? 🚀

PR Checklist ✅

ramezgerges and others added 16 commits July 1, 2026 22:56
BC08: NavigatingCancelEventArgs ctor -> internal.
BC11: PageStackEntry.SourcePageType setter -> internal.
BC12: Frame.BackStack setter -> internal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tighten members that are public in Uno but non-public/absent in WinUI:
BC09: ComboBox.OnIsDropDownOpenChanged -> private protected.
BC15: seal PropertyPath.
BC20: FrameworkPropertyMetadata.DefaultUpdateSourceTrigger -> internal.
BC22: IMenu/IMenuPresenter/ISubMenuOwner -> internal.
BC24: hide BrushConverter from IntelliSense.
BC25: Border.ChildProperty -> internal.
BC28: CompositionSpriteShape.StrokeDashArray setter -> internal.
BC48: MaterializableList<T> -> internal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC57: ToggleButton/TextBox/ToggleSwitch implemented the internal
IFrameworkTemplatePoolAware.OnTemplateRecycled as a public method;
move to explicit-interface implementation to match WinUI surface.
Update the runtime test to invoke through the interface.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC62: rename the misspelled Application.TraceProvider.LauchedStart/
LauchedStop constants to LaunchedStart/LaunchedStop (#13709).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC64: Duration.TimeSpan was a mutable public field; make it a get-only
property to match WinUI. Unary + returns the operand unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Check off the 14 completed Phase 4 visibility/signature items.
BC16: dropped (pooled DependencyPropertyChangedEventArgs already
captures the allocation win; struct stays disabled).
BC41: blocked/deferred (Microsoft.UI.Input.PointerPoint is not
reachable from Uno.UI.Composition without relocating the type).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC17: XamlCompositionBrushBase.CompositionBrush public -> protected.
BC19: remove Uno-only FlyoutBase.Close() (synonym of Hide()); callers
      and tests use Hide().
BC36: ContentPresenter.ContentTemplateRoot public -> internal (WinUI
      exposes it only on ContentControl, which stays public).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC34: remove TextBox's empty OnVerticalContentAlignmentChanged override
and narrow ContentPresenter.OnVerticalContentAlignmentChanged from
protected virtual to private protected (not a WinUI extensibility point).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC65: FrameworkElement and ContentControl implemented IEnumerable
(+ GetEnumerator) which WinUI does not. Remove the interface and its
members. Symmetric removal, so compile-safe on all targets; native-WASM
build to be confirmed on CI (wasm-tools unavailable locally).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC43: remove the op_Explicit binary-compat shim on
      Microsoft.UI.Input.PointerPoint (implicit operators stay).
BC49: remove the empty no-op RestoreBindings()/ClearBindings() from
      DependencyObjectStore and stop the DependencyObjectGenerator from
      emitting the public wrappers on every DependencyObject.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC63: remove the public binary-compat SetterBase.set_Property(string)
      shim (no WinUI equivalent; forwarded to internal OnStringPropertyChanged).
BC27: reimplement DoubleCollection over a private List<double> (IList<double>)
      instead of deriving from List<double>, matching WinUI and PointCollection.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This reverts commit fea246119bae19c75e0e1e3c3558e85c2ca15c92.
Removing IEnumerable from FrameworkElement/ContentControl breaks C#
collection-initializer syntax (new Panel { child }) across tests,
samples, and user code. Reverted; needs a decision + migration sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
BC16 is decided (dropped): the DependencyPropertyChangedEventArgs pool
already captures the allocation win, and the struct drops precedence/
bypass fields. Delete the #if false struct and its stale commented
reference instead of leaving 'bring back in Uno 6' dead code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move Microsoft.UI.Input.PointerPoint, PointerPointProperties,
PointerUpdateKind, PointerDeviceType and IPointerPointTransform down from
Uno.UI to Uno.UWP so lower assemblies can name them in public signatures,
and drop the legacy Windows.UI.Input pointer/gesture/manipulation family.

- Relocate the 5 types (+ their generated stubs) into Uno.UWP and route
  them there in the WinAppSDK sync generator (GetNamespaceBasePath).
- Remove the Uno.UI\UI\Input\WinRT\*.cs link from the 4 Uno.UWP csprojs and
  delete the now-unbacked Windows.UI.Input.* generated stubs; skip them in
  the generator so a future sync does not reintroduce them.
- BC41: VisualInteractionSource.TryRedirectForManipulation and
  ICompositionTarget now take Microsoft.UI.Input.PointerPoint (WinUI parity).
- Migrate all consumers (CoreWindow, InputManager, injection, Skia input
  hosts, tests, samples) from Windows.UI.Input.* to Microsoft.UI.Input.*.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ramezgerges ramezgerges requested a review from MartinZikmund July 2, 2026 03:26
@github-actions github-actions Bot added platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/code-generation Categorizes an issue or PR as relevant to code generation area/automation Categorizes an issue or PR as relevant to project automation kind/documentation platform/x11 🐧 Categorizes an issue or PR as relevant to X11 labels Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

WinAppSDK sync generator drift detected on cbde846

The Uno.WinAppSDKSyncGenerator produced changes that are not committed on this PR.

To apply automatically (PRs from branches in this repo only): comment /apply-sync-gen on this PR and a bot will push chore: Sync generator run to the head branch.

To apply manually (required for PRs from forks):

  1. Download the sync-generator-patch artifact from this run.
  2. In your local checkout of the PR branch:
    git apply sync-generator.patch
    git add -A
    git commit -m "chore: Sync generator run"
    git push
    

Or re-run the generator locally on Windows via build\run-api-sync-tool.cmd.

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

- Sync generated stubs to actual generator output: the relocated
  Microsoft.UI.Input.* stubs now live in Uno.UWP, where ShouldEmitNativeDefines
  is true, so they carry the __ANDROID__/__IOS__/__TVOS__/__WASM__ platform
  conditions; the dropped Ink methods use the canonical "Forced skipping"
  comments; DoubleCollection GetEnumerator comment realigned.
- Resolve namespace collisions on non-Skia heads that only surface off the
  Skia build: MacOS/Tizen no longer import Microsoft.UI.Input (it shadowed
  Windows.UI.Core.KeyEventArgs); they call the PointerPointProperties
  extension fully-qualified and keep type aliases. Android MotionEvent/Pointer
  helpers disambiguate PointerDeviceType to Windows.Devices.Input.
- Remove duplicate `using Microsoft.UI.Input;` directives (CS0105) introduced
  by the namespace migration across tests and samples.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

…ings/RestoreBindings

BC49 removed the obsolete ClearBindings/RestoreBindings shims from
DependencyObjectGenerator but left the TestNested golden stale. The build
failure in the first CI run masked this (unit tests never ran); with the
build green it surfaced. Align the expected OuterClass.Inner.cs baseline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

The Phase-4 API-alignment changes on this branch (visibility reductions,
signature fixes, the Microsoft.UI.Input.PointerPoint relocation, and the
BC49 ClearBindings/RestoreBindings removal) are intentional public-API
breaks that were never added to the diff-ignore set. The first CI runs
masked this (the managed build failed before packaging ran). Add the
entries the Uno.PackageDiff validation reported for the 6.6 base set:
8 types, 4 properties, 1 field, 231 methods (mostly ClearBindings/
RestoreBindings across DependencyObject types).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the area/build Categorizes an issue or PR as relevant to build infrastructure label Jul 6, 2026
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

The previous commit added the entries only to the 6.6 IgnoreSet, but
PackageDiff applies the set matching the current latest-stable base
(Uno.WinUI 6.5.237 → the "6.5" set), so they weren't matched. Mirror the
entries into the 6.5 set (as the existing recent breaks are), keeping the
6.6 copy for when stable advances.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

The package-diff dropped from 976 to 2 unmatched after the 6.5 entries;
the remainder is CommunityToolkit.WinUI.Lottie.LottieVisualSourceBase
ClearBindings/RestoreBindings (BC49), which weren't in the first log
sample. Add them to the 6.5 and 6.6 sets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 220938 did not find any UI Test snapshots differences.

The package-diff runs per-package; after Uno.WinUI passed it advanced to
the Uno.WinRT (Uno.UWP) package and flagged the dropped legacy
Windows.UI.Input.* pointer/gesture/manipulation types, the retyped
Windows.UI.Core.PointerEventArgs.CurrentPoint/GetIntermediatePoints
(now Microsoft.UI.Input.PointerPoint), and Uno.Collections.MaterializableList
(BC48). Add these to the applied 6.5 set (and 6.6).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 220970 did not find any UI Test snapshots differences.

@unodevops

Copy link
Copy Markdown
Contributor

⚠️⚠️ The build 220970 has failed on Uno.UI - CI.

…orm/uno into dev/bc-public-api-phase4

# Conflicts:
#	build/PackageDiffIgnore.xml
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23619/wasm-skia-net9/index.html

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 221070 found UI Test snapshots differences: skia-linux-screenshots: 0, skia-windows-screenshots: 72

Details
  • skia-linux-screenshots: 0 changed over 2366

  • skia-windows-screenshots: 72 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • DoubleImageBrushInList.png-dark
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • CalendarView_Theming.png-dark
    • DisplayInformation.png-dark
    • DropDownButtonPage.png-dark
    • Focus_FocusVisual_Properties.png-dark
    • Focus_FocusVisual_Properties.png
    • ImageBrushInList.png-dark
    • ImageBrushInList.png
    • Image_UseTargetSize.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • Buttons.png-dark
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • ImageIconPage.png-dark
    • ImageIconPage.png
    • ClipboardTests.png-dark
    • ClipboardTests.png

@unodevops

Copy link
Copy Markdown
Contributor

⚠️⚠️ The build 221070 has failed on Uno.UI - CI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/automation Categorizes an issue or PR as relevant to project automation area/build Categorizes an issue or PR as relevant to build infrastructure area/code-generation Categorizes an issue or PR as relevant to code generation area/skia ✏️ Categorizes an issue or PR as relevant to Skia kind/documentation platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/x11 🐧 Categorizes an issue or PR as relevant to X11

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants