- Fix Popup.HandleCustomPlacement early return when PlacementTarget is
null by falling back to Parent, enabling custom placement for Menu
- Adjust PopupUtils primaryMargin to use marginToAnchor directly when
set, instead of Max with shadow offset
- Migrate WorkspaceWindow from native Menu/MenuItem to atom:Menu
- Share ShouldUseOverlayLayer property between Menu and Popup
- Enable overlay layer for Menu and configure per-mode MarginToAnchor
Add missing MarginToAnchor binding in Flyout.CreatePopup, fix theme to
use FlyoutHostTokenResource instead of PopupHostTokenResource, and
intercept Placement changes in Popup to redirect through custom
placement logic when set externally by PopupFlyoutBase.
Extract duplicated ConfigureMotion into PopupUtils.CreateMotionForPlacement, replace
Flyout's 16-branch arrow flip with ArrowPositionUtils.FlipArrowPosition, and add
CancelCloseAnimation to Popup so FlyoutStateHelper can cancel in-flight close
animations on fast hover re-entry instead of doing destructive Hide+ShowAt.
Implement FlyoutHost control and FlyoutStateHelper supporting three trigger types,
with proper overlay/windowed mode handling. Add subtle stroke to ArrowIndicator
for arrow tip visibility beyond shadow coverage. Fix Popup crash by setting
CustomPopupPlacementCallback before PlacementMode.Custom assignment.
- Correct IInputRoot guidance: [PrivateApi] public interfaces are still usable, do NOT replace with TopLevel
- Add ReflectionExtensions catalog (18 classes, 40+ methods) with quick lookup by Avalonia type
- Add fundamental rules: prefer existing extensions, distinguish [PrivateApi] from truly internal
- Expand trigger conditions to support Chinese/English upgrade/refactor/migrate keywords
- Update Categories 8, 31, 34, 49 and Prohibited section with corrected IInputRoot handling
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.