v0.5.4
Release v0.5.4 - Multi-Platform Comparison & UI Redesign
Released: 2026-01-25
Overview
This release adds multi-platform data comparison capabilities, allowing you to compare person data across FamilySearch, Ancestry, WikiTree, and Wikipedia. It also includes a major UI redesign for the person detail page with a more compact, user-friendly layout.
New Features
Multi-Platform Data Comparison (v0.5.0)
- Compare person data across multiple genealogy providers side-by-side
- Field-by-field comparison with visual indicators: ✓ match, ⚠ different, — missing
- Unified provider cache structure at
data/provider-cache/{provider}/{externalId}.json - Download/refresh data from providers directly from the UI
- Collapsible field comparison panel showing divergences
Compact PersonDetail Layout (v0.5.0)
- Redesigned person detail page with more efficient use of screen space
- Side-by-side Vital Events (birth/death/burial) and Family cards at top
- Inline tags for Also Known As and Occupations
- Unified Platforms & Data section combining provider links and comparison
- Compact bio section
Link Platform Dialog (v0.5.0)
- New modal dialog for linking Wikipedia, Ancestry, and WikiTree profiles
- Platform-specific styling and placeholder text
- Keyboard support (Escape to close, Enter to submit)
- Auto-focus on URL input when opened
Ancestry Scraper Updates (v0.5.0)
- Updated selectors for 2024/2025 Ancestry DOM structure
- Extracts name from
.userCardTitle - Extracts birth/death from
.userCardEventDetailspans - Extracts parents from Relationships section
- Extracts profile photo URL
- Proper handling of "Unknown" and "Living" status values
New Files
Client Components
client/src/components/person/ProviderDataTable.tsx- Unified provider data table with photos, status, and actionsclient/src/components/person/UnifiedPlatformSection.tsx- Combined provider links and comparison table (replaced by ProviderDataTable)client/src/components/person/LinkPlatformDialog.tsx- Modal dialog for linking platformsclient/src/components/person/VitalEventCard.tsx- Compact vital event display with editingclient/src/components/ui/EditableDate.tsx- Inline date editor with genealogy format validationclient/src/components/ui/EditableField.tsx- Inline text field editorclient/src/components/ui/EditableList.tsx- Inline list editor
Server Services
server/src/services/multi-platform-comparison.service.ts- Provider data comparison logicserver/src/services/familysearch-refresh.service.ts- FamilySearch data refreshserver/src/services/familysearch-upload.service.ts- Upload changes to FamilySearchserver/src/services/local-override.service.ts- Local override management
Scripts
scripts/migrate-provider-cache.ts- Migration script for unified cache structure
API Endpoints
New Endpoints
GET /api/sync/:dbId/:personId/multi-platform-compare- Get full multi-platform comparisonPOST /api/sync/:dbId/:personId/refresh-provider/:provider- Refresh data from specific provider
Technical Details
Provider Cache Structure
Provider data is now cached in a unified structure:
data/provider-cache/
familysearch/{fsId}.json
ancestry/{externalId}.json
wikitree/{externalId}.json
Comparison Algorithm
- FamilySearch serves as the baseline (primary source)
- Field comparison uses fuzzy matching for places (contains check)
- Alternate names are sorted alphabetically before comparison to avoid false differences
- Missing values are distinguished from empty values
Provider Data Table (v0.5.2)
- New unified
ProviderDataTablecomponent replacingUnifiedPlatformSection - SparseTree shown as primary row with all provider data below
- Columns: Source, Photo, Name, Birth, Death, Father, Mother, Children, AKA, Occupations, Status, Actions
- Photo thumbnails with hover "Use Photo" overlay
- Download buttons now include photo fetching automatically
- Upload to FamilySearch dialog with photo upload option via Playwright automation
Compact Header & Vitals (v0.5.2)
- Redesigned header: smaller photo (24x24), inline edit button next to name
- IDs shown inline without expand/collapse toggle
- Vital events condensed to single row (Birth • Death • Burial)
- Parents and children shown in compact row below vitals
- Also Known As names now alphabetically sorted
Parent Provider ID Discovery (v0.5.3)
- Automatically discover and link provider-specific IDs for a person's parents
- Scraper
extractParentIdsmethod added to FamilySearch, Ancestry, and WikiTree scrapers - Parent discovery service with name matching (accent normalization, partial match)
- Single-person discovery and BFS ancestor traversal modes
- API endpoints:
POST /api/sync/:dbId/:personId/discover-parents/:provideranddiscover-ancestors/:provider - Discover buttons in ProviderDataTable with per-row and "Discover All" BFS options
parentsNeedDiscoveryfield on provider links for smart UI hints
Ancestry Photo Upload (v0.5.3)
- Upload local photos to Ancestry via Playwright browser automation
ancestry-upload.service.ts: compare, upload, auto-login with stored credentialsUploadToAncestryDialog.tsx: emerald-themed upload dialog with photo preview- API endpoints:
compare-for-ancestry-uploadandupload-to-ancestry - Upload button on Ancestry row in ProviderDataTable
Login Polling Fix (v0.5.3)
- Replaced fixed 5-second
waitForTimeoutafter login submit with 500ms polling loop - Google OAuth and fast logins now detected within ~500ms instead of waiting full 5 seconds
- Polls
checkLoginStatusand error indicators every 500ms, up to 15s max timeout - Applies to all providers using
performLoginWithSelectors(FamilySearch, Ancestry, WikiTree, 23andMe)
Dead Code Removal (v0.5.3)
- Deleted
UnifiedPlatformSection.tsx(superseded by ProviderDataTable)
Data Integrity Page + Bulk Discovery (v0.5.4)
- Database maintenance dashboard at
/db/:dbId/integritywith summary cards and tabbed interface - Integrity service: provider coverage gaps, parent linkage gaps, orphaned edges, stale cache detection
- Bulk discovery service: database-wide automated parent ID discovery with SSE progress and cancellation
- Parents tab: provider selector, "Discover All" button with real-time progress bar
- Coverage tab: persons with incomplete provider links shown with linked/missing badges
- Orphans tab: broken parent edges with missing person indicators
- Stale tab: configurable age threshold with color-coded staleness
- API endpoints at
/api/integrity/:dbIdfor all checks and bulk operations - Sidebar nav item with ShieldCheck icon under each database
Full Changelog
Full Diff: v0.4.16...v0.5.0