Skip to content

v0.5.4

Choose a tag to compare

@github-actions github-actions released this 28 Jan 04:15
· 253 commits to main since this release
f508cc2

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 .userCardEventDetail spans
  • 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 actions
  • client/src/components/person/UnifiedPlatformSection.tsx - Combined provider links and comparison table (replaced by ProviderDataTable)
  • client/src/components/person/LinkPlatformDialog.tsx - Modal dialog for linking platforms
  • client/src/components/person/VitalEventCard.tsx - Compact vital event display with editing
  • client/src/components/ui/EditableDate.tsx - Inline date editor with genealogy format validation
  • client/src/components/ui/EditableField.tsx - Inline text field editor
  • client/src/components/ui/EditableList.tsx - Inline list editor

Server Services

  • server/src/services/multi-platform-comparison.service.ts - Provider data comparison logic
  • server/src/services/familysearch-refresh.service.ts - FamilySearch data refresh
  • server/src/services/familysearch-upload.service.ts - Upload changes to FamilySearch
  • server/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 comparison
  • POST /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 ProviderDataTable component replacing UnifiedPlatformSection
  • 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 extractParentIds method 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/:provider and discover-ancestors/:provider
  • Discover buttons in ProviderDataTable with per-row and "Discover All" BFS options
  • parentsNeedDiscovery field 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 credentials
  • UploadToAncestryDialog.tsx: emerald-themed upload dialog with photo preview
  • API endpoints: compare-for-ancestry-upload and upload-to-ancestry
  • Upload button on Ancestry row in ProviderDataTable

Login Polling Fix (v0.5.3)

  • Replaced fixed 5-second waitForTimeout after login submit with 500ms polling loop
  • Google OAuth and fast logins now detected within ~500ms instead of waiting full 5 seconds
  • Polls checkLoginStatus and 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/integrity with 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/:dbId for all checks and bulk operations
  • Sidebar nav item with ShieldCheck icon under each database

Full Changelog

Full Diff: v0.4.16...v0.5.0