What's New

Serene Legacy What's New

A running log of every change made to the marketing portal, demo app, and infrastructure — newest first.

July 20, 2026 Session 23
Deploy Pipeline Fixes + a Real Navigation Bug
  • Netlify's Git-based auto-deploy was broken — the build for the Session 19–22 push failed at "preparing repo" with a host key verification error (Netlify's GitHub connection had lost repo access), so none of that work had actually gone live despite being pushed to master. Worked around it by deploying directly from the built output via the Netlify CLI, bypassing the broken Git integration. The GitHub↔Netlify connection itself still needs reconnecting in Site configuration → Build & deploy → Repository for future git push-triggered deploys to work again
  • Fixed a real, pre-existing bug in App.vue — a global Supabase auth listener called router.push('/home') on every SIGNED_IN event, which Supabase also fires when a persisted session is simply restored on page load. Net effect: any hard refresh or direct link to /vault, /healthcare, /planning, etc. silently bounced back to Home. Login.vue already handles the actual post-login redirect on its own, so the global listener now only handles SIGNED_OUT/login; deep links and refreshes now stay put
  • Netlify environment variablesSUPABASE_SERVICE_ROLE_KEY is now set (all contexts) so the daily reminder function can query across users. RESEND_API_KEY still needed before invites/reminder emails will actually send
  • Supabase migration runvault_secrets, healthcare_providers, healthcare_medications, and the new columns on documents / circle_members / user_profiles now exist in the live database
