Repository navigation
Conversation
The WinForms DataTree shows no "Senses" row: each sense's own header is the section, at the entry's level. The detail composer added a collapsible "Senses" banner above them and indented every sense one level under it. The composer now emits no banner for any Senses sequence. An entry's sense headers sit at the entry's own depth, and subsenses still indent under their sense. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sense, etymology, extended note and notebook subrecord headers now show the text the WinForms DataTree builds from each class's Summary and SummaryCollapsed layouts. A sense reads "Sense 1" while expanded and "Sense 1 - house - n" while collapsed, with the definition in place of the gloss when there is one, and the grammatical info of its MSA. A collapsible header takes an optional collapsed label and swaps between the two as it toggles, keeping its automation name in step. The Etymologies and Extended Notes rows over those items are gone, as is the second SubRecords header under each subrecord; the WinForms view has none of them. Insert Extended Note stays on the sense's menu and on each note's hotlinks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NUnit Tests 1 files ± 0 1 suites ±0 11m 4s ⏱️ + 2m 30s Results for commit 15c93cc. ± Comparison against base commit d0d85cb. This pull request removes 5 and adds 21 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1201 +/- ##
==========================================
+ Coverage 39.88% 39.91% +0.02%
==========================================
Files 1542 1543 +1
Lines 355361 355395 +34
Branches 41320 41337 +17
==========================================
+ Hits 141753 141861 +108
+ Misses 184253 184182 -71
+ Partials 29355 29352 -3
🚀 New features to boost your workflow:
|
Their collapsed header text did not match the WinForms view in testing, so subrecords go back to composing as they do on main. The subrecord summary lines, and the skip of the opening summary row that only subrecords needed, move to LT-22858 with the subrecord fields. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thejambi
marked this pull request as ready for review
October 23, 2026 18:51
mark-sil
reviewed
Oct 23, 2026
A collapsed sense header with a sentence-long definition ran past the right edge of the pane and was lost, since the header text could not wrap and the detail view does not scroll sideways. Header text now wraps to the pane width, as the WinForms summary does, with the +/- box beside its first line. Etymologies and extended notes open with a NormalSummary row, not a HeavySummary one, so their headers no longer draw the heavy top-level section rule that senses keep. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 of 14 tasks
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.
Start here:
Src/xWorks/Avalonia/Composer/DetailSummaryLines.cs-- every header line, one builder per class, each following that class's Summary and SummaryCollapsed parts.Follow-up to #1184, from the tester's LT-22689 comment. In Lexicon Edit's Avalonia detail view, each sense is now its own section, with no "Senses" header over them, and item headers read as in the legacy view:
Sense 1,Sense 1.1Sense 1 - house - n(definition when there is one, else gloss; then grammatical info)EtymologyEtymology -language notes, glossExtended NoteExtended Note -type-discussionThe Etymologies and Extended Notes rows over their items are gone too; the legacy view has neither.
Does dropping those rows lose anything? One menu item: the Extended Notes row's Insert Extended Note. It stays on the sense's menu and each note's hotlinks, as in legacy, and both paths are tested. The question worth your time is whether each line matches its part.
Where to look
GrammaticalInfo_*tests.Compose_Senses_HaveNoBanner_AndSubsensesIndentUnderTheirSense.CollapsibleHeader_ShowsItsCollapsedLine_OnlyWhileCollapsed,LongHeaderLine_WrapsWithinThePane_WithTheBoxBesideItsFirstLine.NormalSummary) drawing no heavy top-level rule, as senses (HeavySummary) do --NormalWeightHeader_DrawsNoHeavyRule_AtTheTopLevel.InsertExtendedNote_FromTheSenseMenu_GoesLast.Not here
IsChangeWithinEntry).Stack and verification. Merges into
main, no dependency. Hygiene build clean; FwAvaloniaTests and xWorksTests pass (counts in the preflight section), with the UIA smoke fixtures excluded (an unrelated bulk-edit UIA test intermittently crashes the test host locally). Checked in FLEx, both states: sense, subsense, etymology and extended note headers, and both Insert Extended Note paths; a long collapsed definition wrapping to the pane.Next: review the line mapping, or tell me to split the menu-test changes out.
Reading this a year from now -- start here
This PR is the second half of LT-22689. #1184 gave detail section headers a +/- box and remembered state; a tester then found two places where the Avalonia view still differed from the legacy one: a "Senses" header over all the senses, and sense headers worded "1 gloss" in both states. This branch fixes both and applies the same header wording to etymologies and extended notes. Notebook subrecord headers were in an earlier revision of this branch and were moved to LT-22858, because their collapsed text did not yet match legacy in testing. No working documents were kept on the branch; the reasoning is below.
Decisions, and why
LexSense-Jt-Summary/SummaryCollapsedandLexExtendedNote-Jt-SummaryCollapsedin LexSenseParts.xml, the etymology parts in LexEntryParts.xml, and the MSABasicparts in MorphologyParts.xml). Each<lit>goes throughStringTable.Table.LocalizeLiteralValue, as the legacy XmlVc does, so translated literals carry over. A project that overrides those parts is not followed.DetailField.CollapsedLabel), andDetailSectionHeaderswaps text and automation name as it toggles, so a toggle stays incremental and does not recompose the view. The text wraps to the pane width, as the WinForms summary does; a small panel keeps the +/- box beside the first line.DetailField.IsNormalWeight): etymologies and extended notes open with aNormalSummaryrow, senses with aHeavySummaryone, so only senses draw the heavy top-level rule. The WinForms view's thinner normal-weight line is not drawn; New mode has no rule style for it.main. Their header wording, and the skip of the duplicate SubRecords header each subrecord's layout opens with, go to LT-22858, which also adds the subrecord's fields under that header.Surprising findings
<seq>'smenuattribute applies only to its ghost (prompt) row. That is why the Extended Notes row's menu has no legacy counterpart once a sense has notes: legacy shows no row there at all, and Insert Extended Note lives onmnuDataTree-SenseandmnuDataTree-ExtendedNote-Hotlinks.-: the legacy layout writes the separator unconditionally, and the legacy view shows it.Evidence
Sense_ShowsItsNumber_AndWhileCollapsed_TheGlossAndPartOfSpeech,Sense_WhileCollapsed_ShowsTheDefinitionInPlaceOfTheGlossCompose_SenseHeaders_UseHierarchicalNumbers_AndTheGlossWhileCollapsedCompose_EtymologiesAndExtendedNotes_HaveNoBanner_AndCarryTheirSummaryLinesInsertExtendedNote_FromTheSenseMenu_GoesLast,InsertExtendedNote_FromTheFirstNotesHotlinks_GoesRightAfterItCollapsibleHeader_ShowsItsCollapsedLine_OnlyWhileCollapsedLongHeaderLine_WrapsWithinThePane_WithTheBoxBesideItsFirstLineNormalWeightHeader_DrawsNoHeavyRule_AtTheTopLevel,Compose_EtymologiesAndExtendedNotes_HaveNoBanner_AndCarryTheirSummaryLinesMutation checks: disabling the header's text swap, the text wrapping, and the weight check each failed its test.
The menu execution tests' helper now targets the hidden command adapter for a menu the native authorities do not fully own, as
RecordEditViewdoes before building such a menu; without it, a sense-menu insert read as disabled in the test while it works in the product.Preflight review details
Code Review Summary
Branch: LT-22689-no-senses-banner
Base: main (merge base d0d85cb)
Date: 2026-10-23
Review model: Claude Opus 5.5 (Claude Code)
Files changed: 10 (4 commits: two feature commits, one in-review comment fix, one
scope change taking Notebook subrecords out)
Overview
Follow-up to PR #1184 (LT-22689) from the tester's Jira comment: the Avalonia detail view
put one "Senses" section header over all of an entry's senses, and worded sense headers
as "1 gloss" in both states. The WinForms DataTree has no such banner (each sense header
is its own section) and words the header "Sense 1" while expanded and
"Sense 1 - gloss - n" while collapsed.
The branch removes the banner and gives sense, etymology and extended note headers the
expanded and collapsed lines that each class's Summary and SummaryCollapsed parts define.
A new
DetailSummaryLinesbuilds the lines, including the grammatical info of each MSAkind;
DetailSectionHeaderswaps between the two lines as it toggles. The Etymologies andExtended Notes rows over their items are removed too, as in the WinForms view.
Notebook subrecord headers were in scope until manual testing showed their collapsed text
did not match the WinForms view; at the author's direction they were taken out of this
branch and moved to LT-22858. Subrecords now compose as on
main.Ticket: LT-22689 (user-visible, testable from an install; key present).
Contract/API Changes
DetailField.CollapsedLabel { get; set; }(FwAvalonia).DetailSectionHeaderconstructor from(label, isExpanded, canToggle)to(label, collapsedLabel, isExpanded, canToggle); its only caller isDataTree.DetailSectionHeader.CurrentLabel.Findings
Critical - Must address before merge
None.
Important - Should address before merge
manual testing. (fixed during review: subrecords taken out of
DetailSummaryLines,and the item-summary-row skip that only subrecords used was removed; both move to
LT-22858)
Minor - Consider
DetailComposer.csSummary case comment used "legacy", which AGENTS.md bans incode comments. (fixed during review: reworded; the later scope change then restored
that line to
main's text, so the branch no longer touches it)Collapsed header text can go stale when a referenced object outside the entry(author: accepted; every other New-mode rowchanges: the part-of-speech abbreviation and extended note type are read at compose
time, and the detail view only recomposes for changes inside the shown record
(
RecordEditView.IsChangeWithinEntry).that shows another object's name follows the same refresh rule; note it in the PR)
Required Validation / Evidence
./build.ps1 -BuildTests -SkipNative -CommentHygiene -TokenHygiene: clean after thescope change.
./test.ps1 -NoBuild -TestProject FwAvaloniaTests: 936 total, 935 passed, 1 skipped(after the review follow-up).
./test.ps1 -NoBuild -TestProject xWorksTests -TestFilter 'FullyQualifiedName!~UiaSmokeTests':1838 total, 1836 passed, 2 skipped. The UIA smoke fixtures were excluded because
BulkEditBarUiaSmokeTests.FilterBar_RealizedWindow_ExposesTargetCombosThroughUIAintermittently crashes the test host on this machine; it passed alone on retry and does
not touch the detail view.
test.
note headers; Insert Extended Note from the sense menu and from a note's hotlinks.
Positive Observations
<lit>textlocalized through
StringTable.LocalizeLiteralValueas the WinForms view does.and both paths are tested.
authorities do not fully own, as the host does.
Interview Notes
including the trailing " - " when a sense has no grammatical info.
row is intended.
to defer Notebook headers to LT-22858 rather than diagnose them here.
row. That mechanism (
_itemSummaryHvo) was removed from this branch with the Notebookscope change, so it no longer applies here; it returns with LT-22858.
In-Review Quality Check
DetailComposer.cs(commit 69ad548).DetailSummaryLinesno longer covers notebook records; the_itemSummaryHvoskip, its comments and the two subrecord tests were removed. Hygienebuild and both suites rerun clean.
the +/- box beside its first line, and normal-weight headers draw no heavy rule. Both
threads answered and resolved; the author checked long-definition wrapping in FLEx.
Suggested Review Focus
DetailSummaryLines: each line against its Summary/SummaryCollapsed part, especiallythe MSA grammatical-info branches.
DetailComposer.WalkSequence: item depth for summarized items (subsenses stillindent under their sense) and the banner suppression.
for them.
🤖 Generated with Claude Code
This change is