Skip to content

4.7.30

Compare
Choose a tag to compare
@jeromelaban jeromelaban released this 26 Jan 20:37
· 95 commits to release/stable/4.7 since this release

Our first release of 2023 is ready and brings over 230 new features and bug fixes, most notably introducing a new project template, improving performance across all platforms supported by Uno Platform and Shared Fonts.

Here are some highlights of the release:

  • An updated project template which uses a Class Library instead of a "Shared Project"
  • Support for Shared Fonts assets, which is removing platform specific steps
  • Support for ms-appx:/// Uris Images in library assets
  • Support for AppointmentStore (Android) by @pkar70
  • XAML Trimming improvements (e.g. 33% in the Calculator app)
  • Support for ISelectionRange
  • .NET 7 performance improvements with JSImport/JSExport
  • Markup extension in Style Setter
  • Readonly TextBox selection support
  • .NET Native AOT support for the Skia GTK and Framebuffer heads
  • Framebuffer fixes for 32 bits depths
  • Android interop performance improvements

More details can be found in our blog post!

See below for the complete changelog.


Features

  • fonts: Add support for fonts in Assets 67f91ec
  • fonts: Add support for symbols font uri override 026c7fc
  • notimplemented: Update error messages to include a link for not implemented APIs 2dc18e0
  • xamlgen: Add support for debugging information, refactor BaseUri location fb3a55e
  • xamlparser: Adjust support for relative Uri parsing to enable contextual image loading 8b4c228
  • Add AutoPtr/StructPtr to TSInteropMarshaller 553f390
  • Add linker attributes ee01391
  • Add platform tags for Linux and Cloud on Uno templates 55ee8d0
  • Add WinRT interop methods d6e9b26
  • Adhere to HorizontalOffset and VerticalOffset 3f687ab
  • Adjust metadata update agent for explicit updates afc258e
  • Android Calendar (AppointmentStore), with struct (for all platforms) d641eaf
  • Android Calendar, Reminder column a4b9c45
  • Annotate Accelerometer 7ec2bdf
  • Annotate Gyrometer 122744d
  • Annotate LightSensor d8ef246
  • Annotate Magnetometer 760d7b1
  • Branded Item Templates a9b79b9
  • Improve corner radius accuracy on Android dc358f2
  • Initial focus on ContentDialog 91cd6f1
  • Initialize runtime exports at startup 83f5da7
  • ISelectionRange 83867cb
  • Load Samples app Pages within Frame 913da44
  • NeedsFrame porperty for SampleAttribute eacb4a0
  • Preserve types conditionally 5d88cf7
  • RectangleClip 35a8e98
  • StorageFileHelper ca2f177
  • Support custom markup extension in Style Setter 95bca12
  • Support for TextBox and PasswordBox clipboard methods f42b59c
  • TextElement.XamlRoot f4fd1b5
  • droid: enable copy from readonly TextBox 85ba608
  • gtk: Add support for .NET Native AOT 8d9ff09
  • template: Move to single location projects 023502f
  • Warn when Window constructor is used in Uno Platform targets 221f061
  • droid: add property for native behaviour a8ed9ea
  • Use RectangleClip for rounded corner border 0f71961

Performance Improvements

  • Skia: Skip border shape creation with empty area, avoid generating border with empty thickness 0ed6b6f
  • trim: Allow for ExpandoObject and DynamicObject to be linked out base on non-uno uses 7165749
  • trimming: Break static dependency on FlyoutBase 006ec63
  • trimming: Remove duplicate resource files 4e10391
  • wasm: Enable trimming for external drag and drop 7dbab4f
  • WindowManager: Add ArrangeElement binding 927ab11
  • WindowManager: Add CreateContentNativeFast binding 406c5e2
  • WindowManager: Add DestroyViewNativeFast binding 31233d7
  • WindowManager: Add MeasureViewNativeFast binding 58bd823
  • WindowManager: Add SetAttributes binding 4089821
  • WindowManager: Add SetElementTransformNativeFast binding 89d6b2b
  • WindowManager: Add SetPointerEventsNativeFast binding 6c33537
  • WindowManager: Add SetStylesNativeFast binding 5b28b35
  • WindowManager: Add SetStyleString bindings 1088eee
  • WindowManager: Add SetVisibilityNativeFast binding 523230f
  • Accelerometer JSImport bindings cd0bf46
  • Adjust IsLayoutRequested interop on arrange b41bac4
  • Adjust RichTextBox, MenuFlyout and TextBox trimming a9d1394
  • Cache textblock static native properties 4fdef8c
  • Geolocator JSImport bindings f662939
  • ImplementedRoutedEvents evaluated at compile-time via a source generator f2b18d9
  • Misc linker hints updates e927734
  • Reduce allocations in RegisterCustomScheme 6ad7b7c
  • Reuse java strings instances in TextBlock 0164ed0
  • Reuse radii arrays c74ff5a
  • Specialized binding for BorderLayerRenderer.GetOverlayDrawable() e4e87de
  • Specialized binding for Brush.GetBackgroundDrawable() 0adc2ea
  • Specialized binding for UIElement.AdjustCornerRadius() 6d16f8a
  • use a ref inside the new array and reduce code size af90eb7
  • Use records instead of record structs for large SG models 026dfd9

