Skip to content

Releases

v4.4.0

Choose a tag to compare

@ATCBot ATCBot released this 05 Nov 00:05

4.4.0 (2026-11-04)

New features

  • components: add DialogService.ShowFontPicker (a727e3c)
  • components: wrap long dialog text and size dialogs to their content (8310357)
  • dialogs: add ExceptionDialog and ExceptionReport for unhandled exceptions (5b34e69)
  • dialogs: share one button bar and add Yes/No/Cancel, default button, details, don't ask again and copy (08b4424)
  • sample: add an Exception dialog sample (a77b1f1)

Bug fixes

  • components: give each dialog its own copy of the settings icon (f8454f8)
  • components: size the input form dialog height to its content (f705f1a)
  • controls: show SplitButton and Timeline text in the theme color (68554f1)
  • dialogs: keep grown dialogs inside the work area (7cb0dcc)
  • forms: own, centre and fit the colour and font picker dialogs (b5284c6)
  • forms: read dialog button brushes from the current theme (d4622c1)
  • forms: wrap long form labels and validation texts; size the input dialog to its content (94effa7)

v4.3.0

Choose a tag to compare

@ATCBot ATCBot released this 01 Nov 00:33
fe7a8bf

4.3.0 (2026-11-01)

New features

  • components: add check-box style, one-way mode, locked items, limit, grouping and virtualization to DualListSelector (dac0446)
  • components: add SelectedKeys, SelectedKeysChanged and MaxSelectionCount to DualListSelector (c490cde)
  • controls: add a single-select mode to CascaderComboBox (331bc9f)
  • controls: add CardSelector card/tile picker with single, single-or-none and multiple selection (cad1e8e)
  • controls: add CascaderComboBox multi-select drop-down with one column per level (ee1ea26)
  • controls: add CheckListBox with select all, filter, groups and item styles (b421dc0)
  • controls: add CheckTreeView with tri-state check engine, check strategies, filter and lazy loading (8a723a2)
  • controls: add ChipGroup with selection modes, All chip, counts and a selection limit (7742ade)
  • controls: add chips and count display modes, deferred commit and selection-limit tests to MultiSelectComboBox (3e15355)
  • controls: add DockPanelPro LayoutChanged and make AutoSaveLayout work (d01a330)
  • controls: add Excel-style column filters, search and column chooser to DataGrid (4555f25)
  • controls: add MultiColumnComboBox multi-select drop-down with a sortable check-box grid (c087da9)
  • controls: add multiple and single-or-none selection, vertical layout, separate pills, icon-only and sizes to Segmented (b6ce805)
  • controls: add MultiSelectComboBox (4ecf1bf)
  • controls: add tabbed pane groups and floating tool windows to DockPanelPro (f6fd5f8)
  • controls: add TokenBox with suggestions, created values, paste splitting and async lookup (1fedcd4)
  • controls: add TreeSelectComboBox with text, chips and count summaries (80408a2)
  • controls: dock a floating DockPanelPro pane by dragging it onto a guide (82e263e)
  • controls: open a Popover from the keyboard and on focus, and close it when unloaded (4feea85)
  • controls: persist tab groups and floating panes in the DockPanelPro layout (d2ed464)
  • controls: resize DockPanelPro splitters with the keyboard (c89f9a0)
  • controls: save and restore DataGrid column layout and filters (39b68bd)
  • core: drag the whole selection and auto-scroll drop targets at their edges (d3a200d)
  • core: report SvgImage load failures through an ImageFailed event instead of throwing (aefdb7b)
  • forms: add LabelCascaderComboBox with mandatory and limit validation (a568746)
  • forms: add LabelCheckListBox (eae6ccf)
  • forms: add LabelChipGroup (523961a)
  • forms: add LabelMultiColumnComboBox with mandatory and limit validation (c20ae3e)
  • forms: add LabelMultiSelectComboBox (18a4711)
  • forms: add LabelTokenBox (3950b26)
  • forms: add LabelTreeSelectComboBox (52cc5d8)
  • forms: generate multi-select fields for [Flags] enum and collection properties (d50a627)
  • forms: pass display mode, chips and commit mode through LabelMultiSelectComboBox and validate the selection limit (416d450)
  • network: send VNC keys from the typed character for any keyboard layout (4fa6c0b)
  • sample: add DataGridFilter sample with 5,000 and 100,000 row grids (426fc26)

