Commit Graph
3014 Commits
Author SHA1 Message Date
chinboy b170b4b469 fix(ColorPicker): correct gradient track active thumb property owner 2026-05-23 22:42:47 +08:00
chinboy 5f8c583656 perf(ColorPicker): reduce click trigger subscription overhead
Qualification: ColorPickerShowCase contains at least 20 ColorPicker controls and at least 3 GradientColorPicker controls; the default Click trigger is paid for each materialized picker and is used on every anchor pointer press.

Source model: RoutedEvent.AddClassHandler subscribes once for the target type (.referenceprojects/Avalonia/src/Avalonia.Base/Interactivity/RoutedEvent.cs:121-135), while Interactive.AddHandler creates per-control event subscription storage (.referenceprojects/Avalonia/src/Avalonia.Base/Interactivity/Interactive.cs:30-41,179-190).

Measurement: Release net10.0, --suite colorpicker --count 300, 3-run median. ColorPicker.GalleryShape ms/item 12.548 -> 11.593 (+7.61%), KB/item 3826.1 -> 3811.7 (+0.38%); suite sum ms/item 19.353 -> 18.254 (+5.68%), KB/item 5770.5 -> 5753.2 (+0.30%).

Verification: dotnet build -c Release -f net10.0 tools/performances/AtomUI.Performance/AtomUI.Performance.csproj; dotnet run -c Release -f net10.0 --no-build --project tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -- --verify-colorpicker-states; git diff --check.
2026-05-23 22:17:44 +08:00
chinboy aca0f31b4c perf(SplitView): reduce transition materialization overhead 2026-05-23 17:24:22 +08:00
chinboy c4bb0fdc7b perf(DesktopControls): add color picker baselines and fix split view 2026-05-23 16:57:53 +08:00
chinboy 601bd0de9c perf(Drawer): refine scoped layer and nested lifecycle 2026-05-23 15:48:12 +08:00
chinboy 32e528e0ba perf(WindowTitleBar): reduce caption button visibility overhead
WindowTitleBar is used by the main Window, Dialog, and ImagePreviewer paths; a normal Gallery session keeps one workspace title bar resident and materializes transient dialog/image title bars when those flows open. CaptionButtonGroup is created by each title bar, with visibility state recalculated during window materialization and maximize/fullscreen/pin state changes.

Replace caption-button MultiBinding converters with direct effective visibility properties, remove extra arrange invalidation registration, clear template handlers on detach/re-template, and avoid duplicate Windows caption corner radius writes.

Measured with three alternating count=160 windowtitlebar runs: CaptionButtonGroup Windows states improved 6.4%-7.0% ms/item and 3.4%-4.3% KB/item, with Visual/root unchanged.

Verification: dotnet build tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -c Debug --framework net10.0; dotnet run --project tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -c Debug --framework net10.0 --no-build -- --verify-windowtitlebar-states.
2026-05-23 14:14:51 +08:00
chinboy fd93dcb43f perf(Switch): reduce loading and transition lifecycle overhead
ToggleSwitchShowCase materializes 13 Switch controls in the measured Gallery shape. Navigation/materialization runs when the user opens the Switch showcase; loading animation/render paths can run repeatedly while a Switch is loading.

Avoid duplicate transition lifecycle overrides, keep the loading cursor override scoped to loading state, cache the loading indicator pen, and skip wave playback when wave effects are disabled.

Verification: dotnet build tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -c Debug --framework net10.0; dotnet run --project tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -c Debug --framework net10.0 --no-build -- --verify-switch-states.
2026-05-23 11:37:26 +08:00
chinboy bf73129876 perf(Splitter): reduce collapse icon and drag preview overhead 2026-05-23 09:24:49 +08:00
chinboy cbbac8cf60 perf(Breadcrumb): add baselines and fix separator propagation 2026-05-23 00:34:21 +08:00
chinboy d87d5ad501 perf(Timeline): cache indicator pens and fix pending state 2026-05-22 19:45:59 +08:00
chinboy 2e866660da perf(Statistic): refine content and timer lifecycle 2026-05-22 16:49:39 +08:00
chinboy 982bc314d4 perf(Calendar): defer inactive view cell creation 2026-05-22 13:57:24 +08:00
chinboy ff88b21876 perf(TabControl): reduce hidden tab item slot overhead 2026-05-22 13:14:29 +08:00
chinboy ee81dbb076 perf(Controls): refine Tour bindings and document Tier 1 results 2026-05-22 10:59:58 +08:00
chinboy 203707963d perf(Transfer): reduce target panel refresh overhead 2026-05-22 10:00:07 +08:00
chinboy c7e9585044 perf(TimePicker): defer closed picker presenters
Qualification: TimePickerShowCase has 15 TimePicker and 7 RangeTimePicker declarations, 22 runtime InfoPickerInput instances, and picker open/select/hover/confirm flows are realistic per-session operations across basic, confirm, interval, 12/24 hour, variants, status, and range examples.

