All notable changes to the Ashfolio project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
AI Settings Page: Complete consent and privacy management interface
- Privacy mode selection (strict, anonymized, standard, full)
- Feature toggle for MCP tools, AI analysis, cloud AI
- GDPR-compliant data export and consent revocation
- Consent status display with visual indicators
-
Natural Language Parsing: Flexible amount and data parsing
- Amount parser supporting $100, 85k, EUR 500, ranges ($50-100)
- Date parsing with relative terms (today, yesterday)
- Two-phase MCP tools: guidance → structured execution
- Schema-driven validation for expenses and transactions
-
Tool Discovery & Search: Optimized AI context management
- Module Registry for centralized tool discovery
- Tool search following Anthropic's advanced pattern (~85% token reduction)
- Privacy-aware tool filtering by consent mode
- Runtime tool registration for extensibility
-
Legal & Consent Infrastructure: GDPR-compliant consent management
- AiConsent resource with versioned terms acceptance
- ConsentAudit append-only audit trail
- Consent modal with feature selection and terms display
- ConsentCheck hook for LiveView consent enforcement
-
Parsing Module (
lib/ashfolio/parsing/)Parseablebehaviour for standardized parsing interfaceAmountParserwith Decimal precision and currency supportSchemahelpers for LLM-assisted structuring
-
MCP Infrastructure (
lib/ashfolio_web/mcp/)ModuleRegistryGenServer for tool discoveryToolSearchwith keyword scoring algorithmParserToolExecutorfor two-phase tool execution
-
Legal Domain (
lib/ashfolio/legal/)AiConsentAsh resource with grant/withdraw actionsConsentAuditfor compliance tracking
- 123 new tests across all modules
- Full LiveView testing for AI Settings page
- Integration tests for MCP tool flow
-
Model Context Protocol (MCP) Server: Enable AI assistants to access portfolio data
- Complete MCP 2024-11-05 specification implementation
- Privacy-filtered data access with configurable modes
- Four core tools: list_accounts, get_portfolio_summary, list_transactions, list_symbols
- JSON-RPC 2.0 over stdio transport
-
Privacy Filtering System: Granular control over data exposure
- Four privacy modes: strict, anonymized, standard, full
- Account anonymization (names → letters A, B, C)
- Amount tier masking ($1K-$10K, $10K-$100K, etc.)
- Configurable via application environment
-
AshAi Integration: Native Ash framework MCP support
- Domain-level tool definitions
- Automatic schema generation from Ash resources
- Type-safe tool execution
-
MCP Router (
lib/ashfolio_web/mcp/router.ex)- Handles initialize, tools/list, tools/call methods
- Server capabilities negotiation
- Proper error responses per MCP spec
-
Privacy Filter (
lib/ashfolio_web/mcp/privacy_filter.ex)- Mode-aware data transformation
- Consistent anonymization across requests
- Preserves data relationships while hiding sensitive values
-
Anonymizer (
lib/ashfolio_web/mcp/anonymizer.ex)- Deterministic letter assignment for accounts
- Amount tier classification
- Account type generalization
config :ashfolio, :mcp,
privacy_mode: :anonymized, # :strict | :anonymized | :standard | :full
enabled: true- MCP router and protocol tests
- Privacy filter with all four modes
- Anonymizer determinism verification
- Integration tests with real portfolio data
-
Natural Language Transaction Parsing: Enter transactions conversationally
- Parse phrases like "Bought 10 AAPL at 150 yesterday"
- Support for buy/sell, quantity, symbol, price, and date extraction
- User review required before saving (human-in-the-loop)
- Graceful fallback to manual entry on parse failure
-
Multi-Provider AI Architecture: Flexible AI backend support
- Ollama (Recommended): Local-first, privacy-preserving AI processing
- OpenAI: Cloud-based alternative for users without local GPU
- Dispatcher pattern for seamless provider switching
- Configurable model selection per provider
-
Privacy-First Design: Financial data stays local
- Ollama runs entirely on your machine
- No transaction data sent to cloud unless explicitly using OpenAI
- Consistent with Ashfolio's local-first philosophy
-
AI Module Structure: Clean separation of concerns
Ashfolio.AI.Dispatcher: Routes requests to appropriate handlersAshfolio.AI.Handler: Behaviour definition for AI handlersAshfolio.AI.Handlers.TransactionParser: Natural language parsingAshfolio.AI.Model: Provider configuration and model management
-
Configuration: Simple setup via config.exs
ai_provider::ollama(default) or:openaiollama_model: Model name (default: "llama3")openai_model: Model name (default: "gpt-4o-mini")
- Comprehensive feature documentation in
docs/features/ai-natural-language-entry.md - Setup guides for both Ollama and OpenAI configurations
- Usage examples and troubleshooting guide
-
Efficient Frontier Visualization: Complete Markowitz portfolio optimization
- Minimum Variance Portfolio: Lowest risk portfolio on the frontier
- Tangency Portfolio: Maximum Sharpe ratio (best risk-adjusted returns)
- Maximum Return Portfolio: Highest expected return allocation
- N-asset portfolio optimization with approximation algorithms
- Interactive portfolio weight allocations display
- Color-coded cards (blue/green/purple) for visual hierarchy
-
Portfolio Optimization Engine: Modern portfolio theory implementation
- Analytical 2-asset optimization with exact solutions
- N-asset tangency portfolio via frontier sampling (99% accuracy)
- Correlation matrix-based portfolio construction
- Return-weighted, inverse-volatility, and blended strategies
- Sharpe ratio maximization across candidate portfolios
-
Advanced Analytics Dashboard: Comprehensive performance metrics
- Time-Weighted Return (TWR): Portfolio manager performance
- Money-Weighted Return (MWR): Personal investor returns
- Risk Metrics Suite: Sharpe, Sortino, Drawdown, VaR
- Rolling Returns Analysis: 12-month performance patterns
- Performance caching with 1-hour TTL
- Real-time calculation with sub-second response times
-
N-Asset Tangency Portfolio: Approximation algorithm for 3+ assets
- Multiple candidate generation strategies (equal, return, inverse-vol)
- Corner portfolio evaluation (100% allocations)
- Blended portfolio combinations (70/30 mixes)
- Maximum Sharpe selection from ~10 candidates
- Robust calculation with no convergence issues
-
UI/UX Enhancements: Professional analytics interface
- Consistent button styling with btn-* classes
- Loading states with spinners for all calculations
- Calculation history tracking with timestamps
- Cache statistics display with hit rates
- Help documentation for all metrics
-
Testing Infrastructure: Comprehensive validation
- Playwright MCP testing for UI validation
- Mathematical accuracy verification
- Performance benchmarking (<500ms targets)
- 85% test coverage for v0.7.0 features
-
Corporate Actions Engine: Comprehensive system for managing investment lifecycle events
- Stock Splits: Automatic quantity and cost basis adjustments with ratio support
- Cash Dividends: Payment tracking with tax implications and per-share calculations
- Stock Dividends: Share distribution with cost basis allocation
- Mergers & Acquisitions: All-stock, all-cash, and mixed consideration support
- Spinoffs: Basis allocation and new position creation
- Rights Offerings: Subscription tracking and cost basis updates
- Return of Capital: Non-taxable distribution handling
- Name/Ticker Changes: Symbol migration and position continuity
-
Transaction Adjustment System: Automatic portfolio adjustments
- FIFO cost basis preservation through all corporate actions
- Tax lot tracking with acquisition date maintenance
- Automatic position creation for new securities (spinoffs, mergers)
- Cash proceeds tracking for taxable events
- Gain/loss recognition for cash transactions
- Comprehensive audit trail with source linking
-
Advanced Calculators: Financial mathematics for corporate events
- DividendCalculator: Reinvestment and yield calculations
- MergerCalculator: Exchange ratios and cash/stock combinations
- StockSplitCalculator: Forward and reverse split handling
- RiskMetricsCalculator: Beta, Sharpe ratio, and volatility analysis
-
LiveView Interface: Professional corporate action management
- Conditional form fields based on action type selection
- Real-time validation with context-aware requirements
- Sortable/filterable action history with status tracking
- Bulk action application and reversal capabilities
- Integration with portfolio positions and transactions
-
Test-Driven Development: 100% TDD implementation with comprehensive coverage
- 370+ lines of form component tests
- 430+ lines of merger calculator tests
- 409+ lines of risk metrics tests
- All edge cases and error scenarios covered
-
Performance Optimization: Sub-100ms response for all calculations
- Efficient Decimal arithmetic throughout
- Optimized database queries with proper indexing
- Smart caching for complex calculations
-
Code Quality: Professional-grade implementation
- Proper separation of concerns with service layer
- Comprehensive error handling and validation
- Clear documentation with industry references
- Type-safe Ash resource definitions
- Added corporate_actions table with comprehensive event tracking
- Added transaction_adjustments table for automatic portfolio updates
- Enhanced transactions with corporate action references
- Proper foreign key constraints and indexing
- Fixed conditional form field rendering in LiveView
- Resolved validation message display issues
- Corrected process lifecycle in corporate action tests
- Fixed grid column validation in advanced analytics
- Corporate Actions: 58+ comprehensive tests (100% passing)
- Calculators: 1,265+ test assertions across all modules
- LiveView: Full interaction testing with Playwright validation
- Integration: End-to-end corporate action application verified
- Overall: 1,776+ tests passing (12 pending fixes)
-
Money Ratios Assessment: Professional 5-tab interface using Charles Farrell's methodology
- Overview tab with 8 key financial ratios
- Capital Analysis with detailed retirement savings tracking
- Debt Management for mortgage and education loan analysis
- Financial Profile management with editable form
- Action Plan with personalized recommendations
- Real-time calculations from actual account data
- Age-specific benchmarks with color-coded status indicators (✅/
⚠️ /❌) - Dashboard widget integration showing financial health status
-
Tax Planning & Optimization: Comprehensive tax strategy tools
- FIFO cost basis calculation framework for accurate tax reporting
- Capital gains/losses analysis with realized/unrealized tracking
- Short-term vs long-term capital gains classification
- Tax-loss harvesting opportunity detection
- Annual tax summary generation
- Tax lot report for detailed cost basis tracking
- Note: LiveView integration requires additional work (planned for v0.5.1 patch)
-
Advanced Financial Infrastructure
- Complete AER (Annual Effective Rate) standardization across all calculators
- Comprehensive benchmark analysis system for portfolio comparison
- Enhanced decimal precision handling with specialized helper modules
- New mathematical utilities for compound growth and statistical analysis
- Major Module Decomposition: Reduced complexity from 600+ to <200 lines per module
- Consolidated Formatting System: Unified chart-specific utilities
- Enhanced Code GPS: AST parsing and quality metrics for better codebase navigation
- Data Helper Modules: Comprehensive LiveView pattern utilities
- Improved Error Handling: Enhanced categorization and formatting
- Added financial_profiles table for Money Ratios persistence
- Enhanced resource snapshots for comprehensive test data
- Improved SQLite concurrency handling
- Enhanced justfile with performance testing commands
- Comprehensive E2E testing documentation and checklists
- Improved Code GPS with specialized modules and better reporting
- Enhanced validation and form helpers
- Fixed decimal precision edge cases in financial calculations
- Resolved dialyzer pattern matching warnings
- Fixed unused function warnings in tax modules
- Resolved forecast test parameter mismatches
- Money Ratios: 14/14 tests passing (100%)
- Tax Planning: Backend logic complete, LiveView tests pending
- Core functionality: 1680 tests passing
- Smoke tests: 31/31 passing (100%)
- Financial Goals System: Complete CRUD operations with emergency fund calculator
- Retirement Planning UI: Full LiveView interface for 25x rule and 4% withdrawal calculations
- Portfolio Forecasting: Scenario planning with pessimistic/realistic/optimistic projections
- Advanced Analytics: TWR/MWR calculations with performance caching
- Professional Formatting: FormatHelper module with $1M/$500K notation and proper percentages
- Contribution Analysis: Impact modeling for different savings rates
- Financial Independence Timeline: Multi-scenario analysis with weighted projections
- Zero Credo warnings achieved (production ready)
- ETS-based performance caching for complex calculations
- Comprehensive test coverage with 50+ new tests
- All calculations optimized for sub-second response
- Professional chart formatting throughout application
- Fixed expense widget test data isolation
- Resolved test warnings and unused variables
- Corrected Enum.empty? usage in tests
- Fixed chart formatting and percentage displays
- Updated all roadmap documents to reflect completion
- Marked v0.4.x specification as FINAL
- Updated README with current feature status
- Documented all delivered modules and capabilities
- Retirement Calculator: Industry-standard retirement planning calculations
- 25x Expenses Rule: Calculate retirement target based on annual expenses
- 4% Safe Withdrawal Rate: Determine portfolio withdrawal sustainability
- Emergency Fund Integration: Calculate and track emergency fund goals
- Emergency Fund Status: Real-time emergency fund adequacy calculations
- Decimal precision for all financial calculations
- Comprehensive test coverage (100% passing)
- Integration with expense tracking for automatic calculations
- Pure calculation modules following functional programming patterns
- Financial Goals System: Complete goal tracking foundation
- Goal Resource: CRUD operations for financial goals with validation
- Goal Types: Support for emergency_fund, retirement, house_down_payment, vacation, custom
- Progress Tracking: Automatic calculation of progress percentage and time to goal
- Database Schema: Financial goals table with performance indexes
- Ash Resource following existing Expense patterns
- Code interface for clean API access
- SQLite with optimized indexes for goal queries
- 15 comprehensive tests with 100% coverage
- Enhanced Expense Analytics: Complete year-over-year comparison system with interactive dropdowns
- Advanced Filtering System: Category, amount range, and merchant search with real-time results
- Custom Date Range Selection: Date pickers with filtered expense preview functionality
- Spending Trends Analysis: Monthly analysis with 3-month and 6-month trend indicators
- Interactive Visualizations: Contex-powered SVG charts with graceful fallback rendering
- Mobile-Responsive Charts: Responsive chart containers optimized for all screen sizes
- Real-time Data Filtering: Instant filter application with live result updates
- Percentage Calculations: Year-over-year percentage changes with proper decimal precision
- Phoenix LiveView Integration: 4 sophisticated event handlers with complex state management
- Decimal Financial Precision: All calculations maintain accuracy using Decimal arithmetic
- Ash Framework Usage: Proper resource integration for financial data operations
- Error Handling: Comprehensive fallback SVG generation for chart resilience
- User Experience: Intuitive interface with clear visual feedback and loading states
- Test Coverage: 12 comprehensive tests, 100% passing rate (12/12)
- TDD Methodology: Strict RED-GREEN-REFACTOR development cycle throughout implementation
- Code Quality: Clean, maintainable code following project conventions and patterns
- Performance: Optimized data queries and efficient state management
- Accessibility: Proper semantic HTML and responsive design implementation
- Comprehensive LiveView Testing: Full event handling and state management validation
- Data Accuracy Testing: Financial calculations and filtering logic verification
- User Interface Testing: Interactive component behavior and visual feedback validation
- Responsive Design Testing: Multi-device layout and chart rendering verification
- ExpenseLive.Analytics: Interactive expense analytics with Contex pie charts
- Dashboard Expense Widget: Real-time expense tracking display on main dashboard (5 tests)
- Dashboard Net Worth Enhancement: Manual snapshot creation button with update-or-create logic (4 tests)
- Contex Chart Integration: Pie charts for expenses, line charts for net worth trends (9 tests)
- Date Range Filtering: Analytics with current month, last month, 3/6 months, all time
- Category Breakdown: Visual expense categorization with percentages and amounts
- Empty State Handling: User-friendly messages when no data available
- PubSub Expense Updates: Real-time expense data synchronization across components
- Manual Net Worth Snapshots: One-click snapshot creation from dashboard
- Code GPS Command: Added
just gpscommand for codebase navigation
- Dashboard Layout: Expanded grid to accommodate new expense widget
- Test Coverage: 18 new comprehensive LiveView tests, all passing
- Router: Added analytics routes for expense visualization
- Error Handling: Robust fallback SVG generation for chart resilience
- Net Worth Widget: Added growth trend indicators and snapshot button
- Code GPS v2.0: Enhanced codebase analysis with route detection and dependency tracking
- ADR-003 Updated: Documented successful Wallaby removal and LiveView-first testing strategy
- TDD Implementation: Test-driven development approach with RED-GREEN-REFACTOR cycle
- Ash Framework Integration: Proper resource usage for financial data operations
- Decimal Precision: All financial calculations use Decimal for accuracy
- NetWorthCalculator: Cross-account net worth calculation
- FinancialManagement Domain: New domain for financial features
- Enhanced Account Resource: Support for cash account types
- TransactionCategory Resource: Transaction categorization system
- BalanceManager: Manual cash balance updates with audit trail
- Cross-Domain Integration: Portfolio and FinancialManagement integration
- Documentation: Comprehensive cleanup for professional appearance and consistency
- Documentation: Removed emojis and excessive formatting throughout all files
- Documentation: Consolidated redundant content across multiple documentation files
- Documentation: Archived completed migration documentation to reduce clutter
- Documentation: Updated README to focus on financial value rather than technical metrics
- Documentation: Fixed architecture diagrams to match database-as-user implementation
- Documentation: Simplified installation guide and removed outdated references
- Documentation: Adopted neutral, professional tone throughout project documentation
- Error Handling: Extended error handling infrastructure
- PubSub Integration: Real-time net worth updates
- Account Type Support: Extended account management
- Financial Precision: Decimal-based calculations
- Testing: Comprehensive test coverage
- Account Enhancements: Added account_type, interest_rate, minimum_balance fields
- Transaction Categories: New transaction_categories table
- Category Relationships: Optional category assignment for transactions
- Portfolio Management: CRUD operations for accounts, symbols, and transactions
- Dashboard: Real-time portfolio overview with Phoenix LiveView
- Calculations: FIFO cost basis calculations and portfolio performance metrics
- Market Data: Price refresh integration with Yahoo Finance API
- Database: SQLite with ETS caching
- Testing: Test suite with full coverage
- Documentation: Development and user documentation
- Ash Framework: Resource-based business logic with type safety
- Phoenix LiveView: Real-time UI updates
- Financial Precision: Decimal-based calculations
- Local Storage: SQLite database with backup and restore
- Error Handling: Centralized error management
- Performance: Optimized calculations and caching
- Data Validation: Input validation and sanitization
- Concurrent Safety: SQLite concurrency patterns
- Error Recovery: Graceful handling of external API failures
- Test Coverage: Test coverage across components
- Code Quality: Consistent formatting and linting
Initial release of Ashfolio for personal portfolio management.