Uno Platform v3.1.6 Release Notes

Release Date: 2020-10-23 // over 3 years ago
  • πŸš€ The 3.1 release is our 6th release in 2020! In our 2019 survey you had asked to release more often and we hope we have delivered.

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

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

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

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

    πŸš€ And finally, the whole new Prism 8 templates updates for the dotnet new experience.

    πŸš€ Here's the detailed change log for this release:

    πŸ”‹ Features

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

    πŸ› Bug Fixes

    • dependencypropertyprecedence: Changed the precedence override to use a stack instead of a single field. d7e0822
    • Droid: Remove multiple partial implementation 49f2ae5
    • iOS: Remove warnings when building the iOS head 7ac08e5
    • skia: Adjust visual clipping for ScrollViewer 6a3839b
    • πŸ’… style_precedences: First setter on a style were applying its value on the target using the "Local" precedence. 388b162
    • [iOS] [Android] Prevent Render() method from reentering 163128a
    • πŸ– Handle NullExtension in XAML code generation 25a08ce
    • skia: Hide Visuals for zero arrange, reduce refresh load f8818db
    • [WASM] ContentPresenter.Background re-renders when Color changes 13f3aa2
    • Drawable error message made more clear 1f3c00f
    • πŸ“‡ Fully quality BindableMetadata generated types aad95fe
    • TextBox.VerticalContentAlignment 40fe514
    • combobox: [iOS] Fix memory leak c85f2a3
    • ContentDialog: [iOS] Fix memory leak 623c02d
    • fips: Use SHA256 for sourcegenerator path hashing c83223b
    • ListViewBase: Item container indices not updated on insert/remove 80ebd54
    • ListViewBase: Item container indices not updated on insert/remove ebdca5d
    • 🍎 macOS: exception on Scrollview contentchanged 709b988
    • NativeApplication: don't call OnLaunched again if app is already running (i.e. when focus is regained) f3ba2b6
    • net5: Fix for net5 source generation nullable references support 671947f
    • publish: Fixes publish to azure may fail with locked files c02eae2
    • samples: Ensure the app can finish even in exceptional cases a769295
    • skia: Adjust error handling for skia samples run 675dcd4
    • skia: Fix content file deployment from VS d4eae5f
    • skia: Remove inner visual from panel on element removal 6bd6a03
    • skia: Remove NotImplemented on FrameworkElement.Dispose() 9c372eb
    • TemplatePool: Fix TemplatePooling may still be active when disabled 5e11ee0
    • βœ… test: [Wasm] Adjust WindowHelper.WaitForIdle to actually wait for idle c000291
    • TextBox: fixed multiline textbox height not scaling properly on wasm c586e09
    • βž• Add documentation for add reference issue in cross targeted project ec998aa
    • βž• Add workaround for intellisense issues in the Android project 155d124
    • βž• Added MUX styles to run Samples on Windows 735ca30
    • Don't propagate DataContext via Border.Child 0dc34bd
    • πŸ›  Fix Slider thumb not visible when Value is at maximum b9d0083
    • 🚚 move ListViewItem.cs to Controls folder ea379ce
    • ⚑️ Update Shape.Fill when LinearGradientBrush gradient stops change 947d2dd
    • analyzers: Analyzers may not show the proper status using the reference API c58565e
    • combobox: PlaceholderText not displaying c4c1109
    • doc: updating font doc is easier to read 37bcfef
    • NavigationView: toggle pane button width when light-dismissed 21b3bdc
    • shapes: [Skia] Adjust shapes path alignment given StrokeThickness a28763f
    • skia: GridView panel is now a WrapPanel 11c8636
    • skiawpf: mouse wheel was too fast f08631f
    • TextBox: [iOS] Fix memory leak cf7b2f0
    • theme: Ensure resources backed by StaticResource aliases update correctly 0d61ca9
    • theme: Update theme properties set by implicit styles correctly f42835f
    • tooltip: Fix tooltip popup panel created too early 3473a4d
    • Correctly initialize value of GeoCoordinate.Point on Android debca91
    • πŸ›  Fix bug where ResourceDictionary with only ThemeDictionaries would not be generated 6bb8694
    • ColorPicker: Add partial modifier to ColorChangedEventArgs 3dfc1ae
    • Materialize certain ResourceDictionary entries eagerly 44e1758
    • ColorPicker: Corrections in System.Threading 9563227
    • ColorPicker: Fully qualify ToolTip for macOS c208c90
    • Selector: fixed IsSelected not working on Selector and ListViewBase items ef26819
    • sourcegen: Correctly evaluate UseWPF b2ea6a8
    • xaml: Reduce size of AOT'ed compilations from Xaml b6380f0
    • [Android] Geolocator should detect permission when app resumes 1a06aca
    • Apply proper TreeViewItem indentation a437d2f
    • ⬆️ Bump Wasm Bootstrap for uno-app default afea3db
    • Disable parallel query on WASM 20b1786
    • πŸš€ Disable recent samples caching while in release 3ae3bf8
    • πŸ’… Executing OnPropertyChanged, Style incompatibilities, vector behavior alignment 5a44136
    • πŸ›  Fix rebase issue b617eab
    • πŸ›  Fixed samples app compilation due to generators 69189ba
    • Fully qualify Window reference for iOS 4ab7915
    • Loading event might not be invoked if alement added in visual tree while invoking the Loaded of its parent cb4f6fc
    • πŸ‘‰ Make sure the Loading event is not raised twice bb58a81
    • πŸ‘‰ Make sure to invoke OnApplyTemplate if setting the template after control has been loaded 89dcd85
    • Perform app initialization only for ApplicationActivity d282a4f
    • displaymemberbar: Removed DisplayMemberTemplateSelector, replace with a real solution similar to what UWP/WinUI is doing 7e2ab4e
    • ListView: Update SelectedIndex on selection via container 704399b
    • page: Page is the only UserControl which draw its own Background 964c2a2
    • scrollBar: Make sure to unsubscribe from events on Unload + restore managed scroll bars in default ScrollViewer template for wasm ae4ddfe
    • scrollViewer: Fix memory leak when SV used with managed ScrollBar b8ca32c
    • wasm_insert: [Wasm] Ensure DOM & Managed visual tree are synchronized after using Children.Insert() on a Panel. 89b4354
    • Geolocator methods invoked on Dispatcher when necessary e67e139
    • HighContrast and Light reveal brushes now match UWP 56ee223
    • Properly implemented TreeView events and ItemsSourceView ecb8b09
    • ⏱ Schedule InitializeIfPermissionIsGranted on the dispatcher 7f29597
    • πŸ‘Œ Support Add() in ArrayList when Capacity is not set before daad101
    • skia: Add default implementation for AnalyticsInfo a21ed13
    • unix: Adjust ApplicationData.Local path to use proper locations under unix c53e429
    • return empty collection when expenting a IEnumerable d97dc73
    • ⚑️ Updated a lot of typos 74ca2b2
    • textbox: A binding on the TextBox.Text property were always treated as a TwoWay binding. d2b0b80
    • textbox: On WASM, the CornerRadius is not applied on the TextBox's background <Border>. 2e08a70
    • vsix: Properly support solution unload and timeout on nuget failure 9f79917
    • πŸ— build removing unnecessary async a60e333
    • Check for ValuePatternIdentifiers existence before usage 745a898
    • πŸ›  Fix incorrect implemented list for CoreWindow.PointerCursor 563f6ff
    • clipping: Fix GH652 - Problem with clipping on both Wasm & Skia 703242b
    • clipping: Fixed dynamic .Clip Rect were broken in recent clipping changes. 540423d
    • DatePickerFlyout: [iOS] DatePickerFlyout.Date is not populated properly 1c271b5
    • dotnetnew: Add default root namespace for cross-runtime libraries 55d9d79
    • dotnetnew: Fix WPF Skia Host package version replacements f597223
    • dotnetnew: Remove temprary workaround in Skia template 738c5de
    • dotnetnew: Tentative adjustments for VS 2019 integration fe212bf
    • 🍎 macOS: casting issue 467002f
    • 🍎 macOS: templated control not attaching events 1a2a157
    • net5: Fix the generation of .deps.json file 532aae9
    • rect: implicit casting of string to Rect were not protected against null-ref exceptions ca7cc49
    • skiawpf: Improve the wheel smoothness a66ee03
    • slnf: Fix missing project in solution filters 8a7edd0
    • theme: Update animation-filled values when theme changes 232d8c7
    • timepicker: Fix timepicker flyout NRE when unloading 106ab50
    • wasm: Some CSS values were not using culture independant serialization. 29dcc78
    • xaml: Make ResourceDictionary.Source lookups case-insensitive ab0c986
    • [Android] Broadcast status after requesting access 441925d
    • [Android] Permit geolocator subscription before permission 82c1427
    • πŸ‘ Disable currently unsupported code 1db40b1
    • Do not ask permission in Geolocator.ctor 93db8f6
    • Listen to hinge angle sensor properly b91d655
    • ⚑️ Update cross-target library uap version to 17763 160fdb7
    • ⚑️ Update src/Uno.UI/UI/Xaml/Controls/WebView/WebView.Android.cs d4b853c
    • πŸ‘‰ Use MathEx.Clamp() to support .net standard 2.0 dda9adc
    • πŸ‘‰ Use Task.Run() instead of ThreadPool.RunAsync() edb5e68
    • skia: Assets may not be copied properly to the output or publish folder e37c0e8
    • 🍎 Fully qualify Window for iOS/macOS 308ef6c
    • βœ‚ Remove changes to Uno.UI project file 96a3217
    • βœ‚ Remove Math.Clamp() to support .net standard 2.0 40bc0c1
    • wasm: lineheight is applied to textblock 3491612
    • wasm: splash screen now respects aspect ratio d1d5448
    • πŸ‘ Allow setting title before window becomes key 74e3880
    • Pivot ItemsSource binding f5921bd
    • Pivot SelectionChanged event 59cf2a8
    • πŸ‘‰ Use template SourceName instead of old template parameters 8f41371
    • validate for null 4b7a9d0
    • NSUImageExtensions: fixed image monochrome recoloring on ios cd16da2
    • shared: update solution template to include checkbox fixes cd7c013
    • ToggleMenuFlyoutItem: added DefaultStyleKey so that the correct style is used 4994148
    • [Wasm] Don't use Assemly.Load in ApiInformation 67a554e
    • Exclude ResourceDictionary to improve linkability of XamlControlsResources 597ca36
    • ⬇️ Reduce the use of Assembly.Load during startup 39f4ffb
    • textBox: Fixed Dark mode for fluent textbox 58eef71
    • transforms: [MacOS] Fix support of RanderTransformOrigin 36a5eaa
    • UnoLibrary template creates a valid project 45c2f5b
    • ⚑️ update to AndroidX to match the standard Uno Template fe2ec48
    • πŸ‘‰ Use Uno specific chevron symbol for collapse/expand in TreeView a60a0af
    • wasmxf: Wasm XF template didn't build c30d4bc
    • xbind: [iOS/macOS] Fix memory leak when using x:Bind b93e205

    🐎 Performance Improvements

    • βž• Add new ArrayList to avoid extra copy creating bitmaps f97af39
    • πŸ“‡ Reduce generated code size for BindableMetadata and DependencyProperty 9296796

    πŸ’₯ BREAKING CHANGES

    • shared: the symbol font (winjs-symbols) has changed and the new one (uno-fluentui-asset) should be used.