-
-
Notifications
You must be signed in to change notification settings - Fork 97
V4.0.0 (Schema 8 + Architect Web) #511
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
buckhalt
wants to merge
782
commits into
next
Choose a base branch
from
v4
base: next
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+47,833
−18,616
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…n partner is added
Swap the BFS-based layoutFamilyTree engine and manual EdgeRenderer SVG geometry for the kinship2-ported alignPedigree + computeConnectors pipeline. A new pedigreeAdapter module bridges the store's Map-based data model and the library's array-based PedigreeInput format.
Convert solveQP from CJS require to ESM import for Vite/browser compatibility. Add quadprog type declaration. Gracefully fall back to unoptimized positions when the QP solver fails with inconsistent constraints. Add Storybook stories for visual evaluation of pedigree layouts.
The R code uses nid > 0 to identify valid entries (1-based indices). The TS port uses 0-based indices, so person 0 has nid = 0, which is indistinguishable from the empty sentinel. This caused missing QP variable assignments and contradictory constraints (e.g. pos[k] <= -1 vs pos[k] >= 0), triggering "constraints are inconsistent" errors. Fix by using position-based checks (j < n[lev]) instead of value-based checks (nid > 0), since entries are always packed left-to-right.
…e story Fix the same nid > 0 bug from alignped4 in two more locations: - connectors.ts: person 0 was excluded from duplicate arc detection - scaling.ts: person 0 was excluded from x-range computation Also fix twin detection sentinel in alignPedigree.ts (use -1 instead of 0 so person index 0 is distinguishable from "no parent connection"). Add ComplexMultiGenerational storybook story with 5 generations, ex-partners at two levels, half-siblings, and cousins.
The require() call in autohint.ts failed because Vite/Node.js cannot resolve ~/path aliases via require(). This caused autohint to crash silently, falling back to sequential ordering without spouse hints, which prevented proper sibling ordering at merge boundaries and resulted in duplicate node appearances (e.g. father shown twice). Replaced the require() lazy import with a layoutFn callback parameter that alignPedigree passes when calling autohint, breaking the circular dependency cleanly.
… story FamilyTreeShells hydration was reading sex only from stage metadata, defaulting to 'female' when metadata was missing. This caused all parent edges to go to motherIndex, breaking the layout with "only one parent" warnings. Now reads sex from node.attributes[nodeSexVariable] first (the primary source), falling back to metadata then 'female'. This matches how FamilyTreeProvider initializes the store. Added SimulatedHydration story to test the Redux hydration code path.
The pedigree layout uses 1-based levels (from R kinship2), so generation 0 is always empty and actual data starts at generation 1. This caused 200px top spacing (1 * rowHeight). Added y-normalization to pedigreeLayoutToPositions and buildConnectorData to shift all y coordinates so the topmost generation starts at y=0.
Twin set IDs were set to Math.min(id1, id2), so if person 0 was a twin, the set ID would be 0. But the sentinel for "not in a twin set" was also 0, causing person 0's twin set to be skipped. Changed sentinel from 0 to -1, and updated checks from "> 0" to ">= 0".
adds ability to create ex partners and select which existing network member the person is an ex partner of, name both parents if there are multiple possible parents, remove automatic creation of ex partners, add tests to cover this behavior
includes added tests
remove ex-partner from Relationship tyope, replace hasParentExPartner with hasParentWithMultiplePartners, add hasGrandparentWithMultiplePartners for half-aunt/uncle support, add additional partner option to relationship form, add initial setup fields for parents additional partners, half-sibling options only available when parent has 2+ partners, remove exPartnerPairs tracking from pedigreeADapter, update tests/storybook for new terminology
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implementation details:
Known limitations:
TODO: