Family Tree
Version 1.2
This update package is v1.2, shown next to the Changelog link at the bottom of the Family Tree. The entries below it, back to the v1.1 entries, are everything in this package.
Family
These profile photos are randomly selected and refresh on each reload.
The cycling words above come from the same shared list as the home page.
The interactive map could not load (the map library comes from a CDN). The birthplace list below still works in full.
Map data © OpenStreetMap contributors. Birthplaces that could not be placed are listed in full below, never guessed.
Only signed-in users see this list. It shows the key details still missing for each person — last name, date of birth, place of birth, father, mother, and profile picture — so they can be filled in. Open a person to add what is missing.
Every change to this site and the home page, newest first. Times are Chicago time.
Family Tree
This update package is v1.2, shown next to the Changelog link at the bottom of the Family Tree. The entries below it, back to the v1.1 entries, are everything in this package.
Family Tree
A new "Missing details" view (signed-in users only) lists everyone still missing any of the six key details — last name, date of birth, place of birth, father, mother, profile picture — most gaps first, with the missing fields named per person. It follows the search text, opens the Profile Page on click, and offers Edit where the viewer may edit that person. No database change. Ships as v1.2.
Family Tree
The Profile Page now has Education and Work history sections with structured entries: school + degree/qualification + years + details, and employer + job title + years + details, added one at a time in the Add/Edit form and reorderable with up/down buttons. Family-member pending edits do not cover these (submitter/admin only, like photos). Run migrate.php once (same run) for the two new tables. Ships as v1.2.
Family Tree
Fixed a bug where every gallery photo upload failed: the Date Taken helper functions were defined inside the request switch, so they were never defined and the upload errored. They now sit before the dispatch, and uploads with and without a Date Taken were verified live against a test database. Ships as v1.2.
Family Tree
The search field no longer shows on the Constellation view. Any search text is kept, so it still applies when switching to Tree, Timeline, Directory, Map, or Gallery. Ships as v1.2.
Family Tree
Gallery photos can now carry an optional Date Taken, set when the photos are added (one date per batch, like the caption) in the Add photos dialog and in the Add/Edit form. It shows under the photo on the Profile Page and in the photo viewer, and on the Gallery wall. Profile photos are unchanged. Run migrate.php once (same run) for the new date_taken column — uploads keep working before that run, with the date ignored. Ships as v1.2.
Family Tree
Direct family members (parents, children, partners, siblings) can now edit a person but not delete them, and their edits wait in a Pending edits tab for admin approval — the live record is unchanged until approved. Text fields only in this first version; photos, gallery, documents, parents, and partners stay submitter/admin-only. Editors see their proposals in My edits and get an email when the admin approves or rejects. Ships as v1.2.
Family Tree
An account can be linked to the record in the tree that is that person: users request a link from the Family Tree header and the admin approves it on the Users tab, or the admin sets or removes a link directly in Edit user (one record links to at most one account). A linked user edits their own record directly; the link is what decides who counts as direct family. Ships as v1.2.
Family Tree
Personal notes and the person Notes field have no character cap (the personal-notes cap was briefly 2,000, then 10,000, and is now removed). The signup form notes stay capped at 2,000. Ships as v1.2.
Family Tree
Any signed-in user can now add a personal note about anyone from their Profile Page ("Add personal note" — "Add any special thoughts about this person"), even if they did not submit that person. Notes show on the Profile Page with the user who wrote them; a note can be deleted by its author or an admin. Ships as v1.2.
Home page
Fixed a bug where the password field and Continue button stayed visible above the Setup Account / Log in / Visit as Guest choices after the shared password was accepted. Now only the choices show. Ships as v1.2.
Family Tree
Each selected partner now gets a Marriage date and Marriage place row right under the Partner(s) selector. The marriage is stored per couple and shows on the detail popup and Profile Page as "Married to X on <date> in <place>". Ships as v1.2.
Family Tree
The Add/Edit person form now has a Nickname field right after Last name. It shows in quotes after the first name across the site, e.g. Mary "Molly" Smith, and is searchable. Ships as v1.2.
Family Tree
The Add/Edit person form now offers a Place of death field once a death date is filled in. It shows with the death date on the Profile Page, in the Timeline, and on person cards, and is only saved when a death date is recorded. Ships as v1.2.
Family Tree
The light/dark toggle now shows a sun icon and a moon icon at the ends of the track; the thumb covers the inactive one, so the visible icon shows the current mode. Ships as v1.2.
Family Tree
The Add/Edit person form now offers a Maiden name field when gender is Female. It is shown as "First Middle Last (née Maiden)" across the site, and is only saved when gender is female. Ships as v1.2.
Family Tree
Admins now see an "Added by" dropdown in the Add/Edit person form listing all current users, and can reassign a person to another user. This also moves edit/delete rights for that person to the new submitter, and the "Submitted by" label updates. Ships as v1.2.
Family Tree
Blood type is now a dropdown with all 8 types (O-, O+, A-, A+, B-, B+, AB-, AB+) plus "Not recorded", so selections stay consistent, and the whole Medical section is enclosed in a box that sets it apart from the other form sections. Ships as v1.2.
Family Tree
The add/edit form gained a Medical section: blood type, medications, medical conditions, allergies, and an open box for anything else. On the Profile Page the details are only shown to signed-in users; signed-out visitors see the Medical heading with a clear note that it is only available when signed in. Ships as v1.1; the new database columns are added by running migrate.php once after uploading.
Family Tree
The Admin Activity tab now opens with a separate section listing user logins, account creation, and guest visits, each with IP address and timestamp. Guest visits are logged once per session when a visitor passes the shared-password gate. IP addresses now record the real visitor address behind Cloudflare instead of the Cloudflare edge address. Ships as v1.1.
Family Tree
The Light / Dark / Auto dropdown in the header is now a single toggle switch that flips between light and dark. A stored Auto setting keeps following the device until the switch is flipped once, which then saves an explicit choice. Ships as v1.1.
Family Tree
The site now tracks a version number, shown next to the Changelog link at the bottom of the Family Tree. This batch is v1.0; the version is bumped with every update package.
Family Tree
The Changelog link was removed from the home page. It now appears only at the bottom centre of the Family Tree, in small text, opening the same popup. The list itself still covers changes to both sites.
Both
A Changelog link at the bottom of the Family Tree opens a popup listing every change since the build-out began. New changes are added to the top of this list as they ship.
Family Tree 2:50 PM
Typing in the Birthplace field now offers real places to pick from, saved with one consistent spelling (for example "Kansas City, Missouri"), so one place can no longer split into two map pins. Typing free text without picking a suggestion still saves exactly what was typed.
Family Tree 2:46 PM
The six admin header controls (Admin, Users, Activity log, Email Settings, Import, Export JSON) are now a single "Admin" dropdown menu, so the header takes much less horizontal space. Every control works as before; visitors and contributors do not see the dropdown.
Home page 2:45 PM
After the shared password, the choice step now offers Setup Account, Log in, and Visit as Guest. Log in opens the Family Tree login dialog straight away for signed-out visitors.
Both 2:04 PM
The Change password popup can now always be closed (Close, Cancel, backdrop, or Escape); closing without changing while a change is forced logs the user out, so no session runs on a temporary password. A visitor already signed in to a Family Tree account is no longer asked for the shared password again when returning to the home page.
Both 1:58 PM
The site sits behind a cache that kept serving old CSS/JS after correct uploads. Asset URLs now carry a ?v= version that is bumped whenever a CSS/JS file changes, so the live site shows the new behaviour immediately.
Home page 1:51 PM
The cycling word is now centred with an "Enter" button; the visitor form became an overlay. After the shared password, visitors choose Setup Account (creates their account immediately and emails a temporary password with a login link) or Visit as Guest. The old Request Access flow and its Admin tab were removed.
Both 1:32 PM
The home page broke after an upgrade upload because files were uploaded flat into public_html/ instead of their folders, overwriting the home page with the Family Tree page. Each file was re-uploaded into its correct folder and the site recovered.
Both 1:06 PM
All admin panels now live on one Admin page (admin.php) with tabs — Home Page, Access Requests (later removed), Users, Email, Activity, Data — under one admin login. The Family Tree header buttons link to the matching tab. A pre-existing import bug (people import always failed) was fixed at the same time.
Both 12:44 PM
First setup completed, SSL active, setup.php deleted, the shared visitor password set, and Email Settings entered. The full test checklist passed.
Both 12:28 PM
The green setup-complete box was capped narrower than the red warning box and long folder paths wrapped awkwardly. Both boxes now stretch to the full page width on the setup page.
Both 12:15 PM
config.php now lives one level above public_html/, with a deny rule blocking web access to any config.php under public_html/, so the database password and encryption key cannot be served as plain text even if PHP handling failed.
Both 11:17 AM
The whole site was rebuilt for Hostinger Premium shared hosting as PHP + MySQL: the home page at the root, the Family Tree at /family, one shared database, one cycling-words list edited from the home page admin and read by the Family Tree. It starts empty (no sample people), with a one-time setup page and a migration script that upgrades the database without wiping data.
Family Tree 5:14 PM
A separate Gallery view shows every photo from every person in a masonry wall of square, wide, tall, and featured tiles (photos shown whole, never cropped), in random order with a Shuffle button, loading more as you scroll.
Family Tree 5:08 PM
The first map engine could not render on this device, and Google Maps would need an API key and billing. The Map view now uses Leaflet with OpenStreetMap tiles — no key needed — with a pin per birthplace and the full birthplace list as a fallback if tiles cannot load.
Family Tree 4:48 PM
The Directory gained a Show filter: All, Living, or Deceased (a death date recorded). It works together with search.
Family Tree 4:24 PM
From any person, a Family Tree button opens a tree centred on that person: grandparents and parents above, partner alongside, siblings on the same row, children below, with Back stepping through each person viewed.
Family Tree 4:04 PM
The crop editor now truly zooms (one uniform scale) instead of stretching the image, and the add/edit form keeps "Profile photo" separate from a "Gallery photos" section for adding several photos at once. A note under the Constellation explains the photos are randomly selected and refresh on each reload.
Family Tree 3:09 PM
The Constellation now shows 12 randomly chosen profile photos in a hollow ring, with the shared cycling words (Unity, Family, Peace, Patience, Love, Respect) in the centre, and first-name-only labels under the photos. Full names remain in the detail card, Tree, Timeline, Directory, and Profile Page.
Family Tree 12:23 PM
The admin-only Activity log no longer stops at the latest 200 entries: it keeps everything, paginated 200 at a time with Load more, filtering across the whole log.
Home page
The home page cycles the shared words with a Request Access form (Name, Username, Email, Notes) behind the shared-password gate. Its admin backend (opened by five quick taps on the cycling word) edits the word list by drag-reordering, sets the shared password, and reviews access requests. Final layout confirmed: home page at the root, Family Tree at /family, both reading the same word list.
Family Tree 6:47 AM
When sending mail over port 465 fails at the TLS handshake, delivery now retries once over port 587 with STARTTLS, and the Email Settings panel locks each port to its matching encryption (465 with SSL, 587 with STARTTLS) so a mismatched pair cannot be saved.
Family Tree 7:23 PM
Admins enter the mailbox SMTP details themselves in an admin-only Email Settings panel, with separate accounts for welcome@ and reset@, a "same account for both" option, and a test-email button. Saved passwords are never shown back or logged.
Family Tree 7:15 PM
Welcome emails are sent from welcome@chandrakumar.com and password-reset emails from reset@chandrakumar.com, with matching sign-offs and separate activity-log events.
Family Tree 1:58 PM
Creating a user now emails them their username and a temporary password (forced change on first login). Each attempt is logged as sent or failed, without the password. Delivery on the live-test site was blocked before login, so final delivery testing moved to the Hostinger package.
Family Tree 1:24 PM
A single "Log in" button serves both the admin (username "admin") and regular users. Logged-out visitors see the Log in button and a View-only badge; the username "admin" is reserved and cannot be created as a regular account.
Family Tree 1:14 PM
The "Add sample people" and "Add sample pictures" admin buttons were removed. The people count went from 50 to 49 after a profile was deleted while testing deletion.
Family Tree 1:05 PM
Users log in with their own accounts: submissions go live right away, users can edit or delete only people they submitted, and admins can edit or delete everything. The admin-only Activity log records submissions, edits, deletions, photo and document changes, imports, logins, and user-account changes.
Family Tree 11:47 AM
Stats moved to their own right-aligned row above the header, the view switcher sits left with the search field stretched beside it, and Export JSON became admin-only (hidden from visitors, enforced on the server).
Family Tree 11:32 AM
Each person gained a full Profile Page: photo gallery, accomplishments, foods they like, hobbies, documents and files, and tributes written about them (author linked to their own profile), alongside the concise detail popup.
Family Tree 11:15 AM
The add/edit form gained a Middle name field, shown as First Middle Last everywhere: Constellation, Tree, Timeline, Directory, detail panel, search, sorting, and Export/Import.
Family Tree 10:59 AM
The Tree split into separate generation bands per root family (generation counted through father/mother links only), and a Timeline view lists everyone by birth date, oldest at the top, with decade jump chips.
Family Tree 10:47 AM
Slate-and-white styling with a deep teal accent and pill buttons, a Light / Dark / Auto theme remembered between visits, and the Constellation as the default landing view with portraits gently wiggling in fixed cells (no random drifting), pausing and expanding into a card on hover, tap, or keyboard focus.
Family Tree 10:02 AM
The live test site was seeded with 50 people across five linked families (Hartwell, Okafor, Lindqvist, Marino, Novak/Ortiz) over three generations, with illustrated portraits for everyone and one real uploaded photo. Sample data only, deletable at any time.
Family Tree 9:40 AM
The first Family Tree was a single static page (browser-only saving, Export/Import JSON for backup), followed by a Python/SQLite self-hosted package. Both were superseded by the PHP + MySQL Hostinger package built on 30 October 2026.
Please choose a new password before continuing. Closing this popup without changing your password will log you out.
Choose the record in the tree that is you. The admin approves the link. Once linked, you can edit your own record directly and propose edits to your direct family members.
Edits you proposed for family members. You will get an email when the admin approves or rejects each one. You can withdraw an edit while it is still pending.
Drag to position. Zoom with the slider, mouse wheel, or pinch. The circle shows the round crop.
Add any special thoughts about this person.