Releases: whahn1983/pycashflow
v3.4.0
- Add AI cash flow insights via OpenAI API
- Add AISettings model to store per-user encrypted OpenAI API keys,
cached insights JSON, and last-updated timestamp - Add migration c3d4e5f6a7b8 to create the ai_settings table
- Add /ai_settings POST route (account owners only) to save API key
encrypted via the same Fernet/APP_SECRET pattern used for email passwords - Add /ai_insights POST route (account owners only) to query OpenAI
gpt-4o-mini on demand with a 90-day projection payload and cache results - Add AI Insights settings card + modal to settings.html so account
owners can configure their API key; shows configured/not-configured status - Add AI Insights card to dashboard (index.html) below the cashflow chart
with AJAX refresh button, typed insight badges (risk/pattern/observation),
and last-updated timestamp; guests see cached insights read-only - Add openai to requirements.txt
v3.3.2
Add APP_SECRET-based encryption for stored email passwords (#35)
Email passwords for IMAP balance updates and SMTP notifications are now
encrypted at rest using Fernet symmetric encryption derived from APP_SECRET.
- Add crypto_utils.py with encrypt_password/decrypt_password helpers
- Encrypt passwords in /email and /global_email_settings routes before DB write
- Decrypt passwords in getemail.py before IMAP/SMTP use
- Expand password columns from String(100) to String(500) for encrypted tokens
- Add migration: creates global_email_settings table and widens email.password
- Add APP_SECRET to .env_example with generation instructions
v3.3.1
Summary
This change reorders the trace elements in the cash flow chart to ensure the Schedule line is rendered on top of the Scenario trace, improving visual clarity when both traces are present.
Key Changes
Moved the Schedule trace initialization from the beginning of the traces list to the end
Changed traces initialization from a list containing the Schedule trace to an empty list
The Schedule trace is now appended after the Scenario trace (if it exists), ensuring it renders on top in the chart
Implementation Details
In Plotly, traces are rendered in the order they appear in the traces list, with later traces appearing on top. By moving the Schedule trace to be appended last, it will now display above the Scenario trace when both are present, making it more visible and easier to interact with.
v3.3.0
Add scenario modeling for what-if financial projections (#32)
- Add Scenario Modeling feature
- Add Scenario model (mirrors Schedule: name, amount, type, frequency,
startdate, firstdate, user_id, unique per user) - calc_schedule: process scenarios into a second dict (total_dict_scenario)
that combines schedules + scenarios; schedule items feed both dicts,
scenario items feed only total_dict_scenario; Onetime scenarios skip
projection when past but are never auto-deleted - update_cash: accepts optional scenarios list; calls calc_transactions
twice and returns (trans, run, run_scenario) where run_scenario is None
when no scenarios exist - plot_cash: accepts optional run_scenario; renders solid blue schedule
line and dashed amber scenario line with legend; y-axis range accounts
for both lines; returns (minbalance, min_scenario, graphJSON) - Dashboard: lowest balance card shows scenario minimum in amber
parentheses e.g. "$1,200 ($950)" with "amber = with scenarios" label - New routes: /scenarios, /create_scenario, /update_scenario,
/delete_scenario/ all with @admin_required - delete_user: also cleans up Scenario rows for deleted users
- base.html: Scenarios nav link (flask icon) after Schedule
- scenario_table.html: new page mirroring schedule page; Edit + Delete
per row (no Hold); Add Scenario modal with same fields - Migration: a1b2c3d4e5f6 adds scenario table chained from initial
v3.2.4
v3.2.3
This commit addresses three UI improvements:
Global admin page layout fixes:
Added horizontal scroll support for user cards with overflow-x: auto
Fixed user card layout to properly contain labels and buttons
Added flex-shrink properties to prevent content overflow
Applied fixes to both guest user sections (under Global Admins and Account Owners)
User role dropdown simplification:
Consolidated "User" and "Admin" roles into single "Account Owner" option
Updated all role dropdowns across add/edit modals
Changed dropdown to show only "Account Owner" and "Global Admin"
Updated selection logic to handle the consolidated roles
Settings page clarity improvement:
Renamed "Email Configuration" card to "Automated Balance Updates"
Updated description to clarify it's for email monitoring
Kept "Configure Email" button text as requested