Uno Versions Save

Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.

4.4.5

1 year ago

Uno Platform 4.4 is our 4th release in 2022, keeping us on a once-in-six-weeks rapid release schedule we aim for. The release packs numerous UI and performance improvements across all target platforms. First, on the UI side you’ll be able to produce beautiful fluid animations on .NET Android, .NET iOS and Skia-based targets, as well as increase high-fidelity renderings of all your texts on Skia-based targets. Second, on the performance side we are including support for the most recent WebAssembly advances available in .NET 7 – Wasm Threading and Exception Handling. Lastly, we also enabled new input scenarios via GamePad API support and improved the default project templates. In total we have implemented and resolved over 90 new feature requests and issues.

View the full announcement in our blog post.

Some of Highlights:

  • Skottie integration (MUX ProgressRing on all Skia targets and .NET 6 mobile targets) (@jeromelaban)
  • Overhauled Skia TextBlock rendering with HarfBuzz (Support for wrapping, rich formatting, etc...) (@mikernet)
  • dotnet new unoapp now uses .NET 6 and WinAppSDK (@jeromelaban)
  • The Skia.WPF project is now available as one project (no more .Skia.Wpf.Host project), and now supports .NET 6/C# 10 (@jeromelaban)
  • GamePad APIs (@MartinZikmund)
  • Experimental Wasm threads support (@jeromelaban)
  • Wasm Exceptions support (@jeromelaban)
  • Many small performance improvements for all platforms (@ebariche, @spouliot)

As always, thanks to our contributors:

  • Pre-Android 23 fix (@queequac)
  • Docs updates (@aki32, @mmarinchenko, @workgroupengineering)

You'll find below the full change log.

Features

  • lottie: Add support for AnimatedVisualPlayer on net6.0 mobile and Skia targets. f0a8ac9
  • Add the ability to set the Window background color 67f8ffe
  • implement CoreWindows.Bounds 41b21a3
  • Merge Wpf and Wpf.Host projects 3f82834
  • Move unoapp to unoapp-uwo f27c285
  • Move unoapp-net6 to unoapp-uwp-net6 d1b6ac2
  • Move unoapp-winui to unoapp-winui-xamarin 68dba9a
  • Move unoapp-winui-net6 to unoapp 1a0c349
  • BitmapImage: [Skia] Add support for ms-appdata, BitmapImage.ImageOpened/ImageFailed 639fac2
  • gamepad: GamepadAdded/Removed on Android a82cafa
  • Gamepad: GamepadAdded/Removed for WASM 1160c40
  • Gamepad: GamepadAdded/Removed on iOS, macOS dd0a1b2
  • Gamepad: GetCurrentReading on Android 96cd0bb
  • Gamepad: GetCurrentReading on iOS and macOS 2ce9933
  • Gamepad: GetCurrentReading on WASM 52dab51
  • TextBlock: [Skia] New HarfBuzz-based text rendering engine dcb83be
  • wasm: Add support for threads e53ca2f
  • Add WinUI 3 item templates d6a7c22

Performance Improvements

  • drawables: Generate resolver to avoid reflection at startup bab524b
  • iOS: Cache DisplayInformation properties a5919a8
  • iOSmacOS: Directly convert from Color to CGColor b9f8051
  • iOSmacOS: Remove dead code and reduce casts in Layouter 7b783b1
  • macOS: Avoid calling Subviews getter inside Dispose eff8fd7
  • macOS: Cache DisplayInformation properties 67e02bd
  • paintpool: Avoid unnecessary managed/unmanaged transitions d11d4e2
  • selectoritem: Use monotonic clock instead of DateTime.Now e8d9813

Bug Fixes

  • Adjust harbuzz initialization to avoid Gtk3 interference cc0b352
  • Never enable the interpreter on net6.0-macos 5c75735
  • Skia: [TextBlock] Fix rendering when font properties change 3dc5b2d
  • [Android] TextBox EmailSmtpAddress InputScope does not work ebb290a
  • [TextBlock] Prevent Text value overriding when it isn't necessary 3808c00
  • Adjust default timeout for vscode debugger 507b9c9
  • Adjust formatting in the vsix mobile template 4a96a92
  • Adjust net6 library template for default xaml includes a6e56ed
  • Adjust new net6 library from vsix 48ce808
  • Adjust solution filter for unoapp-net6 7741611
  • Align resource conversion for empty values 658b3f0
  • Allow explicit disabling of the browser context menu 6744488
  • AutoSuggestBox Reason with inconsistency 8d8686d
  • Avoid Layout property event subscription leaks 2f13d2c
  • Calculate SystemFocusVisual position relative to root element 996fd06
  • ChildrenInTabFocusOrderIterable skipping first element 908c1e4
  • Correct attribute argument for auto navigation 4b8a997
  • DataTemplateSelector should throw if container is null 4a296e4
  • Don't use GRGlInterface.Create to determine OpenGL availability 503d60b
  • Enable VerifyUIElementsInItemsSource test c802530
  • Ensure app is started after native WPF template is applied 08b3e0e
  • Gamepad readings improvements on WASM and Android 7036e6c
  • Invalid support check in OpenGLRenderSurface 3c1b5b8
  • Lower roslyn generation selection log message b85366b
  • Make Clipboard.GetContentAsync reliable 4762bb2
  • missing guarding leads to crashs under Android prior to API 23 97a88cb
  • Missing mobile project for unoapp 41e1059
  • NavigationViewTests waiting 7b4c596
  • Replicates the linker default behavior for xamarin.mac 8e69ea8
  • Use fully qualified name lookup for xClass resolution fa9f6b3
  • UWP Samples app runtime tests attempt to use DP from non-UI thread d656f03
  • codegen: Serialize XamlGenerator executions 38705eb
  • DatePicker: Ensure proper native picker readability when the system theme is overriden. 77b795b
  • dotnetnew: Fix incorrect restore in unoapp-winui f50e281
  • dotnetnew: Misc adjust unoapp-winui-net6 d77a1a4
  • expander: properly clip to bounds on expand/collapse 66cdc45
  • ItemsRepeater: Avoid ItemsSource and Layout memory leaks 9320a67
  • ItemsRepeater: FindFocusCandidate did not return focused child 6fcf1dd
  • macOS: Remove warning/usage about/of deprecated userSpaceScaleFactor f2b76cc
  • measure_dirty_path: recycled ItemsControl not re-measuring 6f87bb8
  • net6: Windows iOS build fails to package bundle resource properly dc6b864
  • pointers: [iOS] Fix frame id capping to uint.MaxValue (Breaks Drag and Drop after about 10 days of device uptime with latests version of iOS) 2a08809
  • skia: Add missing Harfbuzz dependencies for Wpf, Tizen and Framebuffer 260ae4d
  • skia: Adjust more Harfbuzz dependencies a7a6797
  • winui: Adjust path for manifest a318b3a
  • Reset NSObject InFinalizerQueue after calling ReRegisterForFinalize 79425c9
  • Sync system focus visual with the focused element on scroll 523a82c
  • TextWrapping="Wrap" does not seem to work for TextBox on Android 1727f40
  • try to fix broken initial nav 22d69aa
  • Using long path format for Attachment 99c410f
  • Validation for GL instance b1e50af
  • Window Title by Manifest in SKIA WPF and GTK 7081442
  • xbind: Ensure source updates update the target during a two-way binding 55d166f
  • TryFocusAsync on non-focusable elements 3e60ded
  • Turn Window Title by Manifest in SKIA 3665d46
  • reg: Add missing harfbuzz dependency e42bf4e
  • WebViewBehavior: nre 9aaa7e0

4.3.8

1 year ago

Uno 4.3.8 is a service release for Uno 4.3.

What's Changed

Full Changelog: https://github.com/unoplatform/uno/compare/4.3.6...4.3.8

4.3.6

1 year ago

Uno Platform 4.3 is here! The focus of this release was on enhancing our Figma plugin which generates your app XAML directly from Figma designs, Uno.Themes Material v3 update, as well as advancing Uno Extensions to help bootstrap your apps faster.

See our blog post to get all the details!

You'll also find updates for:

  • Visual Studio 2022 17.3 Preview 1 and .NET 6.0.300 Mobile GA support
  • Wayland support for Skia Gtk backend (Thanks @microhobby!)
  • Visual Studio 2022 Template Platform wizard
  • Grid Succinct syntax for WinUI
  • XAML MarkupExtension
  • NetworkInformation API support on Skia (@MartinZikmund)
  • BatteryReport and AggregateBattery (Thanks @pkar70!)

Read below for the full change log.

Features

  • [droid] BatteryReport and AggregateBattery c3be84d
  • Add VS 2022 .NET 6 template, split wizard e00079f
  • adding max textscale and usage 1a625e7
  • Allow runtime checks whether File System Access API file/folder pickers are available 4fc16bc
  • Avoid using Skia Host constructors with args 68a4f42
  • BTdevice structs ecfbbe1
  • Focus support in managed FlipView 58ea2f8
  • Implemented new grid succinct syntax. d433d2e
  • Implemented new WinUI Grid assigned ContentProperty syntax. ad7fa98
  • Implemented XamlReader support for ContentProperty syntax. 9f8d51d
  • Implemented XamlReader support for ContentProperty syntax. ab87f00
  • Implemented XamlReader support for succinct syntax. 8057b0c
  • Move ItemsSourceView implementation to base, support IReadOnlyList<T> d13f6fb
  • NetworkInformation API support on Skia b341ba9
  • Prevent net6 mobile creation below 17.3 7dd340e
  • Window size for Mac Catalyst 5a65465
  • gtk: Add OpenGL ES support 883ab5b
  • ios: Add GetLocationManager 12dae4c
  • markup: initial parser context support d5976c6
  • MSAL: Added "Jwt" assembly to linker definition, to prevent linking-out this when using the MSAL package. 1494c67
  • Pass arguments to LaunchActivatedEventArgs on macOS 21e664b
  • some Background structs for all platforms 01e0a48
  • ValueSet dd54b5c

Bug Fixes

  • Adjust formatting in the vsix mobile template c7565a0
  • Adjust solution filter for unoapp-net6 a2f553a
  • docfx missing change with the last merge a2e5cd5
  • Lower roslyn generation selection log message a0c5f7c
  • dotnetnew: Fix incorrect restore in unoapp-winui 77ef022
  • dragdrop: Make sure to disable dragging on LV's ItemContainer 9e797ad
  • markup: custom markup in binding is missing parser context 4f71e44
  • markup: NRException when returning null from markup 8a1ef0a
  • net6: Adjust assets generation of iOS/Catalyst 7c8bcfd
  • net6: restore xamarin-like ios exception marshaling for performance 04cd0dc
  • template: Adjust versioning in vsix templates f1b5527
  • [SamplesApp] ImageSourceStream Error 522 Connection timeout 931d251
  • Adjust default plist values for net6 mobile targets 8fd4390
  • Adjust resources generation for net6.0-ios new targets eed7596
  • Apply workaround for VS Shared projects issue f2c59ac, closes #5007
  • enabling distant URIs for Lottie fcbe986
  • Fixed incorrect generation for xaml object binding with xaml object properties. 90208b3
  • missing rename NumberBoxTests 61c9d5e
  • Temporarily restore LoadActions 024c26d
  • samples: Rename dopes tests 650832e
  • SamplesApp: Mux Category 7fa2eab
  • skia: Restore original canvas state for Software renderer e861f6c
  • [SamplesApp] Missing Icon Resource d5c5038
  • Add GC configuration for all net6 mobile templates a2155bb
  • added feature for Android 0e09483
  • AutoSuggestBox.QuerySubmitted ChosenSuggestion should not be null 474d3ef
  • codegen: Don't warn on CA1001 by default (disposable fields) for generated code 1d4fb90
  • codegen: Enhance roslyn version detection bac02b6
  • Adjust for duplicate package references in 6.0.300 d862a96
  • E_RUNTIME_SETVALUE SampleContent not found 69de305
  • fail gracefuly on invalid PRIResource files 6498cc3
  • codegen: Enhance roslyn version detection ce9ef6e
  • fail gracefuly on invalid PRIResource files 2cd9ffe
  • filesavepicker: Avoid possible IndexOutOfRangeException on macOS de70392
  • iOS: Adjust for new nullable signature 52a04f6
  • macos: Use case-insensitive API to load images from bundle f21db05, closes #8666
  • net6: Restore partial support for MUX progressring 3a0ddf0
  • Add FrameworkReference to winui projects 56e0806
  • Adjust net6-winui dotnet new 9ccc9ad
  • Adjust wizard for VS 2019 464c34e
  • FileSavePicker does not return the picked file in Android 9be9dd1
  • Fixed AccessViolationException that occurs in GLibSharp.dll after storage picker interaction 2bd123f
  • Fixed AccessViolationException that occurs in GLibSharp.dll after storage picker interaction 3cdc26e
  • Fixed comments. d706e8a
  • Genertaion of native ctor 0d188da
  • ImageSourceUrlMsAppDataScheme NullReferencenceException on DataContext Changed e17e5b8
  • Improve IsApiContractPresent accuracy a2aef58
  • Invalid GUID parameter name in dotnet new template JSON 673b9b6
  • max scale factor works as intended on android 63b2944
  • MethodAccessException b2ea50d
  • nit 41ac436
  • NullReferenceException 70b26dd
  • PackageIcon a49f972
  • Reduce "Uno.UI is using Roslyn generators" message level b97733f
  • Reduce logging verbosity for remote control connection errors df9cca6
  • Reverted RowDefinition and ColumnDefinition changes. 81a64bd
  • some SamplesApp missing resource d574b86
  • iOS: Adjust for new nullable signature ec65c79
  • net6: [Android] Adjust for proper assets base path f653bf5
  • net6: Add supported platforms attributes for CA1416 1d04414
  • net6: Adjust keyboard location computation e569a04
  • net6: Adjust manual native ctors signature 1815b79
  • net6: Restore ElevatedView templated parent support 5a782ff
  • TextBox doesn't support the TextWrapping.WrapWholeWords enumeration value 8e6faab
  • The parent of FrameworkElement is always null in GenerateBitmap 9f890c9
  • typo 525660a
  • xaml typo b800a40
  • gtk: Fix OpenGL render surface flickering 6e6c158
  • net6: [iOS] Ensure current culture is set at Application startup ac58dce
  • net6: Auto include BundleResources, show excluded compile items 42c6eba
  • net6: Remove unused InvariantGlobalization configuration 6c1f1d3
  • skia: SKImageInfo.PlatformColorType is incorrect on macOS/arm64 ba2acc8, closes #8580
  • SourceGenerators: NativeCtorsGenerator will execute after XamlCodeGenerator 497bcbe
  • vsix: Don't fail if DTE build information cannot be found 9363ae3
  • Wasm: Changing TextBox.Text in code should reset the caret a05ca79
  • winui: implemented Window::DispatcherQueue 033ae9b

