Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[3.0.2] - 2026-01-26
Fixed
- Added missing tolerance argument to solve method signatures
- Added missing changelog entry to this doc/site changelog summary
[3.0.1] - 2026-01-22
Fixed
- Corrected first draw-down date detection when solving for an unknown advance amount (previously skipped due to placeholder 0.0 value).
- Improved discount factor operand logging: now correctly labels time fraction as
t(e.g., "t = 31/360 = 0.08611111") instead offfor Standard formula, aligning notation with US Appendix J convention.
Changed
- Removed redundant
isChargefield fromCashFlowrecord (superseded byCashFlowType.type); updated all references accordingly.
[3.0.0] - 2026-01-20
Breaking Changes — Complete Rewrite
Version 3.0.0 is a full ground-up modernisation of the package, bringing it in line with current Dart best practices and achieving full design and numerical parity with the sister project curo-python.
Key breaking changes:
- Adopted modern Dart features: null-safety, sealed classes, records, enhanced enums
- Flattened API surface: replaced deep inheritance with composition-based design
- Immutable cash flow model: introduced SeriesAdvance, SeriesPayment, SeriesCharge
- Asynchronous solving: solveRate and solveValue now return Future<double>
- Simplified precision: single precision parameter (0–4 decimals) on Calculator
- Removed legacy mutable classes and synchronous solve methods
Migration required for any code using versions ≤2.x.
Added
- Pretty-printed amortisation schedules and APR proof tables via
Schedule.prettyPrint - Expanded test coverage and internal refactoring for maintainability
- Full alignment with curo-python behaviour and accuracy
Notes
This major release represents a significant leap in code quality, type safety, and long-term maintainability while preserving (and often improving) numerical precision and regulatory compliance.