Skip to content

Commit efc6068

Browse files
authored
Release v0.2.x
Release v0.2.x: Multi-Platform Linking & Tree Views
2 parents 0b0a8a0 + 076ff92 commit efc6068

41 files changed

Lines changed: 4207 additions & 746 deletions

Some content is hidden

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

.changelog/README.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# Release Changelogs
2+
3+
This directory contains **all** release notes for SparseTree. Unlike traditional projects that maintain a root `CHANGELOG.md` file, we use version-specific files that evolve with development and automatically archive on release.
4+
5+
**No root CHANGELOG.md needed** - all changelog content lives in this directory.
6+
7+
## Structure
8+
9+
Each minor version series has its own markdown file following the naming convention:
10+
11+
```
12+
v{major}.{minor}.x.md
13+
```
14+
15+
The "x" is a literal character, not a placeholder - it represents the entire minor version series (e.g., all 0.2.x releases share `v0.2.x.md`).
16+
17+
Examples:
18+
- `v0.1.x.md` - Used for releases 0.1.1, 0.1.2, 0.1.3, etc.
19+
- `v0.2.x.md` - Used for releases 0.2.1, 0.2.2, 0.2.3, etc.
20+
- `v1.0.x.md` - Used for releases 1.0.1, 1.0.2, 1.0.3, etc.
21+
22+
## Format
23+
24+
Each changelog file should follow this structure:
25+
26+
```markdown
27+
# Release v{major}.{minor}.x - {Descriptive Title}
28+
29+
Released: YYYY-MM-DD
30+
31+
## Overview
32+
33+
A brief summary of the release, highlighting the main theme or most important changes.
34+
35+
## 🎉 New Features
36+
37+
### Feature Category 1
38+
- Feature description with technical details
39+
- Another feature in this category
40+
41+
## 🐛 Bug Fixes
42+
43+
### Fix Category
44+
- Description of what was fixed
45+
- Impact and technical details
46+
47+
## 🔧 Improvements
48+
49+
### Improvement Category
50+
- What was improved
51+
- Why it matters
52+
53+
## 🗑️ Removed
54+
55+
### Deprecated Features
56+
- What was removed
57+
- Why it was removed
58+
59+
## 📦 Installation
60+
61+
\`\`\`bash
62+
git clone https://github.com/atomantic/SparseTree.git
63+
cd SparseTree
64+
npm run install:all
65+
pm2 start ecosystem.config.cjs
66+
\`\`\`
67+
68+
## 🔗 Full Changelog
69+
70+
**Full Diff**: https://github.com/atomantic/SparseTree/compare/v{prev}...v{major}.{minor}.x
71+
```
72+
73+
## Workflow
74+
75+
### During Development
76+
77+
Update `.changelog/v0.2.x.md` **every time** you add features and fixes:
78+
- Add entries under appropriate emoji sections (🎉 Features, 🐛 Fixes, 🔧 Improvements)
79+
- Keep the version in the file as `v0.2.x` (literal x)
80+
- Don't worry about the final patch number - it will be substituted automatically
81+
82+
### Before Merging to Main
83+
84+
Final review before release:
85+
- Ensure all changes are documented
86+
- Add release date (update "YYYY-MM-DD" to actual date)
87+
- Review and polish the content
88+
- Commit the changelog file
89+
90+
### On Release
91+
92+
The GitHub Actions workflow automatically:
93+
1. Reads `.changelog/v0.2.x.md`
94+
2. Replaces all instances of `0.2.x` with the actual version (e.g., `0.2.5`)
95+
3. Creates the GitHub release with the substituted changelog
96+
4. Renames `v0.2.x.md``v0.2.5.md` (preserves git history)
97+
5. Bumps dev to next minor version
98+
99+
### After Release
100+
101+
- Create a new `v0.3.x.md` for the next minor version
102+
- Copy the previous version as a template
103+
104+
## Best Practices
105+
106+
### Do:
107+
- Update the changelog file **as you work** (not just before release)
108+
- Use clear, descriptive section headings
109+
- Group related changes together
110+
- Include technical details where helpful
111+
- Explain the "why" not just the "what"
112+
- Use emoji section headers for visual organization
113+
114+
### Don't:
115+
- Create a root `CHANGELOG.md` file
116+
- Use vague descriptions like "various improvements"
117+
- Include internal implementation details users don't care about
118+
- Leave placeholder or TODO content
119+
- Change the version from `v0.2.x` to specific patch numbers during development

.changelog/v0.1.x.md

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
1-
# Release v0.1.x
1+
# Release v0.1.x - Initial Release
22

