211 Commits

Author SHA1 Message Date
4bb37ef7ea docs(phase-07): complete phase execution 2026-04-20 21:15:36 +02:00
97651d0b5c chore: merge executor worktree (worktree-agent-af11b313) 2026-04-20 21:12:11 +02:00
7b336aee0e docs(07-02): complete setup wizard completion and routing plan
- SUMMARY.md with execution results and deviation documentation
2026-04-20 21:11:45 +02:00
6b75f14361 feat(07-02): register /setup route and add first-run redirect
- /setup route as protected standalone page (outside AppLayout)
- DashboardPage redirects first-run users to /setup via useFirstRunState
- All hooks called before conditional returns (React rules of hooks)
2026-04-20 21:10:58 +02:00
396d342d57 feat(07-02): ReviewStep component and wizard completion/skip logic
- ReviewStep shows read-only grouped summary with income, items, totals
- handleComplete creates categories + template items with duplicate handling
- handleSkipSetup marks setup_completed without creating data
- Double-submit prevention via completing state
- Toast notifications for success/error/partial failure
- Query invalidation to prevent redirect loops
2026-04-20 21:10:07 +02:00
7b16ec2e9e chore: merge executor worktree (worktree-agent-ae9d4649) 2026-04-20 21:07:34 +02:00
fada289774 docs(07-01): complete setup wizard UI shell plan
- SUMMARY.md with all task commits, decisions, and known stubs
2026-04-20 21:07:23 +02:00
e1411976dd feat(07-01): create wizard UI components and SetupPage
- WizardStepper: horizontal 1-2-3 stepper with clickable completed steps
- IncomeStep: number input with currency suffix and validation
- AllocationBar: sticky remaining balance with live polite announcements
- CategoryGroupHeader: colored dot section divider per category type
- PresetItemRow: checkbox + name + badge + editable amount input
- RecurringItemsStep: groups 19 PRESETS by type with allocation calculation
- SetupPage: page orchestrator with step navigation and state persistence
2026-04-20 21:06:29 +02:00
bbcb07ff38 feat(07-01): add useWizardState hook, i18n keys, and shadcn checkbox
- Create useWizardState hook with localStorage persistence keyed by userId
- Add all setup wizard i18n keys to en.json and de.json
- Install shadcn checkbox component for step 2 item selection
2026-04-20 21:04:34 +02:00
7b11f80a54 docs(07): pattern mapping for setup wizard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 21:01:33 +02:00
55eca5dbe1 docs(07): create phase plans for setup wizard
Two plans covering the 3-step first-run wizard: state management + UI
components (Wave 1), then completion logic + routing + redirect (Wave 2).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 20:59:26 +02:00
07823081bb docs(07): research phase domain for setup wizard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 20:51:44 +02:00
3c937e68bc docs(07): fix UI-SPEC typography to 2-weight contract
Collapse 3 font weights (400/500/600) to 2 (400/600) per checker
requirement. Labels now use semibold (600) instead of medium (500).
Also improves CTA labels and adds focal point declaration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 20:30:50 +02:00
272af4ec98 docs(07): UI design contract for setup wizard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 20:26:45 +02:00
fd068fb552 docs(07): smart discuss context .planning/phases/07-setup-wizard/07-CONTEXT.md 2026-04-20 20:22:41 +02:00
87c0795126 docs(phase-06): complete phase execution .planning/ROADMAP.md .planning/STATE.md 2026-04-20 20:19:43 +02:00
07ad9e15ee docs(06): phase verification /home/jlmak/Projects/jlmak/SimpleFinanceDash/.planning/phases/06-preset-data-first-run-detection-and-db-safety/06-VERIFICATION.md 2026-04-20 20:12:17 +02:00
3c39410635 docs(06-03): complete useFirstRunState hook and DB schema push summary
- SUMMARY.md for plan 06-03 with all task results
- STATE.md updated: Phase 06 complete (3/3 plans)
- ROADMAP.md updated: Phase 06 marked complete

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 20:08:45 +02:00
0c1105fc78 feat(06-03): create useFirstRunState derived hook
- Derives first-run state from cached useCategories + useTemplate queries
- Returns { isFirstRun, loading } with no additional network calls
- isFirstRun true when categories or template items array is empty
- Loading guard prevents spurious redirects during fetch
2026-04-20 19:32:09 +02:00
0e0c2a6ae4 chore: merge executor worktree (06-02 presets + i18n) 2026-04-20 17:49:06 +02:00
9a64cbb505 chore: merge executor worktree (06-01 DB migrations) 2026-04-20 17:49:06 +02:00
60c27db074 docs(06-01): complete plan 01 DB safety constraints and first-run flag summary 2026-04-20 17:48:56 +02:00
39840ca5af feat(06-01): add setup_completed boolean to Profile TypeScript interface
- Added setup_completed: boolean after currency field in Profile interface
2026-04-20 17:48:37 +02:00
934ae0e4c7 docs(06-02): complete preset data library plan summary 2026-04-20 17:48:28 +02:00
0f441b6041 feat(06-01): add migration 007 setup_completed column and backfill
- ALTER TABLE profiles ADD COLUMN setup_completed boolean NOT NULL DEFAULT false
- Backfill existing users with categories OR template items to true
- UNION covers edge case users with template items but no categories
2026-04-20 17:48:25 +02:00
23fd3fad35 feat(06-01): add migration 006 uniqueness constraints with safe deduplication
- DELETE duplicate budgets keeping oldest per (user_id, start_date)
- ADD CONSTRAINT budgets_user_month_unique UNIQUE (user_id, start_date)
- DELETE duplicate categories keeping oldest per (user_id, name)
- ADD CONSTRAINT categories_user_name_unique UNIQUE (user_id, name)
- Wrapped in single BEGIN/COMMIT transaction for atomicity
2026-04-20 17:48:13 +02:00
d23508017a feat(06-02): add preset i18n translations to en.json and de.json
- Add top-level presets key with presets.{type}.{slug} structure
- 19 English translations covering all 6 category types
- 19 German translations covering all 6 category types
- Both JSON files remain valid after edits
2026-04-20 17:48:11 +02:00
3bc7782198 feat(06-02): create 19-item preset budget library
- Add PresetItem interface with slug, type, defaultAmount, item_tier
- Export PRESETS array with 19 items across 6 category types
- Distribution: 4 income, 4 bill, 5 variable_expense, 2 debt, 2 saving, 2 investment
- All item_tier values are fixed or variable (no one_off)
2026-04-20 17:47:47 +02:00
9963926971 docs(06): create phase 6 plan — preset data, first-run detection, and DB safety
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:45:50 +02:00
662390fc78 docs(06): research phase 6 preset data, first-run detection, and DB safety
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:41:49 +02:00
843261d321 docs(06): smart discuss context 2026-04-20 17:38:01 +02:00
6607ec8aa5 docs(phase-05): complete phase execution 2026-04-20 17:26:09 +02:00
d99c098df7 docs(05): update verification after radius scale fix 2026-04-20 17:25:56 +02:00
eceddcaf4f fix(05): add explicit radius scale tokens for Tailwind v4 cascade
Tailwind v4 does not derive --radius-xs through --radius-3xl from --radius.
The named scale is independent, so Cards (rounded-xl), Buttons (rounded-md),
etc. retained non-zero border-radius despite --radius: 0. Adding all scale
tokens as 0 ensures complete sharp-corner cascade.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 17:25:09 +02:00
c6dc2c3050 chore: merge executor worktree (worktree-agent-a2b5acd5) 2026-04-20 17:17:19 +02:00
c3b50c70a8 docs(05-03): complete page rounding sweep and spacing upgrade plan 2026-04-20 17:17:05 +02:00
00670afe4e feat(05-03): remove rounded-* and upgrade spacing on all 9 pages
- DashboardPage: space-y-6->space-y-8, gap-6->gap-8 in chart grid
- BudgetListPage: remove rounded-md from template toggle row
- BudgetDetailPage: remove rounded-sm/md from skeleton and group headings, rounded-md from summary box, rounded-full from category dot
- TemplatePage: remove rounded-sm/full/md from skeleton and group headings and category dot; gap-6->gap-8, space-y-6->space-y-8
- CategoriesPage: remove rounded-sm/full/md from skeleton and group headings; space-y-6->space-y-8
- QuickAddPage: remove rounded-full/md from skeleton items
- SettingsPage: space-y-4->space-y-6 in CardContent (skeleton and live)
2026-04-20 17:16:29 +02:00
12ed62e430 docs(phase-05): update tracking after wave 1 2026-04-20 17:13:14 +02:00
441d201837 chore: merge executor worktree (worktree-agent-a29c13e1) 2026-04-20 17:12:56 +02:00
6e892374b8 chore: merge executor worktree (worktree-agent-a0017a3e) 2026-04-20 17:12:52 +02:00
1547fe350c docs(05-02): complete shared component rounding and spacing cleanup plan 2026-04-20 17:12:39 +02:00
4eb866cad1 docs(05-01): complete design token foundation plan summary 2026-04-20 17:12:22 +02:00
e7282fa3d6 feat(05-02): remove hardcoded rounded-* from CategorySection, ChartEmptyState, QuickAddPicker
- CategorySection: remove rounded-md from collapsible trigger button
- ChartEmptyState: remove rounded-lg from empty state border container
- QuickAddPicker: remove rounded-sm from picker item buttons
- QuickAddPicker: remove rounded-full from category dot indicator
2026-04-20 17:12:03 +02:00
4c74deced7 feat(05-01): update chart Bar radius to 0 and remove rounded-full legend dot
- SpendBarChart: set radius={0} on both Bar elements (was radius={4})
- IncomeBarChart: set radius={0} on both Bar elements (was radius={[4,4,0,0]})
- ExpenseDonutChart: remove rounded-full from legend color dot className
2026-04-20 17:11:48 +02:00
e8f13c91c6 feat(05-02): upgrade PageShell spacing to gap-8 and remove rounded-* from DashboardSkeleton
- PageShell: gap-6 → gap-8 for header-to-content spacing on all pages
- DashboardSkeleton: gap-6 → gap-8 (outer flex), gap-4 → gap-6 (summary cards), gap-6 → gap-8 (chart grid)
- DashboardSkeleton: remove rounded-md from 3 chart skeleton placeholders
- DashboardSkeleton: remove rounded-md from collapsible section row divs
- DashboardSkeleton: remove rounded-full from 2 badge skeleton placeholders
2026-04-20 17:11:20 +02:00
99b5b5f8e4 feat(05-01): edit design tokens and add CSS overrides in index.css
- Set --radius: 0 for sharp-cornered design system cascade
- Warm background chroma from 0.005 to 0.01
- Delete --color-chart-1 through --color-chart-5 (redundant with fill vars)
- Raise fill chroma to 0.22+ for vibrant pastel category colors
- Add .recharts-rectangle and [data-sonner-toast] radius overrides
2026-04-20 17:11:12 +02:00
e5637511d7 docs(05): create phase 5 design system token rework plans
3 plans across 2 waves covering DS-01, DS-02, DS-03:
- Plan 01: Token edits (radius, colors, chart vars) + chart components
- Plan 02: Shared component rounded-* removal + spacing upgrades
- Plan 03: Per-page sweep (9 pages) + visual verification checkpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 16:53:20 +02:00
df2c6af8bf docs(phase-5): add validation strategy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 16:45:06 +02:00
0a598e53d8 docs(05): research phase 5 design system token rework
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:44:11 +02:00
1258368522 docs(phase-5): UI design contract for Design System Token Rework
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:37:13 +02:00