Skip to content

Restore LayoutGroup as its own page; rewrite Layout group nodes landing#35

Merged
jduval23 merged 1 commit into
rokudev:v2.0from
chrisdp:restore-layoutgroup-page
May 12, 2026
Merged

Restore LayoutGroup as its own page; rewrite Layout group nodes landing#35
jduval23 merged 1 commit into
rokudev:v2.0from
chrisdp:restore-layoutgroup-page

Conversation

@chrisdp
Copy link
Copy Markdown
Contributor

@chrisdp chrisdp commented May 12, 2026

Summary

Companion to #31 (LabelBase) and #34 (Dialog), addressing the third instance of the same consolidation pattern. Upstream commit 600fc230 ("fixed index page for layoutgroups", May 6 2026) renamed layout-group-nodes/layoutgroup.md to layout-group-nodes/index.md as a pure git move with zero content changes, leaving the LayoutGroup reference dressed up as a section landing and breaking 5 inbound doc:layoutgroup link sites.

Like Dialog, LayoutGroup is a concrete instantiable node, not an abstract base class. It's directly usable in app code and is also extended by ButtonGroup. Its natural home is back at layout-group-nodes/layoutgroup.md alongside its siblings, not at the section index.

Why this restructuring matters

Same developer-impact concerns from #31 and #34:

  • Component clarity was lost. LayoutGroup is the base class ButtonGroup extends, and the docs are full of "Extends LayoutGroup" references that need a real page to land on. Folding the LayoutGroup reference into the section index made LayoutGroup no longer searchable as its own node.
  • The section landing stopped doing landing-page work. Pre-rename, the landing didn't exist (no separate index.md); post-rename, "Layout group nodes" was the wrong title for a LayoutGroup reference page, with no overview of the four nodes packaged together (Group, LayoutGroup, ButtonGroup, TargetGroup), no inheritance notes, and no signposting to related concepts like bounding-rect positioning.
  • Inbound doc:layoutgroup links broke silently across 5 link sites.

A pre-existing inconsistency: the file's title was "Layout group nodes" (mismatched to the layoutgroup.md filename) even before the May 6 rename. The rename made the title match the new filename (index.md) but didn't fix the underlying issue that the page is really a LayoutGroup reference. This PR fixes both: title is now "LayoutGroup", and the page is back at layoutgroup.md.

What changed

  • Restored: docs/REFERENCES/scenegraph/layout-group-nodes/layoutgroup.md. Same content as the pre-consolidation page, with the title corrected to "LayoutGroup", SEO metadata backfilled (excerpt / metadata.title / metadata.description) to match the convention upstream commit b2287405 applied to sibling reference pages, and the fields-table HTML reformatted with proper indentation and per-row line breaks for source readability (no change to rendered output).
  • Rewritten: docs/REFERENCES/scenegraph/layout-group-nodes/index.md. A real section landing with:
    • A use-case table covering all four nodes in the section: Group, LayoutGroup, ButtonGroup, TargetGroup
    • An Inheritance section noting that ButtonGroup extends LayoutGroup; TargetGroup extends Group directly (not LayoutGroup)
    • A "How positioning is calculated" section explaining that LayoutGroup/ButtonGroup arrange children based on each child's bounding rectangle, pointing readers at ifSGNodeBoundingRect for details
    • A "Looking for something else?" section pointing at List and grid nodes for built-in list/grid options and at plain Group for free-positioning use cases

Inbound-link audit

No collateral link rewrites needed. The LayoutGroup restoration lands the file back at its original slug, so:

  • All 5 inbound doc:layoutgroup references resolve naturally after the restoration (release-notes:1046; media-playback/text-to-speech.md:197; layout-group-nodes/buttongroup.md:15; rsg/details-screen.md:32; rsg/episodes-screen.md:34).
  • 0 references to doc:layout-group-nodes exist in the repo — nobody linked the section landing by slug, so the landing rewrite doesn't strand any inbound link.
  • 0 anchor-style references into the consolidated index.