Performance Improvements

  • Remove LoadActions a8f2aec

  • skia: Reuse surfaces/bitmaps and reduce native calls f8efae7

  • fix!: Launch arguments should be separated by space 19ef842

BREAKING CHANGES

  • In UWP/WinAppSDK the launch arguments are separated by space only, whereas Skia targets used semicolon before.

4.2.6

2 years ago

Uno Platform 4.2 – .NET 6 Mobile RC1, Performance

As of last week’s release of .NET 6 Mobile RC1, Uno Platform is now following the updates to ensure that you have access to the latest features provided by the .NET runtime.

You can read the full post here.

As per Microsoft’s announcement, the .NET 6 Mobile APIs are now considered stable for iOS, Android, and Mac Catalyst. This enables applications and libraries to be developed without having to deal with any breaking changes in future .NET Mobile releases. As Uno Platform takes a dependency on dotnet runtime, this is important as we can stabilize our own support for iOS, Android and mac Catalyst targets.

Since our previous release about six weeks ago, we also made a batch of changes to fix the support for localization of iOS, macOS and Catalyst apps, based on the new behaviors of .NET 6. In total there were over 190 new features and fixes completed, around Geolocation, focus and keyboard management, Android/Skia/WebAssembly performance, and more. For those who like stats – that’s about 6 closed PRs per business day; we are definitely picking up velocity even more.

As always, to upgrade to the latest bits and use .NET 6 Uno Platform app templates, you’ll need to use uno-check.

You can find up-to-date information about uno-check in our docs.

To install Uno-check:

dotnet tool install -g uno.check

To update Uno-check if you had it installed already

dotnet tool update -g uno.check

You can then run it with:

uno-check --pre

Important note: If you were already using Uno 4.1.x, had run uno-check and were using VS 17.2 preview 3 or earlier, upgrading to 17.2 Preview 4 or later will cause mobile workloads to become desynchronized. To fix your environment, you’ll need to run the following command:

dotnet workload install ios android maccatalyst macos --from-rollback-file https://aka.ms/dotnet/maui/rc.1.json --source https://aka.ms/dotnet6/nuget/index.json --source https://api.nuget.org/v3/index.json

Community Contributions

We'd also like to thank the community contributors for this release:

  • Android FileOpenPicker mime types, DisplayInformation and Geolocator updates (by @pkar70)
  • Documentation updates (by @workgroupengineering, @mtaheij, @mikeirvingweb, @XperiAndri, @AnthonyDParkhurst, @TopperDEL, @baskren, @LokiMidgard)
  • Source generators updates (by @Youssef1313)
  • PercentFormatter, PermilleFormatter, DecimalFormatter (by @MohammadHadi2031)
  • Fixed support for WPF and net47 (by @trungnt2910)

Full change log:

Features

  • Add basic support for entered/leaving background deferral 3eb2562
  • Add support for overriding the MessageDialog style 95ada29
  • Add support x:Bind to static event handlers 1e30a7d
  • Android FileOpenPicker MIME types eca4cc1
  • Basic ListView keyboard navigation b092f72
  • BringIntoViewRequested handling on ScrollContentPresenter 3d09430
  • cascade down update to Presenter 760906e
  • Change Release package defaults for Android app template 0c4eefc
  • CloseRequested event on Skia 9f25358
  • ContentDialog-based MessageDialog fbc932d
  • CoreApplication EnteredBackground and LeavingBackground events e461b69
  • Deferral.Dispose completes the deferral b510d0b
  • ElevatedView on Skia 2180e23
  • Enable focus states on SelectorItem 73d176d
  • Focus support in managed FlipView 58ea2f8
  • Implemented feature SelectedText on TextBox 0775781
  • more detailed ClassLib info for VB (recreated) a9de33e
  • Pass arguments to LaunchActivatedEventArgs on macOS 21e664b
  • Support for BringIntoViewOptions 5c45fc0
  • Support for UIElement.BringIntoViewRequested routed event d46a2e7
  • Update API surface to match Windows 11 22000 SDK efe34fb
  • Update Sync generator to 22000 9305aa0
  • arrange_dirty_path: First working version of arrange dirty path on Skia & Wasm 56b69c7
  • DecimalFormatter: Implement FormatDouble and ParseDouble 3e103af
  • dirty_measure_ios: Fixed the broken build for iOS. Not actual implementation of DIRTY_MEASURE_PATH for iOS. ab86102
  • FolderPicker: [Skia][WPF] Added support at SuggestedStartLocation and CommitButtonText 3d8bf64
  • ListView: incremental loading support for skia/wasm 1410316
  • updated Geolocator for Android 280a006
  • gtk: Add OpenGL acceleration e89870d
  • macOS: Add SelectedRange on TextBox fcaccd6
  • measure_dirty_path: Implemented the Dirty_Measure_Path on Android. Should bring significant perf improvements on this platform. 44bc0ed
  • PercentFormatter: Implement FormatDouble and ParseDouble e41759f
  • xaml: support named params in MarkupExtension 428b08c
  • Support WUX ProgressRing everywhere eb13011
  • PermilleFormatter: Implement FormatDouble and ParseDouble 0169c51
  • Support Enter, Space and Escape on ComboBox fb52456
  • Support Up & Down and keyboard item selection on ComboBox d61ce66
  • Use theme-aware WASM splash screen by default 7c63800
  • textbox: Update IsEnabled 6025109
  • fix!: Launch arguments should be separated by space 19ef842
  • feat!: Bump UWP version to 18362 9f41fd4
  • feat!: Bump to net6 preview 13.2 dee6870

Performance Improvements

  • Adjust resource resolver to avoid ICU based comparisons on net6+ 1244199
  • Disable logging in release builds 26137e2
  • Don't materialize x:Name-marked styles eargerly inside of uno 39a7e70
  • Fix regression in SpecializedResourceDictionary 44a49f9
  • android: Don't refresh memory statistics too often 259e365
  • Scavenge TextPaintPool storage 0d4c160

BREAKING CHANGES

  • In UWP/WinAppSDK the launch arguments are separated by space only, whereas Skia targets used semicolon before.
  • Bumps the target UWP version from 17763 to 18362
  • This update contains binary breaking changes to follow .NET 6 Mobile iOS/macOS/Catalyst API changes. It requires Visual Studio 2022 17.2 Preview 1 or later and cannot work on previous VS 2022 releases.