Bug fixes

  • animation: complete the *Async helpers when superseded, and add cancellation (4cb833c)
  • behaviors: scroll the auto-scroll list view once per frame (ee8ae2a)
  • components: bound the TerminalViewer and ApplicationMonitor backlog and clear it safely (02d7ba6)
  • components: close InfoDialogBox on Escape and own DialogService dialogs by the active window (f3f2cdf)
  • components: drop a busy session's Cancel button when it ends while the region stays busy (dca44ef)
  • components: give DualListSelector its own collection views (61e135b)
  • components: keep ApplicationMonitor view model settings and scroll only its own view (7f05919)
  • components: keep JsonViewer value text from getting a negative width (2ece308)
  • components: lay out a previewed print job again for the printer chosen after the preview (4b0635c)
  • components: let BusyIndicatorService.RunAsync rethrow cancellations it did not cause (391136e)
  • components: let DualListSelector release its collection views when unloaded (2180dfa)
  • components: make ToastNotification.CloseOnClick close the toast and pause expiry on hover (57c2334)
  • components: raise Flyout Closing once on light dismiss and keep a cancelled close from reopening (58ddd77)
  • components: stop assuming a main window when printing and opening dialogs (c73ccd6)
  • components: stop DualListSelector rows from logging binding errors (54e4601)
  • components: track service-added flyouts in FlyoutHost and release cancellation registrations (f790865)
  • components: update the JsonViewer key colour on a theme change (2077a18)
  • controls: align Escape and the pop-up width across the multi-select drop-downs (b8f4dfa)
  • controls: clean the MultiSelectComboBox selection of an open deferred draft after the bindings settle (2b745a2)
  • controls: clip the ZoomBox drag-zoom rectangle to the content, not the overlay (7634b97)
  • controls: close the MultiSelectComboBox pop-up on outside clicks after ticking ...
Read more

v4.2.1

Choose a tag to compare

@ATCBot ATCBot released this 17 Oct 23:13

4.2.1 (2026-10-17)

Bug fixes

  • components: close only the topmost flyout on Escape (fe49990)
  • core: prune collected targets from managed markup extensions (9dafdc9)
  • forms: keep invalid picker text and report full date-time on lost focus (2b0469d)
  • forms: treat the enum picker placeholder as missing when mandatory (9de5610)
  • hardware: apply polling service results on the UI thread (43aee4c)
  • hardware: stop live previews without blocking in Dispose (c19e9b8)
  • layouts: re-apply GridEx and PanelHelper spacing without overwriting user margins (0dfda3a)
  • theming: bind the validation error text to the current error (078f733)

v4.2.0

Choose a tag to compare

@ATCBot ATCBot released this 16 Oct 22:35

4.2.0 (2026-10-16)

New features

  • sample: make the readme markdown readable in the dark theme (dce6391)

