Skip to content

5.4.22

Compare
Choose a tag to compare
@jeromelaban jeromelaban released this 26 Sep 19:47
· 100 commits to release/stable/5.4 since this release
769a16d

We are introducing over 290 new additions in the Uno Platform 5.4 release, with a strong focus on performance and resolving issues for our paid clients. Some of you might not know this, but we sustain the Uno Platform open-source project through enterprise support, as described in this blog. This release primarily addresses critical client issues, while simultaneously improving the overall performance of Uno Platform apps.

Head over to our blog post for more information!

As always, thanks to our contributors:


Features

  • 2-layer skia for GTK (d6493e7)
  • 2-layer skia for WPF (7caa5d2)
  • 2-layer skia for X11 (0af2c2b)
  • Add GridViewAutomationPeers (effa40a)
  • Add a generic Application.UnhandledException handler (f35388c)
  • Add ability to not show the HR on-canvas indicator (917c03f)
  • Add analyzer for missing packages when using ProgressRing or MPE (722b2e8)
  • Add DiagnoscticsOverlay utility (fdfe38b)
  • Add disagnostic indocator for hot-reload process (3d92130)
  • Add entrance and exit animation of HR ui notif (ea10c3e)
  • Add IsPointerCaptureRequired attached property (85abb78)
  • Add ListBoxAutomationPeer (b2f4ff2)
  • Add missing Windows.Graphics structs (8b52742)
  • Add support for Keyboard Accelerator tooltips (5643e23)
  • Add WPF SelfContained support (81022c2)
  • add X11 support for reading DPI scaling from X resources (Xft.dpi) (83f1927)
  • Adding new AppWindow APIs (c543197)
  • Allow disabling generated Application.UnhandledException handler (621c298)
  • always include Lottie on Desktop (41ed53a)
  • android: Proper variable font support (2a53446)
  • ApplicationDataCompositeValue (79fa08d)
  • AppWindow Position and Size on WPF (7deb5fc)
  • AppWindow Position, Size, Move and Resize on X11 (11d7217)
  • Basic implementation for detecting layout cycles (f2b46b3)
  • Bump Uno.Fonts to 2.4.5 (32102ee)
  • devSrv: Prefer to connect on last known endpoint first (c8ebb9d)
  • diags: Add ability for a diag view to send notifications (47bfa4d)
  • embedding X11 windows as subwindows inside an Uno application (7202802)
  • Font manifest (9f32857)
  • hr: Improve perf and diagnostics per processing updates as batch (0a0d880)
  • hrui: Always use notification for operations + add engine events to the log (a9e95bd)
  • hrui: Improve HR indicator placement strategies (dacdfb4)
  • hrui: Improve types output + open overlay by default (7935c03)
  • hrui: Update HR notifications (8fc3672)
  • imagebrush: add support for RelativeTransform on skia (2a0ed53)
  • Implement FlipViewAutomationPeer (f536856)
  • Implement GroupItemAutomationPeer (3a5671a)
  • Implement ListBoxItemAutomationPeer (d28a0f7)
  • Implement ListBoxItemDataAutomationPeer (777a9d8)
  • Implement ListPickerFlyoutPresenterAutomationPeer (db69ab1)
  • Implement RichEditBoxAutomationPeer (43db136)
  • Implement RichTextBlockAutomationPeer (ca5cdd0)
  • Implement RichTextBlockOverflowAutomationPeer (a73304c)
  • Implement ScrollViewerAutomationPeer (c1707ef)
  • Implement ScrollViewerAutomationPeer (2b3ab69)
  • Implement SelectorItemAutomationPeer (a7a29f6)
  • Implement SemanticZoomAutomationPeer (1714da1)
  • Implement SliderAutomationPeer (b8041d9)
  • Implement TextBoxAutomationPeer (dd78821)
  • Implement ThumbAutomationPeer (9bfa9e9)
  • Implement ToggleButtonAutomationPeer (ef52c88)
  • Implement ToggleMenuFlyoutItemAutomationPeer (b515ef6)
  • Implement ToggleSwitchAutomationPeer (3f72be5)
  • Implement AppWindow Move and Resize on WASM (6abcdd8)
  • Implement CreateDefaultValueCallback and PropertyMetadata factory methods (18e66f1)
  • Implement font matching spec (e491dbf)
  • Improve HR diag view (18cf119)
  • Instrument dev-server to expose in diagnostics in client (8d2600b)
  • Integrate the HR status (51f4ede)
  • Internally implement TextAdapter (1028df4)
  • iOS: add fileopenpicker file limit (ce2d123)
  • ios: add webview2 inspectable feature (1663761)
  • iOS: FileOpenPicker limit multiple file selection (a19cf32)
  • iOS: validate for device version (c499ac1)
  • Make breaking on unhandled exceptions opt-in (dbd23f3)
  • Make VS publish hot-reload events to dev-server (96d8c63)
  • Mark ToolTipService.PlacementTargetProperty as implemented (dcb93f3)
  • markup: IRootObjectProvider (b0e11af)
  • Merge the dev-server status into the hot-reload status view (9c49ecf)
  • Notify for VS restore on uno.sdk change (ea09112)
  • Port TextBoxPlaceholderTextHelper (ec79927)
  • Prevent light-dismiss on window deactivation flag (aa5ecc6)
  • Set WPF window position and size before activation (6a991fa)
  • skia: Gif support (47a8936)
  • Support BackgroundTransition (77b2ac8)
  • Support dark theme in Samples app list, update iconography (7be9910)
  • Support for Font manifest on iOS (96b74ae)
  • Support for FrameNavigationOptions (4d4a46e)
  • Support for ProcessKeyboardAccelerators and TryInvokeKeyboardAccelerator (cee782c)
  • Support tap on given point on Skia (34d8a9f)
  • Switch to OpenSans (1fb0bd3)
  • Throw ArgumentNullException if XamlRoot is not provided to VisualTreeHelper (44d2ac5)
  • UnoInitializeComponentAnalyzer (33df5dc)
  • Update BreadcrumbBar to winui3/release/1.5.3 (20d30c9)
  • use skia's SkPaths to hit-test (9fd40b4)
  • wasm: Enabled managed pointers on wasm (4d68131)
  • webview2: add feature configuration for ios inspectable (2e0cfee)

