Tags: davidfowl/tally
Tags
fix: close temp files before parsing in tests (Windows compatibility) On Windows, files can't be deleted while still open. The tests were using `with` context manager but trying to delete inside the block. Now properly close files before parsing and cleanup. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add CSV export format for tally run output Adds --format csv option to export transactions as CSV for use with Excel, Google Sheets, pandas, or other tools. Features: - Transaction-level export with denormalized data (merchant, category, subcategory) - ISO date format (YYYY-MM-DD) for proper sorting - Tags semicolon-separated to avoid CSV comma issues - Extra fields (paypal_merchant, apple_order_id, etc.) as additional columns - Supports --category filter Fixes #30
Add tests for quotechar and tab delimiter detection - Test embedded delimiter in quoted field (verifies quotechar works) - Test tab-delimited CSV detection Improves test coverage for #70 fix. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Update help text to show positional config is deprecated 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Accept {*} as alias for {_} in CSV format strings (#61)
* Initial plan
* Fix CSV format parser to accept {*} as alias for {_} skip column
Fixes the issue where AI-generated configurations using {*} instead of {_}
to skip columns would fail with "Invalid format at column X: '{*}'".
Co-authored-by: davidfowl <[email protected]>
* Address code review feedback: add * to RESERVED_NAMES, fix test class structure
Co-authored-by: davidfowl <[email protected]>
---------
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: davidfowl <[email protected]>
Fix tag filter to match transactions, not merchants Tag filtering was checking merchant.tags (the union of all transaction tags) instead of txn.tags (individual transaction tags). This caused all transactions from a merchant to appear when filtering by tag, even if only some transactions had that tag. Example: filtering by t:david showed all Amazon transactions instead of only David's Amazon transactions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Improve Windows UTF-8 encoding support Use codecs.getwriter for more reliable Unicode output in PyInstaller builds. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Fix macOS arm64 detection in self-update Was always downloading amd64 binary even on Apple Silicon Macs. Now properly detects arm64/aarch64 and downloads the correct binary. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
PreviousNext