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
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
53ed62d3c1
docs(performance): add Tier 0 writeups, roadmap, and pitfalls guide
2026-05-21 15:48:52 +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
3c5d9e7848
fix(Window): prevent unnecessary updates on media breakpoint change
2026-05-12 11:26:33 +08:00
chinboy
702e12039f
feat: implement async loading architecture for controls with debounce and timeout handling
2026-05-12 07:32:04 +08:00
chinboy
7a0a3d1d00
docs: add FilteringArchitecture documentation for unified filtering system in AtomUI controls
2026-05-11 23:23:33 +08:00
chinboy
8e9e1b2d37
feat(Popup): implement wheel event guard to prevent unintended scrolling
2026-05-11 08:19:00 +08:00
chinboy
0b520bff8d
refactor: standardize property names for visibility and mode across components
2026-05-10 22:03:44 +08:00
chinboy
14504c6937
fix(NumericUpDown, SearchButton): correct binding property and enhance icon property change handling
2026-05-10 19:45:02 +08:00
chinboy
11da8e4456
feat(PopupUtils): implement visual scope checks for nested popups and enhance pointer event handling
2026-05-10 19:01:35 +08:00
chinboy
6674335d5f
style(ColorPicker): format code by removing unnecessary blank lines and adjusting spacing
2026-05-10 18:09:19 +08:00
chinboy
532f88b97f
refactor(Dialog): remove IsLightDismissEnabled property and related logic for cleaner dialog management
2026-05-08 11:02:06 +08:00
chinboy
829436dea5
feat(CaseNavigation): add ModalViewModel and corresponding UI elements for enhanced feedback options
2026-05-08 10:09:53 +08:00
chinboy
fd8ae09673
refactor(DataGrid): replace manual visual tree traversal with FindAncestorOfType for improved performance
2026-05-07 19:44:38 +08:00
chinboy
5bba715483
fix(DataGrid): prevent CPU spin loop in HandleLostFocus by adding ancestor cycle detection
2026-05-07 19:10:03 +08:00
chinboy
628cfb2fe8
feat(DataGrid): introduce DataGrid components and themes for enhanced functionality
2026-05-07 14:04:12 +08:00
chinboy
0b4aff0a6d
feat(Cascader): introduce Cascader component with item filtering, async data loading, and theming support
2026-05-07 07:58:36 +08:00
chinboy
9af427fc41
refactor(MarqueeLabel): migrate MarqueeLabel module to Avalonia 12
2026-04-29 14:18:13 +08:00
chinboy
8b0f93c534
refactor(CheckBox): migrate CheckBox module to Avalonia 12
2026-04-29 14:12:46 +08:00
chinboy
525a8f570a
refactor(Breadcrumb): migrate Breadcrumb module to Avalonia 12
2026-04-29 13:57:12 +08:00
chinboy
a04a8e7a7c
refactor(AdornerLayer): migrate AdornerLayer module to Avalonia 12 and update dependency path with axaml-aware analysis
2026-04-29 13:39:58 +08:00
chinboy
42fb2b04ce
add migration path doc
2026-04-29 13:05:16 +08:00
chinboy
5420c04ed6
refactor(ScrollViewer): migrate ScrollViewer module to Avalonia 12 and add base-class scanning rule to migration skill
2026-04-29 10:51:05 +08:00
chinboy
6eab83e8fe
refactor(TextBlock): migrate TextBlock module to Avalonia 12 and add migration tracking doc
2026-04-29 10:18:54 +08:00
chinboy
29475a640d
feat(NavMenu): implement NavMenu and NavMenuItem controls with token system and TextBlock refinements
2026-04-29 10:02:07 +08:00
chinboy
7712789e8c
fix(Avalonia12): correct factual errors and expand migration skill to 51 categories
...
Verified all API changes against Avalonia 12 source code. Fixed 5 factual errors
(PlacementMode not removed, VisualRoot is protected internal, MathUtilities.Clamp
still exists, IInputRoot is [PrivateApi] not removed, BindingPlugins is internal
not removed). Added 15 new breaking change categories including internalized APIs,
renamed members, window decoration redesign, dispatcher changes, and obsolete
member removals. Updated all 5 reference files with corrected information.
2026-04-29 09:15:39 +08:00
chinboy
adff3f6472
feat(Avalonia12): Complete migration skill and comprehensive breaking changes documentation
...
Add comprehensive Avalonia 12 migration support with 36+ breaking change categories:
**Migration Skill (.agents/skills/migrate-to-avalonia12/)**
- SKILL.md: Main skill definition with 36+ breaking change categories
- references/code-level-analysis.md: Code-level analysis from Avalonia 11.3.14 → 12.0.0
- references/reflection-extensions-pattern.md: AOT-safe reflection pattern documentation
- references/atomui-migration-guide.md: AtomUI-specific migration guidance
- references/migration-examples.md: Before/after code examples
- references/avalonia12-breaking-changes.md: Complete reference table
- references/missed-breaking-changes.md: Recently discovered breaking changes
- references/scanning-results.md: Comprehensive code scanning results
**Breaking Changes Covered (36+ categories)**
1-11: Core Framework (binding system, focus events, TopLevel API, etc.)
12-14: Data & Clipboard (IDataObject → IAsyncDataTransfer, DoDragDrop, DataFormats)
15-17: Text & Rendering (constructor parameter order, access keys, fonts)
18-25: Platform-Specific (Android, iOS, Browser, Tizen, Diagnostics, xUnit, NUnit)
26-36: API Changes (Screen, ResourcesChangedEventArgs, Gesture events, WindowState,
Data validation, Extension methods, ReflectionExtensions pattern, PlacementMode,
IInputRoot removal, Internal API extraction, ReflectionExtensions for internal members)
**Code Changes**
- Add FormattedTextSource and InlinesTextSource for text formatting
- Add TopLevelUtils helper for desktop scaling
- Update focus event handlers to use FocusChangedEventArgs
- Update TopLevel API usage (TopLevel.GetTopLevel instead of VisualRoot)
- Update text formatting constructors with new parameter order
- Update clipboard operations with SetTextAsync extension
- Update ToolTipService for TopLevel API
- Update NavMenu and TextBlock controls for Avalonia 12
**Documentation**
- docs/AVALONIA12_MIGRATION.md: Migration guide and checklist
- Comprehensive scanning results showing 95% migration completion
- 2 pending items identified: IInputRoot removal, PlacementMode removal
**Key Features**
- AOT-safe reflection patterns with [DynamicDependency] attributes
- Lazy<T> caching for reflection info
- Comprehensive detection of all 36+ breaking changes
- Platform-aware migration guidance
- Auto-fixable vs manual intervention matrix
2026-04-29 08:35:43 +08:00
CHINBOY
5cf6893e08
The AtomUI kernel has completed basic adaptation for Avalonia V12.
2026-04-28 18:25:30 +08:00
chinboy
34d525a885
fix(Drawer): optimize dialog size handling by replacing style configuration with token bindings
2026-04-22 10:08:06 +08:00
chinboy
d0f2470eeb
fix(Space): optimize spacing handling by applying token bindings instead of styles
2026-04-22 09:26:58 +08:00
chinboy
4020ab36e3
fix(AvatarGroup, CompactSpace, Space): optimize collection handling by removing unnecessary list creation
2026-04-22 08:24:25 +08:00
chinboy
cc9665e781
fix(SpinIndicator): add CustomIndicatorSize property and update related styles
2026-04-21 21:08:28 +08:00
chinboy
b8fb9cd056
fix(NavMenu): optimize item retrieval by avoiding unnecessary list conversion
2026-04-21 18:38:23 +08:00
chinboy
7980b70319
fix: simplify visibility subscription logic by introducing SubscribeAncestorIsVisible method
2026-04-21 17:59:30 +08:00
chinboy
a002397dcc
fix(LineEdit): enhance right content bindings and improve layout efficiency
2026-04-21 16:51:45 +08:00
chinboy
7b0d636e50
fix(AddOnDecoratedBox): implement status foreground and icon brush properties to enhance visual feedback
2026-04-21 13:52:29 +08:00
chinboy
79305e7122
fix(BaseTabStrip, CardTabStrip, BaseTabControl, CardTabControl): refactor binding management to eliminate memory leaks and improve performance
2026-04-21 13:52:29 +08:00
chinboy
a47fd6e097
fix(OverlayDialogHeader): ensure disposables are properly disposed and reset on visual tree attachment/detachment
2026-04-21 13:52:29 +08:00
chinboy
b7fb6c6740
fix(WindowTitleBar): ensure disposables are properly disposed and reset on visual tree attachment/detachment
2026-04-21 13:52:29 +08:00
chinboy
31eff3e495
fix(MemoryLeakPatterns): update documentation to clarify static constructor subscription patterns and their impact on memory management
2026-04-21 13:52:29 +08:00