Commit Graph

123 Commits

Author SHA1 Message Date
fb27659f5c docs(02-03): complete dashboard integration plan 2026-03-16 14:24:52 +01:00
243cacf862 feat(02-03): update DashboardSkeleton for 3-column chart layout
- Replace 2-column chart skeleton with 3-column grid (md:grid-cols-2 lg:grid-cols-3)
- Add third skeleton chart card matching real donut/bar/bar layout
- Update skeleton height to 250px to match chart component heights
2026-03-16 14:22:24 +01:00
01674e18fb feat(02-03): refactor DashboardPage with month navigation and 3-column chart grid
- Replace hardcoded current month with useMonthParam (URL search params)
- Add MonthNavigator in PageShell action slot
- Replace old recharts pie + progress bars with ExpenseDonutChart, IncomeBarChart, SpendBarChart
- Add empty-month prompt with create/generate buttons
- Memoize all derived data with useMemo
- Move QuickAddPicker below chart grid per plan
2026-03-16 14:21:55 +01:00
ddcddbef56 docs(state): save progress — wave 1 complete, paused before wave 2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 13:06:53 +01:00
643ba47fda docs(02-02): complete dashboard chart components plan
- SUMMARY.md with task commits, deviations, and self-check
- STATE.md updated with phase 2 position and decisions
- ROADMAP.md updated with plan progress

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 13:05:31 +01:00
bb12d01aae feat(02-02): create IncomeBarChart and SpendBarChart components
- IncomeBarChart: vertical grouped bars (budgeted muted, actual vivid)
- SpendBarChart: horizontal bars via layout="vertical" with swapped axes
- Both use per-cell conditional fill for over-budget red accent
- Both use ChartContainer + ChartConfig for CSS variable theming
- Both handle empty data with ChartEmptyState placeholder
- ChartLegend and ChartTooltip with formatted currency values
2026-03-16 13:03:23 +01:00
42bf1f9431 feat(02-01): add chart and month navigation i18n keys
- Add 10 new dashboard keys to en.json (monthNav, noData, charts, etc.)
- Add matching German translations to de.json
- ChartEmptyState component already exists from Phase 1
2026-03-16 13:03:06 +01:00
971c5c7cbe feat(02-02): create ExpenseDonutChart with center label and active hover
- Donut chart with innerRadius/outerRadius, center total label via formatCurrency
- Active sector expansion on hover via activeShape + Sector
- Custom legend below chart with color dots and formatted amounts
- CSS variable fills via ChartConfig (no hardcoded hex values)
- Empty state: ChartEmptyState placeholder when no data
- Zero-amount state: neutral muted ring with $0 center label
- ChartEmptyState shared component created (Rule 3: blocking dependency from Plan 01)
2026-03-16 13:02:30 +01:00
448195016f feat(02-01): create useMonthParam hook and MonthNavigator component
- useMonthParam reads/writes month URL search param with YYYY-MM fallback
- navigateMonth handles year rollover via Date constructor
- MonthNavigator renders prev/next arrows with Select dropdown
- Dropdown lists available budget months with locale-aware formatting
2026-03-16 13:02:29 +01:00
dca5b04494 docs(02): create phase plan — 3 plans across 2 waves for dashboard charts and layout 2026-03-16 12:57:33 +01:00
e0b3194211 docs(phase-02): add validation strategy 2026-03-16 12:51:20 +01:00
7346a6a125 docs(02): research phase domain 2026-03-16 12:50:24 +01:00
f548e7bbb7 docs(state): record phase 2 context session 2026-03-16 12:43:08 +01:00
882a609c57 docs(02): capture phase context 2026-03-16 12:43:01 +01:00
2102968c2f docs(phase-1): complete phase execution 2026-03-16 12:27:24 +01:00
8768e9ae4a docs(01-02): complete dashboard shared components plan
- SUMMARY.md with task commits, decisions, and self-check
- STATE.md updated: Phase 1 complete, progress 100%
- ROADMAP.md updated: Phase 1 marked complete (2/2 plans)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:23:28 +01:00
a533e06f8c feat(01-02): integrate PageShell, SummaryStrip, and DashboardSkeleton into DashboardPage
- Replace inline SummaryCard with SummaryStrip component (responsive 3-card grid)
- Replace inline h1 header with PageShell wrapper
- Replace loading null returns with DashboardSkeleton pulse animation
- Replace hardcoded green/red color classes with semantic tokens (text-on-budget, text-over-budget, bg-on-budget, bg-over-budget)
- Derive budgetedIncome/budgetedExpenses for variance display

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:20:21 +01:00
ffc5c5f824 feat(01-02): create PageShell, StatCard, SummaryStrip, and DashboardSkeleton components
- PageShell: reusable page header with title, description, and action slot
- StatCard: KPI card with formatted value, semantic color, and optional variance badge
- SummaryStrip: responsive 3-card grid composing StatCards for income/expenses/balance
- DashboardSkeleton: pulse-animated loading placeholder mirroring real dashboard layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:18:55 +01:00
b756540339 docs(01-01): complete design primitives plan
- Add 01-01-SUMMARY.md with execution results and self-check
- Update STATE.md with position, decisions, and metrics
- Update ROADMAP.md with plan progress
- Log pre-existing lint errors to deferred-items.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:16:36 +01:00
4f74c79fda feat(01-01): extend color tokens and add dashboard i18n keys
- Darken 6 category color tokens for WCAG 4.5:1 text contrast
- Add semantic status tokens: over-budget, on-budget, budget-bar-bg
- Add 6 chart fill variants for lighter non-text fills
- Add 6 new dashboard i18n keys (carryover, vsBudget, overBudget, underBudget, onTrack, loading) to en.json and de.json at parity

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:14:31 +01:00
d89d70f3c7 feat(01-01): install shadcn chart and collapsible primitives
- Add chart.tsx with ChartContainer, ChartTooltip, ChartTooltipContent wrappers
- Apply Recharts v3 initialDimension patch (shadcn-ui/ui#9892)
- Add collapsible.tsx with Collapsible, CollapsibleTrigger, CollapsibleContent

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:13:10 +01:00
5659810918 docs(01): create phase plan 2026-03-16 12:08:45 +01:00
f8e94b0329 docs(phase-1): add validation strategy 2026-03-16 12:02:22 +01:00
952d250b38 docs(01): research phase domain — design foundation and primitives 2026-03-16 12:01:28 +01:00
4387795947 docs: create UI/UX overhaul roadmap with 4-phase structure
Map all 13 active requirements to a foundation-first delivery
sequence: design primitives, dashboard charts, collapsible
sections, then full-app consistency.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 11:48:16 +01:00
b830d381db docs: complete project research 2026-03-16 11:45:14 +01:00
c960b1a504 chore: add project config 2026-03-16 11:31:45 +01:00
3fc9288c38 docs: initialize project 2026-03-16 11:30:39 +01:00
45e0f779a4 docs: map existing codebase 2026-03-16 11:19:29 +01:00
65d9842831 restart 2026-03-15 17:29:43 +01:00
d8668ed742 docs(phase-7): complete phase execution 2026-03-12 13:44:47 +01:00
8e70aa3678 docs(07-02): complete quick-add library frontend plan
- Created 07-02-SUMMARY.md documenting all changes and decisions
- Updated STATE.md: progress 100%, decisions, session info
- Updated ROADMAP.md: phase 07 marked Complete (2/2 summaries)
2026-03-12 13:40:53 +01:00
8238e07582 feat(07-02): add QuickAddPicker component and wire into DashboardPage
- Created QuickAddPicker component using DropdownMenu (no Popover available)
- Picker fetches quick-add library on mount and shows items with icon + name
- On item select: finds or creates matching category, then creates one_off budget item
- Empty state shows link to /quick-add management page
- Loading spinner on selected item while creating
- Wired QuickAddPicker into DashboardPage toolbar next to Create Budget button
2026-03-12 13:39:24 +01:00
411a986c14 feat(07-02): add QuickAdd API client, hook, management page, routing, and i18n
- Added QuickAddItem interface and quickAdd namespace to api.ts
- Created useQuickAdd hook with CRUD operations following useTemplate pattern
- Created QuickAddPage with amber/orange gradient header, add form, inline edit, and EmptyState
- Added /quick-add route to App.tsx with QuickAddPage import
- Added Zap nav item to AppLayout sidebar after template
- Added quickAdd i18n keys to en.json and de.json including picker keys
2026-03-12 13:38:20 +01:00
bf0dac9bca docs(07-01): complete quick-add library backend plan
- Add 07-01-SUMMARY.md documenting migration, model, queries, and handlers
- Update STATE.md: progress 94%, decisions, session record
- Update ROADMAP.md: phase 7 in-progress with 1/2 plans complete
- Mark requirements QADD-01 and QADD-03 complete
2026-03-12 13:35:53 +01:00
b42f7b13bb feat(07-01): add quick-add HTTP handlers and route registration
- Add ListQuickAddItems, CreateQuickAddItem, UpdateQuickAddItem, DeleteQuickAddItem handler methods
- Register GET/POST /api/quick-add and PUT/DELETE /api/quick-add/{itemId} in authenticated route group
- Validate name non-empty on create and update; return 404 on update when item not found
2026-03-12 13:34:19 +01:00
84d5b76a8a feat(07-01): add QuickAddItem migration, model, and query functions
- Create 003_quick_add_library.sql with quick_add_items table and user index
- Add QuickAddItem struct to models.go following Category pattern
- Add ListQuickAddItems, CreateQuickAddItem, UpdateQuickAddItem, DeleteQuickAddItem to queries.go
2026-03-12 13:33:53 +01:00
cccac351cf fix(07): revise plans based on checker feedback 2026-03-12 13:30:10 +01:00
c57311adb4 docs(07-quick-add-library): create phase plan 2026-03-12 13:24:58 +01:00
51c9aa39d0 docs(phase-6): complete phase execution 2026-03-12 13:14:02 +01:00
1e579db6af docs(06-02): complete template workflow replacement plan
- Create 06-02-SUMMARY.md documenting month-picker generation workflow
- Update STATE.md: progress 100%, decisions, session info
- Update ROADMAP.md: Phase 06 marked Complete (2/2 summaries)
- Mark TMPL-03 and TMPL-06 complete in REQUIREMENTS.md
2026-03-12 13:11:09 +01:00
234a7d913a feat(06-02): display item_tier badge in tracker table rows
- Add Badge import to BillsTracker, VariableExpenses, DebtTracker
- Render outline Badge after category name showing tier (Fixed/Variable/One-off)
- Use i18n keys template.fixed, template.variable, template.oneOff
- Badge is purely informational with variant="outline" for subtle appearance
2026-03-12 13:09:27 +01:00
7dfd04f31b feat(06-02): replace BudgetSetup with template-based month picker
- Rewrite BudgetSetup to use month picker + currency + Generate button
- Remove manual form fields (name, dates, carryover, copy-from select)
- Handle 409 conflict gracefully by calling onCreated() to refresh list
- Remove copyFrom method from budgets API (TMPL-06)
- Update BudgetSetup test to reflect new month-picker UI
- Remove copyFrom from DashboardPage test mock
- Add budget.generate, budget.month, budget.generating i18n keys (EN/DE)
- Remove budget.copyFrom and budget.setup i18n keys
2026-03-12 13:08:46 +01:00
14075850c3 docs(06-01): complete template frontend page plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 13:06:18 +01:00
924e01c983 feat(06-01): add TemplatePage, routing, sidebar nav, and i18n translations
- Create TemplatePage with add form (category/tier/amount), items table, and empty state
- Add /template route to App.tsx with TemplatePage component
- Add Template nav item to sidebar (between Categories and Settings)
- Add template and nav.template i18n keys for EN and DE
- Fix unused import in useTemplate hook
2026-03-12 13:04:52 +01:00
0af9431435 feat(06-01): add template API client functions and useTemplate hook
- Add ItemTier type and TemplateItem/TemplateDetail interfaces to api.ts
- Add item_tier field to BudgetItem interface
- Add template API object with get/updateName/addItem/updateItem/deleteItem/reorder
- Add generate function to budgets API object
- Create useTemplate hook with CRUD operations and reorder logic
2026-03-12 13:03:23 +01:00
fd171edaf0 fix(06): revise 06-02 plan based on checker feedback 2026-03-12 13:00:01 +01:00
791341d0a6 docs(06): create phase plan for template frontend and workflow replacement 2026-03-12 12:56:33 +01:00
4a8e3a3c5c docs(phase-5): complete phase execution 2026-03-12 12:15:30 +01:00
c8fc17c43c docs(05-02): complete template API handlers plan 2026-03-12 12:11:38 +01:00