Upstream commit 600fc23 (May 6, 2026) renamed
layout-group-nodes/layoutgroup.md to layout-group-nodes/index.md as a
"fixed index page for layoutgroups" cleanup. The rename was a pure
git move with zero content changes, but it left the LayoutGroup
reference dressed up as a section landing (title still "Layout group
nodes" rather than "LayoutGroup", which had been mismatched to the
filename even before the May 6 rename), and broke five inbound
doc:layoutgroup link sites pointing at a slug that no longer existed.

Like Dialog (PR rokudev#34), LayoutGroup is a concrete instantiable node
(not an abstract base class), so its natural home is back at
layout-group-nodes/layoutgroup.md alongside ButtonGroup, TargetGroup,
and Group. This change restores the page (title corrected to
"LayoutGroup", fields-table HTML reformatted with proper indentation
and per-row line breaks for source readability while preserving the
rendered output) and rewrites index.md as a real section landing.

The new landing:
- Covers all four nodes in the section (Group, LayoutGroup,
  ButtonGroup, TargetGroup) with use-case descriptions
- Notes the inheritance relationships (ButtonGroup extends
  LayoutGroup; TargetGroup extends Group directly, not LayoutGroup)
- Adds a "How positioning is calculated" section explaining that
  LayoutGroup/ButtonGroup arrange children based on each child's
  bounding rectangle, with a pointer to ifSGNodeBoundingRect
- Points readers at List and grid nodes for built-in list/grid
  options, and at plain Group for free-positioning use cases

All five inbound doc:layoutgroup references resolve naturally to
the restored page without any link rewrites elsewhere. No inbound
references to doc:layout-group-nodes existed.
jduval23 pushed a commit that referenced this pull request May 12, 2026
Companion to PR #31 (LabelBase), #34 (Dialog), and #35 (LayoutGroup),
addressing the fourth instance of the same consolidation pattern.
Upstream commit 5435954 (May 6, 2026) merged
dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md into the section
index.md, deleting the dedicated DynamicKeyboardBase reference page
and breaking 14 inbound doc:dynamic-keyboard-base link sites.

Like LabelBase, DynamicKeyboardBase is a genuine abstract base class
(not directly instantiable; you only ever instantiate DynamicKeyboard,
DynamicPinPad, DynamicMiniKeyboard, or DynamicCustomKeyboard, which
all extend it). Its natural home is abstract-nodes/, matching the
convention used by ArrayGrid, AnimationBase, and the just-merged
LabelBase.

This change:
- Restores the page at abstract-nodes/dynamic-keyboard-base.md with
  SEO metadata backfilled, fields-table HTML reformatted with proper
  indentation, and a typo fix ("dication" -> "dictation" in two cells
  of the `domain` field description).
- Rewrites dynamic-voice-keyboard-nodes/index.md as a real section
  landing: short intro, Choosing-a-node table for the four keyboard
  variants, a separate components table covering DynamicKeyGrid,
  VoiceTextEditBox, and Key Definition File, an Inheritance note,
  a Voice entry note (currently English and Spanish, sourced from
  the existing DynamicKeyboardBase copy), a Looking-for-something-
  else section pointing at the legacy Keyboard/PinPad and the
  Standard dialog framework's StandardKeyboardDialog/
  StandardPinPadDialog, and a Sample app pointer.
- Updates 3 file-path-style refs in release-notes/index.md from
  /docs/references/scenegraph/dynamic-voice-keyboard-nodes/
  dynamic-keyboard-base.md to /docs/references/scenegraph/
  abstract-nodes/dynamic-keyboard-base.md.

All 14 inbound doc:dynamic-keyboard-base references resolve naturally
to the restored page (slug unchanged). The 1 inbound
doc:dynamic-voice-keyboard-nodes reference (release-notes:593)
resolves to the rewritten section landing.
@jduval23 jduval23 merged commit f94e7cb into rokudev:v2.0 May 12, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants