Skip to content

Commit f508cc2

Browse files
authored
Merge pull request #5 from atomantic/dev
v0.5.x: Multi-Platform Comparison, Data Integrity, and UI Redesign
2 parents c3ba0e5 + 80f7372 commit f508cc2

72 files changed

Lines changed: 10463 additions & 1542 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changelog/v0.5.x.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# Release v0.5.x - Multi-Platform Comparison & UI Redesign
2+
3+
Released: 2026-01-25
4+
5+
## Overview
6+
7+
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.
8+
9+
## New Features
10+
11+
### Multi-Platform Data Comparison (v0.5.0)
12+
- Compare person data across multiple genealogy providers side-by-side
13+
- Field-by-field comparison with visual indicators: ✓ match, ⚠ different, — missing
14+
- Unified provider cache structure at `data/provider-cache/{provider}/{externalId}.json`
15+
- Download/refresh data from providers directly from the UI
16+
- Collapsible field comparison panel showing divergences
17+
18+
### Compact PersonDetail Layout (v0.5.0)
19+
- Redesigned person detail page with more efficient use of screen space
20+
- Side-by-side Vital Events (birth/death/burial) and Family cards at top
21+
- Inline tags for Also Known As and Occupations
22+
- Unified Platforms & Data section combining provider links and comparison
23+
- Compact bio section
24+
25+
### Link Platform Dialog (v0.5.0)
26+
- New modal dialog for linking Wikipedia, Ancestry, and WikiTree profiles
27+
- Platform-specific styling and placeholder text
28+
- Keyboard support (Escape to close, Enter to submit)
29+
- Auto-focus on URL input when opened
30+
31+
### Ancestry Scraper Updates (v0.5.0)
32+
- Updated selectors for 2024/2025 Ancestry DOM structure
33+
- Extracts name from `.userCardTitle`
34+
- Extracts birth/death from `.userCardEventDetail` spans
35+
- Extracts parents from Relationships section
36+
- Extracts profile photo URL
37+
- Proper handling of "Unknown" and "Living" status values
38+
39+
## New Files
40+
41+
### Client Components
42+
- `client/src/components/person/ProviderDataTable.tsx` - Unified provider data table with photos, status, and actions
43+
- `client/src/components/person/UnifiedPlatformSection.tsx` - Combined provider links and comparison table (replaced by ProviderDataTable)
44+
- `client/src/components/person/LinkPlatformDialog.tsx` - Modal dialog for linking platforms
45+
- `client/src/components/person/VitalEventCard.tsx` - Compact vital event display with editing
46+
- `client/src/components/ui/EditableDate.tsx` - Inline date editor with genealogy format validation
47+
- `client/src/components/ui/EditableField.tsx` - Inline text field editor
48+
- `client/src/components/ui/EditableList.tsx` - Inline list editor
49+
50+
### Server Services
51+
- `server/src/services/multi-platform-comparison.service.ts` - Provider data comparison logic
52+
- `server/src/services/familysearch-refresh.service.ts` - FamilySearch data refresh
53+
- `server/src/services/familysearch-upload.service.ts` - Upload changes to FamilySearch
54+
- `server/src/services/local-override.service.ts` - Local override management
55+
56+
### Scripts
57+
- `scripts/migrate-provider-cache.ts` - Migration script for unified cache structure
58+
59+
## API Endpoints
60+
61+
### New Endpoints
62+
- `GET /api/sync/:dbId/:personId/multi-platform-compare` - Get full multi-platform comparison
63+
- `POST /api/sync/:dbId/:personId/refresh-provider/:provider` - Refresh data from specific provider
64+
65+
## Technical Details
66+
67+
### Provider Cache Structure
68+
Provider data is now cached in a unified structure:
69+
```
70+
data/provider-cache/
71+
familysearch/{fsId}.json
72+
ancestry/{externalId}.json
73+
wikitree/{externalId}.json
74+
```
75+
76+
### Comparison Algorithm
77+
- FamilySearch serves as the baseline (primary source)
78+
- Field comparison uses fuzzy matching for places (contains check)
79+
- Alternate names are sorted alphabetically before comparison to avoid false differences
80+
- Missing values are distinguished from empty values
81+
82+
### Provider Data Table (v0.5.2)
83+
- New unified `ProviderDataTable` component replacing `UnifiedPlatformSection`
84+
- SparseTree shown as primary row with all provider data below
85+
- Columns: Source, Photo, Name, Birth, Death, Father, Mother, Children, AKA, Occupations, Status, Actions
86+
- Photo thumbnails with hover "Use Photo" overlay
87+
- Download buttons now include photo fetching automatically
88+
- Upload to FamilySearch dialog with photo upload option via Playwright automation
89+
90+
### Compact Header & Vitals (v0.5.2)
91+
- Redesigned header: smaller photo (24x24), inline edit button next to name
92+
- IDs shown inline without expand/collapse toggle
93+
- Vital events condensed to single row (Birth • Death • Burial)
94+
- Parents and children shown in compact row below vitals
95+
- Also Known As names now alphabetically sorted
96+
97+
### Parent Provider ID Discovery (v0.5.3)
98+
- Automatically discover and link provider-specific IDs for a person's parents
99+
- Scraper `extractParentIds` method added to FamilySearch, Ancestry, and WikiTree scrapers
100+
- Parent discovery service with name matching (accent normalization, partial match)
101+
- Single-person discovery and BFS ancestor traversal modes
102+
- API endpoints: `POST /api/sync/:dbId/:personId/discover-parents/:provider` and `discover-ancestors/:provider`
103+
- Discover buttons in ProviderDataTable with per-row and "Discover All" BFS options
104+
- `parentsNeedDiscovery` field on provider links for smart UI hints
105+
106+
### Ancestry Photo Upload (v0.5.3)
107+
- Upload local photos to Ancestry via Playwright browser automation
108+
- `ancestry-upload.service.ts`: compare, upload, auto-login with stored credentials
109+
- `UploadToAncestryDialog.tsx`: emerald-themed upload dialog with photo preview
110+
- API endpoints: `compare-for-ancestry-upload` and `upload-to-ancestry`
111+
- Upload button on Ancestry row in ProviderDataTable
112+
113+
### Login Polling Fix (v0.5.3)
114+
- Replaced fixed 5-second `waitForTimeout` after login submit with 500ms polling loop
115+
- Google OAuth and fast logins now detected within ~500ms instead of waiting full 5 seconds
116+
- Polls `checkLoginStatus` and error indicators every 500ms, up to 15s max timeout
117+
- Applies to all providers using `performLoginWithSelectors` (FamilySearch, Ancestry, WikiTree, 23andMe)
118+
119+
### Dead Code Removal (v0.5.3)
120+
- Deleted `UnifiedPlatformSection.tsx` (superseded by ProviderDataTable)
121+
122+
### Data Integrity Page + Bulk Discovery (v0.5.4)
123+
- Database maintenance dashboard at `/db/:dbId/integrity` with summary cards and tabbed interface
124+
- Integrity service: provider coverage gaps, parent linkage gaps, orphaned edges, stale cache detection
125+
- Bulk discovery service: database-wide automated parent ID discovery with SSE progress and cancellation
126+
- Parents tab: provider selector, "Discover All" button with real-time progress bar
127+
- Coverage tab: persons with incomplete provider links shown with linked/missing badges
128+
- Orphans tab: broken parent edges with missing person indicators
129+
- Stale tab: configurable age threshold with color-coded staleness
130+
- API endpoints at `/api/integrity/:dbId` for all checks and bulk operations
131+
- Sidebar nav item with ShieldCheck icon under each database
132+
133+
## Full Changelog
134+
135+
**Full Diff**: https://github.com/atomantic/SparseTree/compare/v0.4.16...v0.5.0

0 commit comments

Comments
 (0)