Bug fixes

  • components: correct a hang, a drop index, highlight, trim and dispose defects (670850a)
  • components: keep the DualListSelector footer counts in sync with the collections (b297e63)
  • controls: arrange StaggeredPanel in the measured column count and clamp panel sizes (06c0583)
  • controls: attach the NumericBox text handlers only once (3a37123)
  • controls: clip AutoGrid spans at the last row and column (3cabedf)
  • controls: correct ZoomBox content changes, fit animation and MakeVisible (0e81540)
  • controls: hide ToggleSwitch header and content presenters for empty strings (f58f15a)
  • controls: keep a custom BusyOverlay text when the UI culture changes (f5fd40a)
  • controls: keep ZoomGridOverlay major lines on fixed content positions (d0d7401)
  • controls: make GridLines safe for non-positive steps and without a main window (b561c69)
  • controls: make the Row panel measure robust (eb1b43b)
  • controls: realize the contiguous index range in VirtualizingStaggeredPanel (1d7ae86)
  • controls: restore only docking dimensions in DockPanelPro.LoadLayout (95df764)
  • controls: stop ZoomMiniMap stacking size handlers and throwing on clicks (549ab13)
  • core: add a Color overload of HsvColorUtil.ConvertRgbToHsv (87d940c)
  • core: compose SVG transform lists in SVG order (9e61b4d)
  • core: deny unsafe drops and reorder observable collections with Move (52486a0)
  • core: detect double-clicks per button from ClickCount (7f8bea1)
  • core: do not rebuild the previous UI culture from its LCID (8a512e6)
  • core: forget the pending drag start when a drag handler cancels (ab3376c)
  • core: give the last panel child the LastItemMargin instead of the item margin (ebc6351)
  • core: hook up TextBoxHelper monitoring when the element is loaded (3fda461)
  • core: include the orientation in PanelUvSize equality (bc9f113)
  • core: iterate a snapshot of the active markup extensions when updating targets (e2f6067)
  • core: keep a pending hotkey chord when a bare modifier key is pressed (fc22f95)
  • core: keep async navigation on the calling thread (f602621)
  • core: keep the alpha channel when inverting bitmap colors (0b21501)
  • core: keep the BoundPassword binding alive and always hook PasswordChanged (fb9f4e7)
  • core: let a ResxExtension.Resource handler supply the resource value (7f3954a)
  • core: make EnumToArrayBindingSource work for nullable enum types (751fcb6)
  • core: marshal clipboard calls to the dispatcher and record history once (8a570bb)
  • core: mirror TextBlockHelper.Inlines changes by index and detach old collections (877dea7)
  • core: monitor text changes on TextBox, RichTextBox and ComboBox (6938194)
  • core: parse GridEx row and column lengths independent of the culture (91104e4)
  • core: parse the BoolToWidth converter parameter independently of the culture (9d1b5d7)
  • core: push the default ToColor to the fade shader (355f7a2)
  • core: raise one indexed collection notification per change in the observable collections (f5b953e)
  • core: render JSON nulls, return plain text and freeze the JSON brushes (9b27cb6)
  • core: return null from ColorHelper.GetColorFromString for unknown color names (dfab0a6)
  • core: return the converted entries for Guid-keyed observable dictionaries (41e1aaf)
  • core: round instead of truncate when converting HSV to RGB (52498e2)
  • core: stop AnimateAttach from leaking elements and stacking handlers (3c26c1b)
  • core: update markup extension targets on the thread that owns them (43bbedf)
  • dialogs: own the dialog boxes by the window that opens them (abfe6e2)
  • fonticons: accept the converter parameter as a string for brush and em-size (9c4f26d)
  • forms: accept tcp and udp endpoints and require a mandatory endpoint host (852eac2)
  • forms: add IsValid to the date and time pickers (e1e5bcc)
  • forms: convert decimal control data values instead of unboxing them as int (c247d02)
  • forms: do not raise LostFocusValid from the picker IsValid calls (7fa9788)
  • forms: format the selected date with the picker culture (bddd476)
  • forms: make IsValid on the decimal and currency boxes validate the current value (5115d01)
  • forms: raise IsOnChanged with the old and new values in the right order (9e0f885)
  • forms: read Range attribute bounds safely and keep the pixel size box limits (b92be6b)
  • forms: report the edited text in the LabelTextBox lost-focus events (38d52b0)
  • forms: skip collections and cap nesting depth in ModelToLabelControlExtractor (be6c432)
  • hardware: apply RefreshAsync results on the UI thread (477b7a9)
  • hardware: raise DeviceLost and rebind on in-place state changes (b86ff95)
  • hardware: report the real ...
Read more

v4.1.0

Choose a tag to compare

@ATCBot ATCBot released this 09 Oct 10:43

4.1.0 (2026-10-09)

New features

  • components: add TrayIcon notification area icon (fb1f7a9)
  • components: address terminal output to a specific TerminalViewer (ca2670f)
  • components: render the xterm 256-colour palette in TerminalViewer (d058b80)
  • controls: add NavigationView shell bound to INavigationService (78549fa)
  • forms: forward UpdateUiCultureOnChangeEvent from LabelCountrySelector (547188b)
  • hardware: share picker behaviour and expose service tuning (5187d15)
  • hotkeys: report global hotkeys that Windows refuses to register (8cdd071)
  • improve NetworkValidationRule and EndpointBox to handle hostname (1336d80)
  • sample: add a right-to-left switch to the sample viewer (a9a11a8)
  • theming: add Windows 11 backdrops to NiceWindow and keep it intact under ThemeMode (a3260c5)
  • theming: follow the Windows app mode and accent color (f04c488)
  • theming: follow Windows high contrast (2c8e03b)
  • zoom: make ZoomGridOverlay styling bindable and release it on Detach (05be68b)

