Every change to this site and the home page, newest first. Times are Chicago time.
30 October 2026
Family Tree
Medical section on Add/Edit person
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
Sign-in & account activity section in the Activity log
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
Light / dark toggle replaces the theme dropdown
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
Version number shown in the footer (v1.0)
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
Changelog shown on the Family Tree only
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
Changelog added
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 Tree2:50 PM
Birthplace suggestions from OpenStreetMap
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 Tree2:46 PM
Admin controls grouped into one dropdown
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 page2:45 PM
"Log in" added to the Enter flow
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.
Both2:04 PM
Change password popup can be closed; signed-in visitors skip the gate
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.
Both1:58 PM
Static assets cache-busted (versioned URLs)
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 page1:51 PM
Enter overlay, self-signup, and Access Requests removed
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.
Both1:32 PM
HTTP 500 fixed: files uploaded into the correct folders
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.
Both1:06 PM
One combined Admin page with tabs
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.
Both12:44 PM
Live site verified on Hostinger
First setup completed, SSL active, setup.php deleted, the shared visitor password set, and Email Settings entered. The full test checklist passed.
Both12:28 PM
Setup page notice boxes fixed
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.
Both12:15 PM
Database config moved outside the web root
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.
Both11:17 AM
Hostinger package built (PHP + MySQL)
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.
27 October 2026
Family Tree5:14 PM
Gallery photo wall with varied tile sizes
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 Tree5:08 PM
Map switched to Leaflet / OpenStreetMap
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 Tree4:48 PM
Directory Living / Deceased filter
The Directory gained a Show filter: All, Living, or Deceased (a death date recorded). It works together with search.
Family Tree4:24 PM
Per-person Family Tree view
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 Tree4:04 PM
Photo crop editor fixed; gallery photos separated
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 Tree3:09 PM
Constellation: 12 photos, cycling words in the centre
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 Tree12:23 PM
Activity log keeps all entries
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
Cycling-words landing page and its admin backend
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 Tree6:47 AM
Email: automatic port 587 fallback
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.
26 October 2026
Family Tree7:23 PM
Email Settings panel
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 Tree7:15 PM
Separate welcome and reset senders
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 Tree1:58 PM
Welcome email on user creation
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 Tree1:24 PM
One combined login
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 Tree1:14 PM
Sample buttons removed
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 Tree1:05 PM
Multi-user model and admin-only Activity log
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 Tree11:47 AM
Header layout, wider search, admin-only Export
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 Tree11:32 AM
Profile Page per person
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 Tree11:15 AM
Middle names
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 Tree10:59 AM
Generation bands per root family and Timeline view
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 Tree10:47 AM
Modern UI, themes, and Constellation motion
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 Tree10:02 AM
50 sample people and photos added (live test site)
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 Tree9:40 AM
First versions built
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.
Log in
Change password
Please choose a new password before continuing. Closing this popup without changing your password will log you out.
Add person
Crop profile photo
Drag to position. Zoom with the slider, mouse wheel, or pinch. The circle shows the round crop.