The wait is over! The next generation Windows developer platform – WinUI 3 – has been officially released to the public, alongside Project Reunion 0.5. To empower you to have #WinUIEverywhere on the day it launches we are also releasing Uno Platform 3.6. Our appreciation goes to Microsoft WinUI team for keeping us posted on your progress, in order for us to have day-0 support for WinUI.
In addition to WinUI and Project Reunion support, we are also releasing highly-requested DatePicker and File Picking controls (Open, Save, Folder), a new Cupertino-like theme, OpenId Connect, WebAuthenticationBroker
and are continuing support Windows Community Toolkit and its newest release - 7.0! Lastly, we have restructured and added more documentation to our docs – one of the main improvements you asked for in our annual survey.
For more details, read the full release blog.
Here are some of this release features and improvements :
FileOpenPicker
,FileSavePicker
,FolderPicker
support (@MartinZikmund, @Arlodotexe)- Fluent Styles by default in templates (@jeromelaban)
- Microsoft Logging packages upgrade to 5.0.0 (@jeromelaban)
- Support for
ApplicationLanguage.PrimaryLanguageOverride
(@carldebilly) DatePicker
andLoopingSelector
(@carldebilly)WebAuthenticationBroker
and OpenID Connect support (@carldebilly)- Support for
DispatcherQueue
(@carldebilly) - Touch support for Skia GTK, including
ScrollViewer
(@dr1rrb) - Support
ApiInformation.IsTypePresent
in conditional Xaml (@davidjohnoliver) - Project Reunion 0.5 templates update (@jeromelaban)
- Managed
ScrollViewer
for macOS (@dr1rrb) ResourceDictionary
performance improvements (30% improvement on worst case read) (@jeromelaban)BindingPath
performance and allocation improvements (@dr1rrb)- Silverlight migration documentation (@darenm)
- Documentation improvements (@davidjohnoliver, @Xiaoy312, @ajpinedam)
And many bug fixes, with some highlights:
- Large updates for shapes rendering on Android, increasing the shared code base (@kazo0)
- macOS: minimize window button (3846938) (@ajpinedam)
- ImageBrush: [WASM] Fix stretch and alignment for ImageBrush as Shape Fill (38b6205) (@kazo0)
- ImageBrush: [Skia] Apply ImageBrush.Transform (573105b) (@jeromelaban)
- Many iOS/Android CommandBar fixes (@ajpinedam)
-
- vsix: RemoteControl.VS throw exception during VS closing. (3e27b6b) (@workgroupengineering)
- WriteableBitmap: [Skia] Fix Invalidate not working (546b431) (@jeromelaban)
- dotnetnew: -wasm=false exclude UnoQuickStart.Wasm (3414bef) (@microhobby)
- Native TimePicker fixes (#4812) (@iosub)
Here's the extended changelog:
Features
- Add ability to style DatePickerFlyoutPresenter (1f96c0b)
- Add support for PointerWheel events on macOS (a95db8f)
- Add support of managed SCP for coordinates computations (17ca9d9)
- Android FileOpenPicker (2b53633)
- Android FileSavePicker (fb772af)
- Android FolderPicker (2db906a)
- Android SAF StorageFolder/File operations (1eb6b53)
- Custom dispatch pointer events on macOS (2b00bcd)
- Enable fluent styles by default in app templates (9c78ab2)
- Enable managed scroll in macOS SV template (b27f2a7)
- Enabled the managed scrollviewer on macOS (a9dd550)
- Extension to allow for FileSavePicker implementation (acaa7b6)
- iOS FileOpenPicker (b28b8df)
- iOS FolderPicker (21244db)
- macOS support for FileOpenPicker (84f3bbe)
- StorageFolder/File operations iOS (6ac3961)
- Update ScrollViewer's templates for macOS (7471a78)
- Update templates to use Microsoft Logging 5.0.0 (da09f10)
- Upgrade unoapp-winui template to Reunion 0.5 (bad3b05)
- applicationlanguages: Implemented ApplicationLanguage.PrimaryLanguageOverride (07bb5cc)
- calendar: Ensure Calendar & DateTimeFormatter are following ApplicationLanguages state (7dd5a7e)
- datepicker: Changed DatePicker to default on native picker on iOS & Android. (94004df)
- datepicker: First working version of DatePicker (d50fb77)
- datepicker: Use LoopingSelector instead of ListView for non-native DatePicker. (0a5203b)
- dependecyproperty: Implemented this.RegisterDefaultValueProvider() (5dd3a34)
- dispatcherqueue: DispatcherQueue implementation (e6dfb03)
- double: Unify .IsFinite() method extension for all platforms. (29f9f2a)
- droid: Add FeatureConfiguration flag (a8aedb8)
- pointers: Add support for window pointer enter/exit required for complete sequence with touch pointer (4d43906)
- pointers: Add support of touch inputs on skia GTK (cbb4be1)
- runtimetests: Output text is now selectable (0bc7414)
- scrollviewer: Add support of touch scrolling in managed ScrollViewer (no inertia yet) (5697db6)
- scrollviewer: Prevent touch scrolling on forbidden axis (c906316)
- Add CommandBar Sample Page (fdcaa98)
- Add CommandBar SamplePage (266ebc5)
- Add native filesystem folder picker (bdc424c)
- Add support for .NET 5 target for Wasm/Skia (5e7bc64)
- Add support for manual tests tagging (342b0d9)
- Basic Launcher.OpenUriAsync support on Skia (a3dada5)
- Change TextBlock Default FontSize (985aab9)
- FileOpenPicker on Skia WPF (869481f)
- FileSavePicker on Skia WPF (16a834e)
- Launcher support on Tizen (0754994)
- Support for Native FileSavePicker (d9e32fd)
- Support for Storage.Pickers collections (2f717d9)
- Update BaseStyle fontsize (4f375bb)
- Update controls to match UWP default FontSize (cbf15ec)
- Update Styles to match Default UWP FontSize (f77b6db)
- Upgrade to ES2017, including ES2018 types (81ae3ca)
- Upgrade to ES2017, including ES2018 types (194c204)
- Upload-based file open picker (c6549f7)
- Use managed scroll for MacOS (b1ef283)
- showlocalvisualtree: Improved the output of ShowLocalVisualTree (ba1b7ee)
- showlocalvisualtree: Unify the content of .ShowLocalVisualTree() (23fa7f9)
- snappoints: Added support for Snap Points in ScrollViewer (a7158b4)
- textbox: [MacOS] Added support for AcceptReturns (da6d689)
- textbox: [MacOS] Removed direct usage of SolidColorBrush to get the Foreground color. (8860de6)
- xaml: Support IsTypePresent in conditional Xaml (7bdff09)
Performance Improvements
- Add support for benchmarks (c4a5cb4)
- Enable property caching for ColumnDefinition and RowDefinition (31fada8)
- Improve ResourceDictionary performance (82480ae)
- Remove generics from TSInteropMarshaller (3e2b427)
- Use fast property for Border Padding and BorderThickness (4a31d8d)
- Use property caching for Border.BorderBrush (6cbada0)
- Use for loop for children enumeration (c89fe21)
Bug Fixes
- Android: Load html from string for Android 10 and upper (f367dc5)
- dotnet_new: invalid template expansion removing C# conditionals (fa065ee)
- loopingselector: Fix a glitch in LoopingSelector related to way ScrollViewer events are raised. (a0486d9)
- [macOS] ignore evnts out of the window's bounds so native buttons (close/maximize) works (7a2589d)
- Add missing compilation flag (f961754)
- Adjust nuspec dependencies for Uno.Core (be9d0e8)
- Avoid flicker in SV when an hidden element is taller than viewport (b5da4ee)
- Defer NavViewItem pressed and over states only for Android (816d071)
- Do not materialize ElementStub if no parent (5fca6db)
- DualScreen, Maps invalid Uno.WinUI dependency (367f234)
- Fix build for skia (2fe27c1)
- Fix build macOS (9bb4baf)
- Fix build on Android and iOS (2174a4f)
- Fix build on CI (43e0419)
- Flaky roslyn source generator dependency compilation (17bb8a9)
- Remove workaround which is no longer valid (34d6f24)
- BorderLayerRenderer: [iOS/Skia] Adjust corner radius when drawing inner path of border to account of stroke thickness offset (f5bdc41)
- datepicker: Continuation must be on UI Thread (52b3ac7)
- datepicker: fix generated of months and days. (3f622bc)
- DatePicker: Set default date to Today's Date (35b5649)
- DepdendencyObject: Don't use IEnmerable when propagating the DataContext (df5a695)
- dotnetnew: -wasm=false exclude UnoQuickStart.Wasm (3414bef)
- flyoutbase: Fixed a potential NullRef Exception on .Open() (94013b0)
- Hyperlink: Use SystemControlHyperlinkTextBrush for Wasm Hyperlink (6bed89f)
- ImageBrush: [iOS/Android] subscribe to ImageBrush property changes (8901310)
- iOS: CommandBar.TitleView overlapping AppBarButton (794d076)
- loopingselector: A useless exception were raised when ItemHeight were not the first property assigned. (c66e87f)
- loopingselector: Changed the way the fix was done to prevent automatic re-selection for a better approach (addressing the real cause: the synchronous ViewChanged from the ScrollViewer) (4cae68a)
- Path: [Android] fix certain paths being skewed (7a805b9)
- reg: Adjust samples app Xamarin.AndroidX.RecyclerView version (bb90863)
- Invalid vtable setup for latest android builds (eebcd48)
- macOS: Null pointer opening popup (b1a1c13)
- Fix NotImplemented statuses on WASM and Skia (4f2f4dd)
- Fix rebase conflicts (4c2d993)
- Fixed a regression with ScrollViewer on iOS were ScrollViewer were leaking because of a useless event subscription for Snap Points. (4924237)
- NavigationView Fluent template differs (e465e41), closes #5430
- macOS: minimize window button (3846938)
- pointers: Fix pointers routed events always reporting mouse device (e2267c5)
- scrollviewer: Make to properly propagate to the SCP the can scroll (e361d39)
- Fix compilation on macOS (d59a342)
- Make sure to not include manual test in screenshots compare tool (628bba4)
- Minor multi-targetting fixes (6793112)
- animation: Animations are chopped when BeginTime set (33ac094)
- borderbrush: [Android] [WASM] Fix BorderBrush.Color not updating (ef15f08)
- calendar: Fixed PM mode when time is after noon. (c456f32)
- datepicker: DatePickerValueChanged old vs new were inversed. (06ad14b)
- datepicker: DatePickerValueChanged were raised twice (45c6c58)
- datepicker: Fixed NRE due to not initialized member variables on Skia. (2bc77af)
- datepicker: Make sure DatePicker field ordering is correct (91408f4)
- datetimeformatter: Allow format template with braces in constructor. (086addb)
- fluent: Exclude SplitView fluent style to fallback on UWP's version (546ca1e)
- flyout: Fix flyout doesn't fall back to preferred position (9f7c31e)
- flyoutbase: Workaround for Android delayed "Loaded" event (e2a659b)
- FrameworkElement: [macOS] Ensure we set parent to a DependencyObject (81bb0b3)
- gridview: [macOS] Ensure GridView shows items (f14ecfa)
- ImageBrush: [Skia] Apply ImageBrush.Transform (573105b)
- ImageBrush: [WASM] Fix stretch and alignment for ImageBrush as Shape Fill (38b6205)
- iOS: CommandBar NativePresenter overlapping titles (f2013e8)
- iOS: CommandBar.Title overlapping AppBarButtons (0293230)
- iOS: Date and TimePicker for older versions (da4729b)
- iOS: DatePicker Flyout actions (1668f02)
- iOS: Nullreference exception while casting (4b54098)
- iOS: TitleView LayoutSlotWithMarginsAndAlignments (d0f4c3d)
- loopingselector: Fixed a weird "automatic reselection" on iOS & Android, caused by event sequencing. (36a9c0c)
- loopingselector: Fixed bug when list is changed, it wasn't updated in LoopingSelector because it was the same instance (and property changed not raised by DependencyProperty) (d1eeaa7)
- macOS: Textbox Focus (b7d3def)
- nativedatepicker: Fixed native datepicker flyout after rebase (99e3663)
- passwordbox: Added support for autogrow on on MacOS (e30088b)
- perf: [ArrayPool] Remove useless abstract method (02b1ad0)
- perf: Defer the pointer's visual states of NavigationViewItem (596f167)
- perf: Do not box CornerRadius for equality check (8a0ea79)
- perf: Improve ItemsRepeater perf by avoiding useless InvalidateMeasure and viewport computation & propagation (33197e1)
- perf: Improve performance of Grid layouting by caching temporary array (107f722)
- perf: Prevent ItemsRepeater to invalidate visual tree too often while scrolling (f331879)
- perf: Refactor BindingPath parsing to be allocation less (fd67fc9)
- scrollviewer: Fixed the behavior of the ScrollViewer & ScrollContentPresenter to be closer to UWP/WinUI (079d78d)
- selector: Fixed a potential out of range exeption in Selector (3989f3e)
- textbox: Fixed autogrow of on MacOS (5cac02e)
- textbox: Multilines textbox on Wasm were not properly measured. (50b559d)
- WriteableBitmap: [Skia] Fix invalid pixel format (32c83ef)
- xamlreader: XamlSchemaContext leaks when hooking on AppDomain.AssemblyLoad (a188586)
- [Perf] Use ArrayPool for _resCache (98a2b31)
- Adjust the Uno.Core version for UWP template (eef5864)
- Applied PR suggestions (68643a4), closes #3916 #4447
- Avoid logger reuse in resource generation tasks (9d401e4)
- Bump UWP min version to 10.0.18362.0 (5a42135)
- Check IsEnabled before triggering routed events (58b29cd)
- Disable anoying log for pointer capture not supported on GTK and Tizen (e105e9b)
- Do not prevent dispatch of events on control that are disabled (e1a57e0)
- Enable autoflush for FileIO.WriteText (2d6525a)
- Limit disabled SelectorItem pointer states (2ca6867)
- Possible invalid memory copy when using SkiaCompositionSurface (c0ed22d)
- perf: Use generated DP for CornerRadius to avoid massive boxing in layouting (9137189)
- reg: Avoid common namespace name conflict (e9acc20)
- reg: Fallback on reflection for loggers cleanup (685b142)
- scrollcontentpresenter: Fixed a regression with recent chagnes to ScrollContentPresenter where the Extent on Wasm was unable to shrink (2cc8cad)
- scrollviewer: Fix calculation of Extent on ScrollViewer (97a5e2d)
- stroke: [Android] [WASM] Fix Stroke.Color not updating (d92e8be)
- vsix: Correct message when Uno Remote Control service has invalid (cc19803)
- vsix: RemoteControl.VS throw exception during VS closing. (3e27b6b)
- vsix: System.NotImplementedException when in solution there is unloaded project. (2ad8405)
- wasm: Pivot content when using bindings (6b34512)
- WriteableBitmap: [Skia] Fix Invalidate not working (546b431)
- ElevatedView does not show up on Skia (65d001e)
- Fix changes to IsEnabled reflected witha delay (ccaeb18)
- Improve performance of pointers on macOS (de18786)
- NullReferenceException opt-out telemetry (28207c2)
- Remove the use of Uno.Core in Resource generation tasks (11bacf3)
- textbox: [MacOS] Allow to appear on multi-lines when not focused. (8af85fd)
- wasm: Fix initialization issue in PlatformHelper for netstandard2.0 (55cddba)
- WebView: Raise NavigationStarting and NavigationCompleted when doing anchor navigation on iOS. (f569465)
- Initializing implementation (984076a)
- Removed unneeded items from project file (22b19e7)
- Update src/Uno.UI/ts/Guid.ts (b26efef)
BREAKING CHANGES
- fix(droid)!: CommandBar.Foreground affecting NavigationCommand icon (51795d2)
This will change the default behaviour on how the Foreground property of the CommandBar is handled and applied against the different elements of the CommandBar