|
| 1 | +# Release v0.2.x - Multi-Platform Linking & Tree Views |
| 2 | + |
| 3 | +Released: YYYY-MM-DD |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +Major enhancements to the ancestry tree visualization with four view modes and lazy loading for deep ancestry. Added multi-platform genealogy linking with Ancestry.com and WikiTree integration. |
| 8 | + |
| 9 | +## 🎉 New Features |
| 10 | + |
| 11 | +### Multiple Tree View Modes |
| 12 | +- **Focus Navigator**: Navigate one person at a time with breadcrumb trail |
| 13 | +- **Pedigree Chart**: Classic vertical tree with expandable generations |
| 14 | +- **Generational Columns**: Horizontal columns organized by generation |
| 15 | +- **Classic**: Original SVG-based tree with zoom/pan |
| 16 | + |
| 17 | +### Lazy Loading for Deep Ancestry |
| 18 | +- Initial load of 10 generations for columns view |
| 19 | +- "Load 5 more" button appears when more ancestors are available |
| 20 | +- Successfully tested loading 21 generations with 17,000+ ancestors |
| 21 | + |
| 22 | +### View Mode URL Persistence |
| 23 | +- Tree view mode saved in URL query params (`?view=columns`) |
| 24 | + |
| 25 | +### Ancestry.com Linking |
| 26 | +- Link persons to their Ancestry.com profiles with automatic photo extraction |
| 27 | +- Browser-based scraping with auto-login support using saved credentials |
| 28 | +- Srcset parsing to extract highest resolution photos (5x = maxside=1800) |
| 29 | +- Auto-launches/connects browser when needed |
| 30 | + |
| 31 | +### WikiTree Linking |
| 32 | +- Link persons to their WikiTree profiles with photo extraction |
| 33 | +- HTTP-based scraping (no auth required for public profiles) |
| 34 | +- Extracts profile photo and description |
| 35 | + |
| 36 | +### Manual Photo Selection |
| 37 | +- "Use Photo" button for each linked platform |
| 38 | +- Separated linking from photo fetching for user control |
| 39 | +- Support for FamilySearch, Wikipedia, Ancestry, and WikiTree photos |
| 40 | +- Photos stored locally with platform-specific naming (`{personId}-ancestry.jpg`, etc.) |
| 41 | + |
| 42 | +### Unified Platforms UI |
| 43 | +- Consolidated all platform links into single "Platforms" section in PersonDetail |
| 44 | +- FamilySearch, Wikipedia, Ancestry, WikiTree all shown together |
| 45 | +- Link and "Use Photo" buttons for each platform |
| 46 | + |
| 47 | +### Sample Database |
| 48 | +- Included sample genealogy database (G849-MHS) for new users to explore the app |
| 49 | +- Medieval Swiss nobility lineage (920-968 AD) with 4 persons |
| 50 | +- Sample databases load automatically and are marked with `isSample` flag |
| 51 | +- Cannot be deleted (protected from accidental removal) |
| 52 | + |
| 53 | +## 🔧 Improvements |
| 54 | + |
| 55 | +### Genealogy Providers |
| 56 | +- All 8 supported genealogy providers (FamilySearch, Ancestry, WikiTree, MyHeritage, Geni, FindMyPast, Find A Grave, 23andMe) are now pre-populated on first launch |
| 57 | +- No more manually adding each provider - just enable and configure the ones you want to use |
| 58 | + |
| 59 | +### Tree Visualization |
| 60 | +- **Simplified Generation Labels**: Gen 3+ shows "1st/2nd/3rd Great-Grandparents" instead of verbose labels |
| 61 | +- **Columns View Optimization**: Only displays known ancestors (hides unknown placeholders) |
| 62 | +- **Header Styling**: Fixed transparent header in columns view to prevent text collision when scrolling |
| 63 | + |
| 64 | +### Photo Priority |
| 65 | +- Updated sparse tree view to use photos in order: |
| 66 | + 1. Ancestry (highest priority) |
| 67 | + 2. WikiTree |
| 68 | + 3. Wikipedia |
| 69 | + 4. FamilySearch scraped (lowest priority) |
| 70 | + |
| 71 | +### Data Model |
| 72 | +- Added `photoUrl` field to PlatformReference to store discovered photo URLs before downloading |
| 73 | +- Added support for structured name fields: |
| 74 | + - `birthName`: Birth/maiden name when display name differs (e.g., married name is preferred) |
| 75 | + - `marriedNames`: Array of names taken after marriage |
| 76 | + - `aliases`: Array of "also known as" names (nicknames, alternate spellings) |
| 77 | + - Maintains backwards-compatible `alternateNames` array |
| 78 | + |
| 79 | +## 🐛 Bug Fixes |
| 80 | + |
| 81 | +- Browser auto-connects when linking Ancestry profiles (no more "Browser not connected" errors) |
| 82 | +- Ancestry photo now appears in sparse tree view |
| 83 | +- Indexer now handles network timeouts gracefully with retry logic instead of crashing |
| 84 | + - ETIMEDOUT, ECONNRESET, and other transient errors automatically retry up to 3 times |
| 85 | + - Exponential backoff (5s, 10s, 20s) between retries |
| 86 | + - Failed fetches skip the person and continue indexing instead of exiting |
| 87 | + |
| 88 | +## 📦 Installation |
| 89 | + |
| 90 | +```bash |
| 91 | +git clone https://github.com/atomantic/SparseTree.git |
| 92 | +cd SparseTree |
| 93 | +npm run install:all |
| 94 | +pm2 start ecosystem.config.cjs |
| 95 | +``` |
| 96 | + |
| 97 | +## 🔗 Full Changelog |
| 98 | + |
| 99 | +**Full Diff**: https://github.com/atomantic/SparseTree/compare/v0.1.x...v0.2.x |
0 commit comments