Bug fixes

  • components: animate a flyout the first time it opens (7889a86)
  • components: close the oldest toasts when MaxItems is exceeded (6bea803)
  • components: keep JSON and terminal content left-to-right in right-to-left layouts (9845157)
  • components: let clicks pass through an empty FlyoutHost (38bf8d3)
  • components: open print preview and desktop toasts in the app's flow direction (5e65216)
  • components: stop CloseAllFlyouts hanging during close animations (0560b7f)
  • components: strip private-mode ANSI sequences and truncated colours (ae6277f)
  • controls: accept lower-case percent and hex letters in NumericBox (099a07d)
  • controls: align UniformSpacingPanel measure with arrange (ba63f0f)
  • controls: apply ZoomMiniMap viewport border properties (ac90a34)
  • controls: change the UI culture from CountrySelector when enabled (b78526c)
  • controls: keep country and language flags unmirrored in right-to-left (2717633)
  • controls: keep ZoomBox content unmirrored when it opens in right-to-left (0d5b05a)
  • controls: keep ZoomRuler labels readable in right-to-left (6bdd4eb)
  • controls: let FilePicker and DirectoryPicker inherit the DataContext (64fac3c)
  • controls: measure VirtualizingStaggeredPanel without infinite sizes (7e21264)
  • controls: mirror the ZoomMiniMap thumbnail for right-to-left content (b47b2d1)
  • controls: raise the number box LostFocus events once per edit (fd3820d)
  • controls: re-arrange ReversibleStackPanel when ReverseOrder changes (27a81b7)
  • controls: share column layout between StaggeredPanel measure and arrange (8a682ba)
  • controls: stop theme-change subscriptions from leaking controls (a3b357a)
  • controls: swap arrow keys in right-to-left layouts (1ccbf89)
  • dialogs: correct the DialogBoxSettings placeholder texts and docs (5b95315)
  • dialogs: follow the owning window's flow direction (e326e4f)
  • dialogs: make DialogService cancellation close the open dialog (7c04c15)
  • forms: declare the combo box selector events on ILabelComboBoxBase (8ba9f64)
  • forms: make LabelSlider.IsValid validate the current value (b5ac102)
  • forms: raise EndpointBox LostFocus events when an editor loses focus (aec88c5)
  • forms: raise TextChanged from LabelDatePicker and LabelTimePicker (1c2163a)
  • forms: report the previous color from ColorPicker.ColorChanged (996ad7a)
  • hardware: keep unplugged devices disconnected after the just-connected delay (71fca55)
  • hardware: refresh display and network adapter details while connected (4de7a43)
  • hardware: refresh polled process, window, drive and printer entries (c9f919c)
  • hardware: stop the camera and microphone running after unload (96dcd9b)
  • keep the original exception as inner exception in RtfFormatter and ColorPickerAutomationPeer (fff08d4)
  • media: keep SVG external file references inside the SVG folder (6b76bc8)
  • media: make the AutoGrey extensions work and keep transparency (4b75dfa)
  • media: render an SvgImage once when it loads and keep custom brushes (d3c1311)
  • network: report a dropped VNC socket as a disconnect instead of crashing (3af02c0)
  • notifications: name the toast factory title parameter title (ad6cda9)
  • sample: match readme files from a folder boundary in the sample viewer (04c56d2)
  • suppress some coding rules and fix code (71f6465)
  • theming: keep the DatePicker calendar icon unmirrored in right-to-left (9666f3f)
  • translation: notify culture subscribers on their own UI thread (1496ed9)
  • translation: skip sealed style setters when updating translated values (2074c09)
  • viewers: use the JsonPropertyTemplateSelector template properties (5cb3496)
  • zoom: reject non-positive or non-finite grid ...
Read more