Conversation
Every detail row's label menu merges mnuDataTree-Object (Field Visibility, Move Field, Help), and 329 rows bind the empty mnuDataTree-Help. Both ran through the mediator, so the hidden DataTree adapter took part in every label menu, and Help was answered from the adapter's current slice. A row with no slice twin, such as Publish Sense In or Reversal Entries, left the adapter pointed at another slice, so Help opened that slice's topic. An ordinary row's label menu is now answered natively in full, so the hidden adapter no longer takes part in it; it is still pointed at the row when the WinForms menu has to stand in. A row whose override target cannot be located shows Field Visibility and Move Field disabled instead of running them through the mediator. One rule changed on the way: ResolveHelpTopic no longer returns null. A row with no object generates from its field and label alone, so every row ends at a topic, the generic one at worst, as a WinForms slice does. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
NUnit Tests 1 files ± 0 1 suites ±0 13m 27s ⏱️ + 2m 26s Results for commit 4ed7b00. ± Comparison against base commit b6cbf8e. This pull request removes 1 and adds 11 tests. Note that renamed tests count towards both. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1161 +/- ##
=======================================
Coverage 39.01% 39.01%
=======================================
Files 1520 1522 +2
Lines 352805 352902 +97
Branches 40692 40714 +22
=======================================
+ Hits 137632 137695 +63
- Misses 185879 185905 +26
- Partials 29294 29302 +8
🚀 New features to boost your workflow:
|
thejambi
approved these changes
Sep 25, 2026
thejambi
left a comment
Contributor
There was a problem hiding this comment.
@thejambi reviewed 4 files and all commit messages, and made 1 comment.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on mark-sil).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Third step of retiring the hidden WinForms DataTree adapter behind the Avalonia detail view (LT-22691), after #1143 and #1153, consuming the help-topic engine from #1151.
What changed
Every detail row's label menu merges
mnuDataTree-Object(Field Visibility, Move Field, Help), and 329 rows bind the emptymnuDataTree-Help. Both ran through the mediator, so the hidden DataTree adapter took part in every label menu, and Help was answered from the adapter's current slice. A row with no slice twin, such as Publish Sense In or Reversal Entries, left the adapter pointed at another slice, so Help opened that slice's topic.ObjectMenuAuthorityowns both ids. Field Visibility and Move Field use the host's existing item builders through a lazily located override target; a row whose target cannot be located keeps them disabled, per the agreed no-veto fallback. Help resolves the row's own topic throughResolveHelpTopic, is hidden when the help provider has no string for it, and opens throughShowHelp.CompositeMenuAuthorityjoins this authority with the reorder-vector one, so an ordinary row's label menu is fully owned: the adapter is not pointed at the row and the override interceptor is not built. The WinForms adapter menu remains the fallback when the native menu fails, pointed at the row first.One rule changed on the way, from the note on #1151:
ResolveHelpTopicno longer returns null. A row with no object generates from its field and label alone, so every row ends at a topic, the generic one at worst, as a WinForms slice does.Interim notes
mnuDataTree-MultiStringSlice) still comes from the adapter's current slice until the writing-systems authority owns that menu.Tests
Contract test over every leaf of both owned ids, and its twin that an unknown leaf throws. Ownership test: a Subentries label menu and a Help-bound row are fully owned; a multi-string row is not. A spy colleague proves an ordinary row's label menu is built without a single mediator display query. Equivalence for every row the adapter can target, against the interceptor path this replaces, with unlocatable rows asserted disabled. Publish Sense In Help resolves its own topic. Help is hidden with the null provider, offered for the generic topic on a row with no object, and kept on a row without class and layout while its field commands disable. A visibility change through the authority writes the override; the Move Field root-row test now runs through the authority.
Runs:
build.ps1 -CommentHygiene -TokenHygieneclean; xWorksTestsDetailObjectCommandExecutionTests46/46. Manually tested in Lexicon Edit: Field Visibility and Move Field on plain rows, Help on plain rows and on Publish Sense In and Reversal Entries, the empty Example prompt, the Subentries label menu, a multi-string row's Writing Systems submenu, and a second tool's label menus.🤖 Generated with Claude Code
This change is