Bug Fixes

  • gtk: Fix OpenGL render surface flickering dd529f4
  • net6: Auto include BundleResources, show excluded compile items 42c6eba
  • net6: Remove unused InvariantGlobalization configuration 6c1f1d3
  • Adjust MonoAndroidAssetsPrefix to use Assets from shared project eb5d0aa
  • Adjust default plist values for net6 mobile targets 8fd4390
  • Adjust flyout position in visible bounds 2103533
  • Adjust resources generation for net6.0-ios new targets eed7596
  • Adjust ScrollContentPresenter.ViewportWidth/Height on WASM 9a4e884
  • Adjust template for .NET 6 RC1 preview SDL 9567af1
  • Adjust VisualParent property to return Selector for SelectorItems bdfc675
  • Apply Review 635f43f
  • Apply Review 1d233de
  • Apply zoom and content offset simultaneously on iOS e92379f
  • BorderThicknessProperty warning on skia/wasm 96a46d4
  • CI for not used variable 7c94ce5
  • Clamp Popup placement in visible bounds 09a2c58
  • Decrease default TreeViewItem glyph size e821bed
  • Enable XAML Intellisense in VS 2022 for non-WinUI/UWP projects 050b537
  • Ensure that TextVisual does not render when size is empty 82aabd6
  • FlipView: Flipping on WASM and Skia 811266b
  • net6: [iOS] Ensure current culture is set at Application startup ac58dce
  • ContentDialog does not show up on startup on WPF 5bff961
  • convert-sourcetree-to-winui.cmd 79115b5
  • deobsoleting DisplayInformation (Android) 569935f
  • Do not apply ScrollOffsets if the source element is the scroll port b115cb4
  • Don't throw if DTE SolutionBuild is not available 1bdaa10
  • Ensure compatible numeric types are compared to avoid exceptions in Verify bf96acc
  • Ensure DeferralManager.CompletedSynchronously is set correctly before Completed execution 00f5f23
  • field not available for target 155f2d9
  • fixed error loading ms-appx asset files with spaces - all platforms 44d391f
  • Generate specific platforms for NotImplemented types bd95a0d
  • Generating API sync for Composition & Dispatching in UWP mode c7a6185
  • NativeFrame runtime tests failing without outer scroller a43b0e2
  • NavigationView selection indicator unreliable for minimal display mode 25e99af
  • Samples app local debugging 0296ab1, closes /github.com/xamarin/xamarin-android/issues/6697#issuecomment-1034784286
  • SelectionModel and SelectedItems enumeration 6652358
  • Set iOS Window background to Clear instead of White 568d988
  • Use native MessageDialog on Android, iOS and macOS eb7ee3e
  • WASM ScrollContentPresenter offsets are immediately set after scroll request without animation d149662
  • catalyst: Force enable globalization and static registrar, disable interpreter 1e252d5
  • catalyst: Include ios XAML for catalyst 00144d4
  • catalyst: Move to newer Preview 14 API breaking changes 89e70c1
  • CommandBar: Remove 1px "shadow" from iOS native CommandBar 0a4eb04
  • DependencyObject: Fix possible infinite loop on ancestor lookup acfb5ae
  • FolderPicker: [Skia][WPF] Applied Codacy suggestions bc4db1e
  • getparent: Never call .GetParent() in an element while it's being finalized. fb10dc8
  • itemscontrol: Fixed problem with internal assignment of indexes to elements in ItemsControl 4b63312
  • keyboard: [Android] Improve keyboard size info on 30+ 607992d
  • layout_update: Fixed a potiential "Layout cycle detected." exception 8d6075d
  • listview: Fix flickering when reordering items on Android 4614b38
  • NameScope: Ensure NameScope is not overriden for XAML backed controls b2c8a47
  • pointers: Fix gesture recognizer not completing drag manipulations internally. a605c4e
  • textblock: Text size were incorrect on MacOS 3f54b2e
  • XamlReader: collection parsing issues 0562480
  • Exclude fluent types from GlobalStaticResources automatic init 408a7c6
  • Warnings NU5048 c738b2d
  • WebAuthenticationBroker returns canonical URL with the trailing slash b57a062
  • Border: [Android] disable AntiAlias c0f4bc3
  • Border: Issue #8010 788e7f2, closes #8010
  • macOS: UpdateHitTest in some events. 73fd186, closes #6645
  • pointers: Do not allow LV.ItemClick if element allowed manipulation bb700bc
  • ScrollViewer: Content margin was not taken into consideration for Skia and WASM. 35cd99d, closes #7000
  • [WASM/Skia] Ensure ScrollViewer or Border apply margin of their Content properly d29f236
  • Ellipse with stroke alignment on Skia 7661642
  • Mobile header menu scrollable in docs section 2eab76a
  • flyout: full placement not taking entire screen edaea6e
  • net6: remove unsupported lottie support for apple targets 133a4bf
  • template: Bump bootstraper to 3.3.1 2a43343
  • Remove explicit net6.0-ios version in plist for template 005fb8d
  • Some samples using internal visibility for Commands 7b09859
  • coloranimation: filling values are not updated on theme change 2e5edd3
  • droid: color animation not setting value bd0c5c3
  • idbfs: Fix non-LocalFolder persistence 54d6103
  • listview: Make sure that indices are properly computed when remove+add the same item fd8bbd4
  • macOS: SplitView opening action 8ba6745
  • reg: Fix pointer pressed flagged as Handled still bubbling 34115f2
  • reg: Fix possible null in tests fd52bd7
  • reg: Focus was removed on any element on popup dismiss (whiel it explicitly tries to restore it) 5e9573c
  • [iOS][macOS] fixed BitmapImage needs encoding when loading from url f454834
  • Adjust AndroidSupportedAbis and add proper validation for the target list eea4842
  • Adjust net6 VS features flags a53eba1
  • Avoid disabling Paint AntiAlias when drawing rounded corners aaa7a71
  • Avoid duplicate registration of open Popups a4647e8
  • Closing poup immediately should not throw 9e01aaa
  • Remove SampleApp AndroidUseLatestPlatformSdk use 059b1da
  • UnitTestsControl crashes on UWP 6ffe6a6
  • Uno logo no longer disappears on some docs section 15cc273
  • Uno.Xaml.Tests excluded from test runner 889f086
  • ComboBox: Refresh content on popup open d149390
  • EllipseGeometry: [Skia] false message 'is not implemented in Uno' for the member EllipseGeometry.EllipseGeometry() b461cd5
  • measure_dirty: Fixed a regression caused by the refactoring on iOS for the implementations of MEASURE_DIRTY_PATH on other platforms (still not supported on iOS/macOS) 313e992
  • pointers: [iOS] Make sure SCP does not stop bubbling of native pointer events 36385c7
  • pointers: Do not consider event has "handled" when reaching the root of the visual tree b3b9056
  • pointers: Fix possible enumeration of a modified collection 430c279
  • pointers: Make sure to raise the exit event even if redispatched on non-hoverred element (e.g. implicit capture) 3f49fde
  • pointers: Multiple fixed regarding pointerExit 5365bb6
  • reg: Fix support of manipulations in SV on WASM 4d3d7b5
  • wasm_scroll: Disabling animation on scroll for WASM were not working. dffc5a6
  • Directional focus can be evaluated indefinitely 3c81917
  • WASM geoposition watch never stopped ddfc724
  • frame: [Android] When using stacking mode, previous pages are not collapsed 6315243
  • ListView: Reduce the number of materialized items on large scrolls 8305965
  • pointers: Fix enter/exit when moving from container to nested element f4f9802
  • Point users to MUX version of ColorPicker 850e0c5
  • Remove framework override for Skia.Gtk 41eaf33
  • Use VisualTreeHelper for Frame navigation focus movement 88210fd
  • VisualTreeHelper.GetParent should be able to reach ItemsControl from item containers 479cdae
  • When_ScrollViewer_Resized test failing without outer Scroller a6d681e
  • docs: Revert the resizing and update the menu look fb4735d
  • pointers: Fix SelectorItem might invoke ItemClick even if it didn't get PointerPressed 5000a71
  • pointers: WASM make sure to release captures even if pointer up event has been handled 11882f5
  • storage: [wasm] Fix invalid IBFS initialization 8400eae
  • templatepool: template not being applied on recycled item c657741
  • ToggleButton: Fix invalid visual state property 6b66a91
  • wasm_freeze: Fixed problematic .Content on ContentControl sometimes freezing the app. 7520a02
  • wasm_freeze: Fixed sometimes the UI froze when recycling elements. ccf204f
  • Adjust macOS and Catalyst versions 7f21cf1
  • Invoke item only if previously pressed 7538e1b
  • Issue #8038 62294e5, closes #8038
  • Move focus properly within bounds of ScrollViewer on Android and iOS 63feedf
  • VerifyNavigationViewItemToolTipPaneDisplayMode test a4eabc6
  • docs: Changed how the navbar is removed when iframed 7dc1786
  • iOS: CommandBar Custom Image Sample 959daed
  • listview: Fix blank ListView inside ListView bf2dfb7
  • PagerControl: Fix bug where setting button visibility would be ignored 7be589b
  • pointers: [iOS] Pointer exit is now bubbling properly even if handled by a nested element. It will also be raised after the whole tree get the up (was raised per layer). 132ed5b
  • pointers: Fix broken focus fb9e724
  • pointers: Make sure to set the UpdateKind on all platforms and use it handle focus 62d5342
  • reg: Make sure to release captures even if pointer up has been handled 440f22f
  • reg: We must focus TextBox as soon as it being pressed, no matter where the pointer is released 70c9c2f
  • scrollviewer: [iOS] Ensure ScrollViewer applies margin of its Content properly 4fd1d06
  • wasm: TextBox VisualState 7895cde
  • winui: Adjust winui-net6 template startup 8869d0d
  • xBind: Fix support for nullable struct binding eac0a68
  • JobName typo for the CI 87c386d
  • Rectangle with stroke alignment on Skia d11af7e
  • TextBox test failing on iOS 15 74e0119
  • reg: Fix failling tests on CI 192a7e4
  • reg: Mouse wrongly triggers scrolling on skia on long press 1aff72c
  • WPF: Use WPF for all library targets 0b358d4
  • xaml: parsing of nested markup with multiple params 4fc5c92
  • Fix SV wrongly reports horizontal scroll enabled, preventing scroll when hosting SwipeControl c971e68

4.1.9

2 years ago

Uno Platform 4.1 Update for .NET 6 Mobile Preview 14 and VS 2022 17.2 Preview 2

The .NET team has been steadily releasing a set of updates to the .NET 6 Mobile previews. Last week's update was Preview 14, which came at just about the same time as Uno Platform 4.1 release. Following .NET 6 mobile Preview 14, we’re publishing the Uno Platform 4.1.9 service update.

This update includes a new set of binary breaking changes added in .NET 6 Mobile Preview 14, which requires the use of Visual Studio 17.2 Preview 2. If you update to Preview 2, you will need to be on Uno Platform 4.1.9 or later.

Using .NET 6 Mobile Preview 14 with Uno Platform projects

To use this new preview in Uno Platform projects, you’ll need a few steps:

  • Install the latest uno-check preview

    dotnet tool install -g uno.check --version 1.2.0-dev.10
    
  • Or update to the latest uno-check preview

    dotnet tool update -g uno.check --version 1.2.0-dev.10
    
  • Then run the following:

    uno-check --pre 
    
  • If you’re building on a mac, either directly or through VS for Windows, you’ll need to run uno-check on the mac as well.

  • Make sure that your Visual Studio 2022 Uno Platform extensions are updated to 4.1.9 (it should be automatically updated)

  • Update your nuget packages to Uno.UI.* 4.1.9 or create a new project from the templates.

Note that if you intend to build for iOS, Xcode 13.3 is required and that this version of requires macOS Monterey.

4.1.8

2 years ago

It has been just over 3 months since our 4.0 release, and we’ve used that time to focus on performance as well as bringing the latest .NET 6 and even .NET 7 innovation to Uno Platform. By simply updating your application to the newest bits you will notice a significant boost to your app performance.

This release packs over 200 new feature requests, bugs, and issues you raised. We welcomed a few great contributions from our community which is now over 210 contributors strong! Thanks for all you bring to Uno Platform.

For more information about the release, read our blog post.

Important note about .NET 6 Mobile support

The current support for .NET 6 Mobile Preview 13 requires VS 2022 17.2 Preview 1 or later, 17.0.x and 17.1.x are not supported, and naturally Uno Platform will face the same constraints. It’s also worth noting that with .NET 6 mobile Preview 14, Microsoft will introduce an additional (and likely final) set of binary breaking changes, and we’ll publish an update to Uno nuget package to align with those changes.

Once you have 17.2 Preview 1 or later installed, use uno-check --preview to setup your environment.

Features

  • element_measure_dirth_path_disabled: Added the ability to deactivate the new InvalidateMeasureDirtyPath at element-level instead of just globally (6779b34)
  • invalidate_measure: Ensure the .MeasureOverride() is not called when not required after invalidation. (e406239)
  • max_layout_iteration: Limit the number of iterations while trying to measure elements. (23e5c90)
  • measure_dirty_path: Implemented MeasureDirtyPath on both Skia and Wasm platforms (29c5b45)
  • pointers: Add basic support of pointers injection API on Skia and macOS (fe1c9bd)
  • textbox: Update IsEnabled (6025109)
  • Add ability to configure if marhsal and/or unmarshal method should be generated when using TSMessageAttribute + generated TS messages are now in the same namespace as where they are declared in C# (6459564)
  • Add Skia memory manager support (699731b)
  • Add support for XamlRoot.RasterizationScale (8ff10bf)
  • Add support for Description property on common controls (46e0956)
  • Add support for GC awareness for internal ArrayPool (e8e63f7)
  • Add support for memory usage aware template pooling (6c98490)
  • Add Title bar test status reporting to UnitTestsControl (af84896)
  • Added DynamicDataAttribute support to RuntimeTest (c5987eb)
  • Bump to Android 12 (1e9cf32)
  • DPI scaling on GTK (a961de4)
  • FolderPicker for Skia.WPF (6f3f596)
  • Improve Skia TextBoxView overlay positioning and sizing (b8240f8)
  • Support for Canvas.ZIndex on Skia (c51e44e)
  • update to .NET Mobile Preview 12 (95fa32f)
  • flyout: Implement FlyoutBase.IsOpen (ef3cf3d)
  • frameworktemplate: Improved the logging of FrameworkTemplatePool to show the actual factory lambda (d59c30f)
  • hotreload: Support x:Bind to properties in hot reload scenarios (1f1a8a6)
  • ios: RequestedTheme will now affects KeyboardAppearance (bfacd86)
  • pointers: [PERF] [WASM] Marshal pointer events instead of serializing them (44df154)
  • wasm: Add MemoryManager support (66038f1)
  • Added single project support for windows packaging in dotnet new (81e0052)
  • EasClientDeviceInformation (fb8ba79)
  • Initial page focus on WASM using browser keyboard navigation (7975615)
  • more detailed GeoLocator UI test (744237b)
  • Per-monitor DPI scaling on Skia.WPF (13eeac8)
  • Replace Page with correct type when reloaded (64a25da)
  • Support CreateFromStringAttribute in XamlReader (5258d49)
  • NativeCtorsGenerator: Generate nested types properly (1d772b9)
  • reapply_theme: Added the ability to reapply application theme to be used when the colors are manually changed in ResourceDictionary, to force the reevaluation of the ApplicationTheme without having to toggle. (dc1a660)
  • Support LineGeometry, RectangleGeometry, and EllipseGeometry in Skia (a5244c0)

Performance Improvements

  • Dispose HashtableEx to return memory to the pool (3db5555)
  • Enumerate children in ContainerVisual via IList and for (5cca9d7)
  • Merge all system resource dictionaries to improve lookup performance (6d49af8)
  • Reduce allocations in BindingItem.SubscribeToPropertyChanged (2740c77)
  • Reduce delegates use in BindingPath property changed (b93c527)
  • Reduce interop invocations during MeasureChildOverride (19625de)
  • Reduce memory indirect allocations from the use of DispatcherConditionalDisposable (a5751f5)
  • Remove indented string builder from InvokeJSWithInterop (2a239b1)
  • Scavenge TextPaintPool storage (0d4c160)
  • Use ArrayPool<T> for Grid's CellCacheStackVector inner storage (1572d6a)
  • Use field aliasing to improve Color.GetHashCode and Color.Equals (429d367)
  • memory: Reduce ConditionalDisposable pressure (3b4bf41)
  • memory: Reduce memory pressure on shape set fill (76998f0)
  • memory: Remove delegate for UIElement GestureRecognizer (2e34584)
  • memory: Remove RegisterDefaultValueProvider delegate in favor of UIElement cast (c2d8eb9)
  • Style: Implement Style.IsSealed to allow for flattened lists caching (1970c77)
  • timeline: Remove the use of events and disposables (922bb4b)
  • fix(pointers)!: [iOS][Android] Enter will now be raised using managed bubbling only (ad80757)
  • fix!: Do not silently dismiss exception in javascript (d67229a)
  • fix(popup)!: Set IsLightDismissEnabled false by default (72fb49d)