Bug Fixes

  • assets: Use orginal library name casing for ms-appx:/// uri 73e0145
  • flyout: XamlRoot not implemented 2dbc661
  • fonts: [Android] Adjust backward compatibilty for explicit AndroidAssets-included fonts 98acad0
  • fonts: Adjust font loading for ms-appx resources from assemblies 88be67d
  • gen: generate less local variables c1c1a20
  • gtk: Add more descriptive message on initialization failure 58f5bf6
  • image: Fail with a descriptive error on relative Uri loading 30ffcda
  • metadata: restore metadata updates for net6 or greater 4349883
  • nuspec: Remove Mono.Cecil 5892a1e
  • reg: Adjust UnoHasLocalizationResources metadata dd3d179
  • reg: Include explicitly specified fonts in info.plist for backward compatibilty 9204b8f
  • reg: Update symbols after ms-appx:/// casing update 26ba9bb
  • remotecontrol: Don't fail on multi-targeted projacts loading 634febb
  • remotecontrol: Don't force InterdemediateOutputPath for metadata updates ddf9c1b
  • remotecontrol: Ensure generators run after a referenced project file update db174a8
  • remotecontrol: Explicitly await all connection tasks to avoid unobserved tasks exceptions 65dee61
  • added not implemented method for Win and UWP d2a1d65
  • cleaned code 449f6cc
  • document uno.ui/uno.winui conflicts 8423f0a
  • identation 47fd961
  • included implementation for UWP/WinAppSDK and updated docs f5b36e3
  • Invisible invalid char c722537
  • moved helper to UI.Toolkit project 65043da
  • Native popup panel positioning on iOS ed00261
  • remotecontrol: Observe changes on ProjectReferences during HR sessions 0b5a801
  • resw: Adjust resources resolution for project references 7cb9abd
  • template: Adjust default language for Windows head 0efd543
  • template: Ensure x86, x64, arm64 windows head is deployable by default 2c1e21c
  • winui: Adjust WinUI build 7ff5cef
  • Adjust for 17.5 Preview 2 additional obsolete members on iOS a9dcd75
  • Avoid deflating layout slot rect by border thickness twice dd3631e
  • EffectiveViewport does not goes through native only elements 55205be
  • LayoutSlotWithMarginsAndAlignments is not correct on WASM due to BorderThickness 1bd2555
  • Remove incorrect UnoRuntimeIdentifier value 116ab96
  • Remove some duplicated namespaces e2da443
  • Remove unused generated code fb00901
  • trimming: Disable XAML trimming on mono+OSX/Linux 0442a1a
  • Pack analyzers in analyzers/dotnet/cs ba806d1
  • Remove unsupported TFMs from WinUI package 800b18d
  • removed redundant code and small refactors 8f794c0
  • renamed AssetsManager internal member 80f7974
  • Restore ProgressRing.xaml a4bbd3a
  • Set XamlRoot on Popup if not set for Uno.UI bce4b14
  • skia target a79184a
  • Support for custom markup extension in VisualState Setter eb0f7e9
  • CI: TakeScreenshot on Android b026c4b
  • templates: Only build net6.0-windows10.0.18362 on Windows 55cabb4
  • uap: Fix generators should not run under uap builds 26c6772
  • ToolTip not styled correctly 1d3473c
  • updated compiler directive for windows implementation 27015f6
  • Use executing assembly path for InstalledPath on Skia 72de4e3
  • animation: forever animation not repeating from default value 5f3ea8e
  • dependencyobject: Clear binding on ClearValue 9b2f394
  • dispatcherqueue: Use proper CheckThreadAccess/HasThreadAccess behavior 7aa064d
  • DispatcherQueueTimer: [Wasm] Ensure ticks are raised on the dispatcher c7f011a
  • dotnetnew: Adjust Server template compilation conditionals 1671dcd
  • embeddedresources: Restore proper AssignTargetPaths/AssignLinkMetadata for EmbeddedResource LogicalName metadata 1cb346c
  • framebuffer: Restore 32 bits color format 533ecf0
  • ios: animation stopped when app resumes from background 8e06564
  • perf: Don't include pdbs by default for xamarin targets in nuspec 1802e9d
  • reg: Add missing embedded resource in vsix 2022 f29240c
  • reg: Add missing generic and server projects to mac filter d6e2a96
  • reg: Adjust dotnet new unoapp parameters 093f3f5
  • reg: Adjust for XAML Trimming cross-runtime libraries build before Uno 4.6 e83fa35
  • reg: don't raise XA0101 72286c3
  • reg: Remove duplicate font asset fbe4ab6
  • reg: Restore multi-folder project structure a6ef125
  • reg: restore xaml trimming for net5 or below d537147
  • SetStyleString: Add missing parameter 0944535
  • Skia: Initialize DisplayBlock text in TextBoxView 80a2ac1
  • xamlreader: Process members on top-level resource dicitonaries 732d001
  • XamlReader: Fix invalid Windows.UI lookups c840727
  • Add partial keyword to CustomControl.cs at TemplateControl 5a6fb00
  • added caching for Android and Wasm assets 64dc566
  • added compilation constraint for netstd f0d06da
  • Attempt to fix possible crash when using GCColor 7a9c89e
  • Avoid creation of unholded ref of CGColor fdd52d9
  • ci targets for MacOS and broken skia reference 7856037
  • Ensure clipping when corner radius is set 5da0fad
  • Android: Correctly report network connectivity on VPN 0168e97
  • flyout: Adjust DataContext propagation d7217c2
  • metadataupdate: Use latest roslyn for net7 21dd5b5
  • rc: use net7 binaries with net7 project 33415a8
  • reg: adjust for C# preview support 032599d
  • reg: Don't use shadow parameters for C# 7.3 1c5de88
  • address review 32e610d
  • Address review 7c9d72e
  • Adjust dotnet new uno app description 503d315
  • Ensure flyout Opening and Closing cancellation works fb17e25
  • Revert "chore: Ensure that Uno.Samples.UITest.Generator build before SamplesApp.Droid when build from IDE" b636511
  • android: Ensure ApiInformation is initialized early enough e3b0e87
  • android: Ensure memory manager values are updated properly 02b0712
  • AutoSuggestBox: Correctly report chosen suggestion on item click b745b96
  • dp: Don't keep a strong reference to the last local value c63817e
  • droid: LV oscillating snapping c0bcd4e
  • ListView: fe item removal cleanup 867b4c6
  • lottie: Lottie animation using ms-appx source fails to manually start be63194
  • MenuFlyoutItem: synchronize can execute on loaded bb7f2bc
  • reg: Adjust generation for missing x:Class 1bc71c6
  • reg: Adjust hot reload generation for C# 7.3 d110eda
  • reg: don't dispose AssemblyDefinition on mono, it may crash d133c05
  • reg: Don't use C# 8.0 lambda parameter shadowing for xamarin projects 3d45ec0
  • reg: Metadata update is optional below net6 for skia targets 8950100
  • resources: Adjust XamlReader to use XamlScope and resolve visual parent resources 33bca7c
  • resources: Use visual parent search for style setters and visual states ea30cd3
  • Skia: Unset Image when Source becomes null 30a2fa3
  • SV: snapping issues bf4843c
  • templates: Have MacCatalyst apps logs just like macOS apps do 6aa4051
  • uap: Fix generators should not run under uap library builds 0a0f1b5
  • xamlreader: Support for geometry parsing 6c1b45d
  • xamlreader: Support for geometry parsing 0e47e8a
  • xamltrim: Trim trop-level ControlTemplate as resource key 2427d28
  • Adjust border and shape positioning and clipping b72499c
  • adjust component naming generation for mono capabilities 50feeb0
  • Adjust corner-radius border rendering on Skia f9a6eb6
  • Adjust for browserload updates when changes types are not available 8f3a57d
  • Adjust name of web app manifest, include app icons as Content 28c560f
  • Adjust rendering area after layout rounding 5d56a5c
  • Adjust rendering on Android for StrokeThickness bf6a30c
  • Adjust support for x:Bind edition 5d1de36
  • Adjust template rewriting for versioning 89eba2c
  • Avoid memory leaks in AnimatedIcon bf1266b
  • avoid NRE when DOTNET_MODIFIABLE_ASSEMBLIES is not set b1c44f6
  • BreadcrumbBar with items leaks 7c06945
  • Capture focus for button-only dialogs 5df0ae0
  • Created a partial class per platform e3bd829
  • don't reset runinfos on full builds as generations are no longer ignored e006082
  • Emit UTF-8 BOM when converting sources c60adbf
  • Ensure Flyout.Opening is executed before MenuFlyout processing 060536c
  • Ensure Holder counter is reset between individual leak tests b261241
  • Ensure Measure/Arrange of panel when popup offset changes eb2706b
  • Expander memory leaks bef4894
  • Fix condition to use SDK linker when appropriate 3d55400
  • Fix NotImplemented attribute platforms for RenderTargetBitmap 6e0190e
  • Fix SDK linker path when building inside VS 653fa60
  • Fixed PR comments 8e60f99
  • ignore case when comparing environment variable 607da54
  • included compiler directive to avoid compiler issues on WinAppSdk based targets b911d5f
  • incomplete mehtod signature 5e093a0
  • Increase HighMemoryThreshold for Samples app 7719e11
  • List .NET 7 mobile targets in crosstargeting sample 04c4487
  • missed xml comments and renamed main method 47c559d
  • missing 'method' word in docs 009e865
  • pr comments e39d486
  • SamplesApp.netcoremobile build 6de329e
  • SelectorItem should get focus on pointer release, not press ef4331f
  • TextBox focus leak on GTK 4e86e09
  • TextBox focus leak on WPF 709b22f
  • There is a circular dependency 045a77a
  • Uno Item Template improvements dadb0ae
  • Unwrap TargetInvocationException 16f71bf
  • updated doc comments 584cb5d
  • updated tests and docs for FileStorage Api de34bcb
  • wrong parameter in xml doc 0283d1d
  • XamlRoot propagation in Flyout and ToolTip 18a0b9a
  • assets: Align target path using platform's separator f4faded
  • iOS: allow selection TextBox readonly 41ab934
  • iOS: text selection on readonly MultiLine TextBox 62e4ffe
  • iOS: TextBox delegate order validation 7df64d7
  • reg: Adjust winappsdk references cleanup d8ad97f
  • reg: Don't use TargetPlatformIdentifier a9c8235
  • reg: Remove invalid removal of uno.ui files when building with WinAppSDK. 990acd3
  • reg: Restore location of the globs tempalte file 40eef9c
  • reg: Restore property nuspec targets files 0a5c249
  • reg: Typo in nuspec for XamlHost net7 049a0a8
  • skia: Apply proper font fallback on invalid font fe12216
  • skia: support inline rendering for constrained measure size b9e191e
  • vsix: Adjust bootstrapper and AppDesignFolder 93081a3
  • wasm: Adjust _UnoWasmContentAdjust transitive assets copy 6b9b243
  • winappsdk: Ensure that only the ui.toolkit assemby is referenced 5cd29ea
  • Distribute corner radius fairly along each side of an element a5ce5f3
  • Ensure border thickness is used for both outer and inner corners on Skia ff27c65
  • Pass unimplemented platforms to attribute bd1230d

BREAKING CHANGES

  • assets: The ms-appx:/// specifier for libraries introduced in Uno Platform 4.6 was incorrectly lower-casing the library name. This change now uses the original name used by the library, which is the AssemblyName property of the library hosting the assets.