Skip to content

Feature/cpf chart age indicator#186

Merged
jcleow merged 42 commits intomainfrom
feature/cpf-chart-age-indicator
Feb 4, 2026
Merged

Feature/cpf chart age indicator#186
jcleow merged 42 commits intomainfrom
feature/cpf-chart-age-indicator

Conversation

@jcleow
Copy link
Copy Markdown
Owner

@jcleow jcleow commented Feb 4, 2026

No description provided.

jcleow and others added 30 commits January 23, 2026 12:18
- Update CategoryCardHeader with solid icon backgrounds and circular add buttons
- Add theme-aware styling for Monet mode across all components
- Update SummaryCards with white backgrounds and colored dot indicators
- Refactor Header with Cashflow/Family pill buttons and theme-aware slider
- Add iconBgLight/iconColorLight to config for light mode support

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Expand insurance types with comprehensive policy definitions
- Update AddPolicyModal with improved form handling
- Enhance PoliciesTab with better policy display
- Update InsuranceTabs component structure

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add comprehensive Monet theme color palette inspired by impressionist
paintings with soft pastels, warm creams, and painterly textures.
Includes background gradients, lavender primary, coral accent, and
sage success colors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add ThemeProvider component that syncs colorScheme Zustand store
with DOM class for CSS theming. Add ColorSchemeToggle component
for switching between dark and monet themes. Update root layout
to wrap app with ThemeProvider and add transition support.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update Dashboard and FinancialWorkspace with theme-aware styling
using colorScheme store. Add gradient backgrounds, ambient orbs,
and UI controls that adapt to monet/dark themes with smooth
transitions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Wrap Zustand selector objects with useShallow to ensure referential
stability and prevent unnecessary re-renders when store values
haven't changed. Applied to cpfLifeEstimateStore, personFilterStore,
and taxModeStore.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update PersonSelector with variant prop and Monet theme colors.
Fix LineItem and CollapsibleSection layout by removing truncate
and improving flex behavior. Update chart colors for better
light mode contrast.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add rounded container with theme-aware border and background to
SummaryCards for visual consistency with Stitch design.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add reusable Tailwind class patterns for theme-aware components:
- dropdown, menuItem, iconBadge, card, toolbar, text classes
- useThemeClasses() hook for easy consumption
- Refactor FinancialWorkspace to use centralized classes
- Eliminates inline isMonet conditionals for cleaner code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wrap Financial Data in single white container with rounded corners
- Add overflow-hidden to preserve rounded corners when content clips
- Remove text truncation to show full item names
- Remove "Total" word from category card header subtitles
- Align top padding (pt-6) with chart section for side-by-side layout
- Simplify SummaryCards by removing outer wrapper
- Remove opacity from white backgrounds in Monet theme

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add interactive sliders for CI recovery months and emergency fund
- Allow custom number input alongside sliders for precise values
- Fix Continue button gradient (sageDark→sage for readability)
- Align Back/Continue buttons to the right
- Make UserMenu theme-aware for Monet mode
- Replace person pill toggle with PersonSelector dropdown
- Remove reset button from coverage dashboard
- Update expectedRecoveryMonths type to accept any number

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make modal background, borders, and text theme-aware
- Update layout preview thumbnails with lavender tints for Monet
- Theme SVG stroke colors for chart visualizations
- Use lighter overlay in Monet mode

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Simplify user flow by showing editable coverage targets directly after
wizard completion, eliminating the redundant read-only CoverageDashboard
view that required an extra click to edit.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add isMonet conditional styling throughout PropertyPlannerModal
- Update PropertyPlannerModalHeader with theme-aware colors
- Update ScenarioList with theme-aware backgrounds, borders, and text
- Support both dark mode and Monet (light) theme variants

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The main container had hardcoded light mode styling (bg-white,
border-slate-200) which caused it to display incorrectly in dark mode.
Now uses isMonet conditional for proper theme-aware styling.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace 3-tier pricing with single $0 "Early Access" card, rename to
WealthProject, remove placeholder social proof text, and fix horizontal
scrollbar on flow diagram section.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update app title, login page, and chat header references.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove TaxPlannerV2View dynamic import, menu entry, and related
state from Dashboard and FinancialWorkspace.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…tomDropdown, GuidelinesTab, and Header

Add isMonet conditional styling across multiple components for
consistent light theme support. Fix month selector width and
update coverage guidelines store.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add CoverageJourney, CoverageLayers, CoverageNeedsCurve, LifeStagePills,
MilestoneAlerts, ControlPointModal/Panel, JourneyTab, questionnaire
auto-populate hook, journey utils, and control points store.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5-step guided wizard auto-triggers for new users (0 persons,
onboardingCompleted=false). Progressive save per step, Framer Motion
transitions, skip/dismiss support, and re-triggers after data reset.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 'relationship' column (self/spouse/child/parent/sibling/other) to
Person model across backend and frontend. Update insurance coverage
questionnaire to use relationship-based person selection instead of
age-based guessing for spouse/dependent identification. Includes
income vs expenses toggle, auto-populated financial data, and
multi-select dependent picker with relationship labels.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a guided 5-step onboarding wizard that auto-opens for new users
with zero financial data. Includes progressive per-step API saves,
race-condition-safe auto-trigger logic, and re-trigger after data reset.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add exit confirmation dialog when closing onboarding wizard via
  Escape, X button, or overlay click. Uses capture-phase keydown
  listener to intercept Escape before Modal's handler.