Avalonia source refs: .referenceprojects/Avalonia/src/Avalonia.Base/Data/TemplateBindingExpression.cs:37-43 covers TemplateBinding parent PropertyChanged updates; .referenceprojects/Avalonia/src/Avalonia.Base/AvaloniaObject.cs:407-422 covers SetCurrentValue preserving value priority semantics; .referenceprojects/Avalonia/src/Avalonia.Base/Layout/Layoutable.cs:546 covers hidden measure short-circuit, and this change keeps template visuals in axaml.

Result: TimePickerShowCase cold mean 464.82ms -> 393.11ms, repeated mean 148.79ms -> 138.48ms, repeated P95 180.65ms -> 151.63ms, repeated alloc 23617.32KB -> 23430.26KB, visuals preserved at 1230.

Verification: dotnet build tools/performances/AtomUI.GalleryPerformance/AtomUI.GalleryPerformance.csproj -c Debug --framework net10.0 --no-restore; dotnet build tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -c Debug --framework net10.0 --no-restore; --verify-timepicker-states; GalleryPerformance timepicker and datepicker 10 cold / 30 repeated.
2026-05-22 09:17:18 +08:00
chinboy c2b944c2a0 fix(ListView): clear stale pagination references 2026-05-22 08:02:14 +08:00
chinboy 9f4e59d043 perf(TreeSelect): reduce SelectHandle indicator overhead 2026-05-21 23:50:48 +08:00
chinboy 3e21a87670 perf(TreeView): reduce switcher icon presenter overhead
Qualification: TreeViewShowCase has 15 TreeView declarations, 87 declared TreeViewItem nodes, and 55 runtime tree rows; page navigation, expand/collapse, search/filter, drag, and context-menu flows are realistic per-session operations.

Avalonia source refs: .referenceprojects/Avalonia/src/Avalonia.Controls/Primitives/TemplatedControl.cs:333 and :338 cover template tree creation; .referenceprojects/Avalonia/src/Avalonia.Base/Layout/Layoutable.cs:546 and :624 cover hidden measure short-circuit after creation.

Result: TreeViewShowCase cold mean 1049.62ms -> 776.51ms, repeated mean 332.44ms -> 213.41ms, repeated alloc 49964.64KB -> 33732.33KB, visuals 2108 -> 1646, IconPresenter 332 -> 112.

Verification: dotnet build src/AtomUI.Desktop.Controls/AtomUI.Desktop.Controls.csproj -c Debug --framework net10.0; dotnet build tools/performances/AtomUI.Performance/AtomUI.Performance.csproj -c Debug --framework net10.0; --verify-treeview-states; GalleryPerformance treeview 10 cold / 30 repeated.
2026-05-21 22:23:44 +08:00
chinboy c87eca42f3 fix(ListView,Select): improve selection index handling and remove unused filter logic v6.0.0-rc1 2026-05-21 21:32:15 +08:00
chinboy 335a878c02 gallery(AutoComplete): add OptionTemplate showcase with city picker 2026-05-21 18:47:25 +08:00
chinboy 12eca2030a gallery(Cascader): populate ShowCheckedStrategy showcase data 2026-05-21 17:38:40 +08:00
chinboy 207e9d680b fix(LineEdit,SearchEdit): make placeholder text visible by default 2026-05-21 17:38:15 +08:00
chinboy 987897e8d1 fix(Cascader): restore expand chevron icon in dropdown 2026-05-21 17:37:53 +08:00
chinboy 53ed62d3c1 docs(performance): add Tier 0 writeups, roadmap, and pitfalls guide 2026-05-21 15:48:52 +08:00
chinboy 86dbb934fa perf: cut allocations in TextBlock, Popup, Tag, Tooltip, Separator 2026-05-21 15:48:14 +08:00
chinboy 02fb0658e2 chore(performance): recover harness from Avalonia 12 drift, add suites 2026-05-21 15:47:12 +08:00
chinboy f39e386812 fix(Cascader): close dropdown popup after filter list leaf selection 2026-05-21 15:45:53 +08:00
chinboy 7645c29a01 feat(SKILL): enhance performance guidelines with detailed correctness and resource management rules 2026-05-21 00:05:26 +08:00
chinboy 18d0af516c feat: prepare release/6.0 with performance scenarios and gallery enhancements
Adds the performance harness, state-verification suites, gallery
showcases and reference docs accumulated for the 6.0 release, plus
control-level fixes:

