Commit Graph

9 Commits

Author SHA1 Message Date
a53449d463 feat: Enhanced account management and UX
This commit significantly improves the account linking and display experience
throughout the application, making it much more user-friendly while
maintaining security and reliability.

Key User-Facing Improvements:

Interactive Account Linking
- Added professional interactive prompts using dialoguer for account linking
- Users can now select accounts by name instead of cryptic IDs
- Smart argument resolution automatically detects source/destination accounts
- Graceful error handling for non-interactive environments

Enhanced Account Display
- GoCardless accounts now show institution information (e.g., "Checking (BANK123)")
- Removed confusing ID columns from account lists and status displays
- Consistent display names across all account-related commands

Improved IBAN Security
- Smart IBAN masking shows country codes and more context for Dutch accounts
- NL accounts display first 8 characters + last 4 for better identification
- Other countries show country code + last 4 digits for verification

Technical Enhancements:
- Enforced data integrity constraints preventing invalid account links
- Fixed trait implementation dispatch issues for consistent display logic
- Added comprehensive test coverage for all new functionality
- Maintained backward compatibility with existing scripts and workflows

Security & Reliability:
- All financial data masking remains robust and secure
- Comprehensive test suite ensures no regressions (55 tests passing)
- Error handling prevents crashes in edge cases
- Clean separation of interactive vs automated usage patterns

Users can now intuitively manage their account connections with clear visual
feedback, while automated scripts continue to work seamlessly with the
enhanced validation and error handling.
2025-11-28 23:09:26 +01:00
c3d74fa6ae feat: Improve accounts list
The accounts lists are now shown per source and/or destination, and
include the name. Furthermore they are sorted alphabetically by name,
because that is how humans think.
2025-11-28 19:58:29 +01:00
baac50c36a feat: Add CLI table formatting and remove unused inspection methods
- Enhanced CLI output with table formatting for better readability of account and transaction data
- Added new commands to list accounts and view their sync status
- Added new commands to inspect transaction information and cache status
- Cleaned up internal code by removing unused trait methods and implementations
- Updated documentation with examples of new CLI commands

This improves the user experience with clearer CLI output and new inspection capabilities while maintaining code quality.
2025-11-27 22:59:26 +01:00
b85c366176 feat: implement account linking and management system
Add comprehensive account linking functionality to automatically match bank accounts to Firefly III accounts, with manual override options. This includes:

- New LinkStore module for persistent storage of account links with auto-linking based on IBAN matching
- Extended adapter traits with inspection methods (list_accounts, get_account_status, etc.) and discover_accounts for account discovery
- Integration of linking into sync logic to automatically discover and link accounts before syncing transactions
- CLI commands for managing account links (list, create, etc.)
- Updated README with new features and usage examples

This enables users to easily manage account mappings between sources and destinations, reducing manual configuration and improving sync reliability.
2025-11-27 21:59:29 +01:00
c8c07af9a1 feat: refactor CLI to subcommands and add dynamic adapter discovery
Introduce structured subcommand architecture for better CLI organization and extensibility.

Implement dynamic adapter discovery and validation system in core module for pluggable sources and destinations.

Extract client initialization logic into dedicated CLI setup module for cleaner separation of concerns.

Update README documentation to reflect new CLI structure and available commands.

Add comprehensive tests for adapter validation and discovery functionality.

Maintain backward compatibility for existing sync command usage.
2025-11-27 21:59:25 +01:00
53087fa900 Implement encrypted transaction caching for GoCardless adapter
- Reduces GoCardless API calls by up to 99% through intelligent caching of transaction data
- Secure AES-GCM encryption with PBKDF2 key derivation (200k iterations) for at-rest storage
- Automatic range merging and transaction deduplication to minimize storage and API usage
- Cache-first approach with automatic fetching of uncovered date ranges
- Comprehensive test suite with 30 unit tests covering all cache operations and edge cases
- Thread-safe implementation with in-memory caching and encrypted disk persistence

Cache everything Gocardless sends back
2025-11-27 21:24:30 +01:00
0b2549ddb4 Handle expired agreements and rewrite README
- Implement robust End User Agreement expiry detection and handling
- Add graceful error recovery for failed accounts
- Rewrite README.md to focus on user benefits
- Add documentation guidelines to AGENTS.md
2025-11-22 15:04:04 +00:00
9a5c6d0f68 Implement logic 2025-11-22 15:04:04 +00:00
f0b8df90b9 Initial commit
This is definitely not functional yet.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2024-10-04 20:31:39 +02:00