Family Tree
Manage language genealogy relationships, deriving child languages from a proto-language.
Navigate: click Family Tree in the sidebar.
Topology Visualization
Tree structure displaying all languages, highlighting the active language. Click a node to switch.
Language Derivation
Create a child language from a parent, copying phonology, grammar, lexicon, and corpus data into an independent branch.
- Child entries keep the same
entry_idas parent entries for deterministic parent-child alignment - Child SCA rules are initialized empty so each branch can define its own historical changes
- After derivation, the app automatically switches to the newly created child language
Steps
- Select the parent language in the family tree
- Click "Derive"
- Enter the child language name
- The system fully copies all parent data
Step-by-step: Create a clean daughter branch
- Freeze parent language baseline (lexicon + grammar).
- Derive daughter language from that parent.
- Rename the daughter language clearly (for example
Daughter A). - Switch to daughter and add independent SCA rules.
- Keep parent unchanged for historical reference.
Pull Sync
Pull Sync compares inherited entries between parent and child and builds add / update candidates:
- Add: inherited entry exists in parent but not in child
- Update: inherited entry changed on one side and can be merged safely
- Conflict: both parent and child changed; child version is kept (no auto-overwrite)
When clicking Pull & Apply Sound Changes, candidates are transformed with the child language SCA rule sets and written back with etymology links (parent_entry_id + applied_sound_changes).
Sense-level differences (gloss/definitions/examples) do not trigger Pull Sync updates. Semantics are treated as child-language evolvable content.
Legacy Data Migration
If old projects miss inherited-link fields (parent_entry_id, source_language_id, etc.), use:
- Preview Migration (dry-run): scan and preview fixes without file writes
- Migrate Legacy Entries: apply and persist the fixes
Step-by-step: Continuous sync from parent
- Add new words in parent language.
- Switch to child language.
- Open
Family Tree -> Pull Sync. - Click
Check Updates. - Review new item count.
- Click
Pull & Apply Sound Changes.
Borrowing
Borrow vocabulary from any other language:
- Click "Borrow"
- Select the source language
- Browse/search the source lexicon
- Select words to borrow, auto-marked as "Borrowed" origin
Step-by-step: Borrow with control
- Open borrowing panel in the target language.
- Select source language.
- Search by spelling/gloss.
- Select target entries (single or multi).
- Confirm import and verify etymology marker.
Multi-Language Workspace
- Language switcher: Click the language name (top-left) to enter the family tree
- Independent data: Each language has its own phonology, grammar, lexicon, SCA, and corpus
- Genealogy: Languages linked via parent_id
Advanced examples
Example A: Parent-child divergence
- Keep shared core vocabulary in parent.
- In child, apply SCA and add local derivation rules.
- Use pull sync periodically for newly added parent roots.
- Re-run corpus checks to keep child texts consistent.
Example B: Borrowing chain with provenance
- Borrow a cultural term from sibling language.
- Keep inherited forms through pull sync from parent.
- Compare etymology markers (
evolvedvsborrowed) in lexicon.