Skip to content

Releases: unoplatform/uno

3.6.6

29 Mar 22:26
Compare
Choose a tag to compare

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 :

And many bug fixes, with some highlights:

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](http...
Read more

3.5.1

12 Feb 14:17
331aaa6
Compare
Choose a tag to compare

Staying true to our #WinUIEverywhere mission, our 3.5 release provides day-zero support for WinUI 3 Preview 4 and it brings support for 4 new WinUI controls – Navigation View, Progress Ring, Pager and Expander. In addition, we are solidifying our existing support for SkiaSharp and Xamarin.Forms 5.

Read our blog post for more details about this release.

Features

  • Automation: Implement properties used by PagerControl eed4842
  • ContactPicker: Pick multiple contacts e9c120a
  • ContactPicker: Pick single contact on Android be03a46
  • ContactPicker: Pick single contact on Tizen 2e32116
  • ContactPicker: Pick single contact on WASM 9f0679e
  • ProgressRing: Add DeterminateSource/IndeterminateSource to MUXC ProgressRing 302fd4b
  • TextBox: Add keyboard command capability to macOS TextBox 1effa70
  • TransformToVisual: Add TransformToVisual logic for macOS 0ab5d6f
  • xLoad: Add xLoad binding capabilities e2868b0
  • Add Sample for CommandBar Custom BackButton 48bff73
  • Add support for Determinate ProgressRing eaa4e51
  • Add support for x:Bind type cast syntax c45407f
  • Add unoapp-uitest template for Uno.UITest based testing 0a67156
  • Add VectorExtensions bfdd3df
  • Add VectorExtensions API documentation 17af317
  • DataTransferManager support on Android 4c2e6dd
  • DataTransferManager support on iOS bfe6ec9
  • DataTransferManager support on macOS 09b4ad0
  • DataTransferManager support on Tizen 41d8fc0
  • Enable WebView on macOS dc0363c
  • Implement Vector Extensions d2b455f
  • Support for CompositionPropertySet 8250339
  • Support for DataPackagePropertySet 91fee77
  • Support for DataPackagePropertySetView 8d2dabf
  • Support for DataTransferManager on WASM 97ccc3f
  • Support for UIElement.ActualSize a6b9cbe
  • Support PropertyValue API 13fdf50
  • Update extension namespace 51e3261
  • update resource name b9874a0
  • WinUI PagerControl 76cdc72
  • Binding: PropertyChanged update with null 1dcca11
  • Border: Allow variable BorderThickness while using CornerRadius 54f82cc
  • droid: Added validation for NODPI Assets 67e3a99
  • Expander: Add WinUI test page 1279af8
  • Expander: Port Expander from WinUI 0e5632b
  • iOS: Set latest (iOS14+) Style default for TimePicker ae78b77
  • skia: Enable StorageFile.GetFileFromApplicationUri f910b24
  • Slider: Add Header support 6fbc207

Bug Fixes

  • Update UnitTest c0530da
  • UWP buildable and deployable under Any CPU 3a9a3b7
  • templates: Updated Microsoft.NETCore.UniversalWindowsPlatform to 6.2.11 7084575
  • skia: Use PackageInstalledLocation for the path c801466
  • iOS: Add CommandBar Sample 66e661b
  • iOS: Add CommandBar UITest 1f0ea0c
  • Update Sample Page f0b3e80
  • Update src/SamplesApp/SamplesApp.Droid/SamplesApp.Droid.csproj b434c2a
  • Update src/SamplesApp/SamplesApp.Droid/SamplesApp.Droid.csproj a0d4742
  • Update src/SamplesApp/SamplesApp.Droid/SamplesApp.Droid.csproj bebb51c
  • Update UITest to set the Style only during its execution 3a4f524
  • Update CommandBar UITests 41ff3fe
  • viewbox: .Arrange() on a viewbox will now reuse the Scale transform instead of creating a new one each time. 25153ba
  • Bump UWP min version to 10.0.18362.0 b481b23
  • ElevatedView does not show up on Skia 93ae29c
  • Properly fallback on Skia AcrylicBrush 7451979
  • android_textalign: Fix text alignment problem on Android. 8ceed71
  • Animations: Fix issue with multiple animators holding the same handle to their JS counterparts ee4efaa
  • BindableNSView: Set MasksToBounds to false on init 697ee67
  • Bindings: Avoid propagating DataContext if you are not the child's parent f95d051
  • Border: [Skia] Ensure only the outer border shape is inserted as the first child 0d95444
  • ci: Skia GTK/WPF/Tizen templates weren't tested in Release cb52022
  • combobox: [WASM] Reduce number of items created by ComboBox 1b23964
  • FrameworkElement: [macOS] Ensure we set parent to a DependencyObject 81bb0b3
  • imagesource: Fix the SetSource[Async] must clone the provided stream before returning 4b9a6ec
  • iOS: CommandBar Back Button Icon 5dcae11
  • itemsreapeter: Workaround only first item rendered if no ScrollViewer bd3265a
  • itemsrepeater: Fix only first item appears on Android 8534de5
  • linux: Package base path resolution for single-file .NET 5 packaging 9e62bc3
  • memory: [iOS] Propagate GPU animation failures up to Storyboard to fix memory leak 9a8eb39
  • msix: Adjust project creation ordering fec66d2
  • navview: Fix footer items not appearing f029e37
  • PersonPicture: Use SymbolThemeFontFamily instead of Segoe MDL2 Assets e0688e3
  • reg: Avoid common namespace name conflict e9acc20
  • Fix bounce ease producing invalid final value 6d840ab
  • Hyperlink: Add hyperlink foreground color for macOS 94a1e26
  • macos_scrollviewer: Margin directly on the child element of a scrollviewer were ignored. 4baad67
  • popup: [iOS] Nested popup results in NRE 004abee
  • popup: placement issue for android 531456e
  • rect: Allow the usage of spaces for components of a Rect (used in a ) bf1fb69
  • scrollviewer: [iOS] Ensure ScrollViewer.ViewportWidth is updated correctly 9bcd9d8
  • scrollviewer: Add ShouldFallBackToNativeScrollBars flag 6964f22
  • scrollviewer: Fix ScrollViewer.ViewportWidth calculation e87a198
  • scrollviewer: Show ScrollBar when Fluent styles are used 726923a
  • tabview: Fix content of first tab not rendered on iOS 6127a5d
  • tabview: Fix ScrollViewer-related issues fe8b659
  • TabView: ItemFromContainer should be public 09b302b
  • uielement: [iOS] Fix TransformToVisual output inside ScrollViewer ade31cb
  • vsix: Adjust UWP asset casing fb90c7c
  • wasm: fix non-uno.ui type HtmlElementAttribute inheritance 2518b14
  • Add missing UI Testing property in source generation 8f69eb4
  • ContainerFromIndex and IndexFromContainer return wrong results b3b27b7
  • Do not allow reentrancy on UpdateLayout even with native layouting 7f11604
  • Ensure protocol activation is handled 5ab623d, closes #5076
  • Error CS0105 The using directive for 'Windows.UI.Xaml.Controls' appeared previously in this namespace Uno.UI (xamarinmac20) 0928d9c
  • Fix build 6493ec6
  • Fix possible non disposed tracing. 2bd607b
  • Fix UpdateLayout measuring to 0x0 if called too early 2b95148
  • Invalid value 270bf34
  • Make sure parent's shadow children collection is up-to-date in child.Loaded 218f660
  • Match ProtocolActivated property support with Launch b87dc94
  • Native-registered DPs lazy initialization 6e4de7d
  • Prevent reentrancy of UpdateLayout with native layouting on xamarin a3fd5d3
  • Set IsVisualTreeRoot flag on all platforms ce2641d
  • Shapes: Match UWP StrokeThickness behaviour 63da357
  • viewbox: Fixed viewbox layout & clipping with the right solution after PR review. 9de4e14
  • viewbox: The coordinate system used for arranging elements were not the right now. It was before the application of render transforms. 071f1aa
  • Control Template might never be applied 0320068
  • Revert "Keep track of current view type even if content is set to null" 882662a
  • Show NumberBox header 0833e13
  • animations: [iOS] Cancel animators on detached layers 7f6b7c2
  • Binding: x:Bind to fields not applied 875a722
  • Border: Ensure Border content is clipped by CornerRadius 8e90750
  • Calendar: Fix Calendar.YearAsString() and Calendar.YearAsTruncatedString() 4a31447
  • DependencyObject: Fix invalid cast in generated DependencyProperty coerce d6de227
  • dotnetnew: Add dotnet-new classification to dotnet new templates 23f8ebb
  • droid: Resource converter from UWP b352ab6
  • iOS: CommandBar back button title 5e9cf9f
  • iOS: Timepicker flyout 6223238
  • listview: [WASM [Skia] Trim excess scroll when item at end of list is removed 3587774
  • macos: ManipulationDelta translateY being inverted 03d13f5
  • NavigationView: Content top padding is not correct 444aa14, closes #4793 #4826
  • passwordbox: Don't fail on setting null on PasswordBox.Password 080cf81
  • personpicture: Fix invalid image positioning after ImageBrush fixes e9de176
  • Polygon: Close Polygon shape on Android 056d8a9
  • popup: placement issue for wasm/skia 6bc5b92
  • reg: Adjust RuntimeTest for leaks validation condition for iOS f591e5d
  • remotecontrol: Fix iOS/Android projects not selected for RemoteControl generator e84b047
  • resourcedictionary: Fix ResourceDictionary.Source resolution when globbed includes are defined in an included file b1d4741
  • ResourceDictionary: Default theme may not be valid on first call 47b6aed
  • scrollviewer: [WASM] Fix reloaded ScrollViewer has scroll reset 387038a
  • tabview: Fix TabView add button not appearing when there are many tabs f176465
  • textblock: On Wasm, the Padding were not part of the key used for the measurement caching. 32b27b1
  • Added missing Properties folder and AssemblyInfo.cs file to macOS template f98546f
  • Adjust When_Scrolled_To_End_And_Last_Item_Removed test assert 8879083
  • Avoid generating duplicate TabViewItems 9c35539, closes #4899 #4907 #4925
  • ElementName binding in non-toplevel ResourceDictionary 086a99c
  • fixed race condition 86dccb2
  • Indicate selected item in NavigationView f17770d, closes #4794
  • IsMethodPresent not using NotImplemented 881bb0b
  • Make NavigationView Settings item selectable 69318b4, closes #4809 #4689
  • memory leak in telemetry 619fe29
  • Remove explicit type in Solution template App.xaml.cs 26170c3
  • Return correct result of ApiInformation.IsPropertyPresent 0e5c530
  • TabView does not render item content with bindings 20b4af1, closes #4894
  • TargetPropertyPath is not releasing its WeakReference properly 35d6a93
  • tabview: Fix all t...
Read more

3.4

22 Dec 22:08
Compare
Choose a tag to compare
3.4

This 3.4 release is about adding support for WinUI controls, such as the hierarchical NavigationView, InfoBar, RadioButtons, ItemsRepeater and determinate ProgressRing. We are following the footsteps of the WinUI team to align more of the controls Uno provides with what is supported on Windows.

The combination of controls we are releasing with 3.4 release, the recently-announced Infragistics controls for Uno Platform, and Syncfusion charting, will give you as a developer a great toolset to tackle single-source web, desktop and mobile applications.

As with each release, we have also added significant number of features and fixed many bugs, with the help of members from the community.

Visit our blog post for additional details.

Hierarchical NavigationView support (@MartinZikmund, @dr1rrb, @davidjohnoliver)

Uno Platform has been including a version of the Navigation for quite a while in the Windows.UI.Xaml namespace. Recently, the WinUI team added support for an enhanced experience including hierarchical navigation, with the ability to expand and collapse menu items.

This new control is now available in the Microsoft.UI.Xaml namespace, to match with the Windows version of WinUI. The Windows.UI.Xaml version of the control will stay in Uno, but will not include additional features, only bug fixes as needed.

You can browse the documentation for the NavigationView on Microsoft docs.

Support for the WinUI 2.5 InfoBar control (@MartinZikmund)

The WinUI InfoBar control also has been imported in Uno Platform. It allows for applications to display app wide status messages to the users to be highly visible but non-intrusive, using customizable severity levels.
Here is an example of InfoBar visual:

You can browse the documentation for the InfoBar on Microsoft docs.

Support for WinUI RadioButtons (@jeromelaban, @dr1rrb)

Yet another WinUI control, this time to allow the DataBinding of an items source to a list of RadioButtons, this control lets users select one option from a collection of two or more mutually exclusive, but related, options.

You can browse the documentation for the RadioButtons on Microsoft docs.

Support for ItemsRepeater (@dr1rrb)

The ItemsRepeater is a new control from WinUI 2.x that provides an enhanced developer experience and end user experience when creating custom collection experiences using a flexible layout system, custom views, and virtualization.
We have ported the code from the ItemsRepeater to Uno, and it is useable on all our available platforms. It is used in Uno by the refreshed hierarchical NavigationView control, as well as the RadioButtons control.
Layouts are reusable components for which some (StaggeredLayout, WrapLayout) were released in Windows Community 6.1. Uno did not have support for the ItemsRepeater at the time, but those will be available soon to be reused in Uno.

You can browse the documentation for the ItemsRepeater on Microsoft docs.

Determinate ProgressRing (@kazo0)

WinUI 2.5 added support for a determinate mode for the progress ring, allowing for an arbitrary progress value to be provided. This control uses Lottie under the hood, and benefits from additional changes we included to get color changes in Lottie files.

You can browse the documentation for the ProgressRing control on Microsoft docs.

Upgrading from previous versions of Uno

There are no breaking changes for this release of Uno, but you'll need to upgrade the Uno.Core package to 2.1 in the UWP project to avoid nuget restore warnings.

This upgrade has been introduced to improve the compatibility of Uno.UI with Visual Studio 2019 16.9 Previews.

Other significant updates

  • Support for FileSavePicker on macOS (Thanks @snickler !)
  • Drag and Drop support for ListView (WebAssembly and Skia) (@dr1rrb)
  • Improved ImageBrush support (WebAssembly) (@carldebilly)
  • Support for SvgImageSource (WebAssembly) (@carldebilly)
  • TabView for iOS/Android/macOS (@MartinZikmund)
  • Memory and execution performance improvements (@jeromelaban)
  • Skia templates use .NET 5 by default (@jeromelaban)
  • Support for FlyoutPlacementModes (@davidjohnoliver)
  • Support for FrameworkElement.EffectiveViewportChanged event (@dr1rrb)
  • Support for Frame.SourcePageType and Frame.CurrentSourcePageType (@MartinZikmund)
  • Support for synchronized ItemsControl.Items with ItemSource (@MartinZikmund)
  • Custom colors support for Lottie files and MUX ProgressRing (@carldebilly)

You can view below the full changelog of this release

Features

  • Add a property to launch the debugger for XAML generation f347548
  • Add Load/Unload benchmark ba19901
  • Hierarchical NavigationView 3e85994
  • Improve reference checking memory leaks runtime tests 56245e6
  • Update the Skia template to use .NET 5.0 1cbf17a
  • WinUI RadioButtons e48de38
  • dragdrop: Add ability to raise a routed event only for a portion of the tree e183f1e
  • dragdrop: Add re-order support in ListView (managed only for now, i.e. wasm + skia) b79f6d8
  • dragdrop: Fix the drag and drop hit testing c2003d4
  • dragdrop: Import the ListView D&D event from generated code c43f6d6
  • dragdrop: Initial D&D events support on ListView aaf4309
  • effectiveviewport: Add support of the FrameworkElement.EffectiveViewportChanged event 4fbdee5
  • effectiveviewport: Add support on WASM d66c074
  • effectiveviewport: Enable mixins on iOS and fix csproj references d2861ff
  • effectiveviewport: Fix invalid parent viewport to local coordinate computation (was not inversed) 649c84e
  • effectiveviewport: Make sure to raise the UIElement.EffectiveViewportChanged on Arrange on Skia 3c896e5
  • effectiveviewport: Make the WASM layouting algorithm use the new LayoutInformation a0e8a13
  • effectiveviewport: Move the UIElement's layout properties to the LayoutInformation e98a417
  • effectiveviewport: On skia scrolling is now managed by the SCP and is backed by Visual.AnchorOffset instead of a RenderTransform c8ba949
  • effectiveviewport: Reuse the EffectiveViewport code for IFwElt 124c6d3
  • flyout: Implement EdgeAligned FlyoutPlacementModes 0941866
  • Frame: Support for SourcePageType and CurrentSourcePageType 650ea9b
  • imagebrush: Improved the support of ImageBrush on Wasm af15d91
  • iOS: Add DatePicker FeatureFlag 4966060
  • iOS: Add support for iOS 14 Picker style 9398d1b
  • iOS: Add TimePicker Feature Flag c332a25
  • iOS: Enabled feature to be toggled from resources 8f46629
  • iOS: Move OS version specific code 9171f2e
  • itemscontrol: Sync Items with ItemsSource 26cf7ab
  • itemsrepeater: [iOS] Enable clipping on the ScrollViewer 6a05d31
  • itemsrepeater: Add some missing classes 77dbf85
  • itemsrepeater: Brings more C++ code and begin integration with Uno 69bd34e
  • itemsrepeater: Do not throw exception for ScrollViewer.CurrentAnchor (always return null) 0cfbe74
  • itemsrepeater: First buildable version 🎉 8ea49c5
  • itemsrepeater: First item visible cd5c57d
  • itemsrepeater: Fix rebase issues 67b3a3c
  • itemsrepeater: Fix tracing 08b57ff
  • itemsrepeater: Initial import 357a7cc
  • itemsrepeater: Make the ItemRepeater available on netstandard 2.0 ec7f73c
  • itemsrepeater: Move files to their final place 9f79508
  • lottie: Added the ability of LottieVisualSource to download its content and assign it locally. b96d123
  • lottie: First implementation of theme properties for lottie files (custom colors) c31c32e
  • svg: Added support for SvgImageSource on Wasm 26c0b06
  • svg: Fixed for right signature of SvgImageSource.SetSourceAsync() with correct async result 1523a0d
  • themable_lottie: Renamed new classes using better names 620ea99
  • Implemented FileSavePicker on MacOS cfecbe8
  • Implemented FileSavePicker on MacOS a7b8e80
  • ItemsSource-bound ItemCollection 2b4d4aa
  • Naive implementation of UIElement.UpdateLayout af4370f
  • Set TImePicker default style to use legacy 38847a6
  • skia: Implement CompositionTarget.Rendering event 9b19af3

Performance Improvements

  • NativeFramePresenter: [Android] Don't detach pages in the backstack 7253faf
  • [Wasm] Improve DOM routed events dispatch performance f90906d
  • Improve the performance by creating temporary hard references in DependencyObjectStore 804e441

Bug Fixes

  • contentcontrol: [macOS/iOS] Support binding DataContext in ContentTemplate c72c24e
  • dragdrop: Add missing file for ListView drag and drop support 2252868
  • dragdrop: Avoid double subscription (since ClearItem not always invoked) + make sure to subscribe event on CanDragItems change 9b135ac
  • dragdrop: Don't use the Move on ObservableCollection in reorder (avoid reflection and acts like UWP) + Other mix PR review 95b3438
  • dragdrop: Fix iOS compilation issues d23b51a
  • dragdrop: Fix NET461 build 353ba00
  • dragdrop: Fix possible null ref in Drag and Drop aa9c8b4
  • dragdrop: Fix selection lost when reodering items fc475d3
  • dragdrop: Fix support of TabView reordering 6157b15
  • effectiveviewport: Fix build macOS 1aff65c
  • **effectiveviewp...
Read more

3.3.0

17 Nov 19:29
Compare
Choose a tag to compare

WinUI 3.0 Preview 3 is a big step towards shipping the final version of WinUI.

We at Uno Platform team are happy to report that Uno Platform already works with the latest WinUI preview. Our sincerest thanks to WinUI team who keeps us posted on their progress and allows us to make modifications to Uno so that our joint developer base can use the latest and greatest bits right away.

In addition to shipping support for Preview 3 the team also managed to ship additional features in our 7th release in 2020.

WinUI 3 Preview 3 support

We’re aligning the API surface from WinUI 3.0 Previews in Uno, alongside adding support for the WinUI Desktop project template. The Desktop template enables WinUI applications to use the full Win32 and WinRT API with .NET 5, without running in the UWP sandbox.

To create an application using the WinUI 3 API set, run the following command:

dotnet new -i Uno.ProjectTemplates.Dotnet
dotnet new unoapp-winui -o MyApp

This will create a brand-new project to experiment with WinUI 3 Preview 3 and Uno.

You can find up-to-date information about dotnet new templates in our documentation.

A few points about the WinUI 3 Preview support:

  • Debugging and running the Windows Desktop project must be done using the “MyProject.Windows.Package” project, not the “MyProject.Windows.Desktop” package (you will experience Startup exceptions otherwise).
  • The WinUI+UWP project created by the template does not yet support .NET 5, but supports C# 8.0 and .NET Standard 2.0 libraries.
  • In order to run the WinUI 3 Windows Desktop and UWP heads, it's best to install Visual Studio 2019 16.9 Preview 1. For the other platforms, you can choose recent stable builds of Visual Studio 2019.

Android 11 and iOS 14 Support

Uno is now providing Android 11 support and deprecates the use of Android 9, which Google stopped supporting as of November 1st.
If your application was targeting the API level 28 (Android 9), you can upgrade to Android 10 (Level 29) or 11 (Level 30) in your application’s property pages.

Support for KeyUp and KeyDown Skia backends

Keyboard was a big ask from the community, and the first consumer of this feature is the Uno Calculator for Linux. We’ve updated the Snapped application to enable keyboard support to input numbers and operators.

Get it from the Snap Store

We've also updated our appimage support for the Linux Calculator, in case you're on a distribution that does not support snap, or snap is not installed.

How to Upgrade

To upgrade to latest release of Uno Platform please update your packages to 3.3 via your Visual Studio NuGet package manager! If you are new to Uno Platform, the best way to get started is following our official getting started guide.

Here's the full changelog:

Features

  • Add template support for WinUI Desktop (063f98e)
  • skia: [GTK][WPF][Tizen] Add CoreWindow.[KeyUp|KeyDown] and UIElement.[KeyUP|KeyDown] (0e89271)
  • Add resources files with string translations (3dc5cd4)
  • Add resources Keys (3649f52)
  • Localize Drag and Drop Caption text (cda1afb)
  • Move Drag n Drop files into directory (34f74fe)
  • android: Add support for Android 11, remove Android 9 support (f7774e6)
  • DatePicker: Enable date part hiding on button (efca12c)
  • DatePicker: Support Header properties (7fea081)
  • NumberBox: Header and HeaderTemplate support (6e14000)
  • TimePicker: Support for Header properties (5bf73e9)
  • Add Platforms folder in VSIX template (2779561)
  • MapStyle and MapInputEventArgs (a833c95)
  • Support for WinUI InfoBar control (601e9a4)
  • Tizen project template (6d46e18)

BREAKING CHANGES

  • Using the MapControl implementation provided by Uno.UI.Maps requires the MapResources resource dictionary to be included in application resources:
<Application.Resources>
	<MapResources xmlns="using:Uno.UI.Maps"/>
</Application.Resources>

This resource dictionary provides the required MapControl style.

  • android: The support for Android 9 is being removed, as the Play Store does not accept updates for applications using this version.

Performance Improvements

  • fastconvert: Replace the switch by a calculation for 1-digit string conversion. (87832b0)
  • tests: Improved perf of UI tests by reducing multiple decoding of same images (c0c391b)

Bug Fixes

  • auto_size: Add support for "Auto" and "Infinity" in float & double converter for DependencyProperty bindings. (58bd5f5)
  • combobox: Set alignment on ComboBox PopupBorder (71ec888)
  • dotnetnew: Adjust templates content for VS integration (55a41ff)
  • elevatedview: UpdateElevation timing issue (df3b6e5)
  • keyboard: [Gtk] Add missing operators mapping (5a08089)
  • listview: [iOS] Fix outer ElementName bindings not available on reload (4cf28e4)
  • listview: [WASM] [Skia] [macOS] Improve ListView measurement (b0b2733)
  • mapcontrol: [iOS] [Android] Fix MapControl for Uno 3.0 (60792e4)
  • maps: [Android] Update Uno.UI.Maps to latest Google Play Services package (0fa1833)
  • Adjust visibility of Skia extensions (3d625cd)
  • Textblock can be constrained by maxlines on wasm and android (0c33868)
  • textblock: Fixed Android measure bug #4414 (11ddb61)
  • XamlFileGenerator: XAML markup extension requires full name #2918 (488a556)
  • BindingExpression failed to apply string explicit source. (94b6bc9)
  • UIElementCollection adding the view twice (52fa4e5)
  • fix(mapcontrol)!: Using MapControl now requires including MapResources (373bf93)
  • generation: Fixes invalid Tuples expansion using Roslyn 3.5 and later (c7bebb2)

3.2.0

09 Nov 21:38
a9091f9
Compare
Choose a tag to compare

The 3.2 release is loaded with feature and performance improvements. Most of the release focused on upcoming .NET 5 and all benefits Uno Platform gets from building on top of it. However, we are also releasing improvements to the controls and tooling we introduced in previous releases.

Adding preview support for .NET 5 for WebAssembly

The .NET team has been working hard to add WebAssembly support for .NET 5, and we’ve been able to leverage this work to update Uno and provide a preview of this support.

This update gives the ability for Uno Platform apps to use the .NET 5 APIs and features, like C# 9.0 and its source generators, records, pattern matching and others interesting features.

But that’s not all! The .NET 5 WebAssembly support comes with the IL interpreter runtime, but also brings the AOT support that was already present in the Mono Runtime that Uno Platform currently uses, allowing Uno WASM implementation a performance boost of 7-15x compared to the IL interpreter.

To get this support, the Uno WebAssembly Bootstrapper has been updated to include the AOT runtime for .NET 5, while keeping the support for the Mono 6.x WebAssembly support (using the netstandard2.0 target framework for projects).

You can view additional benchmarks on our blog post.

Drag and Drop support (multiple platforms)

Drag and drop elements within the application is now supported. Like UWP, any element flagged with the CanDrag property set now has the ability to build a DataPackage and customize the UI for the drag operation. Any element configured with the AllowDrop flag can now receive the drag events.

We’ve also added the ability to drag and drop from and to other apps for Skia for Windows and macOS (Thanks @robloo!).

Playground Updates

We’ve updated the Uno playground with new samples for you to experiment with:

You can now use the muxc” namespace to access Microsoft.UI.Xaml.Control enabled controls.

Other notable features of Uno Platform 3.2

  • We've updated the Uno Platform Visual Studio 2019 Wizard to include a list common issues found when starting a project.
  • AnalyticsInfo, PackageId (Skia/Wasm)
  • StorageFolder: GetFilesAsync(), GetFoldersAsync(), GetItemsAsync() (Thanks @pkar70!)
  • UISettings GetColorValue and AnimationsEnabled (Thanks @MartinZikmund!)
  • Drag and Drop support (multiple platforms)
  • Support for Windows.Storage.PathIO and many Windows.Storage APIs
  • VibrationDevice support (Thanks @MartinZikmund!)
  • Support for UIElement.XamlRoot (Thanks @MartinZikmund!)
  • XAML Source generation improvements, base support for C# 9.0 generation
  • Fixes for multiline TextBox for WebAssembly

You'll find below the full changelog:

Features

  • [Wasm] Adjust netcore compatiblity 59667ea
  • Add CommandBar SampleControl with Navigation 6c8a61c
  • Add NavigationViewPaneDisplayMode enum 557bcc2
  • Add SelectionMode enum 453c7b6
  • AnalyticsInfo support for Skia (Tizen) ba9356c
  • AnalyticsInfo support for WASM 8b7b97d
  • Appointment (Calendar) common structs f18ee9e
  • GeoFencing - supporting classes/enums 3361f74
  • Geolocation.PositionSource enum 251e937
  • Implement Application.RequiresPointerMode 23a656b
  • PackageId support for Skia, WASM, Tizen 4c8e611
  • StartStopEventWrapper be2b602
  • StorageFolder: GetFilesAsync(), GetFoldersAsync(), GetItemsAsync() e6348f8
  • Support for GuidHelper 7ec98fb
  • Support for UISettings.AnimationsEnabled on Android d78bebf
  • Support for UISettings.GetColorValue bdc1420
  • dragdrop: Add support for RandomAccessStream on BitmapSource 4f16eed
  • dragdrop: Abstract the drag event source so they can be built from another source than pointer c80db88
  • dragdrop: Add ability to ignore only a single element while bubbling event 5f90875
  • dragdrop: Add ability to override the default UI b3f7cb3
  • dragdrop: Add basic sample 6bb7b16
  • dragdrop: Add D&D overlay structure 13b2298
  • dragdrop: Add first implementation of the DragDropManager 8f4547f
  • dragdrop: Add support of Dragging event on the GestureRecognizer 97c476c
  • dragdrop: Enhance the DataPackage API 2b52694
  • dragdrop: Extract the hit testing algorithm ca0688e
  • dragdrop: Extract the HitTestability from the UIElement 030d466
  • dragdrop: Fix Android clipboard usage of DataPackage 238b331
  • dragdrop: Fix DataPackage on WASM 4ec12d1
  • dragdrop: Fix WASM compilation issues 4c5a78e
  • dragdrop: Fix WASM support of Drag and drop c4cb3a7
  • dragdrop: Implement basic UI fabb408
  • dragdrop: Implement UIElement.CanDrag and AllowDrop bbff5ab
  • dragdrop: Import needed XAML classes 418ebc1
  • dragdrop: Import the core drag and drop classes 756d278
  • dragdrop: Initial work for D&D manager f19dc57
  • dragdrop: Make sure to not allow drag operation if pointers does not have any pressed buttons 2faa713
  • dragdrop: Make the CoreDragDropManager implementation configurable 943f048
  • dragdrop: Primitive support of the drag in UIElement e9ef1cb
  • dragdrop: Wire up the Drag and Drop routed events 05830c0
  • dragdrop: Wire-up the UIElement.DragStarting event 0242a0e
  • Droid: Enabled TextBox.CharacterCasing a0d714c
  • iOS: Update method signature for null 7811661
  • TileNotification common struct 705eab8
  • dragdrop: Add missing support for DragStarting and DropCompeleted event handlers 3d81579
  • dragdrop: Add support for external drag and drop on skia 593d6d5
  • dragdrop: Complete support for external drop of all types from other apps/macOS 1680b51
  • dragdrop: Complete support for most drag and clipboard formats in macOS c6bfcd4
  • dragdrop: Fix macOS clipboard usage of DataPackage 91c9fec
  • dragdrop: Hit test and raise the Drag and Drop eventys in the UI 991e885
  • dragdrop: Hook into macOS native window drag/drop methods 80381ca
  • dragdrop: Initial support for drop from external macOS apps f594af3
  • dragdrop: Multi target the Window.RootElement property e853cf7
  • dragdrop: Show a dragging image in macOS 103d2cc
  • dragdrop: Update iOS clipboard usage of DataPackage 04feaca
  • drapdrop: Support for external file drop from macOS ce80450
  • PathIO: Support for Windows.Storage.PathIO API ae86107
  • PathIO: Support PathIO API 03b775b
  • perf: Improve performance of the ScrollViewer with managed ScrollBar by defering their load 08eacc5
  • pointers: Implement pointer capture on skia 7caf355
  • storage: Extract MIME type from extension resolution to a dedicated service 5da461a
  • Test: Add iOS Test for CommandBar navigation 4897a14
  • wasm: added a font-face override for Segoe to add some cross-platform font consistency fa344d1
  • Add support for C# 9.0 source generators 560e9b3
  • Add support Setter.Target in style declaration d8005d2
  • iOS: Add iOS only solution for Vs4M a5566b4
  • storage: [Perf] allow direct access to the file stream from FileIO when possible bc9540e
  • storage: Add a Buffer.DefaultCapacity e2c49f8
  • storage: Add basic implementation of the AsyncOperationWithProgress a774ad5
  • storage: Add support of streamed <In|Out|RA>Stream aecc0f1
  • storage: Add WinRT RA/In/Out Stream adapter to/from system Stream 2f720ca
  • storage: Code cleanup fb7505f
  • storage: Complete removal of direct file system access in FileIO f913d02
  • storage: Implement RandomAccessStreamReference ec732a5
  • storage: Implement the StreamedCustomDataLoader e6a63ae
  • storage: Implement WindowsRuntimeBufferExtensions 3e0fe98
  • storage: Import missing interfaces from generated code 922632a
  • storage: Make the RAStreamWithContentType a stream wrapper 789ae3f
  • storage: Refactor StorageFile to add support of streamed file (future commit) and File<In|Out|RA>Stream cd2b766
  • storage: Suffix Stream.<Read|Write> accepting buffer by Operation to clarify return type + add ability for stream wrapper to return null so wrapper can be dynamic 1b363e3
  • storage: Use Memory in buffer instead of byte[] 1080144
  • VibrationDevice: Support for Android 1800b95
  • VibrationDevice: Support for iOS 144520d
  • VibrationDevice: Support for macOS 1838e46
  • VibrationDevice: Support for WASM c244733
  • VibrationDevices: Support for Tizen 2a9bca0
  • XamlRoot: Initial support for UIElement.XamlRoot 1cd99c5
  • ChatMessage - common structs 9452e65
  • Storage.Pickers.PickerLocationId cb6bec6

Performance Improvements

  • commandbar: Removed redundant DP lookups on Android Native CommandBar renderer 2b663b9
  • Adjust parallelism configuration 7ef00f8
  • Reduce lookups and symbol displayname comparisons 17e19f3
  • Remove Uno.CodeGen from SampleApp to improve build performance 4a0d9ed

Bug Fixes

  • changed order of calls in ContentDialog Hide complete handler to invoke the closed handler before the result is set, and modified UI test to change the text before deferral is completed. 88e62ff
  • android_elevatedview: Fixed clipping for ElevatedView when place in a ScrollViewer on Android. 8b8ff63
  • build: Fixed missing Generic.xaml as source for generated code. 5e27b29
  • clipping: Tooltip were not properly supporting rounded corners as UWP 40a5787
  • commandbar: Fixed height of CommandBar on iOS when using native template. fc67d09
  • commandbar: Removed potential memory leak 753616a
  • commandbarrenderer: Fix CommandBarRenderer Height for iOS 28cc1b6
  • contentdialog: [Android] Fix botom of full-size ContentDialog cut off 6c0ede3
  • **conten...
Read more

3.1.6

23 Oct 19:35
Compare
Choose a tag to compare

The 3.1 release is our 6th release in 2020! In our 2019 survey you had asked to release more often and we hope we have delivered.

In year 2019, we had a total of 4 releases and in 2020 we are already up to 6. We also hope to have at least one more release by the end of the year!

The 3.1 release is special not only because of the new scenarios it unlocks, but also because of significant community contributions we are able to ship – thanks a lot to @robloo, @dansiegel and @MartinZikmund for your contributions.

For this 3.1 release, we were able to add over 70 features and close over 140 code and documentation issues. Let’s unpack the release.

  • The first preview release of the Linux and Windows 7 support using a new Skia rendering backend. We’ve already started using it on the Uno Calculator, and it’s looking great!
  • The WinUI 2.x TabView and TreeView controls for Skia and WebAssembly, the other platforms are coming. (Thanks @MartinZikmund)
  • ScrollViewer XAML ScrollBars for WebAssembly and Skia
  • Improvements to the VSIX/dotnet new updates, such as new item templates in the VS, .vsconfig support to suggest VS features to install, and Skia Backend templates.
  • The support for StorageFile.GetFileFromApplicationUriAsync, to use large assets packaged with the application, something particularly useful in the WebAssembly context.
  • The WinUI ColorPicker support (iOS/Android) (Thanks @robloo)
  • WebAssembly support for Canvas.ZIndex
  • Support for x:Bind plain C# objects bindings, as well as Bindings.Update()
  • Windows.Globalization.Calendar updates, paving the way for Date and Time pickers
  • FolderPicker support for macOS (Thanks @MartinZikmund)
  • BadgeNotifications for Android and iOS (Thanks @MartinZikmund)
  • Page supports background brushes
  • Fixes for NavigationView navigation items binding
  • Voice over support for WebAssembly

And finally, the whole new Prism 8 templates updates for the dotnet new experience.

Here's the detailed change log for this release:

Features

  • dependecyproperty: New internal obj.GetValueForEachPrecedences(prop) for tests and diagnostics c6605d7
  • Droid: Enabled TextBox.CharacterCasing a0d714c
  • Add one-line method to set native frame navigation styles b228b16
  • Add welcome page for vsix, set UWP as startup project 8995335
  • Initialize property respecting platform spec 28640cc
  • PhoneCallHistory common structs d482bbb
  • TextBox add partial method 2e24ba8
  • ToastNotificationActivatedEventArgs structs for all 8838300
  • Updated default value to match UWP fdda6c5
  • PointerCursor: Support for WPF & GTK eed57c3
  • pointers: [Skia] Enable hit test caching (perf) 5da4d00
  • pointers: [Skia] Fix the stale branch detection while hit testing c1f9755
  • pointers: [Skia] Use the already existing bubbling algorithm for pointer 17c81a4
  • pointers: Add ability to aggregate intermediate elements while wlking the tree to compute the transform from an element to another one 3be13e4
  • pointers: Add element hit test cahcing 5bfae6c
  • pointers: Enable hit testing caching 2903573
  • pointers: Enable ScrollBars on Skia 7e5c387
  • pointers: First working implementation of managed event dispatch with valid OriginalSource detection c6aa81f
  • pointers: Remove broken hit test element caching c246b01
  • scrollviewer: Restore the managed ScrollBar in default ScrollVirwer template for WASM 7d0e40c
  • skia: Add support for netcore3.1/5 in Skia.WPF e2d4eb2
  • skia: Add support for WriteableBitmap 8da3a80
  • storage: [Android] Add support for GetFileFromApplicationUriAsync 55d300d
  • storage: [ios/macos] add support for StorageFile.GetFileFromApplicationUriAsync 80262f0
  • storage: [Wasm] Add support for GetFileFromApplicationUriAsync d3bc03a
  • vsix: Add ContentDialog, Resource, CustomControl and UserControl VS 2019 templates. c2ca533
  • vsix: Add support for .vsconfig file for dotnet new and vsix bf463fa
  • vsix: Include Skia targets fde903c
  • WASM: Enable A11y voice over capabilities 8b2dbc6
  • WASM: Set a11y properties all the time 2c126b4
  • WASM: Set both a11y attributes at once 978669f
  • WASM: update role finder method ec46a0e
  • wasm_zindex: Added support for Canvas.ZIndex to Wasm platform b857844
  • xf: Update X.F templates to use 4.8 release 9b05b58
  • Contact support struct/enums c48be37
  • CoreApplicationView.CoreWindow property 800ac7a
  • more fields in Geoposition (on Android) 81fbb8d
  • calendar: Update support for Calendar formatting and others f8cf74d
  • skia: Fix element not removed from the visual tree and Unloaded event never invoked 3f273fe
  • xbind: Add support for x:Bind to POCO, performance improvements. 2cb22f7
  • [Skia] Add CrossRuntime library support e67d672
  • Add CancellationToken propagation da5d8aa
  • Add HAS_UNO for non uap targets 6bbcaec
  • Add includeCurrent flag to FindFirstParent() e9f0c36
  • Add Skia (Gtk/Wpf) unoapp heads in dotnet new 0c6a958
  • Add support DataTemplate is container host 49c46f4
  • AppModel-Background-struct 87f2cc8
  • Finished implementation of TreeView class 80cc015
  • Finished TreeViewViewModel implementation f9cf8f8
  • FolderPicker on macOS ea28b8d
  • implementation of CalendarDatePickerDateChangedEventArgs 12aeca1
  • Implemented SelectedItemsVector and SelectedTreeNodeVector de9e4a3
  • Updated MUX package for UWP samples app ffb65fb
  • AutomationPeer: Add methods with default return values 9274560
  • BadgeNotification: iOS support 63811aa
  • BadgeNotification: macOS support 949608b
  • ColorPicker: Add ColorConversion, Hsv & Rgb structs 95a4bd1
  • ColorPicker: Add ColorPicker control including ColorPickerSlider 16fc608
  • ColorPicker: Add ColorSpectrum control bb2d504
  • droid: Add support for InvokeScriptAsync on WebView 9c494cb
  • iOS: Add support for InvokeScriptAsync on WebView 8c8fdb8
  • macOS: Update src/Uno.UI/UI/Xaml/Controls/ScrollContentPresenter/NativeScrollContentPresenter.macOS.cs 3415d38
  • NSUImageExtensions: added monochrome image recoloring for macOS 3d112d6
  • shared: change the winjs font for a new fluent style font cda7703
  • Symbol: Add missing symbols ce04184
  • Tizen: Initial target support 9ac9460
  • wasm: Added .ShowLocalVisualTree() for wasm platform 42b5c47
  • Throw appropriate exception when obtaining location without permission 92af4f2
  • TimeTrigger (struct) f605056
  • ToastNotification and NotificationMirroring definitions ab317b0
  • UserProfilePersonalizationSettings on Android 3634888

Bug Fixes

  • dependencypropertyprecedence: Changed the precedence override to use a stack instead of a single field. d7e0822
  • Droid: Remove multiple partial implementation 49f2ae5
  • iOS: Remove warnings when building the iOS head 7ac08e5
  • skia: Adjust visual clipping for ScrollViewer 6a3839b
  • style_precedences: First setter on a style were applying its value on the target using the "Local" precedence. 388b162
  • [iOS] [Android] Prevent Render() method from reentering 163128a
  • Handle NullExtension in XAML code generation 25a08ce
  • skia: Hide Visuals for zero arrange, reduce refresh load f8818db
  • [WASM] ContentPresenter.Background re-renders when Color changes 13f3aa2
  • Drawable error message made more clear 1f3c00f
  • Fully quality BindableMetadata generated types aad95fe
  • TextBox.VerticalContentAlignment 40fe514
  • combobox: [iOS] Fix memory leak c85f2a3
  • ContentDialog: [iOS] Fix memory leak 623c02d
  • fips: Use SHA256 for sourcegenerator path hashing c83223b
  • ListViewBase: Item container indices not updated on insert/remove 80ebd54
  • ListViewBase: Item container indices not updated on insert/remove ebdca5d
  • macOS: exception on Scrollview contentchanged 709b988
  • NativeApplication: don't call OnLaunched again if app is already running (i.e. when focus is regained) f3ba2b6
  • net5: Fix for net5 source generation nullable references support 671947f
  • publish: Fixes publish to azure may fail with locked files c02eae2
  • samples: Ensure the app can finish even in exceptional cases a769295
  • skia: Adjust error handling for skia samples run 675dcd4
  • skia: Fix content file deployment from VS d4eae5f
  • skia: Remove inner visual from panel on element removal 6bd6a03
  • skia: Remove NotImplemented on FrameworkElement.Dispose() 9c372eb
  • TemplatePool: Fix TemplatePooling may still be active when disabled 5e11ee0
  • test: [Wasm] Adjust WindowHelper.WaitForIdle to actually wait for idle c000291
  • TextBox: fixed multiline textbox height not scaling properly on wasm c586e09
  • Add documentation for add reference issue in cross targeted project ec998aa
  • Add workaround for intellisense issues in the Android project 155d124
  • Added MUX styles to run Samples on Windows 735ca30
  • Don't propagate DataContext via Border.Child 0dc34bd
  • Fix Slider thumb not visible when Value is at maximum b9d0083
  • move ListViewItem.cs to Controls folder ea379ce
  • Update Shape.Fill when LinearGradientBrush gradient stops change 947d2dd
  • analyzers: Analyzers may not show the proper status using the reference API c58565e
  • combobox: PlaceholderText not displaying c4c1109
  • doc: updating font doc is easier to read 37bcfef
  • **Na...
Read more

Uno Platform 3.0

12 Aug 22:13
0a2692c
Compare
Choose a tag to compare

Here's the amazing Uno 3.0 release, again packed with features, bug fixes and performance improvements.

This release is also the first in a long time to introduce binary breaking changes, yet with minimal behavior and code breaking changes. Rebuilding your application using Uno.UI 3.0 will generally be enough, with a few adjustments to the configuration. You can visit the documentation for more information.

Among the major features:

  • Acrylic Brush support for iOS, Android, macOS and WebAssembly
  • Many ScrollViewer improvements, such as XAML ScrollBar
  • Themeing support, with ResourceDictionary and implict styles updates
  • Fluent Styles from WinUI 3.0
  • DisplayInformation support for DPI and orientation changes
  • The inclusion of WinUI 3.0 API set support (Preview 2)
  • macOS support updates (Shapes, Keyboard, MediaPlayer, ...)
  • MidiInPort support (iOS, Android, WebAssembly)
  • MSAL.NET support for WebAssembly
  • WinUI ProgressBar (based on AnimatedVisualPlayer), SplitButton
  • x:Bind support for events
  • FileIO updates to support Buffer, DataReader, DataWriter
  • Clipboard reading and writing updates (iOS, Android, macOS, WebAssembly)
  • Support for CustomXamlResourceLoader and CustomResource
  • Support for NetworkInformation and status

We've also improved the performance of the DependencyObject and DependencyProperty classes, making it faster for code accessing dependency properties by their C# accessor through caching and O(1) property access.

You'll also notice below a large set of changes related to the addition of the Skia backend, which are to be released in preview for Uno.UI 3.1 as we add new features. The changes for the support of Skia largely impacted the support for WebAssembly, making it a good choice to include in Uno 3.1 and avoid including breaking changes. These changes include the introduction of the Uno.UI.WebAssembly package that needs to be added to the head WebAssembly project. For more information visit the documentation.

On the breaking changes front, for which most of the code will not be affected:

  • On iOS/Android/macOS, ee aligned the APIs that Uno used to incorrectly type as native views, particularly with UIElementCollection and Panel.Children. Some elements such as Image are now getting the appropriate base class.
  • UIElement now no longer provides a implementation of INotifyPropertyChanged
  • We removed the support for the deprecated Android 8.0. Make sure to upgrade to Android 10.0.
  • If you have an existing Uno 2.4 or ealier application, make sure too adjust the Application constructor to include the new () => new App() lambda
  • Many other binary breaking changes that require the rebuilding of the libraries that depend on Uno.UI.

Have fun with Uno 3.0!


Features

  • [Skia] Add CrossRuntime library support a6c9824
  • Add Skia (Gtk/Wpf) unoapp heads in dotnet new 74d2518
  • AcrylicBrush: First Android version 4a291e7
  • AcrylicBrush: First iOS implementation 98ebcb4
  • AcrylicBrush: First macOS implementation 17ea8a5
  • AcrylicBrush: First WASM implementation 4dd994f
  • dispatcherQueueTimer: Add support of the IsReapeting property 556e4ae
  • FileIO: WriteTextAsync and AppendTextAsync fcee9b7
  • macos: [MacOS] Add clipping support 1c8a0ad
  • pointers: [Skia] Add support for key modifiers and improve support of horizontal scrolling (including shift+wheel) 5b9bc79
  • scrollViewer: [Skia] Add support for SV.ChangeView (and scroll bars!) d79c9fd
  • scrollViewer: Add style that uses the native scrollbars fcdc215
  • scrollViewer: Add support of managed ScrollBar in ScrollViewer efcc30f
  • scrolViewer: Implement SV vsiual states (used to render managed scroll bars) 6fe45f1
  • skiawpf: Added required extensions for Skia.Wpf with naive implementations 5f6a4b5
  • skiawpf: Added support for command-line arguments cafc618
  • skiawpf: Added support for FontWeight, FontStyle & FontStretch. Works only with Font Families, not when specifying font file directly. 03698ab
  • skiawpf: Added support for Full Screen mode 64adca7
  • skiawpf: Added support for Horizontal Mouse Wheel 108aedd
  • skiawpf: Added support for pointers - first working version. 9801c51
  • skiawpf: Added support for Window Title ea5e7f8
  • styles: Add XamlControlsResources, add compact resources ecb1868
  • styles: Import Fluent styles from WinUI 16639c9
  • theme: Limited support for FrameworkElement.RequestedTheme b543db1
  • wasm: add the FileSavePicker which caches a file in the browser and downloads it when modifications are done. 5c19363
  • wasm: Added GetHtmlAttribute for an Element on Wasm. 92b0489
  • wasm: BitmapImage now supports scale qualifiers b14ee4d
  • [Skia] Add scaled images support 9117af9
  • [Skia] Add support for UIElement.TransformToVisual 8403fc2
  • Add codespaces support 235a3d4
  • [Wasm][Skia] Add icon and title support from package.appxmanifest dc4e7ee
  • IOS TimePicker flyout styling f4d7bbb
  • IsApiContractPresent detects Uno.WinUI package b383c42
  • Update WASM Path on changes d06cb5b
  • Various skia updates d7dd9ce
  • TextBlock: Added TextBlock MaxLines implementation for WASM 94a3650
  • [Skia] Load fonts from local path feaec98
  • Add cross-runtime library support for dotnet new 605d9a6
  • color: Applying a value to a SolidColorBrush in a style now works well as on UWP. 8c5213d
  • Add support base for Skia on .NET Core dbf8aa8
  • Add support for msbuild UnoRuntimeProjectReference da90b3f
  • coloranimation: First implementation of ColorAnimationUsingKeyFrames 0091a9f
  • DisplayInformation: Android OrientationChanged and DpiChanged 76dd0cf
  • DisplayInformation: iOS OrientationChanged and DpiChanged 98fef86
  • DisplayInformation: macOS OrientationChanged and DpiChanged events 06be6fc
  • DisplayInformation: WASM DpiChanged and OrientationChanged 819dfd1
  • DisplayRequest: WASM support 91d3300
  • frameworkelement: Add VisualTreeHelper.AdaptNative()/TryAdaptNative() 9bdc1a4
  • Launcher: Launch file/folder on macOS 81bd3ac
  • macOS: Window resize, min size, size changed be6f1ad
  • progressbar: Added display of CurrentState name in sample. 3f6f1f8
  • textblock: [WASM] Added support for IsTextSelectionEnabled on TextBlock. 8ad9560
  • wasm: Add new methods to set and unset CSS classes on a HTML element. 7bac999
  • wasm: Added javascript helpers for Wasm, to allow interop with javascript after the new packaging system. b1d11d0
  • Update to WinUI 3.0.0-preview2.200713.0 b449e53
  • elevatedview: Added support for macOS df31c10
  • elevatedview: ElevatedView on Android now supports setting the shadow color. 0275d09
  • (macOS) Add support for Shape Line a61e5a9
  • (macOS) Add support for Shape QuadCurve f87f659
  • (macOS) Add support for Shapes Path d480964
  • Add support for INPC(String.Empty) to notify all object's properties 308eb77
  • Add support for TextBlock.Foreground update on SolidColorBrush.Color changes a584e60
  • animation: Implemented FadeInThemeAnimation + FadeOutThemeAnimation. 9d3da6e
  • converter: Added CornerRadiusFilterConvert & CornerRadiusToThicknessConverter 3427e7a
  • converter: Added XAML convertion from SolidColorBrush to Color. da8eb9f
  • imageBrush: [Android] Add support for WriteableBitmap 8975be0
  • imageBrush: [iOS][macOS] Add support of WriteableBitmap 08716bb
  • imageBrush: [WASM] Add support of the ImageBrush 7af4d1e
  • listview: [WASM] [MACOS] ListView observable collection support a181d40
  • msal: Added new Uno.UI.MSAL add-in project file into solution. eb651fa
  • msal: Added support for MSAL in SampleApps of all platforms 7418302
  • progressbar: Added WinUI 2.3 ProgressBar first implementation. 195af14
  • progressbar: use WinUI template c4a3ba6
  • Add Uno.UI package to UWP in templates 377612d
  • Add x:Bind support for events 2b81c0e, closes #3172
  • Adds the Dopes performance test ff61bc2
  • Adjust for WinUI 3.0 Preview 1 bits 91b1576
  • Buffer d418611
  • DataReader d756b36
  • DependencyProperty read/write benchmark 141aa4d
  • msal: Added a sample for MSAL+Graph 4ce9339
  • Application.Exit on macOS cce79db
  • ElevatedView implementation for Uwp 743dbec
  • Set UnoSkipUserControlsInVisualTree to false by default 481f20c, closes #61
  • Support CloseRequested and Suspending on macOS facc0a2
  • Theme Asset Qualifier on Android bd6c619
  • Upgrade UWPSyncGenerator to Roslyn 3.6.0 3a8f8b9
  • Clipboard: ContentChanged on macOS 41de59f
  • Clipboard: GetContent on iOS b83d7d2
  • Clipboard: iOS Flush, Clear and ContentChanged 73d1213
  • Clipboard: macOS support for Clear and Flush 2e6932b
  • Clipboard: Support Clear, Flush, ContentChanged on Android ec6088e
  • Clipboard: Support Flush, Clear, ContentChanged on WASM 920304e
  • Clipboard: Support GetContent on WASM b4ba967
  • Clipboard: Support storing multiple data items on Android 482b0dd
  • easing: Implemented Circle easing functions 82ab08e
  • ios: customizable MenuFlyout cancel text 36ba934
  • MenyFlyout: Add support for ToggleMenuFlyoutItem 7542b0a
  • MIDI: Support for MidiInPort on WASM 00b5159
  • MIDI: Support MidiInPort on Android 5995708
  • MIDI: Support MidiInPort on iOS b26e069
  • styles: [Android] [iOS] Allow MessageDialog.ShowAsync() from background 43a2189
  • styles: Allow native style usage to be overridden per control b0f8f86
  • styles: Implement 'xaml scope' resource resolution b0376de
  • styles: Populate Resources from XAML bd3539c
  • styles: Populate ThemeDictionaries defined in XAML 18240f7
  • styles: ResourceDictionary - support ...
Read more

2.4.0

15 May 18:18
900f7dd
Compare
Choose a tag to compare

This exciting new release is all about enabling development on macOS and making apps for macOS!

We've been working on this for a while now, and with the help of contributors (thanks @MartinZikmund!), we're now announcing the preview of Uno's macOS support.

To validate that our macOS support is taking shape, we ported over the Uno Calculator over, and it's now available on the mac App Store.

There are lots to do to get to the full potential of macOS through Uno's abstractions, yet it will allow you to start developing for macOS.

To create a new application with Uno in Visual Studio for mac:

  • Open a terminal

  • Type the following to install the Uno templates:
    dotnet new -i Uno.ProjectTemplates.Dotnet::2.4

  • Type the following to create a new project:
    dotnet new unoapp -n MyUnoApp

  • Open the project in Visual Studio

To build for each platform:

  • For macOS:

    • Right click on the macOS project, then Set as startup
    • If “My Mac” is not selected in the top bar, make sure to select “Debug | iPhone Simulator” in the selector
  • For iOS:

    • Right click on the iOS project, then Set as startup
    • In the configuration selector, instead of Debug, select Debug | iPhoneSimulator
  • For Android:

    • Right click on the Android project, then Set as startup
    • If your android device or simulator does not appear in the list, use the Debug configuration.

MacOS Implementation Details

The implementation of the macOS support is Uno is heavily based on the iOS support. The reason for this is UIKit for iOS being very close to AppKit on macOS. This allowed us to reuse large portions of the code from iOS and adjust to fit macOS’s behavior.

Yet, there are some very subtle differences in the implementation though, where methods such as UIKit.SizeThatFits() or UIKit.SetNeedsLayout() are either absent or behaving very differently. That may be why you’ll notice parts that need so fit and finish and we encourage you to open issues on our GitHub repo.
You may ask why we did not choose to go the Catalyst route, and you’d be right. The main reason is the lack of support for Catalyst from Xamarin, and if you want to chime in this issue if this is of interest to you.

At this time, and contrary to what’s available for iOS, debugging and deploying a macOS app must be done through Visual Studio for mac, while only building is possible in Visual Studio 2019 for Windows. This feature is missing from the Xamarin tooling, and if you want that support to be added, you can vote on this issue on the Visual Studio Community site.

Features

  • macOS: Add support for Localization (a77611c)
  • macOS: Enable macOS template from VSIX (bd6fbce)

Bug Fixes

  • dotnet_new: Adjust default active projects in VS for mac (ec2de29)
  • dotnet_new: Fix project guids duplicates causing issues in VS4mac (1ef6b78)
  • macos: Missing mac platform for Uno.UI.RemoteControl (1d57cc2)
  • xbind: Possible invalid type cast in two-way mode (b952235)
  • xbind: Fix static member access in DataTemplate (d3c70c3)

2.3.2

12 May 22:53
1917962
Compare
Choose a tag to compare

This release focuses on adding the support for Android10 and AndroidX, WinUI's RadialGradientBrush and ProgressRing, Prism Library, and a number of bug fixes that you can see in the change log below.

Using the API level 29 allowed us to review our TextBlock implementation for Android and replace some reflection code required to access hidden APIs for MaxLines by official APIs that are now available. While being safer going forward, this approach also provides performance gains for this crucial control.

As the Google Play store won’t accept applications built for Android 8 (SDK 27) since November 2019, we’re removing support for that SDK to simplify our codebase and devops pipelines. To use Uno 2.3 or higher, your application needs to target Android SDK 28 (android 9) or 29 (Android 10).
If your application makes explicit use of support libraries, you’ll need to update those to Android X, and there’s some good documentation for it. Shout out to the Xamarin team, their migration tooling worked really well.

Among other notable changes:

The Uno.Wasm.Bootstrapper 1.2 has been released and removes the unfriendly use of “DotNetCliToolReference” that could not be updated via the Visual Studio interface. It includes all the recent improvements such as Windows AOT, Visual Studio 16.6 debugging, .NET interpreter performance improvements, macOS and Linux support, and Visual Studio Code support.

To upgrade from previous versions of the bootstrapper:

  • If you had a <DotNetCliToolReference … /> line in your csproj file, remove it
  • Add a nuget reference to the Uno.Wasm.Bootstrap.DevServer using the Nuget Package manager

Features

  • Add support for Android10 and AndroidX 7b05b51
  • focus: Add support for FindFirstFocusableElement 66c514b
  • focus: Add support for FindLastFocusableElement 2049304
  • gradient: [Wasm] Added support for gradient text 92aa150
  • gradient: Added FallbackColorWithOpacity. d834088
  • gradient: Added Radial Gradient for Android 171f9e4
  • gradient: first working implementation of RadialGradient on WASM fe5d86c
  • gradient: RadialGradientBrush for iOS be6d8af
  • lottie: [Android] Added Progress, IsPlaying & Duration 179c2cc
  • lottie: Allow loading of Lottie files from embedded resources. a211406
  • progressring: First implementation of WinUI 2.4 ProgressRing. 00df9d8
  • progressring: Transposed C++ code from WinUI 06621fd
  • Added NotImplemented Attribute for TopAppBar and BottomAppBar ccfa190
  • Update feature availability for the other platforms fc06be3
  • lottie: [iOS] Added support for Progress, IsPlaying & Duration 9e11da1
  • lottie: [Wasm] Added Progress, IsPlaying and Duration c0887fb
  • Xml: Implemented Windows.Data.Xml.Dom APIs 6f901e1
  • Add support for Prism library dotnet new template 18cccbb
  • Removed conditional compilation for NotImplemented attributes 6362cfb
  • Support WebView.DocumentTitle on macOS 0f54709
  • (macOS) Add CurrentOrientation support 1d0a89a
  • (macOS) Add default NativeOrientation dfd6cea
  • (macOS) Add default property state to the Style a52d326
  • (macOS) Add delegate for PasswordBox 7eee1ef
  • (macOS) Add IsPasswordRevealButtonEnabled for PasswordBox b249253
  • (macOS) Add SecureTextBox for PasswordBox 7e826cb
  • (macOS) Update PasswordBox implementation a087a21
  • cursor: Support PointerCursor on macOS 057f6bd
  • gradient: Added macOS support for RadialGradientBrush 3c93e6e
  • PackageId: macOS support 062ea5d
  • Support ComboBox on macOS 3ede85c

BREAKING CHANGES

  • All targets are now using the AndroidX support libraries. If your
    application uses explicit references to support libraries, you'll to upgrade
    those as well.

Uno upgraded from:
- Xamarin.Android.Support.v4
- Xamarin.Android.Support.v7.AppCompat
- Xamarin.Android.Support.v7.RecyclerView

To :
- Xamarin.AndroidX.Legacy.Support.V4
- Xamarin.AndroidX.AppCompat
- Xamarin.AndroidX.RecyclerView
- Xamarin.AndroidX.Fragment

Bug Fixes

  • [MacOS] Fix event handler not invoked in the sample app 9bbfa1a
  • Fix support for TextBlock under Android 10 fdc7327, closes #2016
  • android: Uno template for Android now reacts to all ConfigurationChanges 859da96
  • android: various issues with readonly textblock 2dd4bc8
  • android_geolocator: Request and validate permissions ed0d4e3
  • animation: [iOS] Fix InvalidCastException when app resumes while animation is active 32dba9c
  • commandbar: [iOS] Update CommandBar layout when Visibility changes fc18909
  • dotnet_new: Fix automated uno packages version update during CI 87d0798
  • dotnet_new: Update the publisher format 79f41dc
  • flyout: Fix NRE from trying to close uncreated Popup in Flyout 18f0191
  • gradient: Apply Log().IsEnabled for logging in generated code. f383dc6
  • gradient: Fixed default values for Radius & Origin on RadialGradientBrush. d2d60a7
  • gradient: LinearGradientBrush now derives from GradientBrush. ae1a6ad
  • gradient: Removed [NotImplemented] on BrushMappingMode. 7f3c53c
  • lottie: Fixed missing dependencies in NuGet package. 8d4012f
  • lottie: improve assembly scanning. 326251e
  • lottie: Updated Lottie-web to from 5.4.4 to 5.6.8 c49db32
  • macos: Adjust default dotnet new sln configurations 76170a6
  • mediaplayer: [iOS] Fix exception from MediaPlayerPresenter returning infinite desired height 3fd116d
  • mediaplayer: Arranges the player even if the video ratio is of 0 as this will lead to a real video ratio. 0ac5e31
  • mediaplayer: Fix invalid stop of the player when toggling the fullscreen mode. efe2e89
  • mediaplayer: NRE when the surface is destroyed but the player has already been released. e29a537
  • mediaplayer: Resets the MediaPlayer and its surface when setting its source to null. 70b79e8
  • pointers: [iOS] Try to re-use pointer ID in order to detect DoubleTap 44df20e
  • progressring: Fixed bug on Wasm where ProgressRing was stuck. c9d0ea0
  • shapes: [WASM] StrokeDashArray is not published to native element 48b971f
  • solidcolorbrush: [ANDROID][WASM] Color brushes added to Thumbtint, TrackTint, Fill, and Stroke missing opacity ff059c3
  • xBind: Fix x:Bind parsing when ignorable directive is not present d17bd91
  • (macOS) rename file name to match with class 9698914
  • Add changes to packagediff ignore file 3f34de8
  • Adjust screenshot comparer with missing ZipFile dependency 471a65d
  • Adjust Uno.UI and Uno.UI.RemoteControl references in macOS template e6ba3da
  • Adjust WebAssembly detection after a breaking change in RuntimeInformation bd00e78
  • build error on CI 6fffaa8
  • ci build - make field readonly c1c5eb3
  • Fix http: samples working on macOS c0217b5
  • Fix incorrect XAML parsing of x:Bind with ConverterParameter abb43f9, closes #3049
  • Fix the wasmxfhead template creation was using blank uno app f5fe5e6
  • Improve NativeFramePresenter.iOS implementation to fix concurrency issues. 7985a91
  • property signature 9eca43a
  • Remove explicit DependentUpon from BlankPage.vstemplate 6ed24a5
  • popup: Update position when VerticalOffset changes 239cc2f
  • RemoteControl: Make Wasm WebSockets dependency conditional to netstandard 2.0 c112690
  • template: Adjust default organization for UWP dotnet new app template ff5171b
  • tooltip: Place tooltip relative to mouse pointer f63617f
  • tooltip: Support views as direct TooltipService.ToolTip content 19482e8
  • Fixes symbol icon Home not shown bde78f1
  • Remove the sealed attribute from generated code (#2830) 2e80728, closes #2830
  • Updated UWP Samples app signing certificate 4180cc6

2.2

21 Apr 18:35
26bc8a6
Compare
Choose a tag to compare
2.2

The Uno 2.2 release is packed with new features, performance improvements and bug fixes, even if it's closely following the 2.1 release!

We're also hard at work on adding support for macOS apps (Thanks @MartinZikmund), and while we still do not have anything to announce, it's taking shape!

Among the implemented features, you'll find:

  • Support for MenuFlyout, UIElement.ContextFlyout and MenuBar
  • Support for ScrollBar
  • Add support for dotnet new unoapp and macOS templates
  • Support for Electron hosted apps
  • ImageSource.SetSourceAsync support for WebAssembly (Thanks @SuperJMN)
  • Support for ColorAnimation
  • Support for Pedometer for iOS and Android (Thanks @MartinZikmund)
  • Suppport for mouse wheel events (PointerWheelChanged) on WebAssembly
  • Support for DropDownButton from WinUI 2 (Thanks @MartinZikmund)
  • Many performance and memory updates impacting all platforms at various levels, such as giving a rough 20% improvement on controls creation on WebAssembly. A more detailed post will follow soon on that topic.
  • Support for ms-appdata paths in Image, MediaPlayer (Thanks @MartinZikmund)

Uno is now built using C# 8.0 and VS 16.5 on Azure Devops hosted agents, which means that AndroidX and Android 10 support is close by.

And finally, many of the recent updates were targeted at improving the behavior of controls in the Windows Community Toolkit, with enabling DataGrid, TabView and Expander controls. On the topic of the DataGrid, there's still lots of work to be done, particularly around performance under WebAssembly, but this release updates now make the control useable.

Features

  • [WASM] Added the ability to load images from bytes (9cfb29f)
  • Add benchmark filter (1335d7b)
  • Add MenuFlyout support (4fc3cb1)
  • Add support for dotnet new unoapp and macOS templates (a591d69)
  • Add support for UIElement.ContextFlyout (5640745)
  • focus: Raise Control.GotFocus asynchronously (21d7758)
  • add support for Electron. (a56a7d9)
  • Add support for FindElementsInHostCoordinates (6231d0b)
  • Added support for DropDownButton from MUX (de78481)
  • ARM64 support for UWP in solution template (39230e7)
  • animation: [WASM] Add fast-path for zero-duration animations (19ec739)
  • animation: Implement ColorAnimation for iOS, Android, and WebAssembly (4b6ff56)
  • animation: Support independently animating SolidColorBrush from shared resource (f6b3ce8)
  • commandbar: Add support for native CommandBar.HorizontalContentAlignment on Android. (5e6ca82)
  • focus: [WASM] Update FocusManager when browser window loses focus (3a61248)
  • pointer: [WASM] Enable support of the PointerWheelChanged event (2a0d9fb)
  • pointers: [WASM] Add support for the mouse wheel event (57ccc39)
  • pointers: Wire-up the pointer wheel event (805e527)
  • Using Uno blue accent color for WASM splash (cf4d56b)
  • scrollbar: Add support for ScrollBar (9eadb8e)
  • Async initialization of Pedometer (0e306c9)
  • DatePicker now shows picker with today selected if no date is set (deef3dc)
  • Implement the Thumb.Start horizontal and vertical offsets (9246668)
  • Implemented AppDataUriEvaluator (a6f5d43)
  • Implemented DropDownButtonAutomationPeer (a057ef8)
  • Implemented pedometer on Android (cdf2cc6)
  • Implemented Pedometer on iOS (617dd49)
  • Remove monoandroid80 (1778a75)
  • Remove the dependency on System.Xaml for .NET Core compatibility (9d8674a)
  • Support for Frame.IsNavigationStackEnabled (d268db9)
  • Support Lottie animations on iOS (17df575)
  • wasm: Add CoreDispatcher support for threading (53304d5)
  • WebView: Add DocumentTitle for Android and iOS (21ae5b2)
  • Support of DataTransfer.DataPackage.RequestedOperation (a6a1479)
  • Use C# 8.0 by default (9431fc9)
  • Using ms-appdata paths in Image, MediaPlayer (42ecf36)
  • (macOS) Add #2844 support for Image (c0d16ea)
  • (macOS) Add image Asset in Sample proj (1f465a4)
  • (macOS) Add Support for DisplayInformation (fa52844)
  • (macOS) Support for XAML HotReload on the SampleApp (6387d57)
  • [macOS] Add support for TextBox (8c99072)
  • [macOS] ScrollViewer - show scroll bar (47dfe8a)
  • [macOS] Show full samples list (f080e87)
  • [macOS] Update properties on scroll (99ad526)
  • Add support for Lottie on macOS (1b8c6e5)
  • Added DoubleAnimation, DoubleAnimationUsingKeyFrames on macOS (3eea4b2)
  • DisplayRequest: macOS support (80ce63e)
  • ListView - allow WASM/macOS implementation to be tested on iOS/Android (c22a951)
  • Share WASM ListView implementation with macOS (1c3541b)
  • Support playback rate on iOS/macOS (f21f458)

BREAKING CHANGES

  • The Uno.Xaml parser is now always used

    The System.Xaml assembly is not always available, particularly when building under .NET Core.

  • The monoandroid80 target is not available anymore.

    It has been deprecated by Google.

  • Uno is now built using VS2019 16.4

    It does not support building Xamarin iOS/Android applications with Visual Studio 2017.

    Linker errors may occur such as:

    Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Collections.Generic.Queue`1'
    (defined in assembly 'Uno.UI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null') with scope 'mscorlib, Version=2.0.5.0,
    Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
    
  • commandbar: Alignment of native CommandBar.Content used to be Stretch/Stretch and is now aligned with Top/Left on UWP.

    Use `CommandBar.Horizonta...

Read more