Three-column Sankey diagram (Income → Categories → Tags) rendered with
custom matplotlib bezier paths. Features gradient-fill bands that
interpolate color from source to destination nodes, neon glow effects
on nodes and bands, and a surplus node when income exceeds expenses.
Also fixes QFont::setPointSize warning by switching dark.qss font-size
units from px to pt, preventing Qt delegate code from receiving -1
point sizes during inline cell editing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CLAUDE.md was outdated — claimed no build system, dependencies, or tests
when all three exist. Rewrote with commands, architecture, conventions,
gotchas, and dependency info.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use fuzzy description grouping (strip digits/symbols) so transactions
like "FREEDOM MTG PYMTS 1234" and "FREEDOM MTG PYMTS 5678" are detected
together. Switch to median for amounts and intervals for outlier
resilience. Widen frequency bands to eliminate gaps (biweekly 10-18,
monthly 19-45) and add semi-annual detection. Raise default amount
tolerance to 15% and allow 25% outlier payments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Run on Uncategorized applies the selected rule to all matching
uncategorized transactions. Audit finds rules with similar patterns
across the same category and proposes merging them into broader rules,
with an editable proposed pattern and checkbox selection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Make all three columns editable via single-click dropdowns with auto-popup.
Add bulk rule application to existing uncategorized transactions after
creating a new rule. Fix column widths for better readability. Add explicit
font-size to QSS child-widget selectors to fix QFont point size warning.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace Catppuccin theme with single dark cyberpunk palette featuring
neon green accents, monospace fonts, and void-dark backgrounds. Remove
light theme toggle entirely. Fix hardcoded inline colors across all
views to use centralized palette constants. Fix table column widths
in transactions, recurring, settings, and CSV mappings views. Add
design system documentation for future development.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reduced vertical padding for buttons inside tables and set fixed column
widths so Confirm/Dismiss buttons fit cleanly within their cells.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract data loading into a refresh() method on SettingsView and call it
on view switch so categories, rules, and household data stay current.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
session.new is emptied by auto-flush during duplicate detection queries,
so we track new Transaction objects in a list instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Orchestrates CSV reading, description normalization, and transaction
storage. Uses count-based duplicate detection so legitimate repeated
transactions (same date/amount/description) in a single file are all
imported, while re-importing the same file correctly identifies every
row as a duplicate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement Categorizer protocol and RuleBasedCategorizer service that
matches transactions against pipe-separated patterns ordered by priority,
with support for tag overrides and household member attribution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add the data layer for the spending analysis app including models for
household members, accounts, categories, transactions, categorization
rules, and CSV import mappings. All models use SQLAlchemy 2.0 mapped
columns with proper foreign key relationships. Includes db.py with
Base class, engine/session factories, and 6 passing tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds known source formats (Chase credit card with headers, Wells Fargo
checking headerless), description normalization strategy, cross-account
transfer detection, source category hints, household income sources,
and sample categorization rules based on real transaction data.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Captures the full v1 design: CSV import with auto-mapping, rule-based
categorization (extensible for AI), household member attribution,
spending trends, category breakdowns, recurring charge detection,
and forecasting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>