Skip to content

Release v0.2.x: Multi-Platform Linking & Tree Views#1

Merged
atomantic merged 27 commits into
mainfrom
dev
Jan 22, 2026
Merged

Release v0.2.x: Multi-Platform Linking & Tree Views#1
atomantic merged 27 commits into
mainfrom
dev

Conversation

@atomantic
Copy link
Copy Markdown
Owner

Overview

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.

🎉 New Features

Multiple Tree View Modes

  • Focus Navigator: Navigate one person at a time with breadcrumb trail
  • Pedigree Chart: Classic vertical tree with expandable generations
  • Generational Columns: Horizontal columns organized by generation
  • Classic: Original SVG-based tree with zoom/pan

Lazy Loading for Deep Ancestry

  • Initial load of 10 generations for columns view
  • "Load 5 more" button appears when more ancestors are available
  • Successfully tested loading 21 generations with 17,000+ ancestors

View Mode URL Persistence

  • Tree view mode saved in URL query params (?view=columns)

Ancestry.com Linking

  • Link persons to their Ancestry.com profiles with automatic photo extraction
  • Browser-based scraping with auto-login support using saved credentials
  • Srcset parsing to extract highest resolution photos (5x = maxside=1800)
  • Auto-launches/connects browser when needed

WikiTree Linking

  • Link persons to their WikiTree profiles with photo extraction
  • HTTP-based scraping (no auth required for public profiles)
  • Extracts profile photo and description

Manual Photo Selection

  • "Use Photo" button for each linked platform
  • Separated linking from photo fetching for user control
  • Support for FamilySearch, Wikipedia, Ancestry, and WikiTree photos
  • Photos stored locally with platform-specific naming ({personId}-ancestry.jpg, etc.)

Unified Platforms UI

  • Consolidated all platform links into single "Platforms" section in PersonDetail
  • FamilySearch, Wikipedia, Ancestry, WikiTree all shown together
  • Link and "Use Photo" buttons for each platform

🔧 Improvements

Tree Visualization

  • Simplified Generation Labels: Gen 3+ shows "1st/2nd/3rd Great-Grandparents" instead of verbose labels
  • Columns View Optimization: Only displays known ancestors (hides unknown placeholders)
  • Header Styling: Fixed transparent header in columns view to prevent text collision when scrolling

Photo Priority

  • Updated sparse tree view to use photos in order:
    1. Ancestry (highest priority)
    2. WikiTree
    3. Wikipedia
    4. FamilySearch scraped (lowest priority)

Data Model

  • Added photoUrl field to PlatformReference to store discovered photo URLs before downloading

🐛 Bug Fixes

  • Browser auto-connects when linking Ancestry profiles (no more "Browser not connected" errors)
  • Ancestry photo now appears in sparse tree view
  • Fix duplicate React keys in pedigree view
  • Fix pedigree bracket direction
  • Fix pedigree view bracket lines - connect vertical line below horizontal
  • Fix disconnected connector lines in Focus Navigator view
  • Migrated changelog to .changelog/ directory format

Stats

  • 34 files changed
  • ~3,720 insertions, ~616 deletions

github-actions Bot and others added 16 commits January 22, 2026 04:06
- Indexer now extracts FamilySearch token from browser session cookies
- Spawns CLI with FS_ACCESS_TOKEN for API-based indexing
- Real-time CLI output forwarded via SSE to browser UI
- IndexerPage rewritten with two-column layout and output console
- Fixed ancestry tree vertical connector lines visibility
- Fixed hasMoreAncestors logic to hide expand arrows when loaded
- Added auto-centering on expanded nodes
- Added tree line CSS variables for better theme support
- Add browserSseManager for real-time browser status updates via SSE
- Add /api/browser/events endpoint for SSE subscriptions
- Emit status updates on connect, disconnect, launch, and navigation
- Update IndexerPage and BrowserSettingsPage to use SSE instead of polling
- Reorganize Indexer page: 3-column control layout with full-width output below
- Add missing Ignore IDs input field to indexer form
- Add Ancestry.com linking with browser-based scraping and auto-login
- Add WikiTree linking with HTTP-based profile/photo extraction
- Add manual "Use Photo" button for all platforms (deferred download)
- Add FamilySearch photo support in unified platforms UI
- Update photo priority: Ancestry > WikiTree > Wikipedia > FamilySearch
- Auto-launch/connect browser when linking Ancestry profiles
- Extract highest resolution photos using srcset parsing
- Consolidate platform links into single unified UI section
- Add four visualization modes: Focus Navigator, Pedigree Chart,
  Generational Columns, and Classic SVG tree
- Implement lazy loading to fetch additional generations on demand
- Simplify generation labels (1st/2nd/3rd Great-Grandparents)
- Hide unknown ancestor placeholders in columns view
- Fix transparent header causing text collision when scrolling
- Persist view mode in URL query params (?view=columns)
- Add Git Workflow and Release Changelog Process sections to CLAUDE.md
- Create .changelog/v0.2.x.md with current 0.2.x release entries
- Create .changelog/README.md with changelog process documentation
- Update .changelog/v0.1.x.md to match new format
- Remove root CHANGELOG.md (migrated to .changelog/)
- Use composite keys (gen-idx-id) in GenerationalColumnsView to handle
  pedigree collapse where same ancestor appears multiple times
