Repository navigation
Finish native key declarations through shared navigation - #211
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
trissim
force-pushed
the
work/toad-keymap--central-declarations
branch
from
October 30, 2026 03:16
84fce1c to
be56a70
Compare
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.
P917 central declarations — continuation, not full delivery
5 commits relative to current main; 23 files, +323/-168. Current correction checkpoint:
be56a702991559106b36a0071eeae06a1ca84328, rebased ontobea0d377b(#212 genuine editing-engine integration). Same P917 issue and same paired ToAD Textualize#1338. This checkpoint is published work, not ready for whole-head acceptance: the remaining raw binding policy and ToAD migration below are still being implemented.Shared declaration owner
Before: navigation composed its own family projection alongside DOM/native method declarations, while ToAD retained another composer and registry. After this Textual checkpoint: DOMNode accumulates the actual class-declared families in subclass-first MRO order once at class construction and projects them through the shared declaration path. Navigation's separate composer and per-call family walk are deleted. The ToAD consumer migration is still required; this does not claim that its second registry is already gone.
KeyDeclarationregisters subclasses at their declaration and derives concrete members by abstractness. The overlap contract remainstype[KeyDeclaration]at all three sites; no baretype, Any, or fictitious mypy failure justifies weakening it. The unfinished ToAD Menu producer must join this existing family, not broaden its consumers.Horizontal family, native effects
Before: RadioSet and Tabs separately repeated left/right defaults, descriptions and priority. After:
HorizontalCursorCommandowns CursorLeft/CursorRight beside the vertical family;MovesHorizontalCursorcomposes that declaration. Tabs retains its native stepping bodies underaction_cursor_left/right. RadioSet binds those operations to its existing up/down stepping implementations. Both copied RadioSet MethodBinding assignments and both Tabs decorators are deleted.The orphan RadioSet/Tabs key-table strings are deleted rather than extended with another handwritten key roster. Remapping is shown by the actual catalog, not a stale CSS docstring.
Native method declarations and caller closure
MethodBinding.declareowns ordinary EditingMode defaults and accepts description, priority, availability and visibility metadata. Native Input, TextArea, Tree, Button, Collapsible, Switch, ToggleButton and Select callers no longer restate ordinary mode policy. Link declares its visible Enter operation directly rather than reassigning its own method.Tabs rename callers are migrated in the actual tabbed-content, animation and snapshot-app sources. The command palette calls the existing native selection/cursor operations directly; its string getattr dispatcher and swallowed AttributeError are deleted. A collapsed Select admits navigation to open its overlay; an expanded Select yields to that overlay.
Main integration
The rebase conflict was the obsolete hand-built Vim implementation in
document/_editing.py: main had already deleted it. Main's actual engine-capability file was retained, so this PR does not resurrect VimInsert/VimNormal or their removed registry. The older P917 registry deletion is already satisfied by that main deletion.Source evidence and remaining work
git diff --stat origin/main...HEAD: 23 files changed, 323 insertions(+), 168 deletions(-).Remaining on this same pair: delete actual inherited raw-scroll/nominal coexistence; finish remaining production base/editor/table/demo declarations; migrate ToAD Action registry/composer and Welcome/Workspace method declarations; repair window-family availability and the generic application base; complete nominal Menu producers/catalog/selection and all real callers; author the requested controls UNRUN. The dirty ToAD Menu source is preserved while P974 repairs public dirty-checkout transfer from the closed P903 allocation. No second source copy or shell write bypass.
Permissions j/k behavior requires explicit closure on ToAD Textualize#1338: answer selection versus prior diff navigation must be preserved or documented; this Textual checkpoint does not settle that UX.
Qualification owed by integration owner
Run one necessary matched selection for both exact source heads, then the actual installed saved-session journey: dropdown/overlay navigation, permissions and captured-block menus, sidebar/tree/table, focused native Input/TextArea printable text, selection/history edges, missing override versus explicit-empty versus Reset, and mode/focus eligibility. Retain the genuine engine integration and P932/P939 lifecycle contracts. Existing prompt/F1 evidence is narrower than this family.
Tristan tests the installed keyboard after root integrates and installs the coherent pair. No new author screenshot sequence, automated controller, provider submission, settings mutation, performance improvement, full K2–K7 acceptance, or merged/installed claim is made here.
Assumed: native stepping and method override behavior survive the shared declaration projection; compilation cannot establish that. Root's real controls and installed keyboard journey must establish it.