Timeline: "events as context" overlay in document search #784

Closed
opened 2026-06-08 08:58:12 +02:00 by marcel · 1 comment
Owner

Summary

A low-emphasis toggle in the document-search header that interleaves timeline events (derived life-events + curated personal/historical events) as inline context markers into the date-sorted result list on /documents. It is a second consumer of the existing TimelineEvent data — explicitly not a new date-bucketing or rendering stack.

This came out of a design discussion: the question was whether the dedicated /zeitstrahl view could be replaced by extending the search view (which already buckets by month via TimelineDensityFilter) with a toggle. Conclusion: keep the standalone Zeitstrahl (it is the home for the per-person Lebensweg, empty-but-meaningful year bands, and historical events with no associated letters), and add this overlay as a cheap follow-up that reuses the same backend. Share the engine, not the surface.

Depends on

  • #774TimelineEvent entity + Flyway migration (the data source)
  • #778 — shared precision-aware date-label helper (one render path for events and letters)
  • The standalone /zeitstrahl view (#779) landing first — this is a follow-up, not a parallel build

Scope

  • A toggle in the /documents search header (e.g. "Ereignisse als Kontext zeigen").
  • When on, render inline, visually subdued event markers between the date-sorted DocumentList rows: derived events (Geburt / Tod / Heirat) and curated PERSONAL / HISTORICAL events, each with its precision-aware date label.
  • Reuses the existing TimelineEvent backend and the shared date formatter (#778). No new bucketing logic, no new entity, no new endpoint if the existing GET /api/timeline filters suffice.

Honest caveats (intended behaviour, not bugs)

  • Date-sort only. The overlay only makes sense when results are sorted by date. When sort is anything else, the toggle is hidden or disabled.
  • Respects active filters — does not fight them. Search filters narrow to a subset; the overlay shows events that fall within the date span of the currently displayed results. It must not silently widen the result set.
  • Letter-less historical events in a zero-match year simply won't appear here. That is expected — the standalone Zeitstrahl remains their home. The overlay is context for documents you're already looking at, not a complete narrative spine.

Out of scope

  • The per-person Lebensweg (that is #782, on Person detail).
  • Any change to the TimelineDensityFilter scrubber histogram.
  • Editing events from within search (events are edited at their source / via the curator forms #781).
## Summary A low-emphasis **toggle in the document-search header** that interleaves timeline events (derived life-events + curated personal/historical events) as inline context markers into the date-sorted result list on `/documents`. It is a **second consumer of the existing `TimelineEvent` data** — explicitly *not* a new date-bucketing or rendering stack. This came out of a design discussion: the question was whether the dedicated `/zeitstrahl` view could be replaced by extending the search view (which already buckets by month via `TimelineDensityFilter`) with a toggle. Conclusion: **keep the standalone Zeitstrahl** (it is the home for the per-person Lebensweg, empty-but-meaningful year bands, and historical events with no associated letters), **and** add this overlay as a cheap follow-up that reuses the same backend. Share the engine, not the surface. ## Depends on - #774 — `TimelineEvent` entity + Flyway migration (the data source) - #778 — shared precision-aware date-label helper (one render path for events and letters) - The standalone `/zeitstrahl` view (#779) landing first — this is a follow-up, not a parallel build ## Scope - A toggle in the `/documents` search header (e.g. "Ereignisse als Kontext zeigen"). - When on, render inline, visually subdued event markers between the date-sorted `DocumentList` rows: derived events (Geburt / Tod / Heirat) and curated `PERSONAL` / `HISTORICAL` events, each with its precision-aware date label. - Reuses the existing `TimelineEvent` backend and the shared date formatter (#778). No new bucketing logic, no new entity, no new endpoint if the existing `GET /api/timeline` filters suffice. ## Honest caveats (intended behaviour, not bugs) - **Date-sort only.** The overlay only makes sense when results are sorted by date. When sort is anything else, the toggle is hidden or disabled. - **Respects active filters — does not fight them.** Search filters narrow to a subset; the overlay shows events that fall within the date span of the *currently displayed* results. It must not silently widen the result set. - **Letter-less historical events in a zero-match year simply won't appear here.** That is expected — the standalone Zeitstrahl remains their home. The overlay is *context for documents you're already looking at*, not a complete narrative spine. ## Out of scope - The per-person Lebensweg (that is #782, on Person detail). - Any change to the `TimelineDensityFilter` scrubber histogram. - Editing events from within search (events are edited at their source / via the curator forms #781).
marcel added this to the Zeitstrahl — Family Timeline milestone 2026-06-08 08:58:12 +02:00
marcel added the P3-laterfeatureui labels 2026-06-08 08:58:20 +02:00
marcel changed title from Timeline: "events as context" overlay in document search to Timeline: "events as context" overlay in document search 2026-06-08 08:58:20 +02:00
Author
Owner

Scrapped (2026-06-08): the document search stays focused on documents. Weaving timeline-event context into the result list risked muddying a tool that does one thing well — discovery/filtering of letters. The event "context" layer remains the job of the standalone Zeitstrahl (/zeitstrahl) and the per-person Lebensweg (#782). Closing as not planned.

Scrapped (2026-06-08): the document search stays focused on documents. Weaving timeline-event context into the result list risked muddying a tool that does one thing well — discovery/filtering of letters. The event "context" layer remains the job of the standalone Zeitstrahl (`/zeitstrahl`) and the per-person Lebensweg (#782). Closing as not planned.
Sign in to join this conversation.
No Label P3-later feature ui
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#784