- Fix breadcrumb keys in FocusNavigatorView
- Flip pedigree bracket direction to open upward (└─┘) showing
  correct child-to-parent connections
- Add birthPlace, deathPlace, occupation fields to AncestryPersonCard
- Populate extended fields in ancestry-tree.service
- Redesign FocusNavigatorView with robust cards:
  - Parent cards show label, name, lifespan, and birthPlace
  - Focused card shows full details with all available fields
  - Shows generation level indicator (Parent, Grandparent, etc.)
  - "Click to view parents" hint when more ancestors available
- Remove individual vertical lines from parent cards
- Create unified connector bracket spanning full parent container width
- Position vertical lines aligned with parent card centers
- Add proper spacing between connector and focused person card
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This release adds significant functionality for multi-platform genealogy linking and introduces four new tree visualization modes. The PR implements Ancestry.com and WikiTree integration with automatic photo extraction, plus lazy loading for deep ancestry trees with 10+ generations.

Changes:

  • Added four tree view modes (Focus, Pedigree, Columns, Classic) with URL persistence
  • Implemented Ancestry.com and WikiTree profile linking with browser-based scraping and auto-login
  • Refactored data model to separate father/mother parent units for better tree structure
  • Added SSE-based browser status updates and real-time indexer output
  • Unified platform UI with manual photo selection controls

Reviewed changes

Copilot reviewed 32 out of 34 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
shared/src/index.ts Added photoUrl to PlatformReference, split parentUnits into father/mother specific arrays, extended AncestryPersonCard fields
server/src/utils/browserSseManager.ts New SSE manager for real-time browser status broadcasting
server/src/services/indexer.service.ts Integrated CLI spawning with FamilySearch token extraction and real-time progress streaming
server/src/services/browser.service.ts Added FamilySearch token extraction and SSE status broadcasting
server/src/services/augmentation.service.ts Implemented Ancestry/WikiTree linking with photo scraping and platform-specific photo fetching
server/src/services/ancestry-tree.service.ts Updated to use separated father/mother parent units
server/src/routes/augmentation.routes.ts Added endpoints for Ancestry/WikiTree linking and photo fetching
client/src/components/person/PersonDetail.tsx Redesigned platforms UI with unified section and manual photo controls
client/src/components/indexer/IndexerPage.tsx Complete UI redesign with browser status panel and real-time output console
client/src/components/ancestry-tree/views/* Three new tree view implementations with different visualization strategies
.changelog/v0.2.x.md Comprehensive release notes following new changelog structure

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread client/src/components/ancestry-tree/views/PedigreeChartView.tsx Outdated
Comment thread shared/src/index.ts
Comment thread server/src/services/indexer.service.ts Outdated
Comment thread server/src/services/indexer.service.ts
Comment thread server/src/services/augmentation.service.ts
Comment thread server/src/services/augmentation.service.ts
Comment thread server/src/services/browser.service.ts Outdated
atomantic and others added 3 commits January 22, 2026 06:24
- fscget.js now properly categorizes errors (network vs API)
- Transient errors (ETIMEDOUT, ECONNRESET, etc.) trigger automatic retry
- Exponential backoff: 5s, 10s, 20s between retries (up to 3 attempts)
- Failed fetches skip the person and continue indexing instead of crashing
- Fixes "Cannot read properties of undefined (reading 'data')" crash
- Add array validation for parentUnits in PedigreeChartView to handle malformed data
- Add explicit typing for currentPerson field in IndexerProgress
- Validate CLI executable exists before spawning indexer process
- Add logging for WikiTree HTML parsing when patterns don't match
- Add explicit logging when auto-login is triggered for Ancestry
- Document FamilySearch token cookie priority and add logging
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 34 out of 36 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread index.js Outdated
Comment thread server/src/services/browser.service.ts Outdated
atomantic and others added 5 commits January 22, 2026 08:45
- Pre-populate FamilySearch, Ancestry, WikiTree, MyHeritage, Geni,
  FindMyPast, Find A Grave, and 23andMe providers (all disabled by default)
- Users just enable and configure the ones they want instead of manually
  adding each provider
- Remove "Add Provider" button from UI since all providers are pre-seeded
- Add 23andMe to platform defaults and colors
- Include medieval Swiss nobility lineage as bundled sample
- Server loads databases from both data/ and samples/ directories
- Sample databases marked with isSample flag in DatabaseInfo
- Protected from deletion (only user databases can be deleted)
- User databases override samples with same ID
Support for categorized name extraction from FamilySearch GEDCOMX data:
- birthName: populated when display name is not a birth name (e.g., married name)
- marriedNames: array of names taken after marriage
- aliases: array of AlsoKnownAs names (nicknames, alternate spellings)
- alternateNames: maintained for backwards compatibility
@atomantic atomantic merged commit efc6068 into main Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants