Commit Graph
248 Commits
Author SHA1 Message Date
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