Commit Graph

3 Commits

Author SHA1 Message Date
Víctor Falcón 514eba2968 fix(savings-goals): satisfy larastan and avoid test helper collision
- Annotate SavingsGoal created_at/target_date so larastan resolves them to
  Carbon at the project()/effectiveStart() call sites.
- Rename the test's onboardedUser() helper (collided with an existing global
  helper in ConnectionAccountTest under the full suite).
2026-07-20 18:13:56 +02:00
Víctor Falcón e01d63732c fix(savings-goals): apply product review
- Anchor the timeline and elapsed window on min(created_at, earliest tagged
  transaction) so tagging pre-existing savings no longer inflates the rate/ETA
  or disconnects the chart's solid line from the projection.
- Only surface 'estimated completion' when a target date is set (matches the
  minimal no-date spec).
- Defer the create-chooser dialog open past the Radix dropdown close to avoid
  the pointer-events/focus race.
- Clamp displayed progress percentage to >= 0.
2026-07-20 17:50:25 +02:00
Víctor Falcón 3340a33fe1 feat(savings-goals): add tag-based savings goals alongside budgets
Savings goals track net inflow toward a target using a per-goal label
(source=saving_goal, hidden from the labels settings screen). Saved is the
negated net flow of tagged transactions, with a linear on-track/estimated-date
projection. Lives on the budgets page behind a Pennant flag, gated identically
to budgets.
2026-07-20 17:38:38 +02:00