- Add small portraits (24px) next to timeline events for person events
- Add larger portraits (120px) in tooltips when hovering over events
- Implement portrait loading from Gramps media_list using media_path_full
- Add portrait drawing using Cairo with circular clipping and border
- Update demo family generator to create portraits using DiceBear Avatars API
- Generate portraits considering age and gender for appropriate appearance
- Add media objects to XML with proper IDs and gallery references
- Use relative paths for media files in demo family XML
- Add helper scripts for debugging Gramps log files
- Fix deprecation warnings for XML element truth value checks
- Add comprehensive type hints to MyTimeline.py methods
- Add type hints to __init__, change_db, and tooltip formatting methods
- Use Any for Gramps-specific types that aren't easily importable
- Refactor generate_demo_family.py to use ElementTree
- Replace string concatenation with xml.etree.ElementTree for proper XML generation
- Add compatibility handling for Python < 3.9 (ET.indent)
- Add EventData, PersonData, and FamilyData dataclasses for better structure
- Add comprehensive type hints to all functions
- Extract magic numbers to named constants
- Add constants for UI dimensions, timeline heights, dialog sizes
- Add constants for date calculations and genealogical year ranges
- Improve code readability and maintainability
- Refactor duplicated code in filter dialog handlers
- Extract common checkbox handler logic into reusable methods
- Create _make_group_toggle_handler and _make_child_toggle_handler
- Eliminate code duplication between event type and family filters
- Improve shell scripts with better error handling
- Add validation for Gramps installation
- Improve error messages with actionable troubleshooting steps
- Use set -euo pipefail for better error detection
- Add better user guidance in error scenarios
- 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
- Add parentin references for fathers and mothers
- Add childof references for children
- Regenerate person XMLs with correct family relationships
- Fixes import errors about missing bidirectional references
- Add generate_demo_family.py script to generate demo data
- Add demo_family.gramps with large family tree:
* 2 parents (John and Mary Smith)
* 15 children
* 5 spouses
* ~20 grandchildren
* Multiple families with marriage events
* Birth and death events for all members
- Perfect for testing the MyTimeline plugin with real data