github unoplatform/uno 6.5.64

latest release: 6.5.153
9 hours ago

What a release! We are staying on the forefront of AI innovation while strengthening the core cross-platform .NET open-source ecosystem. The February release delivers something for everyone.

Studio users get tighter AI integration and Hot Design UX and workflow enhancements.

All users benefit from long-requested Unicode text support, further WebView2 improvements, drag-and-drop for browser targets, and a plethora of performance and stability fixes.

The numbers speak for themselves: 450+ community and customer issues resolved, delivering a faster, more stable Uno Platform experience end-to-end.

Note

Read more on our blog post!


Here's the full change log:

Features

  • Add CLAUDE.md (28ab1a3)
  • Add basic regular snap points support for ItemsPresenter (3df6143)
  • Add BindableAttribute to Uno.Foundation types for NAOT trimmer (12d31b5)
  • Add DragUI support for external drag operations in Win32DragDropExtension (1d79256)
  • Add DragUI support for external drag operations in WpfDragDropExtension (7e1dcee)
  • Add file icon extraction for non-image files in Win32 drag-and-drop (b6a8df0)
  • Add GeneratedCode and EditorBrowsable attributes to GlobalStaticResources class (8c8a73c)
  • Add HTML clipboard sample to ClipboardTests (0aa213b)
  • Add HTML format support for Clipboard on WebAssembly (2151f2b)
  • Add JsonToObject markup extension (400572f)
  • Add loopback address support for WASM and desktop platforms (6839b73)
  • Add support for DispatchNewWindowRequested Wasm (fdfcf8d)
  • Add support for MCP roots (7905b01)
  • Add support for NewWindowRequestedCallback on macOS (0a31e77)
  • Add support for tools caching (4416c5f)
  • Add support for WrapMode in PipsPager (64774da)
  • Add table of contents generation to llms files (adeba90)
  • Add validation for CornerRadius, GridLength, and numeric types in XAML generator (70e2cef)
  • Add WebView2 window close test page with keyboard shortcut functionality (53d8694)
  • Adjust for multi-screen support (b46e2e4)
  • Adjust runtime tests layout (4a635d4)
  • Cache last HTML content on macOS (495c3a6)
  • Correctly update drag regions on WindowChrome and layout changes (b568f24)
  • Dynamically retrieve generator version from assembly (2b888b7)
  • Enable partial code gen with invalid XAML (5d861f9)
  • Enhance parser en code gen to pass over invalid syntax in Bindings (e4d7f8e)
  • Enter filters including test class name (7f5a8a8)
  • GBM + libDRM for linux framebuffer (7ae81c9)
  • hr: Add ability to add/edit/delete multiple files at once (9df4175)
  • hr: Add support for add cource code through HR (b7b5661)
  • hr: Add support for multi TFM project, making support for add availble for mobile targets (fd72c60)
  • hr: Make support of HRinfo check more reliable (1279f65)
  • hr: Make sure we never init 2 HR workspace (173036f)
  • Implement WebView2 NewWindowRequested event for all platforms (c6f6ff8)
  • Implement Option 2 - Remove matrix strategy and use inputs.branch with master fallback (c850497)
  • Implement Package.Current.Id.Version for Skia and WASM platforms (aa8a7e1)
  • Improve code generation erro reporting (32223de)
  • Improve runtime tests output (28e09b7)
  • Improve XAML gen error handling by continuing if object properties gen fails (d7240fa)
  • mcp: Add tools list priming and solution folder (4d34e40)
  • Output class/method names to nunit output document (bdbf21a)
  • Remove legacy #error in XAML code generation (b502c84), closes #error
  • Render file icon from shell information (f812b33)
  • Reset AppWindowTitleBar to default (ad521ed)
  • Restore static method when hot reload disabled (7fef569)
  • Separate Uno-specifics, add missing property notifications (5b4d35b)
  • Support predictive back navigation in Android 15+ (8d66386)
  • Track Inconclusive runtime tests (bbc6eb3)
  • Use assembly version for PackageId.Version (e57af79)
  • Use version in GeneratedCode attribute (af89841)
  • wasmskia: Drag & drop support (149ab96)
  • wasm: software rendering fallback (6e9fbca)
  • win32: add support IDataObjectAsyncCapability Drag&Drop operations (43f8530)
  • WinUI porting agent (896cee4)
  • WinUI StackPanel (06b261d)
  • X11: EGL+GLES support (57ff072)

