feat(stammbaum): surface node.generation in the side panel for phone readers #691

Open
opened 2026-05-28 16:19:55 +02:00 by marcel · 0 comments
Owner

Context

#689 ships the Stammbaum generation gutter — a 100 px left-hand column
rendering G{n} per occupied row. The gutter is hidden entirely below
md (768 px)
as a deliberate trade-off: 100 px of permanent chrome is
too costly on a 320 px screen, and the spec notes:

Mobile (< md) generation rendering — gutter is hidden on small
viewports; tree readers on phones do not see G{n} labels.
Deliberate trade-off. The side panel may surface generation per-node
once #361 lands.

Leonie raised this on the PR #690 review: mobile/senior readers
currently lose the G-index affordance entirely
. The dual-audience
standard (readers on phones, transcribers on laptops) means readers are
exactly the audience that gets cut off.

What to do

Add a single line to the Stammbaum side panel (StammbaumSidePanel.svelte
or equivalent) that surfaces G{node.generation} for the selected node
when node.generation != null. This is per-node detail in an existing
chrome region — no new layout, no new chip; just a labelled line in the
same style as birth/death years.

Out of scope: any second filter UI, range slider, or chip filter — the
gutter remains the desktop-only affordance for cross-row scanning.

Acceptance

  • Stammbaum side panel shows G{node.generation} for the selected
    node when set, on every viewport (mobile + desktop)
  • No row added when node.generation == null
  • Existing side-panel structure / styling unchanged otherwise
  • Component test covers the present + absent case

References

  • Parent: #689 (feature/689-generation-gutter / PR #690)
  • Out-of-scope note: PR #690 body, "Mobile (< md) generation rendering"
  • Dependent on: nothing — independent of #361 (dagre swap)
## Context #689 ships the Stammbaum generation gutter — a 100 px left-hand column rendering `G{n}` per occupied row. The gutter is **hidden entirely below `md` (768 px)** as a deliberate trade-off: 100 px of permanent chrome is too costly on a 320 px screen, and the spec notes: > Mobile (`< md`) generation rendering — gutter is hidden on small > viewports; tree readers on phones do not see `G{n}` labels. > Deliberate trade-off. The side panel may surface generation per-node > once #361 lands. Leonie raised this on the PR #690 review: **mobile/senior readers currently lose the G-index affordance entirely**. The dual-audience standard (readers on phones, transcribers on laptops) means readers are exactly the audience that gets cut off. ## What to do Add a single line to the Stammbaum side panel (`StammbaumSidePanel.svelte` or equivalent) that surfaces `G{node.generation}` for the selected node when `node.generation != null`. This is per-node detail in an existing chrome region — no new layout, no new chip; just a labelled line in the same style as birth/death years. Out of scope: any second filter UI, range slider, or chip filter — the gutter remains the desktop-only affordance for cross-row scanning. ## Acceptance - [ ] Stammbaum side panel shows `G{node.generation}` for the selected node when set, on **every** viewport (mobile + desktop) - [ ] No row added when `node.generation == null` - [ ] Existing side-panel structure / styling unchanged otherwise - [ ] Component test covers the present + absent case ## References - Parent: #689 (`feature/689-generation-gutter` / PR #690) - Out-of-scope note: PR #690 body, "Mobile (`< md`) generation rendering" - Dependent on: nothing — independent of #361 (dagre swap)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#691