Performance Improvements

  • add a DisposableStruct to do allocation-less disposing (809a954)
  • Avoid boxing resources enumerators when entering/leaving visual tree (b2eb926)
  • Avoid double dictionary lookup in SkiaSharp (f285198)
  • Avoid enumerator boxing (2e69765)
  • Avoid OfTypeIterator allocations (e2d3afc)
  • Avoid storing DefaultValue in DPDetails (acb7501)
  • Don't use null default DP for value types to avoid Activator.CreateInstance (76f15e3)
  • Improve matrix transformation performance (7e4d6b7)
  • Make GetCurrentPoint allocation-less (150e2db)
  • memory: Span-ify ResourceLoader (8c04c9b)
  • Misc performance improvements (95c4366)
  • Reduce DependencyPropertyChangedEventArgs allocations (and reduce its size) (0578cbc)
  • Simplify inherited DP check (0549152)
  • TextBlock: Removed LINQ when invalidating inlines (61f1081)

Bug Fixes

  • Add missing support for DoubleCollection and PointCollection to FastConvert (62825fe)
  • Add Windows.UI to known namespaces for intellisense (7211271)
  • Adjust ContentPresenter automatic propagation (27a84ae)
  • Adjust counter tutorial details for MVUX (d36759c)
  • Adjust error message for global.json sdk version change (9ec5b0e)
  • Adjust ScrollContentPresenter measure to prevent infinite available size when necessary (31c697c)
  • Adjust single project library packaging (14f5833)
  • Adjust target/profile de-bouncing for WASDK to iOS/Android (fd1caeb)
  • Adjust telemetry persistence (cd59234)
  • Align close window handling with WinUI (43a414a)
  • android: Avoid multiple calls to InitializationCompleted (6d17235)
  • autosuggestbox: bring selected item from popup into view (5df1e2f)
  • autosuggestbox: resize popup to match the size of the ASB changes (2e44998)
  • Avoid assigning secondary window in Uno Islands Main window ID (1c62c54)
  • Avoid checking for focus on non-live elements (53caef3)
  • Avoid inheriting ContentTemplate for AdaptNative (135d0cc)
  • Avoid raising AppWindow.Closing on programmatic close (74ddd38)
  • Avoid using DependencyObjectStore after it has been disposed (88c15fa)
  • Avoid XBF changes to not break WinAppSDK build (9a2deff)
  • backgroundtransition: animations should ignore background transitions (01b2ca1)
  • backgroundtransition: if the background changes while already in a transition, continue where you left off (57ec013)
  • Bring Point/Size/Rect types closer to WinUI (d677d6a)
  • builds fail with latest MSAL updates (2cf99e0)
  • Capturing the pointer for inputs on WASM prevents scrolling through the contents (5f3fad1)
  • Cast to FrameworkElement/Window when accessing Loading/Activated to avoid issues when shadowing (5648bea)
  • CI nullable validation (8111091)
  • combobox: Fix pointer wheel not working on ComboBox (c1dde43)
  • Consider init-only properties as not settable in bindable type generator (f3c55f8)
  • contentpresenter: inherit Content, ContentTemplate and ContentTemplateSelector when inside a ContentControl template (cb6b7e7)
  • Correct NotImplemented on RenderTargetBitmap ctor (6d868b3)
  • Correctly raise events for Alt key on WPF (3e800a2)
  • Correctly throw for Event.WaitFor timeouts (c5e8cf7)
  • Debounce profiles or frameworks changes for ios/android (c7b7501)
  • Deploy in iPhone configuration (1fad0a5)
  • dev-server: Improve socket performance (723e48b)
  • devServer: Make sure the dev-server is always active and project is rebuilt if port change (0560651)
  • diag: Make sure to not stuck in an invalid state when XamlRoot context is being updated (b647464)
  • diagnostics anchor theme and notif texts (39d744b)
  • Do not clear bindings if value of lower precedence is set (bd65863)
  • Do not remove traits from non-variable fonts (50cfac6)
  • Do not use Calabash in Debug (2c80ae6)
  • Don't consider skia xmlns as conditional if it's referring to SkiaSharp (109b0c2)
  • Don't include bin/obj in non-tfm package step (2c2d9c3)
  • Don't use RemoveControlHost.config in VS (37c6e1b)
  • Don't use target platform version in nuspec (8489552)
  • droid: ensure fileopenpicker ui thread (90907f6)
  • droid: FileOpenPicker sample (3d235c3)
  • droid: RenderTargetBitmap SIGSEGV (745951f)
  • Ensure compatibility with SkiaSharp 3 targeting net7.0 (e76cede)
  • Ensure deferred loaded elements are nulled out when unloaded (92c7b62)
  • Ensure Renderer is initialized when Window HWND is already available (b8b9fd7)
  • Ensure tabs are their own segment (0a8d2ee)
  • Ensure that MauiVersion override is always applied (4a8991c)
  • Ensure to properly log re-connection to dev-server (d53787e)
  • Ensure TypeMappings.CreateInstance is linker friendly (92589a2)
  • Ensure we work with the current DP _entries (8b300b7)
  • Ensure XamlReader HR can run on iOS (b287bb0)
  • Exclude Microsoft.Graph for local iOS build (5c615e1)
  • Fail build on Rider IDE using unsupported targets (680a703)
  • fb: Ensure that FB has a Window to render to (92fb91a)
  • fb: Force an initial refresh (582742a)
  • Fix AutoSuggestBox QueryIcon size (0c14a0f)
  • Fix buffering of file changes detection (b3a3e32)
  • Fix Clip changes during arrange causing layout cycle (8bebfab)
  • Fix dev-server connection wrongly reported as failed (d5cc054)
  • Fix GetValueUnderPrecedence logic when only local value is set (4d7c5c0)
  • Fix incorrect DP inheritance for ScrollViewer properties (7f835d9)
  • Fix inherited attached DP propagation and refactor few RegisterPropertyChangedCallback callsites (addc6b4)
  • Fix InlineCollection measure (f9b0d34)
  • Fix invalid code gen if project has System namespace (e91e391)
  • Fix invalid message in HR indicator (7a1f6eb)
  • Fix ListView dragging not reverting back to NotDragging state (e51b2a1)
  • Fix missing x:Uid generation for the root of XAML (ee33b1e)
  • Fix NRE in FontDetailsCache (80a87a3)
  • Fix parameterless Binding constructor not having correct defaults (88da65d)
  • Fix possible exception when implementing custom version of HR attributes (9b5b00f)
  • Fix shapes arrange when stroke thickness is >= width or height (3bfbd31)
  • Fix text shaping when using font fallback on Skia (0a903d0)
  • Fix Visual transition not applied properly (118dce2)
  • Fix Visual transition not applied properly (7fee96e)
  • Fix wrong MinuteIncrement coercion in TimePicker (07aa8e3)
  • Fix XAML generator not generating events for non-DO top-level elements (d2e5333)
  • Fix Xaml generator regression for x:Load trying to unload elements in different scope (8f1a194)
  • flyout and warning (4f247c5)
  • Focus handling in ScrollViewer (28060fa)
  • force setting DefaultXamlRuntime on all platforms (60284f6)
  • GTK content not resizing correctly (1f475f6)
  • HasThreadAccess should be true on Wasm when threading not supported (f7b0954)
  • hosted native components were attached at an incorrect time (c94b4a7)
  • hr: Fix indicator not going red when in debug on rider (1a82869)
  • hrui: Add notification for XAML reader based HR (2808891)
  • hrui: Fix double flicker + double notif on wasm (3590121)
  • hrui: Fix invalid layout on iOS (4f5af93)
  • hrui: Fix windows build (a29c5ea)
  • hrui: Improve support of Android (5cf9e99)
  • hrui: Make sure to show remote control indicator alone (09fa627)
  • hrui: More fixes (6a4f340)
  • hyperlink: clicking wasn't working on WASM (1c89435)
  • Ignore constructor parameters in UnoInitializeComponentAnalyzer (397f59e)
  • Ignore settings containing a colon but not valid data type (a91a05c)
  • imagebrush: prevent blurring when dpi scaling > 1 (2672b53)
  • Improve font caching logic (9f8c8a4)
  • Improve ide detection (8abfafb)
  • inset calculations in landscape mode when the device has a notch (d39ede6)
  • Introduce layout storage and align DesiredSize with WinUI (c1ea4da)
  • iOS: Don't crash when a native handler fails (461cfc9)
  • iOS: MPE Controls CommandBar style (70d7008)
  • iOS: MPE Controls when nativeframe navigation (06219e9)
  • iOS: null pointer exception when calculating panel offset (eb276ac)
  • listviewbase: calling UpdateLayout during reordering breaks the ListView (a8f41f1)
  • listview: dragging when ItemsSource is a subclass of ObservableCollection (6ec08e3)
  • listview: managed listview doesnt render all items inside viewport (1f60e76)
  • macOS: Let the Metal texture be used for sampling (75b7da3)
  • Make IsTextPredictionEnabled warnings less frequent (5a75588)
  • Make sure to force rebuild if dev-server is being closed (03dd444)
  • Make sure to fully restore connection (and re-discover processors) if connection is lost (07e978b)
  • Make sure to never throw at startup (a7ca123)
  • Make the default app icon scale 1.0 (f8d8c23)
  • Maximizing causes the app to not be responsive (a1065ed)
  • Measure/arrange when Border.Child is set to the same reference (3725aa7)
  • MinWidth and MinHeight should not be applied by default on TextBox (1f20ae9)
  • More gloabls (aa966c3)
  • navview: reflect changes when NavigationViewItem.MenuItems changes its children (52e2ef2)
  • net9: Adjust base version for catalyst (2f212eb)
  • non-FE resources resolution (650130c)
  • OnLaunched should be called synchronously with app initialization (683da6f)
  • Pass Compositor to CompositionStrokeDashArray (fb5eb14)
  • Place Uno.WinUI.XamlHost.props buildTransitive (382e79c)
  • pointers: don't respond to multiple mouse button presses at the same time (e576ca5)
  • pointers: Remove deprecated compilation condition (1f8ace9)
  • pointers: WASM Fix possible unrelted pointer entered (af0b23c)
  • project capabilities should always be present for SingleProject (f988eb0)
  • Properly apply template during measure after Loading (e8bfc59)
  • Properly handle pending image data on Skia (3c01829)
  • Properly resolve interface members in x:Bind (7719216)
  • PublishProfile is not set on WinAppSDK (3e0bd64)
  • rc: Potential race condition when starting the dev server (e4d559b)
  • Refresh ThemeResources on Loading (6d06044)
  • reg: Fix TextBox focus regression (0957e5f)
  • reg: Fix the managed pointer ID handling (675ef81)
  • Remove ApplyDataContext method (deprecated) that's causing invalid data context (47dbddc)
  • Remove incorrect inheritance from XYFocusKeyboardNavigation (e62c2d4)
  • Replace deprecated DOMNodeInserted with MutationObserver for Algolia DocSearch initialization (860bf6b)
  • Revert PropertyChangedParams change (c0781ae)
  • sample: Fix CalendarView_Theming sample on Wasm (701d5a0)
  • samplesapp: Adjust assert relevant only to Skia (ec87541)
  • Scrolling on WebKit randomly produces blank content temporarily (6258be1)
  • ScrollViewer: Fix margin included twice in Extent[Width/Height] when Actual[Width/Height] is zero (615c5aa)
  • selector: removing an item sometimes clear the current selection (18ae40c)
  • Set PixelWidth and PixelHeight after decoding the image (a50cbec)
  • shapes: make Shape.IsViewHit true if either Fill or Stroke are null (aae6955)
  • skia: Fix FontFamily support when ms-appx file contains "#" (c75dc11)
  • skia: ResourceLoader culture resolution (a5d845f)
  • Skip _ForceUnoUIRuntimeWasm when it will result in an error (9d72518)
  • startup issues on WSL (48b9c04)
  • styling (9fdddc4)
  • Support method reference and typeof in UnoNotImplementedAnalyzer (085356a)
  • surfacebrush: check that the final size isn't empty before resizing images. (6e98b7b)
  • textblock: doubletap-to-select should select the entire "chunk" even if wrapped (6e6c0dd)
  • Throw exception on invalid color instead of falling back to Red (4cae3c0)
  • title and description spacing (9cd45f7)
  • Tracking assembly resolve location by load context (76db03f)
  • treeview: an ItemTemplateSelector with DataTemplates that don't have a TreeViewItem as the root failed to work (db324fa)
  • treeview: fix dragging in some cases causing an NRE (dc0f67d)
  • typo in implicit packages remove item (f31c19a)
  • Undo ContentTemplateSelector workarounds in Fluent styles (d4de0f9)
  • Undo custom Margin on Slider Thumb (9d10428)
  • Unload Image data when empty (29fc864)
  • Update ProgressRing styles to match WinUI (24a1818)
  • Update UniversalImageLoader to respect Exif on Android (28976d2)
  • Updating SkiaCompositionSurface's image should invalidate render (b2cf91a)
  • Use FallbackColor for unsupported brushes (59601ff)
  • Use ios17.5 and maccatalyst17.5 for SamplesApp (4bf472f)
  • Use LogicalParentOverride for PopupPanel everywhere (d3246b0)
  • use the correct path for a scale icon (1a6701b)
  • Use XAML hot reload for android (b6ce7fd)
  • vsix: Don't close opened files when reloading the project (cb858c6)
  • vsix: Import HierarchyId for proper well known values alignment (1f58afc)
  • Warn when net8.0 is placed first in TFMs (bbcbd9d)
  • wasm: Fix TextBox default alignment (a5eae59)
  • wasm: lottie animation event leak (c10c988)
  • workaround for AcrylicBrush pink background on macOS/arm64 (739370b)
  • Workaround MonochromaticOverlayPresenter in Time and DatePicker (aba3a36)
  • Workaround XamlRoot being null in OnApplyTemplate on Android (4bd0702)
  • wpf: going fullscreen then exiting doesn't go back to the previous window state (e771c26)
  • wpf: not activating the window shouldn't prevent the application from loading (b34e485)
  • wpf: queue pointer Exited when it happens during ReleaseMouseCapture (9a60937)
  • WSL not starting up (2ed088a)
  • x11: Fix issue where setting background color in OnLaunched is ineffective on Skia.X11 platform. (8862146)
  • xamlgen: Fix numeric FontWeight not working (001cf0c)