August 6, 2026 Session 23
Private Lockbox, Vault Hub, Health Conditions, Data Feed Discussion
  • Private Lockbox — new /lockbox page with a 4-digit PIN gate (session-persisted so you only enter it once per browser session; stored locally in the demo, aligned with the real backend's vault_2fa_verified / vault_2fa_session_valid_until fields). Stores passwords, government IDs (passport, driver's license, SSN-type numbers), financial account numbers, insurance policies, and miscellaneous sensitive entries. Category-specific field labels adapt by entry type. Reveal/copy per entry. 90-day stale prompt for passwords specifically. "Lock" button to re-lock the session at any time
  • Vault Hub/vault now opens a hub page with two distinct vault choices: Document Vault (→ /files) and Private Lockbox (→ /lockbox). Hub shows live stats: document count, lockbox entry count, and how many passwords haven't been updated in 90+ days. Clicking "Secure Vault" in Files.vue's tab bar now navigates to the Lockbox rather than showing the old inline tab
  • Healthcare — Conditions tab — third tab "Conditions" added alongside Providers and Medications, for chronic conditions, diagnoses, allergies, mental health entries, and injuries. Each entry tracks type, diagnosis date, managing provider, and status (Active / Resolved). Resolved conditions appear in a dimmed "Past / Resolved" group below active ones. "Add" picker updated to include Condition / Allergy as a fourth option
  • Healthcare — API extendedhealthcareAPI gains listConditions, createCondition, updateCondition, deleteCondition (new healthcare_conditions Supabase table needed)
  • Health data feeds — research note — Apple HealthKit (iOS) can pull medications, conditions, vitals, and lab results from FHIR R4-enabled health systems including Mass General / Mass General Brigham (Epic). CMS Blue Button 2.0 provides Medicare/Medicaid pharmacy claims data. These represent a high-value Phase 2 mobile feature: "Connect your health systems" onboarding step to pre-populate the Healthcare section. Surescripts (pharmacy network) requires a formal integration agreement
  • Router cleanup/vault → VaultHub, /files → Files (previously /files redirected to /vault; now it's a real route), /lockbox → Lockbox; Upload.vue's "View Vault" button now goes to /files directly
  • Emergency Contacts in Profile — new card in Profile.vue listing emergency contacts (name, relationship, phone, email, primary flag) with inline add/edit/delete and "Set primary" action; backed by new emergency_contacts Supabase table; aligns with the real backend's User.emergency_contacts[] field. First contact added is auto-marked primary; primary badge shown inline
  • 5-step Onboarding flow — new /onboarding page (Onboarding.vue) triggered on first login for users who haven't completed setup: (1) Welcome + Terms consent, (2) Name / Date of Birth / Country, (3) Emergency Contacts, (4) Invite your circle (optional), (5) All set with quick-start tiles to Healthcare, Upload, Lockbox, and Planning. Progress bar across the top. Completion sets user_profiles.onboarding_completed = true and a session flag so returning users skip it. Aligns with the real backend's 7-step onboarding schema (BasicInfoRequest, EmergencyContactRequest, InviteContact)
  • Login.vue — onboarding redirect — after sign-in, checks user_profiles.onboarding_completed; new users are sent to /onboarding instead of /home
July 20, 2026 Session 22
Privacy & Security FAQ + "What's New" Rename Completed
  • platform.html — new Privacy & Security FAQ (#faq, linked from the nav bar and footer) — five accordion questions covering who can see your Vault, whether AI reads your documents, what happens to information flagged as sensitive, whether documents train AI models or are sold, and how passwords/account numbers are handled. Built with native <details>/<summary> — no JS framework added
  • "What's new" rename completed site-wide — the marketing pages (index.html, platform.html, investors.html, partners.html) still said "Changelog" in their footer even though the demo app was renamed back in Session 20; all four now read "What's new"
  • index.html — footer gains a "Privacy & Security FAQ" link pointing to platform.html#faq
How sensitive documents are actually handled today
  • Storage — every document and Secure Vault entry lives in a private, access-controlled store (Supabase Storage / Postgres with row-level security scoped to your user ID). No one at Serene Legacy browses it, and it's never bundled into anything sent to a third party by default
  • On upload, a local pattern scan runs first — regex-based, no network call — flagging likely SSNs, credit card numbers, bank/account numbers, passport numbers, tax IDs, driver's license numbers, dates of birth, and medical information. You choose: store the original as-is, or a redacted copy (flagged spans replaced with ████) — nothing happens automatically
  • The optional "AI Deep Scan" (off by default) sends document text to Claude via Anthropic's API to catch contextual PII the regex scan misses. Since Session 21, everything already flagged as sensitive is redacted before that call — the AI only sees the redacted text plus whatever the quick scan didn't catch. This is not full anonymization; names and surrounding context still pass through, since that's what the scan looks for
  • No training on your data — Anthropic's commercial API doesn't train on API traffic, and Serene Legacy doesn't use your documents, passwords, or personal information to train models or for marketing
  • Not yet built — no client-side end-to-end encryption layer beyond account-level access controls, and no offline/on-device AI option; Deep Scan is a real network call to Anthropic's API when used
July 19, 2026 Session 21
Healthcare Section, Vault Split, Vault↔Planning Link, Real Reminders
  • Healthcare.vue — new top-level page (/healthcare, in both desktop and mobile nav) with Providers (Primary Doctor + Specialists) and Medications tabs; each item shows "last confirmed X ago" and a "Needs review" badge once 365+ days pass, with a one-click Still accurate button; Import mirrors Network's Speak + File flow (new healthcare-parse.js function, CSV column mapping); new healthcare_providers / healthcare_medications tables
  • Vault split — Files.vue gains a Documents | Secure Vault tab bar; Secure Vault stores passwords, PINs, account numbers, and secure notes (new vault_secrets table) with reveal/copy actions, plus CSV Import for LastPass, NordPass, Bitwarden, Chrome, and 1Password exports
  • Vault ↔ Planning link — new document types (Trust, POA, Healthcare Directive, Beneficiary); Planning's Legal Documents fields show linked-document chips back to a filtered Vault when a matching document has been uploaded
  • Network.vue — added Pharmacy as an org template
  • Real annual revalidation reminders — new revalidation-reminders.js Netlify scheduled function (daily) emails — and can optionally text via Twilio — a digest of overdue Healthcare items per user's own cadence, via Resend
  • Profile.vue — Notification Preferences — reminder cadence (3/6/12/24 months) and email/SMS channel toggles, read directly by the reminder function above
  • Circle.vue — invites actually send now — previously only a database row was written while the UI claimed an email was sent; nothing was ever dispatched. New send-invite.js function sends a real email via Resend; each member shows an accurate Invited / Not yet invited status with a manual resend option
  • FamilyTree.vue — GEDCOM import defaults narrowed — default-checked items limited to immediate family (parents, children, siblings); grandparents default to unchecked; children now have individual checkboxes like siblings already did
  • Upload.vue — PII redaction before AI scan — "Run AI Deep Scan with Sage" now redacts every span the quick scan already flagged as sensitive (SSN, Credit Card, Bank Account, Passport, Tax ID, Driver License, DOB, Medical Info) before that text is sent to the pii-scan function
July 17, 2026 Session 20
Family Member Detection on Upload + "What's New" Rename
  • Family member detection — Upload scans extracted document text for relationship keywords (spouse, father, mother, son, daughter, brother, sister, paternal/maternal grandparents) followed by a name; detected people appear as a checklist card in the review phase
  • Add to Family Tree — user selects which detected members to add; saveFamilyToTree() loads the current tree from Supabase, merges selected people without overwriting existing entries, and upserts back to both Supabase and localStorage
  • "What's new" rename — floating "Changelog" button renamed to "What's new" across all 10 app components; changelog page title and hero heading updated to match
July 17, 2026 Session 19
Real Document Types + ClamAV Scan States + Context Badge
  • Real document types — Upload now requires selecting a document type before choosing a file: Social Security Card (SSN_CARD), U.S. Passport (US_PPT), Driver's License (US_DL), Form W-4 (TAX_W4), Employment Authorization Document (US_EAD), Owner's Will (OWN_WILL) — matching the seeded master records in the real SL backend
  • Drop zone gating — file picker is visually disabled until a document type is selected; document_type stored in the documents table and shown as a badge in the vault file list
  • Files filter — vault filter dropdown replaced generic categories (insurance, financial…) with the 6 real document type names; filters on the document_type DB column
  • ClamAV scan states — 4th scan step "Virus scan (ClamAV)" added to the upload scanning animation; clamResult tracks clean | infected | error | skipped; infected files route to a "Upload Blocked — malware detected" phase and are never stored; result shown as a badge on the review and done screens; stored as scan_result in the DB
  • OWNER / COLLABORATOR / SHARED context badge — every uploaded file is stored with context: 'OWNER'; COLLABORATOR and SHARED files show a coloured badge in the vault file list; OWNER is hidden (implicit default)
July 15, 2026 Session 18
Supabase Persistence (Network, FamilyTree, Planning) + Recycle Bin
  • FamilyTree, Planning, Network — all three migrated from localStorage-only to Supabase write-through cache: upserts to family_tree / planning_data / network_data tables on every save; on load, reads Supabase first, falls back to localStorage and auto-migrates
  • Planning persistence — drops taskDone from saved payload; collaborator task completions live in after_im_gone_tasks; extracted buildFieldValues() / applyFieldValues() helpers
  • Soft-delete / Recycle Bindocuments table gains deleted_at timestamptz; deleting a file sets deleted_at instead of removing storage or the row; vault list filters deleted_at IS NULL
  • Recycle Bin modal in More — shows soft-deleted files with date deleted; Restore clears deleted_at so the file reappears in the vault; Delete Permanently removes from Supabase Storage and the documents row
July 15, 2026 Session 17
Family Tree Date Pickers + GEDCOM Import
  • Full date pickers — Family Tree birth/death fields changed from free-text year to <input type="date">; displayYear() extracts the 4-digit year for on-canvas display; migratePerson() renames old birthYear/deathYear localStorage keys on load
  • GEDCOM import — "Import" button opens a 3-step modal: upload .ged file → select root person → preview and apply
  • parseGedcomDate() converts GEDCOM text dates ("15 JUN 1948") to ISO YYYY-MM-DD
  • parseGedcom() indexes individuals and families from the .ged file
  • buildFamilyFromRoot() defaults to 2 generations (parents + grandparents) with opt-in to include more ancestors
July 15, 2026 Session 16
Supabase Auth, Context Switcher, Collaborator Tasks
  • useUserContext composable — singleton context state; auto-claims circle_members slots matching the logged-in email; upserts user_profiles on sign-in; exposes owner vs. collaborator context switching
  • AppNav context switcher — avatar replaced with dropdown; amber avatar + "for [Name]" badge in collaborator mode; lists "My Legacy" + any collaborator roles; profile link at bottom
  • Collaborator task completions — "After I'm Gone" tasks are interactive checkboxes in collaborator mode, read-only bullets for owner; completions stored in after_im_gone_tasks with optimistic UI; timeline headers show X/N count
  • Dynamic tab label — "After I'm Gone" reads "After [FirstName] is Gone" when acting as collaborator
  • Marketplace, Files, More — blue → primary color fixes; file delete; Activity Log from Supabase
July 15, 2026 Session 15
After I'm Gone Task Interactivity + Planning Fixes
  • Task interactivity — collaborators get real checkboxes with completion timestamps; owners see read-only bullets; banner distinguishes modes; "Exit" returns to owner context
  • Date of Birth field — structured <input type="date"> modal, formats to "Month Day, Year" on save
  • Place of Birth + Address — structured modals with city/state/country and street/city/state/zip/country fields + country dropdowns
  • Stats bar — "Only 27% of adults have documented end-of-life care wishes" replaces "$100B+" on platform.html
July 8, 2026 Session 14
Planning Depth, Vault Viewer, After I'm Gone Messages
  • Planning.vue rebuilt — Pre-Planning now has 6 categories (added Legal Documents: Will, Trust, POA, Healthcare Directive, Beneficiary Designations; Assets expanded to 6 fields including Vehicles)
  • Editable fields — every field's pencil icon now opens an edit modal; values persist to localStorage keyed by user ID; fields pre-filled from Supabase circle members and story data
  • After I'm Gone — Messages — new sub-tab for composing time-delayed letters; fields: To, Deliver timing (Immediately / Few Days / 2–3 Weeks / 1–3 Months / Within Year), Subject, Body; colour-coded timing badges; edit and delete on hover; saved to localStorage
  • After I'm Gone — Tasks expanded to 15 tasks across 5 timelines; done-state persists to localStorage
  • Vault document viewer — "View" button on each file opens a right-side drawer: PDF rendered in signed-URL iframe; images from signed URL; text/CSV/Markdown fetched and shown as monospace; file icons colour-coded by type; unsupported types offer Download
  • platform.html — launch bar updated from "late June 2026" to "now live"; hero and CTA footer copy updated to match
July 8, 2026 Session 13
Network Voice Input and File Import
  • Network Import modal — new Import button opens a two-path picker: Speak or Import File
  • Speak path — Web Speech API live transcript → "Extract with AI" calls /.netlify/functions/contact-parse; graceful text-input fallback if browser lacks speech support
  • Import File path — drag-and-drop or browse; auto-parses .vcf (vCard); .csv shows field-mapping UI with auto-detected column names
  • Review screen — per-contact checkboxes, inline editable fields, person/org kind toggle, bulk select/deselect; imports selected contacts into the entries array
  • contact-parse Netlify function — calls claude-haiku-4-5-20251001 via ANTHROPIC_API_KEY; extracts {name, role, org, phone, email, kind, notes} from free text
July 8, 2026 Session 12
Fancy Nav, Family Tree Page
  • AppNav redesigned — frosted-glass header, active tab now filled teal pill; all SVG icons in a shared object so desktop and mobile nav are guaranteed identical
  • Family Tree added to desktop (7th tab) and mobile bottom nav (4th slot); new /family route
  • FamilyTree.vue — SVG canvas with fixed slots for 4 grandparents, 2 parents, Me, Spouse, up to 4 children; bezier curve connections; click any slot to add/edit (name, birth/death year, notes); siblings as chips; data in localStorage
  • Legacy Readiness ring enlarged on Home — SVG r=54, fills the card left column
  • Collaborator role tooltips — hover over Nominee / Executor / Support Person buttons shows plain-English explanation
July 7, 2026 Session 9
PII-Aware Upload Flow
  • Upload rebuilt — 4-step guided flow with animated step indicator (Select → Review → Upload → Done)
  • Text extraction for .txt / .csv / .md (FileReader) and .pdf (pdfjs-dist, up to 20 pages)
  • Instant regex scan across 11 PII types: SSN, Credit Card, Bank Account, Passport, Tax ID/EIN, Driver License, Date of Birth, Medical Info, Phone, Email, Home Address
  • Review screen — per-item Keep/Redact toggles; sensitive items default to Redact; bulk "Redact all / Keep all"
  • Two upload paths — "Upload Original File" or "Upload Redacted Copy" (replaces PII with ████, stores as _redacted.txt)
  • AI Deep Scan — "Scan with Sage" button calls /.netlify/functions/pii-scan; results merged with regex findings
  • pii-scan Netlify function — calls Claude Haiku via ANTHROPIC_API_KEY env var (key never committed)
  • After I'm Gone — hour ranges removed from timeline labels; kept: Immediately, Few Days, 2–3 Weeks, 1–3 Months, Within Year
  • pdfjs-dist added to package.json dependencies
July 7, 2026 Session 8
Profile Page, Nav Cleanup, UI Polish
  • Profile page at /demo/profile — edit full name + phone (saved to Supabase user_metadata), change password, read-only email, sign-out
  • Nav redesigned — avatar with initials in top-right (hover shows "Profile" tooltip, click → /profile); email + sign-out removed from header; desktop tabs smaller (xs text, tighter padding); mobile labels at 10px
  • Home greeting now shows user's real name from profile (falls back to email prefix if no name set)
  • "Assigned Collaborators" rename applied across Circle page, More hub, and Home dashboard
July 7, 2026 Session 7
Marketplace, Admin Portal, After I'm Gone Rebuild
  • "After I'm Gone" tab rebuilt — time-based collapsible categories: Immediately (0–48h) · Few Days (48–120h) · 2–3 Weeks (120–504h) · 1–3 Months · Within Year; each with checkable task rows
  • Created Marketplace.vue — professional directory with search, category filter chips (All / Legal & Estate / Financial / Care & Grief), card layout (avatar, Verified badge, rating, location, bookmark), Request Intro + Share Profile actions; 5 dummy professionals seeded
  • Created Admin.vue — password-gated admin portal at /demo/admin (password: Admin@SL2026); 3 tabs: Marketplace (add/toggle/remove professionals), Users (session viewer), Settings (launch status, password placeholder)
  • Marketplace added to nav — 6th tab on desktop and 6th icon on mobile bottom nav
July 7, 2026 Session 6
Demo App — Planning Rebuild, Mobile Nav, Family Tree
  • Planning page fully rebuilt — Pre-Planning / After I'm Gone tabs; stats bar (Total / Completed / Not Started); 5 expandable categories (Essential Info, Role Assignment, Assets/Liabilities, Instructions & Guide, Memorial & Obituary) with per-field entries and inline edit; live Supabase data pre-fills from circle_members and stories tables
  • Renamed "Family Circle" → "Family Tree" across desktop nav and mobile nav
  • Mobile bottom nav bar added to AppNav — fixed bottom bar with 5 icon+label tabs, hidden on desktop (sm:hidden)
  • Mobile padding fix — all pages get pb-20 sm:pb-0 so content clears the fixed bottom nav on mobile
July 7, 2026 Session 5
Demo App — Full Nav Rebuild
  • 5-tab nav now matches product app: Home · Network · Vault · Family Circle · Planning
  • Home dashboard rebuilt from product app screenshot — user greeting, Trust Circle avatar strip, Legacy Readiness circular progress gauge with live checklist, Secure Vault summary (4 doc categories), Memory Capsule banner to Sage
  • Network page — partner directory: Estate Attorneys, Financial Advisors, Hospice Providers, Grief Counselors
  • Planning page — 5-item checklist with live completion from Supabase + overall readiness bar + Sage prompt
  • Vault route (/vault) shows file list with search/filter; upload stays at /upload
  • Simplified netlify.toml to single wildcard SPA redirect
July 7, 2026 Session 4
Demo App — Navigation & Product Parity
  • Pulled product app repo (Serene-Legacy/SL) — read BottomNavigation, Header, TabNavigator, DashboardScreen, MyFilesScreen, MoreOptionsScreen, InviteCircleScreen
  • Home dashboard — "My Safe" card + 4 live stat cards (Your Files, Total Storage, Pending Views, Shared Files) + quick actions, mirroring the product DashboardScreen
  • My Files page — search bar, filter by document type, sort (newest/oldest/name/size), per-file Share and Download actions, empty state with upload CTA — mirrors MyFilesScreen
  • Support Circle page — invite trusted people by name/email/phone, role selector (Nominee / Executor / Support Person), live member list with remove, stored in Supabase — mirrors InviteCircleScreen
  • More page — hub linking to Your Circle, Sage, Activity Log, Recycle Bin; account info; sign-out — mirrors MoreOptionsScreen
  • Shared AppNav — 5-tab nav matching mobile TabNavigator: Home · My Files · Add (blue pill) · Sage · More, with active-state highlighting
  • Fixed Login.vue stray closing tag that caused Vite build failure (exit code 2)
  • Fixed netlify/functions/companion.js — switched from ES module export to CommonJS exports.handler
  • Updated netlify.toml SPA redirects for all new routes; updated router with /home, /files, /circle, /more
Supabase
  • New circle_members table with RLS — stores Support Circle invitees per user
July 7, 2026 Session 3
Infrastructure
  • Initialized Git repository and connected to GitHub at alokkapoorsl/SL-website (private)
  • Connected Netlify — live at serenelegacy.netlify.app with auto-deploy on every push
  • Added .gitignore excluding build artifacts and node_modules
Demo App
  • Built Vue 3 + Supabase demo app in app/ — accessible via "Take a Test Drive" passcode gate on the marketing hub
  • Auth: Supabase email/password sign-in and account creation with Sign In / Create Account tabs
  • Post-signup: clears form and shows check-your-inbox screen with 60s resend cooldown
  • Upload screen: drag-and-drop, animated progress, success card with document ID, files table with download
  • Auth confirmation callback handled via onAuthStateChange — email link auto-signs user in
  • Netlify build configured via netlify.toml — Vue app builds to /demo/ alongside marketing pages
  • Added floating changelog badge (bottom-right) to all demo app pages
Supabase
  • Created project at yjhqlonsgtqegcfbehcp.supabase.co (free tier, Nano compute)
  • Created documents Postgres table with row-level security — users see only their own files
  • Created private documents storage bucket with per-user folder policies
  • Email confirmation temporarily disabled (free tier requires custom SMTP for template editing — Resend recommended pre-launch)
Main Hub (index.html)
  • Added "Take a Test Drive" button in Closing Warmth strip with passcode modal
  • Passcode gate: enter TestDrive2026 → redirected to /demo/
  • Added changelog link to footer
May 1, 2026 Session 2
Main Hub (index.html)
  • Removed "Get Started Free" button from nav — hub nav is now logo-only
  • Replaced plain gradient hero with cinematic full-viewport photo hero (Unsplash) with dark-teal overlay
  • Nav is now transparent over the hero, transitions to frosted white on scroll; logo inverts to white
  • Added animated scroll indicator, Brand Story strip, Three Pillars photo card section
  • Added Closing Warmth strip (charcoal bg, serif quote, contact info)
  • Fixed investor persona card copy: $300B → $40B TAM, $72K → $70.8K sweat equity
Investor Page (investors.html)
  • Added full-screen password gate (password: Investor!xyz) with shake animation on wrong entry
  • Replaced initials grid with 3-column photo card grid for all 7 founders with real headshots
Documentation
  • Full rewrite of CLAUDE.md — multi-page architecture, correct business figures, team photos, launch instructions
  • Created CHANGELOG.md
April 2026 Session 1
Project Initialization
  • Built initial index.html as single-page consumer portal from CLAUDE.md spec
  • Rebuilt as hub landing page — persona-picker cards routing to 3 sub-pages
  • Created platform.html (consumer), investors.html (dark charcoal/gold), partners.html (B2B2C gold)
Consumer Page (platform.html)
  • Added fixed launch announcement bar with pulsing green dot — "Launches late June 2026"
  • Changed CTA to "Reserve My Spot" with waitlist mailto link
  • Added Waitlist section with gold CTA; replaced $100B stat with "Only 27%"
Investor Page (investors.html) — Initial Build
  • Incorporated investor PDF data: $40B TAM, $70.8K sweat equity, 7 co-founders, two-tranche YC SAFE ($415K + $1M)
  • Added Behavioral Barrier, Revenue Projections, Competitive Landscape, Key Risks, Use of Funds sections

Notes for testers