As a family member I want the /zeitstrahl to show leading/trailing archive-range decades so the empty edges of our collection are visible #828

Open
opened 2026-06-13 19:12:58 +02:00 by marcel · 0 comments
Owner

Leading/trailing empty-decade spans on /zeitstrahl

Milestone: Zeitstrahl — Family Timeline (#14)
Deferred from: #779. Canonical visual spec: docs/specs/zeitstrahl-final-spec.html §3 (the outer 1899–1908 and 1925–1950 folded spans).

Context & Why

The Concept-A mockup opens with a folded 1899 – 1908 · keine Einträge span and closes with 1925 – 1950 · keine Einträge — empty decades before the first and after the last populated year, framing the archive's full intended date range. #779 deliberately spans first→last populated year only ("span the data") because there is no archive-range data source on the wire: the backend emits only years with ≥1 dated entry, so the frontend cannot know the archive's intended outer bounds.

To render the outer spans honestly we need a source of truth for the archive's date range (e.g. a configured/curated [archiveFromYear, archiveToYear], or a derived min/max from all documents regardless of timeline inclusion).

Scope

  • Decide and implement the archive-range source (config value, curated setting, or backend-derived min/max).
  • Surface it (e.g. on TimelineDTO) and have TimelineView fold the leading/trailing empty runs using the existing GapSpan from #779 (REQ-015 already folds interior empty runs — this extends folding to the edges).

Out of Scope

  • Editorial quiet-span labels (separate issue); interior gap folding (shipped in #779).

Open Questions (needs-discussion)

  • Where does the archive range come from — a curated/admin setting, or derived min/max of all documents?
  • Should the range be global only, or also apply to the per-person Lebensweg rail (#10)?

Follow-up to #779. Harden to EARS REQ-NNN + ACs + RTM before implementation.

# Leading/trailing empty-decade spans on /zeitstrahl **Milestone:** Zeitstrahl — Family Timeline (#14) **Deferred from:** #779. **Canonical visual spec:** `docs/specs/zeitstrahl-final-spec.html` §3 (the outer `1899–1908` and `1925–1950` folded spans). ## Context & Why The Concept-A mockup opens with a folded `1899 – 1908 · keine Einträge` span and closes with `1925 – 1950 · keine Einträge` — empty decades **before the first** and **after the last** populated year, framing the archive's full intended date range. #779 deliberately spans **first→last populated year only** ("span the data") because there is **no archive-range data source** on the wire: the backend emits only years with ≥1 dated entry, so the frontend cannot know the archive's intended outer bounds. To render the outer spans honestly we need a source of truth for the archive's date range (e.g. a configured/curated `[archiveFromYear, archiveToYear]`, or a derived min/max from all documents regardless of timeline inclusion). ## Scope - Decide and implement the archive-range source (config value, curated setting, or backend-derived min/max). - Surface it (e.g. on `TimelineDTO`) and have `TimelineView` fold the leading/trailing empty runs using the **existing `GapSpan`** from #779 (REQ-015 already folds *interior* empty runs — this extends folding to the edges). ## Out of Scope - Editorial quiet-span labels (separate issue); interior gap folding (shipped in #779). ## Open Questions (`needs-discussion`) - Where does the archive range come from — a curated/admin setting, or derived min/max of all documents? - Should the range be global only, or also apply to the per-person Lebensweg rail (#10)? _Follow-up to #779. Harden to EARS REQ-NNN + ACs + RTM before implementation._
marcel added this to the Zeitstrahl — Family Timeline milestone 2026-06-13 19:12:58 +02:00
marcel added the P3-laterfeatureneeds-discussionui labels 2026-06-13 19:13:23 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#828