3-
## Features
3+
Released: 2026-01-20
44

5+
## Overview
6+
7+
Initial release of SparseTree - a genealogy toolkit for creating local databases of your family tree with sparse tree visualizations.
8+
9+
## 🎉 New Features
10+
11+
### Core Functionality
512
- Local web UI enhancement of FamilySearchFinder
613
- Multi-platform genealogy provider support (FamilySearch, Ancestry, WikiTree, 23andMe)
714
- Browser-based scraping with Playwright automation
815
- Provider login credentials with encrypted storage for auto-authentication
16+
17+
### Visualization
918
- FamilySearch-style ancestry tree visualization
1019
- Favorites system with sparse tree visualization
11-
- GEDCOM import/export support
1220
- Path finding between ancestors (shortest/longest/random)
21+
22+
### Data Management
23+
- GEDCOM import/export support
1324
- Light/dark theme support
1425

15-
## Installation
26+
### Infrastructure (v0.1.1)
27+
- Browser status polling replaced with SSE
28+
- CDP browser integration for indexer
29+
- Ancestry tree line improvements
30+
31+
## 📦 Installation
1632

1733
```bash
1834
git clone https://github.com/atomantic/SparseTree.git
1935
cd SparseTree
2036
npm run install:all
2137
pm2 start ecosystem.config.cjs
2238
```
39+
40+
## 🔗 Full Changelog
41+
42+
**Full Diff**: https://github.com/atomantic/SparseTree/releases/tag/v0.1.x

.changelog/v0.2.x.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
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

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ node_modules/
2222
server/dist/
2323
client/dist/
2424
shared/types/
25+
*.tsbuildinfo
2526

2627
# IDE
2728
.vscode/
2829
.idea/
2930

3031
# Screenshots (may contain personal family data)
31-
images/
32+
images/
33+
.playwright-mcp

CLAUDE.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,46 @@ Persistent Chrome with CDP on port 9920:
121121
```
122122
Profile data stored in `.browser/data/`. Connect via `ws://localhost:9920`.
123123

124+
## Git Workflow
125+
126+
- **dev**: Active development (auto-bumps patch on CI pass)
127+
- **main**: Production releases only
128+
- PR `dev → main` creates tagged release and preps next version
129+
- **Use `/gitup` to push** - The dev branch receives auto version bump commits from CI. Always use `git pull --rebase --autostash && git push` (or `/gitup`) instead of plain `git push`.
130+
- Update `.changelog/v{major}.{minor}.x.md` when making changes (see Release Changelog Process below)
131+
- **Commit after each feature or bug fix** - lint, commit, and push automatically to keep work safe
132+
133+
## Release Changelog Process
134+
135+
All release notes are maintained in `.changelog/v{major}.{minor}.x.md` files. Each minor version series has a single changelog file that accumulates changes throughout development. **No root CHANGELOG.md** - all changelog content lives in `.changelog/`.
136+
137+
### During Development
138+
139+
**Always update `.changelog/v0.2.x.md`** when you make changes:
140+
- Add entries under appropriate emoji sections (🎉 Features, 🐛 Fixes, 🔧 Improvements, 🗑️ Removed)
141+
- Keep the version as `v0.2.x` throughout development (don't change it to 0.2.2, 0.2.3, etc.)
142+
- Group related changes together for clarity
143+
- Explain the "why" not just the "what"
144+
145+
### Before Releasing to Main
146+
147+
Final review before merging `dev → main`:
148+
- Ensure all changes are documented in `.changelog/v0.2.x.md`
149+
- Add the release date (update "YYYY-MM-DD" to actual date)
150+
- Polish descriptions for clarity
151+
- Commit the changelog
152+
153+
### On Release (Automated)
154+
155+
When merging to `main`, the GitHub Actions workflow automatically:
156+
1. Reads `.changelog/v0.2.x.md`
157+
2. Replaces all instances of `0.2.x` with actual version (e.g., `0.2.5`)
158+
3. Creates the GitHub release with substituted changelog
159+
4. Renames `v0.2.x.md``v0.2.5.md` (preserves git history)
160+
5. Bumps dev to next minor version (e.g., 0.3.0)
161+
162+
See `.changelog/README.md` for detailed format and best practices.
163+
124164
## Notes
125165
- The database has cyclic loop issues (people linked as their own ancestors) - use longest path method to detect these
126166
- ES modules (`"type": "module"` in package.json)

client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fsf/client",
3-
"version": "1.0.0",
3+
"version": "0.2.10",
44
"type": "module",
55
"scripts": {
66
"dev": "vite --port 6373",

0 commit comments

Comments
 (0)