Performance Improvements

  • Avoid calculating the matrix multiple times (bd50f00)
  • avoid creating unnecessary FrameworkTemplatePool entry (f7538bc)
  • Cache logger instance and align exception handling (7012547)
  • on macOS and Windows, load CLDR data from a shared icudt.dat instead of dynamically linking the data (82f28cc)
  • Optimize loopback address duplicate check with HashSet (df01b05)

Bug Fixes

  • AndroidX version overrides (68650c7)
  • IMediaPlayerExtension should remain public (478e34e)
  • SystemFocusVisual render transform (e0ee4ac)
  • Add better error handling for custom markup extensions (edbfdd3)
  • Add InitializeWithWindow to MessageDialog samples (2cb10bd)
  • Add missing callback (f527697)
  • Add missing sass:color import for lighten() function (ea94b68)
  • Add null checks for empty version arrays and fix race condition in error handling (bc9bf87)
  • Add Thickness validation to generate UXAML0001 for invalid margin values (4c7c4df)
  • Address accessibility and scroll handler review comments (f8b9a3f)
  • Address code review comments (dd7b60b)
  • Address code review feedback - add HTML encoding and truncation (d1085ad)
  • Address code review feedback - fix resource leaks, null checks, and improve documentation (14c657d)
  • Address markdown linter issues with list formatting (17ccd41)
  • Address open review comments - thread safety and clarifications (238bff3)
  • Address PR review feedback - semicolon, range operator, and HTML behavior (b600777)
  • Address review comments - XSS, memory leak, performance, aria-label (c9dc705)
  • Address XSS vulnerability in edit link icon (febaf2f)
  • Adjust When_Visibility_Changes to run only for types with a parameterless constructor (180aea1)
  • Adjust compat attributes version inclusion (2aaee32)
  • Adjust DllImportResolver for net10 compatibility (23021d5)
  • Adjust MCP start and testing (0434330)
  • Adjust nuget override location (6464f02)
  • Adjust WebSocket error logging (258ee99)
  • adjusted highlight in box (09f4145)
  • Allow extending into titlebar on startup (cf603bf)
  • Allow Key property in XAML for KeyboardAccelerator (3ed77c6)
  • Allow snap layouts menu on maximize button (9f31bd8)
  • Android: application crash when activated from deep link skia (5aca07d)
  • Android: deep link for skia when app is running (6fc74d4)
  • Apply code review feedback - fix error messages and null handling (2a47a4b)
  • Apply extension on show (f9727e6)
  • Apply same race condition fix to MSAL and MediaPlayer WASM projects (c6f9ae5)
  • Apply suggestion from @Copilot (5420c47)
  • Apply suggestion from @Copilot (65c9f42)
  • Avoid redundant Extension suffix lookup (43b31ed)
  • build (9701fc7)
  • CalendarView: header value format when Spanish culture (1470f85)
  • calendarview: snapping back mid-scroll (b2b80c0)
  • CalendarView: wrong value when Spanish culture (ee9562c)
  • Catch WebSocketException to prevent invalid error logs on disconnect (b8c9958)
  • change MP volume range to 0.0-1.0 and propagate volume change from libvlc (b7bf7d7)
  • Clarify comment about cachedDataDisplayed flag (c20bc08)
  • Combine IOException and WebSocketException handlers (d62f302)
  • Complete exception handling and optimize MemoryStream allocation (122cc0d)
  • ContentPresenter: native element not moving with scrolling (c35f2be)
  • Correct comment syntax in PipsPagerPage (309efde)
  • Correct conditional check in OnButtonEnabledChanged method (69b656d)
  • Correct output file locations to articles/llms folder (8d57c6e)
  • Correctly extract display point (8d76310)
  • create issue in appropriate repo (ce0023c)
  • Define SC_MASK constant and optimize parentHwnd variable reuse (38953ff)
  • docs: Fix Markdown validation (f223ca7)
  • docs: Remove duplicate uno-check line (e832779)
  • docs: use aka link for upgrade guide instead of hardcoded path (e33295a)
  • droid: statusbar inset after deeplinking (6ebbb11)
  • Enable the back button predictive behavior on Android 16+ (7511454)
  • Enable value type support in metadata provider and add runtime tests (9e1b33c)
  • Ensure consistent case comparison for loopback address (249d746)
  • Ensure finite values in native element measurement for Win32 (2273b29)
  • Ensure MessageDialog tests are associated with the correct window (2dfbdc9)
  • Ensure top edge resizability (22b2567)
  • External image sizing and anchoring (b5e891f)
  • first frame white flash (be54758)
  • Fix binlogs not generated on demand by HR on unix systems (713127e)
  • Fix cannot HR app with proejct depedency with code and rider (dec7461)
  • Fix markdown formatting in documentation (33f4ca8)
  • Fix missing owner on XAML objects (ea29871)
  • Fix possible ENC0004 with HR (86741af)
  • Fix possible invalid encoding when HR with VS (e806856)
  • Forward Alt+F4 and WM_CLOSE from WebView2 to parent window (bebd503)
  • GlobalStaticResources: add an exclude xml doc tag to the generated type definition (05f8d87)
  • Handle collection properties in custom markup extensions (683aeac)
  • Handle null version values and clarify error handling logic (7b9849a)
  • Handle value types (structs) in BindableTypeProviders generator (d085b67)
  • hid box when overlaps doc content (6a95b0e)
  • hr: Avoid double update when editing multiple files as once (c4f64b7)
  • hr: Ensure proper disposale of HR workspaces (4e45203)
  • hr: Fix HR compiling all target (69a4083)
  • hr: Fix HR messages lost by JsonRPC due to buffer limitations (fcc8f26)
  • hr: Fix HR not working on iOS (2c2f201)
  • hr: Fix possible concurrency issue in HR driving to miss / fail some updates (47c4039)
  • hr: Make sure concurrent HR workspace (multi connection) does not fall in update loop (e096766)
  • hr: Make sure to not send HR message to debuuger when not attached! (e67dcb1)
  • Improve aria-label and add error handling to scroll handler (8799ba8)
  • Improve mouse button state tracking and reset logic on macOS (ca5c9a5)
  • Incorrect TabView listview event (7d0fc61)
  • Increase WebSocketException log level to Information (a5c7d27)
  • inherited dc lifecycle (389abe5)
  • Initialize extended titlebar height on startup (f4df70c)
  • Layout, naming (e2cdee1)
  • link alignments (4cc1c56)
  • lottie: use SKCanvasElement's size parameter to determine drawing bounds on Skia (1be6f17)
  • macOS: only display windows when Activate is called (abb4c65)
  • macos: prevent window contents from being stretched when resizing the window (21309c5)
  • Make sure to generate HRInfo only for head project + make sure to detect changes! (5e81e6a)
  • Make sure to not show temp files in HRI when doing HR with agent (9af1e17)
  • Make sure to not wait response from IDE when no IDEChannel (6e128ce)
  • mcp: Adjust for no tools_update notification on claude/codex (6480e23)
  • mcp: Adjust roots support for windows paths (716cf4f)
  • mcp: Ensure devserver is started on calling uno_app_set_roots (1127fa6)
  • mcp: Use solution dir parameter (bda8920)
  • Measurement logic for native elements on macOS (6760042)
  • mem-leak in FrameworkTemplate (31c8a31)
  • moved badge to breadcrumb (9df12f4)
  • Order _openPopups with most recently opened popup at head (f73c7e4)
  • Override TypeScript outFile to avoid TSC race condition (795d3af)
  • Pass location.search to parseQueryString for deep linking tabs (fea065a)
  • Potential race conditions (7fbaed7)
  • Prevent empty PR creation in docs-updater workflow (42a4e15)
  • Prevent NaN widths in TabView during layout timing differences (960c70f)
  • Prevent roslyn bug by always generating change content (19951ac)
  • Prevent XSS vulnerabilities by using DOM manipulation instead of innerHTML (1266080)
  • progressring: ring sizing should respect the ActualSize and Stretch (aa81580)
  • Properly parse and render nested items in TOC (2bb5a75)
  • Properly set AppWindow sizes on other targets (d504487)
  • pt: Fix possible leak on iOS when removing a page from tree while finger down (dac40ce)
  • refreshcontainer: resetting content margin (f22cdc2)
  • Regenerate test files (30beb3b)
  • removed HD folder (cf8db37)
  • removed HD folder (298042d)
  • rendering: avoid limiting clip bounds to 999999 (7b8dd47)
  • Replace closeModal() call with direct remove() to avoid ReferenceError (7660f09)
  • Replace GetRelativePath with PowerShell 5.1 compatible implementation (3e9173e)
  • Replace magic numbers with named constants for WM_SYSCOMMAND and SC_CLOSE (ccf457b)
  • Replace remaining template literals with string concatenation (fc002b8)
  • Replace template literal in badge title with string concatenation (1c14033)
  • Replace template literals with string concatenation for command strings (789f1c9)
  • Replace throw with AddError for invalid values to allow valid C# generation (cdec53b)
  • Resolve markdown linting errors in README.md (535a388)
  • Resolve race condition in Lottie WASM TypeScript compilation (6f60071)
  • Resolve xref UIDs to actual markdown file URLs (d56094c)
  • Retrieve drag data directly from IDataObject in Win32 implementation (c4699b5)
  • Revert Int32 validation, add validation to SplitAndJoin for Vector2, Vector3, Point, Size, Matrix types (3c8b545)
  • Review from copilot (3e9b164)
  • Separate Space key handling to keyup to prevent page scrolling (956fed4)
  • Simplify sample (023f0f0)
  • skia: closed flyout still linger on screen (d5396cc)
  • Support custom markup extensions in XamlReader.Load (72910a2)
  • Sync backing field (f7d167a)
  • textblock: selection should only show when focused (d098f15)
  • textbox: prevent keys from dropping when input is too quick (5008219)
  • textbox: propagate TextAlignment to TextBlock correctly (752bc7c)
  • text: check for empty text in UnicodeText.GetLineAt (3c13220)
  • text: erroneous logic when a text run ending in CRLF is moved to the next line due to line wrapping (b675e2f)
  • text: fix GroupByInline when tab is at the end of the run (406d8ab)
  • text: search for versioned libICU shared libs on Linux instead of only the versionless symlink (efa273e)
  • text: selection when the content is a single letter (8edf4d4)
  • TimePicker: numbers disappear while fast scrolling (8ad002b)
  • TimePicker: showing 0 hours (7e7c8b9)
  • TimePicker: value when 12 hours (e7f24e1)
  • tooltip: dismiss tooltip when pointer interaction is "done" (c977505)
  • Transform TextBox touch-based carets correctly (4e16783)
  • trimer: Fix IL2026 JSON warnings in src/Uno.UI (d7c4fa3)
  • Update build script to use new parameter names (8c4501a)
  • Update comment to reference issue by title instead of placeholder URL (13c5208)
  • Update doc/templates/uno/component/affix.js (4971474)
  • Update doc/templates/uno/component/affix.js (5c6b41f)
  • Update doc/templates/uno/component/affix.js (fc62228)
  • Update doc/templates/uno/component/affix.js (a0b56bc)
  • Update doc/templates/uno/component/affix.js (aecabc8)
  • Update doc/templates/uno/component/affix.js (61c41ac)
  • Update doc/templates/uno/component/affix.js (324ac55)
  • Update doc/templates/uno/layout/_master.tmpl (dd2aacc)
  • Update doc/templates/uno/layout/_master.tmpl (3d2e6f7)
  • Update doc/templates/uno/main.js (e77c0c2)
  • Update doc/templates/uno/main.js (0c3c718)
  • Update doc/templates/uno/main.js (900117c)
  • Update doc/templates/uno/main.js (97e892e)
  • Update doc/templates/uno/main.js (c4583de)
  • Update doc/templates/uno/main.js (269a610)
  • Update doc/templates/uno/main.js (104bd4b)
  • Update doc/templates/uno/main.js (dff8b8c)
  • Update doc/templates/uno/styles/main.js (eb8db7f)
  • Update doc/templates/uno/styles/main.js (ba02108)
  • Update targetSdkVersion to 36 in native Android manifest for consistency (052f5e3)
  • Use bulleted lists in TOC and fix file path URLs (a7ee92a)
  • Use DependsOnTargets and _UnoEmbeddedResourcesInjection to ensure TypeScript files exist before embedding (09dddae)
  • Use information log level for devserver CLI commands (609669b)
  • Use null instead of empty strings for unused parameters (c988cd3)
  • Use ParentHwnd property to get parent window handle (96b1363)
  • Use the right Arrange/Measure overload for native targets (6369615)
  • Use xref anchor links in llms-full.txt TOC instead of raw GitHub URLs (6d3d6f0)
  • using standard badge appearance (e0c28ee)
  • wasm: Add ControlLeft and ControlRight mappings to BrowserVirtualKeyHelper (f276f86)
  • wasm: avoid exception in the first render call (e736efb)
  • wasm: avoid ICU-loading crash on NativeAOT (78b503d)
  • wasm: fix crashing when loading images (36a7d36)
  • wasm: out of memory access when calling ubrk_open (68a7652)
  • webview: prevent webview from being reset when detached then reattached (dbeb4c2)
  • win32: generate an initial frame with the correct size when starting up as maximized (081be31)
  • xamlreader: Accept valid toplevel properties and positional binding parameters (03229ce)

Reverts

  • Revert "test: fix japanese CalendarView tests" (b9970c5)
  • Revert "chore: render loop adjustments" (2543b03)
  • Revert "chore: remove initial InvalidateRender call" (10d6a7a)
  • docs: undo PRs #21808 and #21800 (UDEI screenshots + markdown fixes) (a1f877b)

Don't miss a new uno release

NewReleases is sending notifications on new releases.