BREAKING CHANGES

  • On iOS and Android, PointerEntered are now raised on the whole tree before the PointerPressed instead of being raise per layer. This follow the behavior of UWP and the same as Skia and WASM. The PointerReleased + PointerExited are still raised per layer.
  • [Wasm] Exceptions raised in JavasScript are now being rethown by default in managed code. You can disable this behavior by setting the Uno.FoundationFeatureConfiguration.Runtime.RethrowNativeExceptions config flag to false.
  • Align with WinUI by adjusting default DP value of Popup.IsLightDismissEnabled to false.

Bug Fixes

  • winui: Adjust winui-net6 template startup (8869d0d)
  • Adjust for scaling in description tests (6a968da)
  • Android 12 debugging with VS 2022 Previews (8332e6b)
  • Match XAML numeric literals parsing with UWP (5eea8b7)
  • NRE in GPUFloatValueAnimator on iOS/macOS (a01b5a1)
  • calendar_view: Fixed the "blank calendar" on Wasm (f154961)
  • contentdialog: [iOS] Fix dialog buttons obscured by soft keyboard (79691d4)
  • net6: Bump current android version in template (a9b25c2)
  • passwordbox: Fixed iOS auto-fill interfering with PasswordBox input. (d1bb9c1)
  • pointers: [Skia][MacOS] Pointer events (exit and up) might bubble too much (8c81d53)
  • pointers: [WASM] Fix enter/exit handled not supported (148a5ad)
  • pointers: Cannot get PointerReleased in LVItem when selection is not None (9377ad4)
  • pointers: Fix enter/exit events not awalys raised on skia (835b797)
  • pointers: No mouse wheel data on WinUI (ddfd717)
  • pointers: OriginalSource of gestures and manip events is now fullfiled correctly + [WASM] Raise pointerExit when element is covered by another one (Popup) (041dfde)
  • pointers): Make sure fix(pointers: Exit is now raised after the Up has been bubbled on the whole tree (593057f)
  • reg: [Android] Flag released event has handle has no effect (7353df5)
  • reg: Fix pointer sequence (8ecfc1e)
  • reg: Restore reflection extension support for fields (ef9760c)
  • shape: Stroke update not triggering re-render (de37c27)
  • theme: resources not updating due to DPO store parent not being detached (8f9a026)
  • wasm: Avoid multiple FS.syncfs causing emscripten warning (ea33cf2)
  • wasm: TextBox VisualState (7895cde)
  • Add support for ObjCRuntime.NativeHandle replacement of IntPtr (3993e64)
  • Adjust DependenciesInitializer for SourceGenerator and 6.0.200 (9070fe3)
  • Don't warn on abstract members in generated Bindable Type Providers (80f5fba)
  • Ensure focus moves when navigating between pages (36a7178)
  • Move Page navigation focus to outer elements if available (ee211c9)
  • Remove not implemented on MemoryManager.AppMemoryUsageLevel (afdc298)
  • SelectorItems may stay in pressed state when unloaded to early after state changed (a12fbd1)
  • theme: source dictionary not getting theme updated (6027e66)
  • Ambiguous match on MemoryManager initialization (285f7ea)
  • Disable exported flag for CI (ff3e52d)
  • Ensure trying to close an already closed WASM Native write stream does not fail (123747a)
  • Failsafe for NativeWriteStreamAdapter.Dispose (c8309a6)
  • move test classes to individual files (99c39e3)
  • NRE in UnitTetControl cleanup code (e4315ad)
  • animations: [WASM] Make sure to always stop rendering loop animator, including if collected by GC (7faf552)
  • listview: [iOS] Fix incorrect container reuse with Replace and ItemTemplateSelector (7ba2371)
  • listview: [WASM] [Skia] Redraw list when scroll viewport changes (8e6bcea)
  • Remove incompatible (and unused) AdditionalFiles containing binary files (645e2fd)
  • winui dotnet new template for vscode (2eb2cab)
  • winui-net6 dotnet new template for vscode (a79a063)
  • animations: Make sure animator is being disposed at the end of an animation (9574e67)
  • [iOS] Do not clear text on next key stroke after reveal (a7e98bd)
  • Added platform designators for ListView tests that won't run on iOS (c3598c0)
  • contentdialog: Fixed the ability to reopen a content dialog immediatly after its closing. (e4d5cf9)
  • scrollbar: Tentatively reactivate the ScrollBar test deactaved in issue #7331 (7eeec7a)
  • templatepool: Fixed problem with Template Pooling in ScrollViewer where is ScrollContentPresenter could keep a reference to the materialized content of the ControlTemplate. (2a712f6)
  • [WPF][Tizen] he local function 'EnqueueNative' is declared but never used (28e6342)
  • adjust frame coords for LayoutSlot in ListView/GridView (ac7948e)
  • IsTabStop handling and focus on iOS TextBox (a0bd585)
  • IsTabStop handling for TextBox on Android (276d195)
  • IsTabStop handling for TextBox on macOS (e3e2e3f)
  • IsTabStop handling for TextBox on WASM (da65107)
  • Stop propagating native focus on AllowFocusOnInteraction/IsTabStop = false on WASM (44572e7)
  • appbarbutton: icon color not changing with app theme (49cdbcd)
  • dragdrop: [iOS] Fix support of drag and drop in LV with padding (fb74b8c)
  • dragdrop: Fix DragView not updating accepted operation when moving out of a drop target (626ae3c)
  • dragdrop: Fix reordering item at the bottom of the list has no effect (but still within LV bounds) (0eb888d)
  • FileOpenPicker: Invalid FilterIndex on Skia.WPF (5909a97)
  • FileOpenPicker: Same behavior of UWP when add * file type on Skia.WPF (2b11143)
  • FileOpenPicker: System.ArgumentException Skia.WPF (6990f7b)
  • FlipView: inability to scroll & prev/next btn not updating (09d19ba)
  • framebuffer: NRE in ObserveSystemThemeChanges (9f25e72)
  • iOS: build from vs4m (c032da8)
  • iOS: Time and Date Picker (17a2e30)
  • ItemsControl: [iOS] Invalid native insert sequence in UIElementCollection (5add934)
  • ItemsControl: Don't hold a strong reference on ItemsSource INCC/VectorChanged (753a9b9)
  • listview: [Android] Fix calculations when ItemsPresenter.MinHeight set (8d4c742)
  • listview: [iOS] Fix ItemTemplateSelector called at wrong time (5a9d994)
  • NavigationBar: Move to UINavigationAppearance APIs, fix unapplied background color (b43d371)
  • pointers: Do not throw if pointer event handler is removed during finalizer (2e7f4a3)
  • pointers: Make sure to never raise pointer entered/exited on parents (d9107fb)
  • popup: not working after alt-tabbing (db6ada0)
  • reg: adjust xaml merge for stable relative path (510788d)
  • reg: Do not dispose native animator on Android (f62ec8a)
  • reg: Fix wasm external components are not hit testable, even with a Background set (3a9e825)
  • reg: Invalid StackVector location (d0fc453)
  • resources: Don't update static resources on loading (1d927dc)
  • shapes: Fix Path declared in C# are not closing (7a42617)
  • test: duplicated Ignore attribute when isManual & ignoreInSnapshotTests are both set (89f3ecb)
  • AnalyticsInfo and AnalyticsVersionInfo compatibility adjustments (4c4cd9a)
  • Avoid FocusManager usage before WASM fully initialized (cb0dfc8)
  • ButtonBase should not lose focus when Command.CanExecuteChanged becomes false (e7cbc8b)
  • Don't generate reload cookie for non-C# targets (7977f22)
  • FileSavePicker should create target file on GTK and WPF (d65b9e6)
  • Force refresh of ListViewBase when an item gets added or removed (a324aed)
  • Leak caused by ButtonBase.Command (bf6b6e1)
  • Popup without IsLightDismissEnabled should not auto-focus (7272156)
  • Remove unused configuration files in templates (c834015)
  • TextBox GTK SelectionStart and SelectionLength (a95fce9)
  • Use wss for RemoteControlClient when on https (c4a7b4c)
  • Workaround issue #7899 (5e7baef)
  • Border: Adjust layering logic when using a GradientBrush as BorderBrush (9a01cbc)
  • dragdrop: Fix drag and drop support on skia (bf7e473)
  • dragdrop: Fix support weird behavior when reordering items while more then on is selected (5ecdd1a)
  • flipview: [Android] Fix IllegalStateException from FlipView (47dc23e)
  • flyout: Use Popup for light dismiss (d2b860c)
  • iOS: Fix support for UIElementCollection item replace (caae6b8)
  • iOS: MessageDialog programatically dismissal (8b1fc1f)
  • iOS: StatusBar Foreground for Dark Theme (a8abb0f)
  • pointers: Make sure SV alters only its own manipulations (8094fae)
  • skia: Fix support for UIElementCollection item replace (bd22523)
  • Skia_Gtk: Incorrect window ActualWidth and ActualHeight values on WSL and Linux (ab6fa95)
  • wasm: Failsafe on finalization of UIElement (d662bf1)
  • Adjust framebuffer host initialization sequence (7a8ffef)
  • Align Popup light-dismiss with WinUI (040acc4)
  • Android Samples app deployment to Android 12 (cafd91a)
  • Capture the DispatcherQueue on DependencyObject creation (9d7e399)
  • Changed default option string to All files (ce6a94e)
  • Disable VisibleBoundsPadding on Windows/WinUI3 (6ea6155)
  • Ensure that AppBarToggleButton's base.OnPropertyChanged is called (70c44e9)
  • FileOpenPicker should show file extensions similar to UWP (0b50263)
  • Fix ImageBrush.Stretch on Wasm (7ca6fcf)
  • Fix PasswordBox on Android not obscuring password (b1b7b87)
  • Fix TextBox/PasswordBox Foreground and add test for obscuring password (25072b1)
  • Invalid debug-only message (08ec732)
  • Invalid static resources test (1434c7f)
  • Only check Background on specific elements when hit-testing (c42f52c)
  • Properly resolve types in XamlReader when xmlns not common (3dd31b8)
  • Remove blue tap highlight on Webkit browsers (5b1ac08)
  • TextBox positioning and selection on GTK (85f24f0)
  • InfoBadge: Port bug fix and port tests (4b55a63)
  • net6: Adjust versions for net6-winui templates (dc876ac)
  • test: disable droid TestTextBoxReleaseOutUnfocused (775e854)
  • textbox: caret cursor and click focus area on wasm (c9cc765)
  • TryReadJsFloat updated to support decimal places (759a39e)

4.0.7

2 years ago

For a comprehensive description of the Uno 4.0 release, please read our blog post.

As we’re continuing the alignment with the WindowsAppSDK, we’ve made some binary and source breaking changes in the Uno.UI 4.0 NuGet packages.

Most of these changes are minor and are generally present to remove the use of uno-specific conditional code. You can find additional information on how to migrate to Uno 4.0 on our documentation site.

See the full change log below:

Features

  • Add a FrameNavigationHelper to allow apps to access helper properties on Frame and its PackStackEntries 3826bf1
  • Add automatic restore after dotnet new 848ebcc
  • Add DispatcherQueue on CoreWIndow and CoreApplicationView e176c77
  • Add DispatcherQueueHandler and DispatcherQueuePriority 1425e7b
  • Add mixed C#/XAML hot reload support 6d3ec36
  • Add support for x:Name hot reload 083fce5
  • Add support for CustomVisualStateManager 1e7103f
  • Add support for full uri in RC endpoint c5849cc
  • Add support for local RC on remote environments 898acca
  • Add support for multiple XamlReader types conversions 8c4845d
  • Add XamlReader support for theme dictionaries d887a43
  • Adjust the Popup hierarchy 13ec2fb
  • Adjust vscode tasks/launch configurations 9f8eb9c
  • Generate C# reload cookie for omnisharp compatibility bcaa4fb
  • Android: Provide access to BaseActivity events from SpanningRectsExtension 23cca70
  • listview: [iOS] [Android] Support ItemsPresenter.MinHeight 6dfc251
  • rc: Add support for metadata update 8387262
  • xamlreader: Add reload support for event bindings 2c1f7b2
  • Add support for WinAppSDK 1.0-experimental1 31f45ea
  • Align enums (netstandard2.0) f8abe44
  • Align Panel DPs 1930257
  • Align properties (netstandard2.0) fdcf4c5
  • Align RelativePanel methods 12fb3ff
  • Align Uno.Foundation (netstandard2.0) 9a08e12
  • Align Windows.System.VirtualKey 5397faa
  • Implement FileSavePicker for Gtk c946681
  • Implement TextBox Description Property e14dd76
  • Implement WinUI CommandBar and AppBar ce12824
  • Improve generation cancellation for net5 and net6 4b612b6
  • initial setup for foldable support c0c0833
  • NavigationView InfoBadge integration 2e495ad
  • Point users to implemented versions of obsolete WUX controls 9cdaacb
  • Respond to top-level resource updates 8df6db9
  • Update to WinAppSDK 1.0 9fd0a0c
  • Update TwoPaneView to latest WinUI b221201
  • android: Adjust Foldable screen nuget package naming db1d7ae
  • Border: Add ability to use GradientBrushes for BorderBrush af760ff
  • dragdrop: Add support of preview of dragged element on iOS and Android b749632
  • GTK: Detect ApplicationPreferDarkTheme property change e6a173f
  • IncrementNumberRounder: Implement RoundDouble Method 0fdab8e
  • NumeralSystemTranslator: Implement TranslateNumerals method for Arab and ArabExt NumeralSystem value ee3e611
  • perf: Improve perf of the ObjectAnimationUsingKeyFrame 3818924
  • pointers: [GTK] Implement native pointer capture 624631a
  • SignificantDigitsNumberRounder: implement RoundDouble method e30b006
  • vsix: Restore Xamarin template for VS2022 e0a7bde
  • WPF: Observe system theme during runtime f1ea619
  • xamlreader: Support StaticResource assignation to non-DP fd535d2
  • xamlreader: Update Setter.Value when theme changes 7ba8c58
  • GetRadiosAsync() for Android 110d466
  • Improve generated enums eccc12e
  • Initial API surface validator b296076
  • Port RadioMenuFlyoutItem 9b388c1
  • Support Dark theme in Samples app 2f93a19

Bug Fixes

  • animation: Fixed a problematic case where a native animation can be 'lost' if the GC is run during the duration of the animation, preventing the animation from being removed and leaving the UI in an undetermined undesired state. 81547ef
  • template: Adjust dotnet new unoapp 57657f2
  • vscode: Remove duplicate sln block a0021b8
  • Add error message when linker is enabled during EnC session 7c261dd
  • Add keepalive messages for RC client abc5093
  • Add missing Immutable assembly for hot-reload generators 2f64555
  • Add missing NavigationViewItemPresenter.InfoBadge property dabfe9a
  • Add missing short flags for dotnet new 2294217
  • Add server-side keepalive 8965b2f
  • Add support for globbing in the shared project for vscode compatibility 87b32c3
  • Adjust dotnet detection for C# hot reload 74e7803
  • Adjust hot reload support for VS 2022 a6727d8
  • Adjust InfoBarPanel namespace to match WinUI 9784afa
  • adjust remote control target to net6 1a95097
  • Adjust removal of uno websockets dependency 9d3feb2
  • Avoid jumpy ScrollViewer visibility on Skia 0573b47
  • Avoid TextChanged loop in GTK 997fd15
  • Cache IsApiContractAvailable properly 6feacd3
  • Capture all xaml handlers f26804a
  • Disable assembly loading feature in XamlSchemaContext c2ddc8f
  • Disable rolsyn generators for below MSBuild 17, fallback to uno source generators 1f5868d
  • Dispose appinsights configuration 67deda2
  • Don't call CloseAllPopups on Frame navigation 3438fee
  • Don't create a window while checking dotnet version ca1d8ae
  • Don't fail on missing metadata updater (net5 support) ab1c748
  • Don't initialize telemetry on design time builds c7ffe08
  • Don't regenerate source for ResourceDictionary runs adbd48d
  • Fix support of the CustomVisualStateMamager 4cb5983
  • IndexOutOfRange in DisplayRegionHelper.GetRegionInfo a4d301d
  • metadata update after XAML hot reload breaks compilation 1c1d352
  • Observe C# file changes 5abdebd
  • Port IsPaneVisible fix from WinUI (https://github.com/microsoft/microsoft-ui-xaml/pull/6227) d52b71e
  • Propagate cancellations for more locations 1548c75
  • Remove deprecated GenerateBuild for VS2022 compatibility b8cf02a
  • FoldableApplicationViewSpanningRects: change Bounds pix to dip 13a8c44
  • FoldableApplicationViewSpanningRects: remove dependency on MainActivity 4ded713
  • VS2022 23c4467
  • dragdrop: Fix support of transparent control in DragUI ef0b6fd
  • ItemsControl: [Android] Adjust collection update reset for ComboBox 8581995
  • ItemsControl: Fix for applying ItemContainerStyle dc7a7a9
  • listview: [Android] Correct scroll offsets if necessary when scrolling upwards in list 5e8bce5
  • listview: [Android] Fix crash on animated collection change 96cb63c
  • listview: [Android] Fix crash when animating item 7d05e4c
  • pointers: Improve relialibilty of hold gesture by always starting a timer on press when hold has been enabled. 4d18f58
  • reg: ensure both net6/xamarin templates don't share ids 8ac1147
  • TextBox should not get focused while manipulating ScrollViewer 87c9626
  • listview: [Android] Fix flicker and clipping when ListViewItem.Margin is set 801f51c
  • reg: [Android] Fix application content squeezed top left 595d4ea
  • winui: Adjust DispatcherQueue implementation 263f914
  • Add workaround for editorconfig race condition 787c644
  • Bump x:Load timeout for large tests 45bd906
  • Make sure that an element can invalidate itself (and its parents) while in being measured / arranged 6f30b05
  • Border: Allow null BorderBrush to be set decb376
  • calendar: Fix CalendarDatePicker cannot be scrolled when re-opened d161c91
  • docs: Fix a few typos in VS2022 article f3e0a12
  • docs: headers' anchor visibility is now hover 6dcf009
  • listview: [iOS] Fix container reuse by template 868446f
  • listview: [WASM] [Skia] Correct scroll offsets if necessary when scrolling upwards in list cd74fd9
  • perf: Do not box Point for equality check a4d673d
  • reg: Fix CornerRadius support on Border 9f0b463
  • reg: Move DispatcherQueue to WinUI location 443a76f
  • reg: Popup light overlay's was not rendered properly c2fcd60
  • reg: Restore sizechanged propagation 30b0a0e
  • Remove duplicate guids in solution file 4935613
  • Skip generation run info for design-time builds 63d5ab5
  • Use proper reference path validation for resource generation 18a4d6d
  • VS Remotre control .NET version lookup 80ad551
  • calendar: Fix initial scrolling state of the CalendarView d68c05f
  • DependencyObjectGenerator: Place BindableAttribute on the correct type 852265c
  • docs: Incorrect NuGet package name in logging.md c549ddc
  • dotnetnew: Remove invalid solution filters in dotnet new unoapp 11d4b56
  • DualScreen: add RecyclerView to try and address linker issue 1b04f21
  • DualScreen: attempt to address possible linker issues f3d3052
  • DualScreen: remove unnecessary CreateInstance call in SamplesApp.Droid 225d0f2
  • Duo: Observe all configuration changes for samples app 9d35b7b
  • effectiveviewport: [Android] The SCP is now the element flagged as ScrollHost, like on UWP 43f56d0
  • effectiveviewport: [iOS] The SCP is now flagged as ScrollHost f4b1937
  • effectiveviewport: Fix effective viewport computation 3448722
  • effectiveViewport: Make sure to raise the event when initializing multiple elements with EVP handlers 2ee3b50
  • Foldable: fix bad merge 33586e0
  • Foldable: update to use Foundation.Logging 96a5762
  • FoldableApplicationViewSpanningRects: remove testing hack dcbcb14
  • FoldableApplicationViewSpanningRects: revert change Bounds pix to dip 3b2b2a1
  • HitTest: Check for Clip property for ClippingBounds 97152dd
  • listview: Fix D&D UI not reporting move while reordering items 30fd8d3
  • menuflyout: Ensure MenuFlyout nested submenus stay on screen cd13998
  • pointers: [iOS-simulator] Improve debug by starting a timer for Holding on iOS when in simulator 3c6ce3d
  • pointers: [Skia] Make sure to also release impiclit captures on pointer realease f3d53bc
  • pointers: Make sure to abort drag manipulation as soon as possible if not touch pointer 1045c76
  • pointers: Release implicit captures on manip completed d307101
  • reg: Fix EVP not progated on native elements 42ac6dc
  • reg: Fix EVP sometimes not propagated properly 932b82f
  • reg: Fix support of Android versions below 30 (including UI test failing on CI) 07c3d23
  • [Android] LayoutSlot was including magrins and alignments 9743762
  • [Android] Window's visible bounds are incorrect 39ea361
  • reg: Fix Viewport not updated on first load 7f2409b
  • scrollbar: Fix possible layout cycle when scrollbar is lower than the min size of the thumb ceba136
  • scrollviewer: [WASM] Make the SCP the "element which scrolls" (instead of the SV) ee21a4e
  • viewport: Fix effective viewport adding scroll offsets twice d05ebc4
  • Alignment regressions 9ee447d
  • Fix lazy theme dictionary caching 8a43603
  • Fix TextBox selection in Skia 851b3d9
  • Update text according to AcceptsReturn d318146
  • ItemsControl: avoid rebinding containers on collection change 4ed5bc4
  • listview: [WASM] Support removing item while dragging 0c301cf
  • pointers: Ensure that a manipulation cancelled by ManipStarting event is cleanup e1f5543
  • reg: Adjust processors missing roslyn files a083153
  • reg: Fix support of scroll offsets in ViusalTreeHelper c72890c
  • reg: Fix WinUI build f9b33f6
  • reg: Invalid location for android30 logging nuspec 60718cb
  • reg: Restore string conversion a391022
  • remotecontrol: Adjust https conversion 6477280
  • resourcedictionary: Improve performance of ResourceDictionary with not-implemented types 94aad18
  • scrollviewer: [WASM] Fix ScrollViewer incorrect offset after ChangeView() 7fddb8f
  • styles: Fix error in styles loading with null Resources 685b396
  • transformtovisual: [iOS] Fix TransformToVisual inside ListView b3c0a7b
  • transformtovisual: Fix TransformToVisual on scrolled ScrollViewer df3f88d
  • wasm: Image/AcrylicBrush.AssignAndObserveBrush exception 73df35b
  • xamlreader: Fix exception when loading with empty Resources 3f58203
  • xBind: [Wasm] Fix invalid internal ElementStub state ef37b28
  • xBind: Fix xBind to other control without code-behind base class 76b2dba
  • Add and apply NumberBox CommonStates 500c262
  • Adjust enums 52fdbfc
  • Adjust InputScope on iOS and implement for Wasm 7a28cd2
  • Adjust PackageDiffIgnore 4772f08
  • Alignment regressions 3a6b90f
  • Apply visual states on date change cc08128
  • Assign ImageBrush on Android properly 118e4db
  • Changing Pivot.SelectedItem should reflect on Pivot.SelectedIndex 166e7a7
  • Convert resources to target property type in generated code 873251d
  • Correctly change PivotHeaderItem content when PivotItem.Header changes 5a85199
  • Correctly handle whitespaces in XBind path rewriter dfeb4a5
  • Disable Prism template test 7e0c367
  • Disable XF template test 8fb48bf
  • Don't close ContentDialogs on showing MessageDialog cd4b9e4
  • Don't flag members as not implemented in bindable metadata 1f4351d
  • Don't PreventDefault keydown event of TextBox 205e8fc
  • Don't underline HyperlinkButton if not ImplicitTextBlock c1ef8c1
  • Don't use cached value when it's no longer valid 8b94591
  • Don't use nullable reference types in generated code b167107
  • Error properly on invalid and duplicate x:Name 82c1d52
  • Fix CurrentStateChanged raised in incorrect time e6f39f5
  • Fix image flickering 9b6a8fc
  • Fix NREs in PersonPicture 876bdf1
  • Fix TextBox.Foreground on Skia c8f4b47
  • Fixed SignificantDigitsNumberRounder.RoundDouble bug 223d8d2
  • Generate analyzer suppressions properly edc8542
  • Generate WebView.XYFocus properties 414816c
  • GridViewItems are not visible 8583c31
  • Handle converters and TargetNullValue in source generator 422e026
  • Handle types correctly in ResourceDictionary 11b8a40
  • Hide open flyouts when MessageDialog is shown 0b00af4
  • HyperlinkButton underline 3c12d17
  • Initial focus on Page a444b7a
  • Invalid sourcegen update 6b3815b
  • Invalidate cached theme dictionary when theme dictionaries are added/removed 57068a3
  • ios commandbar navigationcommand icon alignment 7497510
  • IsInContact is reported incorrectly for pointer events 8b10ac2
  • IsInRange reported incorrectly in GTK 0e13068
  • Make IsIntermediate setter internal fc06bd4
  • Make sure that if TSInteropMarshaller.Allocate fails, we get the right exception ba663c0
  • Move Background in default app template to Page 3c03e70
  • Open suggestion list when focus, reflect text changes 8dc6472
  • Overwrite runtime tests results file if exists 9b399c3
  • Parse boolean correctly to not cause crash 0adb4fa
  • Promote RS0030 (banned API) diagnostic to error 2803f4c
  • Reduce number of exception raised by RemoteControloClient cf45c19
  • Reduced the severity of the inconsistency message while adding/removing elements in Visual Tree on WASM. b8dfc4b
  • Report not implemented diagnostics for generated code 4377f08
  • Respect Opacity when rendering gradient brushes b92cdd8
  • xbind: x:bind may not be evaluated if x:Load is true during Loading cc665d2
  • xLoad: Adjust x:Load and x:Bind loading sequence a5217bf
  • restore net6.0 for WebAssembly, disable linker in debug 1d447ca
  • Reveal-based brushes crash on Skia 7aeb392
  • Revert "fix: Add and apply NumberBox CommonStates" 82116b4
  • Skip WebView.XYFocus properties 3130bbe
  • Text selection on WASM 56f9afa
  • Tweak the Popup hierarchy 7a8403c
  • Tweak the Popup hierarchy II 0ac1241
  • 2022: Fix remote control build under VS2022 1a1b091
  • Android: Fix NRE when TextBlock.FontFamily is null 5a428c9
  • dragdrop: [wasm] Even if multi-window is not supported yet, instanciating a new Window without using it would crash the app due to D&D 53dc06d
  • FindName: Handle resources and non-FrameworkElement objects a4492c3
  • listview: [Android] Fix drag-to-reorder not applying 4a49f7d
  • listview: [Android] Fix errors when dragging rapidly 1d94cf8
  • reg: Fix OAUKF tests 9098250
  • vsix: Add missing embedded resources a7e29c1
  • wasm: geometry not receiving pointer events 89ffb4f
  • xLoad: [Android] Fix invalid x:Load reentrancy issue 9784464
  • xLoad: Fix x:Load nesting and ElementStub strong reference 9371f72
  • Retry on detached DOM element 3b9ab82
  • Show error from DependencyObjectGenerator if type is android/ios/macos view symbol 4ea8c1f
  • Tweak the Popup hierarchy III eea84a6
  • Update PathMarkupParser to latest from Avalonia 9a6ba19

Reverts

  • Revert "fix: Disable rolsyn generators for below MSBuild 17, fallback to uno source generators" 2eac0a3

  • feat!: Align with WinUI 3 desktop apis bdb7295

  • fix!: Make some classes static to match UWP 53f6d4e

  • fix!: Generate property setters only when needed d9bdd5d

  • fix(combobox)!: Make ComboBox inherit from Selector 63f35c3

  • fix!: Make CoreDispatcher.Main internal to match UWP 5363a1f

  • fix!: Match FlyoutBase.Opened,Closed,Opening with UWP 1ab5f89

  • fix!: Fix resource dictionary path handling 30f21ac

  • fix!: Fix InputScope on Android to match UWP behavior e5fea16

Performance Improvements

  • hotreload: Reduce the memory allocation d582d9e
  • reg: Fix performance regression in fast convert da59fc5
  • wasm: Place loaded/unloaded exception handling behind a flag 9cd9f35
  • Do cheap check first 620bc35

BREAKING CHANGES

  • This change is a binary breaking change only.
  • android: Move Uno.UI.DualScreen to Uno.UI.Foldable
    • Removal of Uno.Extensions.ObservableCollectionUpdateResultsExtensions
  • Removal of UIAsyncOperation.CompletionSource
  • Changed type of ApiInformation.NotImplementedLogLevel to Uno.Foundation.Logging.LogLevel
  • Windows.UI.Text.FontWeights and Windows.UI.Colors are removed from Uno.WinUI. Use Microsoft.UI.Text.FontWeights and Microsoft.UI.Colors instead.

This change also moves to use the up-lifted Input APIs provided by the Microsoft.UI.Input namespace.

  • Some classes are now static to match UWP.
  • Some properties now no longer have setters to match UWP.
  • ComboBox now inherits from Selector rather than ListViewBase, to match the UWP/WinUI inheritance hierarchy.
  • CoreDispatcher.Main is no longer public.
  • Align FlyoutBase.Opened, FlyoutBase.Closed, and FlyoutBase.Opening signature with UWP.
  • Source paths starting with '/' are now considered relative to project root instead of current file.
  • Introduces a breaking change for InputScope that is controlled by FeatureConfiguration.TextBox.UseLegacyInputScope

3.11.6

2 years ago

Uno Platform's 3.11 release ships 160+ features and bug fixes and adds support for  .NET 6 RTM with all related improvements.  

As Microsoft had announced the delay for .NET 6 support for Android and iOS, we've re-introduced Xamarin-based templates for Visual Studio 2022. Additionally, the support for preview .NET 6 Android and iOS has now been moved to 17.1 Preview 1.

In Visual Studio 2022, you'll find now two templates:

  • One named Multi-Platform App (UnoPlatform|xamarin), which uses the existing stable Xamarin "Classic". It is the same as found when using Visual Studio 2019.
  • One named Multi-Platform App (UnoPlatform|net6), which uses the .NET 6 preview support for iOS, Android, macOS and Catalyst and requires Visual Studio 17.1 preview 1.

You can setup your environment with Uno.Check 1.0.2 for Windows, macOS and Linux, which you can install as follows:

dotnet tool install -g uno.check

Then run:

uno-check

Here's a summary of the features for this release:

  • Support for VS 2022 and .NET 6 RTM
  • Drag and drop preview element support on iOS and Android
  • NumeralSystemTranslator for Arab Numeral System
  • Native pointer captures for GTK
  • FileSavePicker for Gtk
  • Support for RadioMenuFlyoutItem
  • Support for IncrementNumberRounder and SignificantDigitsNumberRounder
  • Support of GetPeerRadioAsync

As always, many thanks to our contributors:

  • @pjgpetecodes for a Raspberry Pi tutorial
  • @thomasclaudiushuber, @xperiandri, for documentation updates
  • @MohammadHadi2031 for the SignificantDigitsNumberRoundersuport
  • @pkar70 for the support of GetPeerRadioAsync
  • @Jadhielv for dotnet new templates updates
  • @trungnt2910 for UIElement clipping updates
  • @workgroupengineering for Hot Reload performance updates

You'll find below the full change log for this release.

Features

  • Android: Provide access to BaseActivity events from SpanningRectsExtension 23cca70
  • listview: [iOS] [Android] Support ItemsPresenter.MinHeight 486e8eb
  • vsix: Restore Xamarin template for VS2022 7fb276a
  • Add a FrameNavigationHelper to allow apps to access helper properties on Frame and its PackStackEntries 3826bf1
  • Add support for ios/android C# hot reload in net6 template 1414414
  • Add support for WinAppSDK 1.0-experimental1 31f45ea
  • GetRadiosAsync() for Android 110d466
  • implements AppMemoryUsage and AppMemoryUsageLimit for Android bd55b64, closes unoplatform#5891
  • Improve generation cancellation for net5 and net6 4b612b6
  • Support Dark theme in Samples app 2f93a19
  • Border: Add ability to use GradientBrushes for BorderBrush af760ff
  • dragdrop: Add support of preview of dragged element on iOS and Android b749632
  • NumeralSystemTranslator: Implement TranslateNumerals method for Arab and ArabExt NumeralSystem value ee3e611
  • perf: Improve perf of the ObjectAnimationUsingKeyFrame 3818924
  • pointers: [GTK] Implement native pointer capture 624631a
  • VS2022: Add support for uno remote control 178f682
  • vsmac: Add support for unoapp template solution filters c240f34
  • Implement FileSavePicker for Gtk c946681
  • Implement MenuBarItemAutomationPeer ddd0bed
  • make versioned fluent resources linker friendly 52d3bcc
  • Port RadioMenuFlyoutItem 9b388c1
  • Replicates CalendarView style fixes for fluent 2 e61d99c
  • Upgrade to .NET 6 RC1 d110581
  • Vector3 XAML conversion 2aa0be9
  • IncrementNumberRounder: Implement RoundDouble Method 0fdab8e
  • SignificantDigitsNumberRounder: implement RoundDouble method e30b006

Performance Improvements

  • hotreload: Reduce the memory allocation d582d9e
  • reg: Fix performance regression in fast convert da59fc5
  • wasm: Place loaded/unloaded exception handling behind a flag 9cd9f35
  • Add the ability to disable SetTargetValue exception handling 9eb4efa
  • Additional changes to mitigate PG-AOT dotnet/runtime issue #56309 218fd00, closes #56309 #7005
  • Additional changes to mitigate PG-AOT dotnet/runtime issue #56309 ba58785, closes #56309 #7005
  • Adjust Grid, StoryBoard and VisualStatGroup enumerations 5b112e9
  • Apply various workarounds for dotnet/runtime issue #56309 5cbbec2, closes #56309
  • Remove foreach in FrameworkTemplatePool dc0bc5f
  • Remove foreach in ItemsControl.UpdateItems b34954e
  • Remove try/catch handling in OnFwElt Loading/Loaded/Unloaded 17f2e4f
  • wasm: Don't use try/finally in Grid measure/arrange fb22656

BREAKING CHANGES

  • fix!: Fix resource dictionary path handling 30f21ac
  • Source paths starting with '/' are now considered relative to project root instead of current file.

Bug Fixes

  • Fix the wasm only CalendarViewCrippledAnimationStyle for fluent v2 dd3ac57
  • animation: Fixed a problematic case where a native animation can be 'lost' if the GC is run during the duration of the animation, preventing the animation from being removed and leaving the UI in an undetermined undesired state. 81547ef
  • Border: Allow null BorderBrush to be set decb376
  • calendar: Fix CalendarDatePicker cannot be scrolled when re-opened d05bbc8
  • calendar: Fix initial scrolling state of the CalendarView 50829e8
  • DependencyObjectGenerator: Place BindableAttribute on the correct type 852265c
  • docs: Fix a few typos in VS2022 article f3e0a12
  • docs: Incorrect NuGet package name in logging.md c549ddc
  • dragdrop: Fix support of transparent control in DragUI ef0b6fd
  • effectiveviewport: [Android] The SCP is now the element flagged as ScrollHost, like on UWP 43f56d0
  • effectiveviewport: [iOS] The SCP is now flagged as ScrollHost f4b1937
  • effectiveviewport: Fix effective viewport computation 3448722
  • effectiveViewport: Make sure to raise the event when initializing multiple elements with EVP handlers 73d782d
  • HitTest: Check for Clip property for ClippingBounds 97152dd
  • ItemsControl: [Android] Adjust collection update reset for ComboBox 8581995
  • ItemsControl: avoid rebinding containers on collection change 4ed5bc4
  • ItemsControl: Fix for applying ItemContainerStyle dc7a7a9
  • listview: [Android] Correct scroll offsets if necessary when scrolling upwards in list 5e8bce5
  • listview: [Android] Fix crash on animated collection change 96cb63c
  • listview: [Android] Fix crash when animating item 7d05e4c
  • listview: [Android] Fix flicker and clipping when ListViewItem.Margin is set 7425947
  • listview: [iOS] Fix container reuse by template 868446f
  • listview: [WASM] [Skia] Correct scroll offsets if necessary when scrolling upwards in list cd74fd9
  • listview: [WASM] Support removing item while dragging 3c6e6e4
  • listview: Fix D&D UI not reporting move while reordering items 30fd8d3
  • menuflyout: Ensure MenuFlyout nested submenus stay on screen cd13998
  • perf: Do not box Point for equality check a4d673d
  • pointers: [iOS-simulator] Improve debug by starting a timer for Holding on iOS when in simulator 3c6ce3d
  • pointers: [Skia] Make sure to also release impiclit captures on pointer realease f3d53bc
  • pointers: Ensure that a manipulation cancelled by ManipStarting event is cleanup e1f5543
  • pointers: Improve relialibilty of hold gesture by always starting a timer on press when hold has been enabled. 4d18f58
  • pointers: Make sure to abort drag manipulation as soon as possible if not touch pointer 1045c76
  • pointers: Release implicit captures on manip completed d307101
  • reg: [Android] Fix application content squeezed top left 595d4ea
  • reg: ensure both net6/xamarin templates don't share ids 0f62edd
  • reg: Fix CornerRadius support on Border 9f0b463
  • reg: Fix EVP not progated on native elements 42ac6dc
  • reg: Fix EVP sometimes not propagated properly 932b82f
  • reg: Fix support of Android versions below 30 (including UI test failing on CI) 07c3d23
  • reg: Fix support of scroll offsets in ViusalTreeHelper c72890c
  • reg: Fix Viewport not updated on first load 7f2409b
  • reg: Popup light overlay's was not rendered properly c2fcd60
  • scrollviewer: [WASM] Make the SCP the "element which scrolls" (instead of the SV) ee21a4e
  • transformtovisual: [iOS] Fix TransformToVisual inside ListView 162dee5
  • [Android] LayoutSlot was including magrins and alignments 9743762
  • [Android] Window's visible bounds are incorrect 39ea361
  • Don't close ContentDialogs on showing MessageDialog cd4b9e4
  • Don't use nullable reference types in generated code b167107
  • scrollviewer: [WASM] Fix ScrollViewer incorrect offset after ChangeView() 7fddb8f
  • Fix lazy theme dictionary caching 8a43603
  • ios commandbar navigationcommand icon alignment 7497510
  • resourcedictionary: Improve performance of ResourceDictionary with not-implemented types 94aad18
  • scrollbar: Fix possible layout cycle when scrollbar is lower than the min size of the thumb ceba136
  • transformtovisual: Fix TransformToVisual on scrolled ScrollViewer df3f88d
  • viewport: Fix effective viewport adding scroll offsets twice d05ebc4
  • xBind: [Wasm] Fix invalid internal ElementStub state ef37b28
  • xBind: Fix xBind to other control without code-behind base class 76b2dba
  • xLoad: Fix x:Load nesting and ElementStub strong reference 9371f72
  • Assign ImageBrush on Android properly 118e4db
  • Convert resources to target property type in generated code 873251d
  • Reduce number of exception raised by RemoteControloClient cf45c19
  • Reduced the severity of the inconsistency message while adding/removing elements in Visual Tree on WASM. b8dfc4b
  • Respect Opacity when rendering gradient brushes b92cdd8
  • Update text according to AcceptsReturn d318146
  • xLoad: Adjust x:Load and x:Bind loading sequence a5217bf
  • Overwrite runtime tests results file if exists 9b399c3
  • wasm: Image/AcrylicBrush.AssignAndObserveBrush exception 73df35b
  • Add and apply NumberBox CommonStates 500c262
  • add missing progressbar changes in resources v2 b47e2ce
  • Add missing ProgressRing v2 style 4f23bf5
  • Adjust vsconfig to include iOS/Android workloads d262e3b
  • Apply visual states on date change cc08128
  • Changing Pivot.SelectedItem should reflect on Pivot.SelectedIndex 166e7a7
  • ComboBox WinUI 2.6 border workaround 1991964
  • Correctly change PivotHeaderItem content when PivotItem.Header changes 5a85199
  • Correctly handle whitespaces in XBind path rewriter dfeb4a5
  • Don't PreventDefault keydown event of TextBox 205e8fc
  • Don't underline HyperlinkButton if not ImplicitTextBlock c1ef8c1
  • Don't use cached value when it's no longer valid 8b94591
  • Downgrade template default to be net5.0 for VS2022 35234e8
  • Fix image flickering 9b6a8fc
  • Fix NREs in PersonPicture 876bdf1
  • Fix Selected state in PivotHeaderItem 603f42a
  • Fixed SignificantDigitsNumberRounder.RoundDouble bug 223d8d2
  • Flyout should return focus to previously focused 4d8af83
  • Generate analyzer suppressions properly edc8542
  • GridViewItems are not visible 8583c31
  • Handle converters and TargetNullValue in source generator 422e026
  • Hide open flyouts when MessageDialog is shown 0b00af4
  • HyperlinkButton underline 3c12d17
  • Initial focus on Page a444b7a
  • Invalid sourcegen update 6b3815b
  • Invalidate cached theme dictionary when theme dictionaries are added/removed 57068a3
  • Make sure that if TSInteropMarshaller.Allocate fails, we get the right exception ba663c0
  • Move Background in default app template to Page 3c03e70
  • Open suggestion list when focus, reflect text changes 8dc6472
  • Parse boolean correctly to not cause crash 0adb4fa
  • Popup should receive focus if its child is focusable e6c03bc
  • Promote RS0030 (banned API) diagnostic to error 2803f4c
  • restore net6.0 for WebAssembly, disable linker in debug 1d447ca
  • Reveal-based brushes crash on Skia 7aeb392
  • ToggleButton WinUI 2.6 border workaround d08d589
  • 2022: Fix remote control build under VS2022 1a1b091
  • Android: Fix NRE when TextBlock.FontFamily is null 5a428c9
  • commandbar: [iOS] Don't fetch the internal TitleView parent on invalidate measure 0a9a729
  • dragdrop: [wasm] Even if multi-window is not supported yet, instanciating a new Window without using it would crash the app due to D&D 53dc06d
  • dragdrop: Preserve DragDropExtension JS entrypoint a5ba887
  • FindName: Handle resources and non-FrameworkElement objects a4492c3
  • flyout: Take Flyout position into account correctly 73e5d83
  • listview: [Android] Fix drag-to-reorder not applying 4a49f7d
  • listview: [Android] Fix errors when dragging rapidly 1d94cf8
  • PersonPicture: Add v1 WASM workarounds to v2 style. Remove negative margin for clipping 0eae0c1
  • progressbar: Reverted to "v1" template for ProgressBar because the "fluent v2" is causing animation problems. 6fe3a0c
  • progressring: The AnimatedVisualSource was recreated too often, loosing the playing state of the current player. Logic has been added to only create a new source when required. 59c4904
  • reg: [Android] Fix icon cut off in NavViewItem in compact mode 5d2eac8
  • reg: Fix OAUKF tests 9098250
  • vsix: Add missing embedded resources a7e29c1
  • vsix: Don't enumerate nuget packages on the UI thread 42ec898
  • wasm: geometry not receiving pointer events 89ffb4f
  • xbind: x:bind may not be evaluated if x:Load is true during Loading cc665d2
  • xLoad: [Android] Fix invalid x:Load reentrancy issue 9784464
  • Retry on detached DOM element 3b9ab82
  • Revert "fix: Add and apply NumberBox CommonStates" 82116b4
  • Show error from DependencyObjectGenerator if type is android/ios/macos view symbol 4ea8c1f
  • Text selection on WASM 56f9afa
  • Unchecked CheckBox should not have visible glyph a9d201e
  • Update PathMarkupParser to latest from Avalonia 9a6ba19
  • Various visual issues in WinUI 2.6 styles 08e4dfb

3.10.11

2 years ago

This is a service update for the 3.10 release, with some changes and bug fixes for .NET 6 support and Visual Studio.

  • fix: TextBlock text selection on WebAssembly #7088
  • Use .NET 6 and Uno.Wasm.Bootstrap 3.0.0 #7120
  • Added support for XAML Hot Reload for VS 2022 #7066
  • Added support .NET 6 iOS/Android C# Hot Reload in VS 2022 #7066
  • Fixed VS2022 performance issue #7066
  • ProgressRing: The AnimatedVisualSource was recreated too often #7075
  • Adjust VS 2022 .vsconfig for Preview 4 #7083
  • fix(Android): Fix NRE when TextBlock.FontFamily is null #7132

3.10.7

2 years ago

Uno Platform 3.10: Day-0 support for .NET 6 RC1, WinUI InfoBadge, Windows 11 Fluent Styles

We continue to evolve Uno Platform in lockstep with the latest Microsoft developer platforms and tooling. Our 3.10 release supports .NET 6 RC1, latest developments in WinUI.

We are following developments in .NET 6 and Visual Studio 2022 until their general availability and look forward to bringing to you all the productivity, performance and stability benefits this latest wave of innovation from Microsoft is enabling for all of us. In addition, we closed over 150 new features and issues requested by our community and clients, as well as added 30+ samples to our documentation.

As always, thanks to our community contributors:

  • Many code generation fixes, UI Fixes (@Youssef1313)
  • DeviceBluetooth, ToastNotification and related (@pkar70)
  • Source generation fixes (@mterwoord)
  • CompositionGradientBrush (Skia) (@VitezslavImrysek)
  • Templates improvement (@brianlagunas)
  • Templates improvements (@chingucoding)
  • Skia Window size APIs (@DZetko)
  • Android TextBox cursor color (@Hudney)
  • Documentation (@Abhishek-Sharma-Msft, @MohammadHadi2031, @robloo, @crogeniks)

You can view the full blog post for this release here.

Features

  • Upgrade to .NET 6 RC1 d110581
  • Vector3 XAML conversion 2aa0be9
  • background_sizing: Added support of BackgroundSizing on Wasm 8afd0c8
  • background_sizing: Fixed compilation for Skia (background sizing not implemented yet) 219a42e
  • BadgeNotification: Support for Tizen e5dc94f
  • BadgeNotification: Support for WASM b7237fd
  • New default Android, iOS and Mac Catalyst Uno Platform app icons 587ec89
  • background_sizing: Added support for BackgroundSizing on Android 7a9b306
  • background_sizing: Added support for the BackgroundSizing DependencyProperty + a sample for it. c3f8315
  • fillrule: Correctly implement FillRule for iOS & macOS 1c90c0e
  • fillrule: Correctly implement Path.FillRule on Android d0b9213
  • fillrule: Fix FullRule on Wasm when GeometryGroup is used ed89a82
  • geometrygroup: Add preliminary support for GeometryGroup on Skia. FillRule not fully supported yet. 64226f5
  • measureview: Added the ability to .MeasureView() to measure eiter the content of the whole control for and HTML elements. f1607a9
  • wasm_measureview: Added the ability to call .MeasureHtmlView() from application code. Useful to implement .MeasureOverride() in Wasm applications. 27e31b8
  • DeviceBluetooth - common 53bd836
  • background_sizing: Fixed compilation for iOS & MacOS (background sizing not implemented yet) dbbcecc
  • datepicker: Added a new [UnoOnly] UseNativeMinMaxDates property on DatePicker & NativeDatePickerFlyout to allow the picker to be restricted to some date instead of just the year. Properties MinYear and MaxYear are still used for that since they are already of type DateTimeOffset. 33ffc12
  • dragdrop: Add ability to drop external content into wasm app 36c9eaa
  • dragdrop: Fix support of external DragAndDrop to app on wasm b5942de
  • runtime: Add ability to provide a CT for InvokeAsync c38c00c
  • wasm: Add ability to manipulate a File using NativeStorageItem 0ffb4e0
  • ActualTheme and ActualThemeChanged 5485f52
  • Add optional XAML and Bindings Trimming 5d956f2
  • Add ResourceDictionary retemplate 1b5acbd
  • Add ResourceDictionaryWithCodeBehind template e2f48bc
  • Add support for DataContext inheritance for non-UIElement bd1c297
  • Add Thumb control default style 97b0cb7
  • Added CompositionColorGradientStop implementation 14210e6
  • Added CompositionColorGradientStopCollection implementation 61628e1
  • Added CompositionEllipseGeometry implementation 10f2466
  • Added CompositionGradientBrush implementation 38db8d6
  • Added CompositionLinearGradientBrush implementation ab93de0
  • Added CompositionLineGeometry implementation fe75691
  • Added CompositionRadialGradientBrush implementation 031eae3
  • Added CompositionRectangleGeometry implementation 8309bc7
  • Added CompositionRoundedRectangleGeometry implementation 3c5bc14
  • Added property change propagation notification for CompositionObjects 543b834
  • BackdropMaterial fallback support dfee434
  • BackgroundTaskDeferral for Android 2c4d7ee
  • Contact and ContactAddress, warning when setting to longer than UWP 1d8a3c2
  • fields for Android ToastNotification 639ea22
  • Hide delete button when TextBox isn't large enough 003462f
  • Implement SelectionStart, SelectionLength on Skia e10659e
  • Implement sizing methods for ApplicationView 945a8c0
  • Implement TextBox.Select, TextBox.SelectAll on all platforms b0f7646
  • Initial support for CoreWindow.GetKeyState dc4517d
  • Support for RenderTransform on Android LinearGradientBrush 5b54e1f
  • Support for SettingsIdentifier, SuggestedStartLocation and SuggestedFileName on WASM 0048e4b
  • Support PasswordBox on Skia 3f03c60
  • listview: Implement drag-and-drop scrolling and visual states ab6a898
  • pointers: Add inertia support in manipulation events 40f8d54
  • shapes: Finished the implementation of GeometryGroup in Wasm/SVG d322267
  • test: Add runtime tests automatic retry support 8919f17
  • Windows.Devices.Radios common enums 91f8385
  • pointers: Fully implement the inertia processor 288bdc8
  • shapes: Implemented all geometries on Wasm 0d4e7cf
  • wasm: Added ability to measure shapes on Wasm even when the control is not loaded. fe2c502
  • ScheduledToastNotification 6427e28
  • SystemTrigger Android implementation 90f591d

Performance Improvements

  • [Android] Improve DisplayInformation performance 111affb
  • Additional changes to mitigate PG-AOT dotnet/runtime issue #56309 218fd00, closes #56309 #7005
  • Additional changes to mitigate PG-AOT dotnet/runtime issue #56309 ba58785, closes #56309 #7005
  • Apply various workarounds for dotnet/runtime issue #56309 5cbbec2, closes #56309
  • Improve DependencyProperty propagation ea6381e
  • Improve nullability checking in DependencyProperty 5f50f1f
  • Move Brush inheriting types to be lazy in ResourceDicionary 9954c4d
  • Remove DateTimeOffset from TimeLine 96585ff
  • Use invariant culture in XamlFilePathHelper fbf79fb
  • Use lazy split regex creation in FastConvert 1e49c0f
  • use switch(string) for bindablemetadata lookups f74fe23
  • android: Adjust clipping computation performance 6b3f2eb
  • android: Cache Stroke/Fill system style to reduce interop c410a4a
  • android: Don't sort Canvas children below 2 986d922
  • android: Move SimpleOrientationSensor off the UI thread 8f5666e
  • android: Simplify Activity instances tracking fbe91b5
  • android: Use HashTableEx in FontHelper 0fc8e52

Bug Fixes

  • [Skia] Fix layout when RevealBrush is used 9f5e1a8
  • Add support for VS 2022 in sync generator 4947bc1
  • Add XAML source generator cancellation support 0e4964d
  • Add XAML source generator cancellation support dd4b19e
  • Apply coercion before value is set 7be2c37
  • Apply icon color correctly inside native AppBarButton 4055a07
  • Apply pointer visual states of pivot items 341205f
  • ComboBox WinUI 2.6 border workaround 1991964
  • Compare NaN correctly f509baf
  • Disable light-dismissing MessageDialog 3c27bd3
  • Exception was not reprotyed properly in async calls on WASM f93e40d
  • Fallback to specific regional culture if neutral culture isn't found 1b35aed
  • Fix faulty indentation d6ec852
  • fixes TextBox cursor color for Android 29+ 375db65, closes #6240
  • Flyout should return focus to previously focused 4d8af83
  • Generate native ctor only when a ctor with required signature exists in base types 3691e08
  • Handle scaling less than 100% on Wasm 7937de6
  • ImageBrush RenderTransform does not throw a633fa9
  • LinearGradient angle should be reflected in EndPoint 1ffe017
  • Popup should receive focus if its child is focusable e6c03bc
  • ToggleButton WinUI 2.6 border workaround d08d589
  • Unchecked CheckBox should not have visible glyph a9d201e
  • Border: Adjust UI Test snapshots differences after changes for pull request 6898 (Related to Uno.Themes - #616) 56cba36, closes #616
  • commandbar: [iOS] Don't fetch the internal TitleView parent on invalidate measure 0a9a729
  • CornerRadius: [Android]Remove twice drawn border, adjust Background that was underneath the border and properly calculate inner corner radius for common cases 4d0976a
  • dragdrop: Preserve DragDropExtension JS entrypoint a5ba887
  • Propagate focus properties from Flyout to Popup host 7cac6bc
  • Remove net5.0 target option for skia/wasm dc13854
  • getbbox: Fixed GetBBox bug 93a663c
  • xamlreader: Load ThemeResources properly 06609d6
  • Propagate focus properties from FlyoutPresenter caf0ffb
  • Propagate focus property changes from PopupBase to Child 9f8b3af
  • Set method of attached property must have 2 parameters 9b1c2c1
  • Use SymbolThemeFontFamily instead of hard-coded Segoe MDL2 Assets 9dae693
  • geometrygroup: Fixed a situation where the change handler could not be set on the GeometryCollection 794d4e6
  • reg: Fix SelectedIndex update when ItemsSource is ObservableCollection 2747773
  • Add missing implementation for text alignment on macOS 680ce6c
  • Correctly check if the TextBox is PasswordBox befo 4e02fba
  • Handle justified text for TextBlock on Android 8104c69
  • Hide MS Edge reveal password to avoid duplicate reveal buttons a5e9160
  • Use SkiaSharp.Views.WPF for .NET Core target c03af67
  • animation: Fix DAUKF not cancelling its frames when stopped 1af267b
  • animation: Fix transition animation not cancelled 144348c
  • animations: Ensure VisualState and VisualTransition are materialized in the right resource context 77b769d
  • ColorPicker: event subscriptions when reloaded e30e8c3
  • ColorSpectrum: not rendering on skia/wasm f3216d8
  • dragdrop: [iOS] [Android] Support drag over events when native view in hierarchy 1fe777a
  • layoutinformation: [Android] [iOS] Return correct GetAvailableSize d073d39
  • listview: [Android] Fix glitches during drag-and-drop df5a4ed
  • listview: [Android] Improve performance when updating list items 6187297
  • pointers: [Android] Fix ListView scrolling with manipulation aa0d67f
  • pointers: [iOS] Fix ListView scrolling with manipulation 27cb649
  • pointers: [iOS] Fix pointers never goes to parents element of a ScrollViewer 3ee8c33
  • pointers: [iOS] Fix possible "additonal move on relase" being raise more than once 46cbabb
  • pointers: [skia] Fix captures atomatically released when leaving control 9cc3661
  • pointers: Fix manipulation not being aborted on pointer released if in Starting state 2204d14
  • pointers: Make sure to disable pointers interception by scrollable contents as soon as a conflicting manipulation or a drag starts 05b553c
  • reg: Ensure that Setters are also applied in the right context 84923a7
  • Disable implicit .NET 6 Pre 7 global namespaces imports f902d6a
  • Fix .NET Native Logging missing metadata caf9771
  • wasm: AssignAndObserveBrush impl for GradientBrush 352ce18
  • Don't include type name in doc comment due to roslyn bug 88a180c
  • Fix checking symbol type when it's nullable ref type 2459f60
  • Fix linear gradient border not working on Wasm 1d8a4bd
  • Fix visual state for disabled selector items 35c1ef9
  • Handle SelectedIndex properly when removing/adding before the selected index 057f0ea
  • Upgrade ProjectCapability for VS 2022 b5a84be
  • Use StringUtil.FormatString instead of string.Format for WinUI C++ resources a9aad90
  • iOS: Update src/Uno.UI/Controls/Window.iOS.cs e676922
  • reg: [iOS] Fix pointer event was raised on SCP parent before SCP children dcb9534
  • Account for keyword-like identifiers in native ctor generator b6f48e0
  • Move CookieManager and related classes to runtime assembly 8e6770f
  • Null-check focus children in tab order c258537
  • appbarbutton: [iOS] Fix AppBarButton icon sometimes disappearing 9335a0a
  • dependencyproperty: Only permit one binding at a time 1b18fee
  • iOS: [Window] Null pointer exception 4da2c20
  • itemscontrol: [iOS] Fix DisplayMemberPath support 0a2db57
  • itemscontrol: Bind DisplayMemberPath target 4102f1b
  • pointers: Make sure to also update position with inertia ea762b2
  • pointers: Make sure to not continue an invalid manipulation c9b6df5
  • tests: Ensure that UI tests are retried under more conditions 35e40d4
  • Add 'base.' to make sure we not access generated property with same base name abbcce6
  • Adjust missing accessibiity for gtk app 2187e70
  • Apply suggestions from code review 40d9ab7
  • Cleanup few warnings a47f480
  • ComboBox does not handles the PointerPressed event d32199f
  • Don't generate invalid code when x:Load and StaticResource markup is used 70f756b
  • Don't mark buildTransitive files in Uno.UI.MSAL as content 54a2d50
  • Ensure that all uno controls defined dependency properties are using FrameworkPropertyMetadata b70d640
  • Fix GetHashCode implementation of NamedTypeSymbolStringComparer 27cd5f8
  • Fix split regex to fix failing test fb83f5f
  • Followup fix to .NET 6 template ade19e5
  • Hardware back button on Android is not working 28d6cf8
  • Ignore case and other allowed suffixes 3f45f12
  • Ignore MarkupExtensionReturnType to match UWP behavior 2029360
  • Parse XAML 'Run Inlines' correctly in Span ed16f3e
  • Pass inner exception per feedback 592dd0f
  • Sync solution template updates 4e7f224
  • WASM TextBox getting focus when part of recycled template 0d00391
  • flyout: placement with position provided f8fb109
  • macOS: contentControl intercepts pointer events ce41d41
  • reg: Fix missing accessibilty for GTK samplesapp head ff13258
  • reg: Fix tap gesture no longer recognized since the pointer properties has changed in simulated move eff29c3
  • Allow separating by spaces and/or commas ffa761d
  • Allow trailing 'px' for grid length cade3da
  • Apply scaling for browser tests 6199682
  • ComboBox should handle PointerReleased 0aceccf
  • Correctly handle access modifiers in XamlfileGenerator 245df0a
  • Ensure content in Canvas in Canvas is visible 3858136
  • Ensure focus is lost when clicking outside app content 68940da
  • Ensure PRI file is included in the nuget package 47bd3cb
  • Fix merge issue which rollbakcs changes of #6163 05fbbfe, closes #6163
  • Fix the build. c294989
  • Fixed Rectangle rendering when using stroke thickness 54433d8
  • Generate valid code for type in default namespace in DataTemplate 83cb5b3
  • LinearGradientBrush can't generate with explicit GradientStopCollection e7153af
  • Properly generate string literals using Roslyn API 2a4a83e
  • Support for non-UIElement ElementName binding in global ResourceDictionary 318f24d
  • elevatedview: shadow not appearing on uwp 94cafcd
  • flyout: Ensure namescope propagation for flyout content 42f7d9e
  • macOS: Window sizing 792ef7b
  • menuflyout: Position MenuFlyout correctly with native AppBarButton cb6802f
  • msal: Move package generation to nuspec for net6 compatibility 939fd95
  • pointers: [iOS] Fix support of "fast gestures" like swipe 8d37557
  • pointers: Fix pointer velocities are invalid when manipulation interia is running 489483e
  • pointers: Fix pt args timestamp's on WPF was in ms instead of ticks 5de1fe7
  • pointers: No longer normalize manip.rotation in [0,360[ si speed and inertia are computed properly. 3a53398
  • Selector: firing order of data-bound dp & event b3f64a6
  • shape: Setting a <Path />'s Data property to null after an actual value were causing a NRE (NullReferenceException) 9cf2b29
  • swipecontrol: Fix inertia of SwipeControl by using the manipualtion's inertia e168422
  • swipecontrol: Make sure no Button.Click is trigger when manipulating the SwipeControl 51f3451
  • visibleboundspadding: Adjust for Window.Current being null 9e35fd3
  • xBind: Fix support for FallbackValue 8744c50
  • Reduce focus search logging level da49d4e
  • Report a warning when xaml code behind does not have correct base class specified. eec0d81
  • Silence warning 4773f77
  • ToolTip implementation 5583919
  • Update VS2022 vsix owner fffc677
  • use correct diagnostic rule. Fixes #3412 627a8b5, closes #3412
  • Write UnoNotImplementedAnalyzer using IOperation to avoid false negatives 1e88ffe

BREAKING CHANGES

  • animation: VisualState.Setters are now applied after VisualTransition.Storyboard