- Make Start Fresh profile trigger onboarding wizard by calling
  openOnboardingWizard() directly from mutation onSuccess, bypassing
  Dashboard ref guard that blocked repeated clicks.
- Hide plus button on collapsed CategoryCard sections.
- Add back navigation from summary step to previous wizard steps.
- Fix StepIndicator connector lines to use step status instead of
  index comparison.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Calendar icon to all date inputs (DOB, PR Grant Date) in the
  onboarding wizard PersonCard, matching the PersonsModal pattern.
- Change Relationship field from fixed dropdown to free-text input
  so users can type custom relationship types.
- Update schema from enum to z.string() for relationship field.
- Make role color matching case-insensitive for free-text values.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add Storybook configuration with UI component stories, insurance
coverage E2E test, onboarding wizard spec, and conductor product
guidelines. Update .gitignore for storybook-static output.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Reduce cognitive load on Step 2 with progressive disclosure:
- Accordion rows (collapsed summary ↔ expanded 2-col form)
- Default assumptions bar (growth rates, frequency)
- CPF simplified to Yes/No toggle with advanced disclosure
- Validation highlights invalid fields with rose borders
- Post-reset choice modal (Dashboard vs Quick Setup)
- Remove Complete Later button and unused handleSkipStep

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ration

Add shared UI components (GlassButton, GlassCard, FormField,
SegmentedControl, StatusBadge, ToggleSwitch) with Storybook stories.
Improve onboarding wizard asset/liability step and add
onboarding_completed DB migration. Refactor GeneralSettings and
CpfAccountFormModal to use shared FormField.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove unused search bar from workspace toolbar and
replace DefaultAssumptions component with plain constants
in the income/expenses step.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
jcleow and others added 5 commits February 4, 2026 17:19
Remove non-functional search box from FinancialWorkspace toolbar.
Fix delete icon overlapping row content in collapsed AssetRow,
LiabilityRow, IncomeRow, and ExpenseRow by replacing absolute
positioning with inline flex layout. Remove unused DefaultAssumptions
bar from IncomeExpensesStep.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace hardcoded "Person 1"/"Person 2" labels with actual person
names from usePersonsQuery in both the inline TaxModePanel and
TaxModeModal dropdown selectors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…F UX

- Rewrite AssetsLiabilitiesStep with accordion pattern matching Step 2
- Fix SummaryStep always showing 1 by using getValues() over watch()
- Move CPF wage type dropdown inline with toggle, add OW/AW tooltip
- Set modal min-height to 80vh for consistent footer positioning
- Add asset and liability category icons to constants

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add disabled "Tax Projections - Coming soon" menu item to the
workspace module selector dropdown.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace "Plan until age" with "Years to project" for
  multi-person households
- Surface validation errors on Next click instead of failing
  silently
- Move Insurance Planner above Coming Soon items in modules menu

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jcleow
Copy link
Copy Markdown
Owner Author

jcleow commented Feb 4, 2026

@claude can you review this, especially for any security issues

@claude
Copy link
Copy Markdown

claude bot commented Feb 4, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

- Replace Sparkles with LibraryBig for profile template button
- Remove unused RELATIONSHIP_LABELS, customRelationship, roleColor,
  and ROLE_COLORS from PersonCard

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jcleow
Copy link
Copy Markdown
Owner Author

jcleow commented Feb 4, 2026

@claude can you review again, especially for security issues

@claude
Copy link
Copy Markdown

claude bot commented Feb 4, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

jcleow and others added 5 commits February 4, 2026 20:44
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add blue focus highlight to all onboarding text inputs
- Fix PostResetChoiceModal flow: show before wizard, not after
- Fix Dashboard option in PostResetChoiceModal triggering wizard
- Make PostResetChoiceModal larger and darker
- Fix CPF summary count to show sub-accounts instead of entries
- Fix cash balance not appearing after onboarding (missing cache invalidation)
- Remove min-height on wizard modal to fix footer gap

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a dropdown button in the wizard footer that populates
the form with realistic mock data from financial profile
templates. Converts FINANCIAL_PROFILES into OnboardingFormData
via form.reset(), letting users review/edit before submitting.

Also fixes CurrencyInput theme visibility — replaces hardcoded
text-white/text-slate-500 with text-foreground/text-muted-foreground
so values are visible on both dark and Monet light themes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jcleow
Copy link
Copy Markdown
Owner Author

jcleow commented Feb 4, 2026

@claude can you review

@claude
Copy link
Copy Markdown

claude bot commented Feb 4, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

Clamp futureObligations to 0 in both the calculation and formula
display, preventing stale negative values from localStorage leaking
through. Also mark personal_accident coverage as required.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jcleow jcleow merged commit b056855 into main Feb 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant