Changelog
What changed, by date.
Written from the product repository’s history. Internal plumbing is summarised; anything you can see or touch is named.
Feature
Redesign in progress: stages as a checklist, streaks, a weekly digest
- A clickable design of the next app: Home names the one step that unlocks the next stage; the five stages become a checklist on their own screen.
- A logging streak and badges on Home; a week-in-review every Friday with three things for next week.
- Two information hierarchies (A and B) are being compared. Previews are on the home page, the stages page and each feature page, marked "Design preview".
Improvement
Icons, the review trend, and a calmer dark palette
- One brand green for icons; colour is used only where it means something.
- Month in Review bars show the share of each limit used, and the trend chart draws its bars and the budget line.
- Scenario Lab no longer crashes for households with passive income from holdings.
- Profile photos load from storage under the Content Security Policy.
- Lucide icons replace the hand-drawn set; the dark palette gains depth and its own feature-card colour.
- The account drawer slides in opaque instead of fading.
Feature
Account drawer with a profile photo
- A proper account drawer: profile photo, plan, family, display and sign out. The operator console moves out of the tiles.
- Profile photo upload checked end to end against staging.
Feature
Grow tab split from the Rat Race Exit Planner
- Grow holds holdings, cover, loans and the emergency fund; the Rat Race Exit Planner gets invested, cover, loan original and manual passive income.
- The number format follows the country chosen at onboarding.
- The Renting / Owning toggle keeps every figure.
- The wordmark link is named Grownz, so the Home tab is the only link called Home.
Feature
Razorpay for India, Stripe everywhere else
- Razorpay checkout for INR households behind the shared gateway, with cards and UPI.
- Stripe checkout, webhooks to subscriptions, the billing portal, prices per market and support grants.
- Your plan is the first entry in More, with the current plan and an upgrade hint.
Platform
Faster pages, sturdier connections
- Tabs prefetch their pages; navigation reuses a page fetched in the last 30 seconds.
- The website runs beside the API in Singapore and reaches it over the private network, removing a 400 ms public hop.
- Per-user rate limit of 1,200 requests a minute; dead API connections fail fast and reads retry once.
- Error reporting ready to switch on.
Fix
Audit follow-ups
- Shared rate limit before authentication, sweeps for expired invites, a per-household digest, confirmations on destructive actions, and more from the security audit.
- Entitlement keys are letters and underscores only.
Feature
Family sharing, the + button, bills and receipts
- Family: share what you choose, area by area, summary or full. Owners mint invite codes, members join, switch and leave.
- The + button from any tab, with reminders saved in the sheet.
- Bills raise reminders, tips are recorded, receipts are read by Claude on your own key.
- Close the month on purpose and set the next review reminder; documents grouped by category.
- Demo parity: insurance screen, income versus spending, housing details, market check.
Feature
Ask Claude, the Annual risk review, and the super admin console
- Ask Claude about your numbers with the user’s own key, sealed at rest.
- Annual risk review behind the Pro entitlement, with history.
- Super admin console with cross-household aggregates, internal only.
Platform
Phase 0: the foundation
- pnpm and Turborepo monorepo, Next.js 15 web app, Hono API with Zod OpenAPI, a pure domain package with money as integer minor units.
- Row-level security on a restricted API role with pgTAP tests, an append-only audit log, idempotency keys, a transactional outbox.
- Passwordless sign-in with a six-digit code, households from day one, the five stages and nine milestones as data.
- CodeQL, Renovate and a dependency audit in CI; a threat model and a data-classification register in the repository.
