Repository navigation
Conversation
In the New UI detail view, a section header with hotlinks shows one small tinted button per command, right-aligned on the header's own line, where WinForms shows one link per command. Until now the header had a single "Field Options" link that opened a menu of those commands. The buttons show only on the section that holds the focused field, and stay put while focus moves within it. A command that cannot run is grey on a neutral fill, and buttons that do not fit the width are left out. They are Tab stops, reached with Shift+Tab from the section's first field, since they are the keyboard's only way to some of these commands. Lexicon commands are answered natively, with their live enabled state. Commands in menus the detail view does not own yet, such as Notebook's, are looked up on click; one that turns out unavailable shows the same message the WinForms view shows. The UX decision register records this as UX-9, superseding UX-2 and UX-3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pressing Shift+Tab from an edited field onto a section's hotlink button autosaves the edit, and the detail view is rebuilt. The new view showed no buttons until focus entered a section, so the remembered button was gone and the keyboard left the view. Restoring focus now first shows the remembered button's section, then focuses the same button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NUnit Tests 1 files ± 0 1 suites ±0 14m 13s ⏱️ -4s Results for commit 2d76c31. ± Comparison against base commit 9c931ec. This pull request removes 4 and adds 31 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 #1232 +/- ##
==========================================
+ Coverage 40.50% 40.54% +0.03%
==========================================
Files 1559 1560 +1
Lines 356085 356279 +194
Branches 41584 41626 +42
==========================================
+ Hits 144243 144446 +203
+ Misses 182531 182510 -21
- Partials 29311 29323 +12
🚀 New features to boost your workflow:
|
A hotlink button reached with Shift+Tab kept keyboard focus across the autosave re-show but lost its focus ring, so focus looked gone even though Enter still ran the command. Focus memory now records whether the focused control showed its keyboard indicator and restores it the same way. A text box is still focused plainly, so its caret is kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A section showing no field, because it is empty (an entry with no variants yet) or collapsed, has no row to take focus, so its hotlink buttons never appeared and its commands could not be reached from the keyboard. Insert Reversal Subentry has no other route. Such a section now shows its buttons at all times, as Tab stops, and they go back to following focus once the section shows a field. The hotlinks of a menu no native authority owns are noted as listing submenu commands too, unfiltered by display handlers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thejambi
marked this pull request as ready for review
November 5, 2026 19:22
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.
In the New UI detail view, a section that offers commands (a sense, Variants, Allomorphs, a Notebook record's Subrecords and others) now shows one small button per command at the right of its header line, such as "Insert Example" and "Insert Sense" on the sense being edited. The buttons appear on the section holding the current field, as WinForms shows its blue links only on the active section. A section that is empty or collapsed shows them all the time, since it has no field to click or Tab into. Each button is a Tab stop, reached with Shift+Tab from the section's first field.
Until now each such header carried a single "Field Options" link that opened a menu of the commands, so the commands could not be seen at a glance and every insert took two clicks.
Headless control-level capture, not FLEx. Only the section holding the caret shows its buttons.
Reviewer notes
Why one section at a time. WinForms sets
SummarySlice.ActivefromSlice.SetCurrentState, so its links show only on the current section. Showing buttons on every section was considered and rejected as visual noise on long entries. The rule is recorded as UX-9 inDocs/ux/README.md(provisional, superseding UX-2 and UX-3); user testing asking for buttons everywhere is the trigger to revisit it.Deliberate rules.
DetailVisibility.GetHotlinksHeaderIndex), passing over headers without any. The AvaloniaHeaderkind also covers group headers and sequence banners, where passing over matches WinForms. WinForms stops at the firstheader="true"slice, so a nestedheader="true"section with no hotlinks of its own would differ; no shipped layout is known to have one.DataTree.UpdateHotlinks, re-run after every visibility change and every change of section), since focus cannot enter it to bring them. An independent review after preflight found that an empty Variants or Subentries section had lost its keyboard route; fixed in 2d76c31.ButtonDefault*Backgroundkeys on each enabled button. Semi draws a disabled button with its resting fill, so an unavailable command keeps the neutral grey. A Semi rename of those keys would drop the tint silently;Hotlinks_AreTinted_...would catch it.ksHotlinkCommandUnavailableandksHotlinkCommandDisabled, copy the wording ofDetailControlsStrings.ksCmdUnavailableandksCmdDisabled, which are internal to DetailControls. They show in English until Crowdin translates them.DataTreeandDetailHostControl.ShowDetailgain an optional trailinghotlinkItemsparameter. New theme tokensDataTree.HotlinkGap,HotlinkPaddingandHotlinkCornerRadius. Automation ids:<row>.Hotlinksnames the strip and<row>.Hotlinks.<n>each button; nothing in the repo automated the old single link.The look. Five candidates were captured headlessly, all in the same place; the tinted buttons (3) were chosen. WinForms draws underlined links (1). Plain links (2) read as text, outlined chips (4) were less obviously primary, and a plus with a label (5) implies "add", which does not fit commands such as Show Concordance. Keeping the "Field Options" link beside the buttons was rejected, since its menu would repeat them on the same line.
Headless control-level captures of a throwaway restyling; only look 3 exists in the code.
Headless control-level capture. Pointer over the first button; the second command cannot run.
Tests.
DetailHotlinkTestscovers the section rule, buttons following focus between sections and staying put within one, one button per command with its enabled state, click, Shift+Tab then Enter, Tab into a section landing on its first field, empty and collapsed sections showing their buttons (Tab reaches them, and focusing one does not rebuild it), overflow leaving view and Tab order, tint, hover and unavailable states, and position on the header line.DetailFocusMemoryTests.ReshowWithNoRequest_KeepsFocusOnTheRememberedHotlinkfails without 0a53649 and checks the focus ring.LexiconMenuExecutionTestsruns Insert Sense from the button's own item and checks where the sense lands, plus the unowned-menu listing. Not covered: the Notebook click path through the hidden adapter (manual test 1). FwAvaloniaTests: 974 passed, 1 pre-existing skip. xWorksTests menu and command fixtures: 171 passed. Comment and token hygiene are clean.Manual tests. Done, with New UI mode on:
Not done: on an entry with no variants, Tab from the field before Variants onto "Insert Variant" (covered headlessly by
AnEmptySection_ShowsItsHotlinks_WithoutFocus_AndTabReachesThem).Out of scope.
commandVisible="true"(the Words tool's wordform header, not yet on this view); refreshing enabled state while focus stays in a section; insert speed, since each insert recomposes the entry and rebuilds the view (a follow-up).🤖 Generated with Claude Code
This change is