|
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
refresh on scenario edits Two fixes for the user's report that adding a £100k life-event spend didn't change the chart: Engine (simulator.py) - New `extra_outflows` param. cashflow_adjustments still drains the portfolio at start-of-year as before, but the simulator now ALSO records the spending in `withdrawal_hist[p, y]` so the chart's red median-withdrawal trace shows the bump. Without this, the £100k silently came out of the portfolio but the user-facing withdrawal trace stayed at the strategy's flat 4% draw. - simulate.py wires extra_outflows = essential + discretionary category outflows from life events. UX (ScenarioDetail.tsx) - New auto-refresh: when life events / income streams / flex rules change for a scenario, the page fires `/simulate` automatically with 2,000 paths and uses the result as the primary fan/year-stats source. The persisted MC run is only consulted as a fallback for scenarios with no overrides. - Fan chart title gains a "live preview · Xs · Ny" pill while a sim is current, and "re-running…" while a fresh one is in flight. - Removed the now-redundant "Live preview run" duplicate card lower down — the main chart IS the live preview. - Year-stats badge row reads from sim.data when available so changes propagate immediately to NW / Δ NW / Spending / Taxes. 247 pytest pass (+1 new); mypy + ruff clean; frontend typecheck/test/ build green. |
||
|---|---|---|
| .. | ||
| api | ||
| ingest | ||
| reporters | ||
| returns | ||
| strategies | ||
| tax | ||
| __init__.py | ||
| __main__.py | ||
| actualbudget.py | ||
| app.py | ||
| db.py | ||
| flex_spending.py | ||
| fx.py | ||
| glide_path.py | ||
| goals_eval.py | ||
| income_streams.py | ||
| life_events.py | ||
| scenarios.py | ||
| simulator.py | ||