- tools/performances/AtomUI.Performance + AtomUI.GalleryPerformance
  scaffolding with per-control scenarios and verification suites
- docs/performances/** baselines and plans
- controlgallery/** showcase data refreshes (icon gallery, range time
  pickers, multi-select cascader strategies, etc.)
- ListBox: re-apply filter on OnLoaded when FilterValue is preset
- SelectCandidateList: visible-item selection mapping under filter
- RangeDatePicker: floating popup arrow even with IsShowTime=true
2026-05-20 23:25:15 +08:00
chinboy 96d9c7b614 feat(TextBox): update ownership of compact space properties to TextBox for improved functionality 2026-05-14 07:32:10 +08:00
chinboy 4859844961 feat(README): update .NET and Avalonia requirements, enhance package list, and adjust project settings for improved clarity 2026-05-13 23:28:28 +08:00
chinboy 89a1606d22 feat(ColorPickerInput): update width properties for improved layout consistency v6.0.0-build.1 2026-05-13 18:07:07 +08:00
chinboy 37e1c43737 feat(AdaptiveSpacingDockPanel): implement new panel for adaptive spacing in layout management 2026-05-13 17:35:05 +08:00
chinboy 8e395606cf feat(ColorSliderTheme): enhance slider track layout with additional border elements for improved visual consistency 2026-05-13 17:03:39 +08:00
chinboy a738c38712 feat(ButtonSpinner): add MinHeight property for size types to improve layout consistency 2026-05-13 16:15:04 +08:00
chinboy 008f05853e fix(CSD handling): adjust overlay and popup positioning for Linux CSD support and update decoration margins 2026-05-13 14:05:33 +08:00
chinboy 5e5777f191 feat(WindowTitleBar): introduce fullscreen caption button size and header horizontal spacing for improved layout consistency 2026-05-13 09:39:43 +08:00
chinboy 2ea0c64248 fix(Flyout, OverlayDialogHost, Popup, Tour): address Linux CSD decoration shadow handling and improve target offset calculations 2026-05-13 09:08:10 +08:00
chinboy 70937bb812 fix(Popup): restrict shadow thickness calculation to Linux platform 2026-05-13 08:29:18 +08:00
chinboy 855aa9a7ba feat(WorkspaceWindow): add language binding for simplified Chinese and English options 2026-05-13 00:22:29 +08:00
chinboy 572b75d52c refactor(MediaBreakPointThemeBootstrapper): streamline container query handling and improve breakpoint management 2026-05-13 00:14:01 +08:00
chinboy 2109c98010 fix(OverlayDialogHost): improve target center calculation for overlay positioning accuracy 2026-05-13 00:01:41 +08:00
chinboy 088a0e9bf0 fix(Popup): adjust offset calculations based on overlay host usage to improve placement accuracy 2026-05-12 23:55:01 +08:00
chinboy e75cde04c5 feat(OverlayDialogHost): enhance owner bounds calculation and handle size changes for improved overlay behavior 2026-05-12 23:51:40 +08:00
chinboy e054fd4181 refactor: enhance placement handling in ContextMenu, Flyout, and Popup components 2026-05-12 22:43:07 +08:00
chinboy a29078f67d fix: set default value for BadgeIsVisible property and clean up WindowTheme layout 2026-05-12 18:20:18 +08:00
chinboy fe996235b2 refactor(TreeView): streamline pointer event handling and improve drag-and-drop logic 2026-05-12 16:25:58 +08:00
chinboy d960709a3f feat(DualMonthArrowDecoratedBox): add IsFloatingArrowPosition property and update layout handling 2026-05-12 14:43:08 +08:00
chinboy 62aac20fa2 refactor: update access modifiers and improve naming for clarity in RangeDatePicker and related components 2026-05-12 14:33:58 +08:00