ShadUI 0.2.4 updates the library to Avalonia 12.1.0 and improves control behavior, lifecycle cleanup, and animation reliability across the library and demo app.
Important
.NET 8 support has been removed. Applications consuming this release must target .NET 9 or later. Projects that still require .NET 8 should remain on ShadUI 0.2.3 until they can upgrade.
Requirements
- Supported target frameworks:
net9.0andnet10.0 - Avalonia updated to
12.1.0
Control fixes and improvements
- Sidebar
- Reliably remembers and restores its expanded width across collapse/expand cycles.
- Handles rapid state changes, template reapplication, and visual-tree attachment without stale animations or one-frame width jumps.
- Cancels superseded transitions cleanly and preserves the correct opacity when
MinWidthis zero.
- NumericUpDown
- Restores increment/decrement using the Up and Down arrow keys.
- Restores mouse-wheel spinning while the control has keyboard focus.
- Prevents the parent smooth-scrolling container from intercepting wheel input intended for the spinner.
- TabControl
- Uses a constrained grid layout so selected content can contain an internal
ScrollViewercorrectly. - Restores the animated selection indicator by applying the tab background through the template.
- Adds regression coverage for the complete tab-header hit target.
- Uses a constrained grid layout so selected content can contain an internal
- Window
- Adds
ShowAvaloniaFullscreenPopover, defaulting tofalse, to suppress Avalonia's built-in fullscreen exit affordance when ShadUI chrome is used. Set it totrueto opt back in. - Preserves the correct Windows maximized inset without overriding the normal root margin.
- Adds
- Menu
- Corrects popup ancestor bindings for menu and submenu overlay input pass-through behavior.
- ColorPicker
- Keeps the color swatch and hexadecimal preview text synchronized when
Colorchanges, including when the picker is hosted inside a dialog.
- Keeps the color swatch and hexadecimal preview text synchronized when
- Toast
- Fixes bulk dismissal so every queued toast is removed correctly.
- Restores existing queued toasts when a host attaches or changes managers.
Performance and reliability
- Demo pages are now created lazily on first navigation instead of all being instantiated at startup.
- Page, dashboard, code-snippet, and navigation resources are released cleanly when the demo closes.
- Dialog and toast hosts now subscribe only while attached to the visual tree and detach manager/template handlers during cleanup, reducing duplicate callbacks and retained controls.
- Attached-property behaviors, scroll handlers, sidebar items, dialogs, and toasts now clean up event subscriptions more consistently.
- Sidebar, dialog, and toast transitions cancel superseded work safely; background animation failures are observed instead of becoming unhandled task exceptions.
Tests
Added regression coverage for:
- Sidebar width restoration
- NumericUpDown keyboard and wheel spinning
- ColorPicker previews inside dialogs
- Tab header hit targets
- Dialog and toast manager subscription lifecycles
Full Changelog: 0.2.3...0.2.4