Budget v3 page + cents migration + warm shell#3
Merged
Conversation
…gative to warm-accent
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ations Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…cripts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
With "type": "module", `import * as XLSX from 'xlsx'` puts readFile on XLSX.default rather than XLSX directly. Switching to a default import restores XLSX.readFile and allows the seed to run successfully. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Thin wrapper around joinBudgetWithMortgage that joins budget rows with
mortgage contrib data, returning descending monthly breakdown rows with
{date, income, spend, mortgage, net} in integer cents.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace 1Y/3Y/5Y/ALL with 3M/6M/12M/ALL in TimePeriod, update filterByTimePeriod to use 30-day month math, and update BudgetChartFilters to render the new pill values. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
getMonthlyBreakdown was called with no limit, returning all 138 rows and inflating the content card to 6000px. Now derives a limit (3/6/12) from the selected period so the table matches the active filter. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Month label: text-2xl (24px) → text-[26px] to match design spec - Mini-card values: text-xl (20px) → text-2xl (24px) to match design spec - Section panel h3s (Income/Spend/Mortgage): sm semibold DM Sans → 22px DM Serif Display - Sub-card h4s (Income contributors, Payment split, Debt and equity context): 11px uppercase → 13px bold non-uppercase DM Sans - Credit card categories row header: same uppercase-to-bold treatment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Income / Spend / Mortgage mini-cards in MonthlyDetailOverlay now show a trend row (lucide icon + signed percentage vs prior month). Backend returns prior-month totals via getMonthlyDetail; trend computation is in shapeMonthDetail with rounded-zero treated as flat. Trend row is omitted when no prior-month row exists (oldest month in dataset) or when the prior mortgage row is missing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
raycashmore
added a commit
that referenced
this pull request
May 19, 2026
Budget v3 page + cents migration + warm shell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the v3 Budget app page (KPIs, restyled chart, monthly breakdown, click-through monthly detail overlay) inside a restyled warm-bordered shared shell, with money stored as integer minor units and the seed pipeline fixed.
Three phases, 32 commits. See
docs/superpowers/plans/2026-05-16-budget-page.mdfor the implementation plan.Phase 0 — Foundation
@repo/tokens.AppFrame/Sidebar/Header(cream outer page, dark#2D2D2Drounded inner shell, 96px sidebar with square tiles). Home app inherits the new look.toCents/fromCentshelpers. Three rate-boundary derivations (superPensionAud,ukTotalAud,tradingInt2 * usdAud) now round to integers. ClientformatCurrencytakes cents.packages/convex/scripts/, env-aware via.env.local, exposed aspnpm seed/pnpm seed:clear. Database reseeded fromCREAM.xlsx(xlsx is gitignored).Phase 1 — Convex queries
getBudgetPageSummary({ period })— four KPI values (Avg spend, Avg income, Savings rate in basis points, Net gain) with deltas vs prior period of equal length.getMonthlyBreakdown({ limit? })— budget rows joined with mortgage via match-or-carry-forward.getMonthlyDetail({ date })— single month's income / spend / mortgage detail for the overlay.summarizeBudgetForPeriod,joinBudgetWithMortgage,shapeMonthDetail) with Vitest red-green-commit. 25 unit tests in@repo/convex.Phase 2 — Page composition
KpiCard,BudgetKpiCards,BudgetBreakdownTable,InsightsPanel(placeholder reserving the right column),MonthlyDetailOverlay(portal + scrim + Escape + focus),MonthIncomeSection,MonthSpendSection(credit-card categories stubbed; real lumped totals),MonthMortgageSection.TimePeriodwidened from1Y/3Y/5Y/ALLto3M/6M/12M/ALLto match design.BudgetPageorchestrates four queries + overlay state in a two-column layout with mobile reflow.a6m9ikandQPjOtvia Playwright MCP. Three small fixes shipped during verification (breakdown row limit honors period, overlay typography aligned to design, mobile breakdown table now horizontally scrollable).Out of scope (explicit)
—; real lumped totals shown.claude/xenodochial-curie-8a0898, not merged here. Optional follow-up.Test Plan
pnpm check-types— clean across all packages.pnpm lint— 0 errors (pre-existinganywarnings in@repo/convexunchanged).pnpm test— 40 tests pass (25 in@repo/convex, 15 inbudget).pnpm convex+pnpm --filter budget dev, then loadhttp://localhost:3001/:🤖 Generated with Claude Code