Saga Film Lineage
Saga · Prototype · Round 1 · Oct 10, 2026 · Liquid Glass release (#442)

Film lineage

Three ways to make the tree page feel alive and part of the glass system: the controls move to the bottom right and fold beside the shrunk bar the way Filters does, the tree uses the whole screen, and tapping someone opens the mini cast page.

Round 1. From the owner's note on #442 (2026-10-10): "reworking the plus / minus to the location on the bottom right (and then it needs animation when you start pinching around: shrink toolbar / fold + / − into a single button)". Builds on the pocket capsule tab bar (#461), the filters fold (#471, prototype), the mini cast page (prototype, branch ios/mini-cast) and the sprint review. The families below are staging's real data, laid out by the app's own layoutFamily.

Today

iPhone 17 Pro Max simulator (iOS 26.5), ios/review at 2c0c6f19, staging, the smoke account. Judd Apatow (4 people), Francis Ford Coppola (62), Brad Pitt (180) and Drew Barrymore (87).

Judd Apatow's tree, small in the middle of an empty screenA small familyFour people at 90% (FIT_MAX), about a third of the screen. The rest is empty.
Leslie Mann's family sheetTap Leslie MannFamilyMemberSheet: 674 pt of 956, two stacked buttons. The mini cast page replaces it.
Drew Barrymore's tree over three generationsA large familyDrew Barrymore: four generations, the gilt line through the family in film. Lines run off the right edge.
The Barrymore tree zoomed out three stepsAfter − three timesThe controls never change, the bar stays full size, and there's no way back to the first view.
Brad Pitt's tree cut off at both edgesCut at both edgesBrad Pitt at 75% (FIT_MIN): relatives cut off on both sides with nothing to say there's more.
Francis Ford Coppola's treeThe CoppolasThree generations fill the screen; the + and − sit in the top right over the tree's empty corner.
No family recorded, under Tap anyoneNo family"Tap anyone." above "No family recorded for Justin C. Polk."
T1Small families float in empty spaceThe first view never scales above 90% (FamilyTree.tsx:20), so four people use a third of the screen.
T2Large families are cut with no hintNever below 75% (:19), with no edge fade to say you can pan.
T3Static controls, no way back+ and − sit top right (:224) in drawn glass and never react to a pinch. There's no fit: after zooming you step back with + and −. Crosshairs appear only after See their family.
T4The bar holds 112 pt of the treeThe full-size bar stays over the tree (TAB_CLEAR), and the first view is fitted above it.
T5The family sheetA tall sheet with two stacked buttons. The mini cast page (pick A) replaces it.
T6"Tap anyone." with no one to tapThe empty state keeps the subtitle (lineage.tsx:37).
T7VoiceOver gets a canvasFrom the code, not checked with VoiceOver on: each portrait is a button ("Leslie Mann, Spouse"), placed by x and y. Nothing says which generation you're in, and there's no list to read in order.
T8A second tree by link keeps the first one's middleOpening Judd Apatow's tree by link over Coppola's showed an empty view and the crosshairs: FamilyTree's focus state survives the new start. Fix: key={data.center}.

Try it: rest and exploring

Drag inside a phone to pan, scroll with ⌘ or Ctrl held to zoom (or use the buttons). Tap any portrait for the mini cast page. Timings come from @/lib/motion; springs are drawn as their nearest curve.

BConstellation
Generations as bands with their names pinned at the left, a slow field drifting behind. Pinch only; one Fit button appears beside the shrunk bar. Tapping someone centers and lifts them above the mini cast page.
Tap: camera SETTLE 480 ms, lift SPRING.snappy, sheet 280 ms CHISEL. Pan: field at 35%.
CGenerations
A list, oldest first, birth decades down the side and the gilt line through the family in film. A glass minimap of the tree sits bottom right and opens the full tree.
Scroll: bar and minimap fold 340 ms CHISEL. Minimap into the tree: FOLD 460 ms.

A small family at rest

Judd Apatow's four. What each option does with the empty screen.

BA close-up in bands
The same scale; two bands and their decades give the space a structure.
CRows with their work
A small family's rows show three known-for posters each.

A large family while you explore

Drew Barrymore's family after a pan and a pinch (C: after scrolling). How the controls fold.

BFit appears
No + or − at all. Band names stay pinned at the left as you pan.
CThe minimap folds
Scrolling shrinks the bar; the minimap folds into one round tree button.

Tapping someone

Jaid Barrymore, Drew's mother. Every option opens the same mini cast sheet; what differs is what the tree does behind it.

BCentered and lifted
She's centered above the sheet at 110% and lifted; the rest dim.
COver the list
The sheet over her row; the row stays put.

A, B and C compared

A · Glass explorerB · ConstellationC · Generations
At restThe tree fills the screen behind the top row and the bar. "Film lineage" and its line float over the top on the scroll edge. + and − sit bottom right above the bar, where Filters and Sort sit on Explore.The same full-screen tree, drawn as bands per generation, their names and decades pinned at the left edge ("Grandparents · 1870s–1900s"). The gilt line glows. No buttons.A list, oldest generation first: portrait, name, relation and role, years. Birth decades down the left, the gilt line through the family in film, as on the person page's ladder. A glass minimap of the tree bottom right.
ExploringThe first pan or pinch shrinks the bar to the pocket capsule and folds + and − into one round glass button beside it; the title steps into a glass capsule in the top row ("Drew Barrymore's family"), like the docked section strip.Pinch only. Pan or pinch shrinks the bar and one round Fit button grows beside it. Same title capsule. The field behind drifts at 35% of the pan.Scrolling down shrinks the bar by the usual rule (barAfterScroll); the minimap folds into one round tree button beside it. Scroll up or tap the bar to grow it.
The folded buttonFit (four corners). Tap: the family flies back to the first view, the bar grows, + and − unfold. Tapping the bar grows it without moving the tree. Crosshairs (back to the start) joins the row and folds with it.Fit, shown only once you've left the first view. Tap: fit, the bar grows, Fit goes.The tree. Tap it, or the minimap: the tree grows out of it to full screen with today's pan and pinch and a List button to go back.
Tap someoneThe mini cast sheet (medium, 520 of 824 pt). The title steps into the capsule, and the tree pans only if the person would sit under the sheet.The camera centers them above the sheet at 110% or more, their ring lifts, the rest dim to 45%. Close: back to where you were.The mini cast sheet over the list; the row stays put.
Small familiesFit may scale up to 130% (today 90%): Judd Apatow's four fill the width at 116%.The same scale, with two bands and their decades filling the space.Each row gets three known-for posters.
Large familiesFit no smaller than 70%, the family's middle in view, never losing the person in the middle. Soft fades at the left and right edges say there's more.The same, and the pinned band names say which generation you're in while panning.87 people scroll as a list with no panning; marriages read as words ("Former spouse · 2001–2002"), not lines. The tree is one tap away.
MotionBar and fold 340 ms CHISEL, one value for both (as in #471). Title to capsule 180 ms. Fit SETTLE 480 ms. + and − as today (448 ms CHISEL). Reduce Motion: 120 ms cross-fades, the camera jumps.Tap: camera SETTLE 480 ms with the sheet's 280 ms CHISEL, lift SPRING.snappy. Bar 340 ms. Reduce Motion: no drift, no lift, the camera jumps.List scroll is native. Fold 340 ms CHISEL; minimap into the tree FOLD 460 ms and back. Reduce Motion: cross-fades.
VoiceOverThe bar never shrinks under VoiceOver, so nothing folds. VoiceOver reads C's list in place of the canvas, in generation order ("Jaid Barrymore, Mother, Actor, born 1946"). + and − are hidden from it.The same list, grouped by band names. Pinch-only zoom needs Zoom in, Zoom out and Fit as custom actions for Voice Control and Switch Control.The list is the page. Nothing extra to build.
WebDrag to pan, trackpad pinch or ⌘/Ctrl + wheel to zoom, keys + − 0. At 768 px and up the bar never shrinks, so + and − stay at the bottom right. Hover lifts a portrait.The same gestures; keys + − 0 matter more with no buttons. The drift stays subtle.The list with hover rows; the minimap opens the tree.
AndroidDrawn glass for the bar, button and capsule; the same gestures; back closes the sheet. Untested.The same; the drift and bands on the UI thread. Untested.The list with ripples. Untested.
CostOTA, JS only. FamilyTree: move the row, setTabBarCompact(1) when a gesture starts, a Fit target, fit range 0.7 to 1.3. #471's fold store takes a second client and shows on this pushed screen (today it's tabs only). The capsule reuses the docked strip's top-row glass. About 150 lines, no new rows. Risk: native glass on a pushed screen; #471's "make once, keep" covers the re-creation bug.OTA. A plus bands and pinned names from the layout's rows, a drift layer, a camera move to the tapped person, the lift and dim. About 250 lines. Risk: pinch-only is hard to find; dimming 180 portraits for Brad Pitt needs a check.OTA. A new generations list (ListRow and the ladder's gilt rail), a minimap drawn from the same layout in a small Svg inside Glass, the fold, and a grow into the tree. Two views to keep in step. About 350 lines.
DropsThe top-right row and the 112 pt kept clear for the bar.+ and − entirely.The tree as the first thing you see (#310's pick, "FamilySearch style"), and the shape of who married whom until you open it.
FixesT1, T2, T3, T4; T5 with the mini cast pageT1, T2, T3, T4; T5T1, T2, T4, T7; T5; T3 inside the tree

Every option also takes T6 ("No family recorded for Justin C. Polk." with no "Tap anyone.") and T8 (key={data.center}).

My recommendation

A, the glass explorer, with B's one best move: tapping someone pans them into view above the mini cast sheet. It's what you asked for, and it's the same mechanism as Filters: the same round glass button on the bar's line, the same 340 ms move driven by the same value, so the app learns one gesture language. It keeps the tree you picked in #310, fixes the empty screen for small families by letting the fit grow to 130%, and ships over the air as one PR. B's bands and drift are lovely but drop buttons that web and Switch Control users need. C is the best VoiceOver page, so its list becomes what VoiceOver reads in A, not a second screen for everyone.

The build, if you pick A:

  1. FamilyTree: + and − to the bottom right above the bar; a gesture start calls setTabBarCompact(1); they fold into a Fit button through #471's fold store, allowed on this pushed screen; Fit returns to the first view and grows the bar.
  2. The tree goes full screen under a floating title and scroll edge; the title steps into a top-row capsule while you explore. Fit range 0.7 to 1.3, side fades.
  3. Tap opens the mini cast page (after ios/mini-cast lands) and pans the person into view; with VoiceOver on, the generations list stands in for the canvas.
  4. T6 and T8; design.md's Film lineage paragraph (the 2026-10-06 note "zoom controls sit top right" changes, since folding keeps them off the cards while you explore).

Which one: A, B, C, a mix, or another round?