- Move vertical connection line from timeline_x - 40 to x=5
- Position line clearly to the left of year labels (x=90-130)
- Horizontal lines connect vertical line to each event marker
- Improved visual hierarchy: vertical line → year labels → timeline → events
- Fix mouse coordinate transformation to account for zoom level
- Enable whole-line selection (click anywhere on event line to select person)
- Update tooltip to show date first, then event type
- Make connection lines more visible with increased opacity and width
- Improved click detection using scaled coordinates
- Expanded clickable area to include both marker and label regions
- Added 12 different event types (Baptism, Education, Occupation, etc.)
- Fixed missing event references by storing and reusing original events
- Made event generation deterministic with random seed
- Updated gen_person to return both XML and tuple format for event reuse
- All event references now properly defined and validated
- Demo family now includes 240+ additional events for comprehensive testing
- Implement detect_label_overlaps() to prevent text label overlaps
- Automatically adjust Y positions while maintaining chronological order
- Enhanced tooltips to show all events for a person, not just hovered event
- Added person selection on event marker click
- Implement draw_person_connections() to visually connect selected person's events
- Selected person's events highlighted with blue color and connecting lines
- Click on marker selects person, click on label expands event details
- Fixed EventType objects not being hashable by extracting integer value
- Fixed UnboundLocalError by removing variable shadowing of translation function _
- Updated all tuple unpacking to use proper variable names instead of _
- All event types now properly supported with color/shape mapping
- Plugin fully compatible with Gramps 5.1
- Replace get_extents() with get_pixel_size() for correct text measurement
- Fixes ValueError: not enough values to unpack error
- get_pixel_size() returns (width, height) tuple directly in pixels
- Implement build_tree() method required by NavigationView
- Calls goto_handle() with active family to rebuild display
- Fixes TypeError when loading MyTimeline view