Releases: davidfowl/tally
Release list
Development Build (0.1.324-dev)
Latest build from main branch
Version: 0.1.324-dev
Commit: 2dc309c
Install
Update existing installation:
tally update --prereleaseLinux / macOS:
curl -fsSL https://tallyai.money/install.sh | bash -s -- --prereleaseWindows PowerShell:
iex "& { $(irm https://tallyai.money/install.ps1) } -Prerelease"Or download the zip for your platform below.
Tally v0.1.321
What's Changed
Better Parsing Error Diagnostics (Issue #79)
When CSV parsing silently fails, it's frustrating to debug. A small typo in your date format (%Y vs %y) would give you "0 transactions" with no hint what went wrong.
Now tally tells you exactly what's happening:
tally up- Shows skip count with hint to use-vfor detailstally up -v- Breakdown by error type (date parsing, missing fields, etc.)tally up -vv- Individual file:line errors so you can inspect the problematic rowstally diag- New PARSING HEALTH section shows skip statistics
Also fixed: 2-digit year detection in tally inspect now correctly suggests %y vs %Y.
Bug Fixes
- Fixed Windows test compatibility (temp file handling)
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.319
What's Changed
CSV Export (Issue #30)
Export transactions to CSV for spreadsheets and data analysis:
tally up --format csv > transactions.csv
tally up --format csv --category Food > food.csvCSV columns: date, description, amount, merchant, category, subcategory, source, tags, plus any extra fields from supplemental sources.
Transform Directive
Override transaction descriptions dynamically in your rules:
[Apple Purchases - Enriched]
match: source("apple_purchases")
transform: " + ".join([r.title for r in m])
category: Entertainment
subcategory: Apple
Before: APPLE.COM/BILL ONE APPLE PARK WAY CA
After: Endel: Focus & Sleep Sounds + Overcast
Original description shown in UI with ✎ indicator on hover.
Supplemental Sources Improvements
Supplemental data sources now only require {date} field - amount is optional:
supplemental:
- name: apple_purchases
file: apple_purchases.csv
format: "{date},{order_id},{title},{price}"Bug Fixes
- Fixed CSV header detection for semicolon-delimited files (#77)
- Improved error messages for let binding and field accessor failures
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.311
Folder and Glob CSV Sources (#76)
Drop CSV files in a folder without merging - tally now supports directory and glob patterns in data sources:
data_sources:
- name: bank
file: data/bank/*.csv # All CSVs in folder
format: "{date},{description},{amount}"
- name: credit
file: data/statements/**/*.csv # Recursive glob
format: "{date},{description},{amount}"Works with all commands: run, explain, discover, and diag.
Thanks to @criemen for the suggestion!
European CSV Support (#70, #72, #77)
The inspect command now correctly handles European-style CSVs with semicolon delimiters and quoted fields:
"Date";"Description";"Amount"
"15/01/2025";"GROCERY STORE";"123.45"Auto-detection now shows the detected delimiter in suggested config:
Suggested format string:
format: "{date}, {description}, {amount}"
delimiter: ";"
Thanks to @FabienDehopre for reporting this issue!
Currency Symbol Detection
tally inspect now detects currency symbols in amount columns and shows them in the analysis.
Tag Collection Fix (#67)
Breaking Change: Tags are now only collected from:
- Tag-only rules (rules without a category)
- The winning categorization rule
Previously tags from ALL matching categorization rules were included, which could cause unexpected behavior (e.g., income tag from a non-winning rule).
Thanks to @criemen for identifying this surprising behavior!
Field Transforms for Fees
Support field.amount transforms to handle fee columns:
field.amount = field.amount + field.fee
Other Improvements
- Smart warnings for expensive glob patterns
locationis now a regular custom field (not special-cased)- Documentation updates for transforms and experimental features
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.292
What's Changed
tally up Replaces tally run
The primary command is now tally up - shorter and clearer. tally run still works but shows a deprecation warning.
# New
tally up --config config/
# Old (deprecated)
tally run config/Report Diff Feature
See what changed each time you run tally up. Helps catch rule changes, understand version upgrade impacts, and debug "why did my totals change?"
tally up
# Output includes:
# Changes since last run:
# Totals: spending $45,231 → $46,892 (+$1,661)
# Merchants: +3 new, 1 removed, 2 tag changes
# Use --diff for details.
tally up --diff # Show detailed changesConsistent Config Resolution
All commands now use the same config detection logic: auto-detect ./config or ./tally/config, with --config flag to override. No more inconsistent positional arguments across commands.
tally up # Auto-detect config
tally up --config ~/budget/ # Override location
tally explain Netflix -c config/Supplemental Data Sources (Experimental)
Enrich transactions with data from other CSV files using Python list comprehensions. Match Amazon transactions to order details, PayPal payments to merchant names, or any cross-reference scenario.
Note: This feature is experimental and will evolve based on feedback.
# settings.yaml
data_sources:
- name: amazon_orders
file: data/orders.csv
format: "{date},{item},{amount}"
supplemental: true # Query-only, won't generate transactions# merchants.rules
[Amazon - Verified]
let: orders = [r for r in amazon_orders if r.amount == txn.amount]
match: contains("AMAZON") and len(orders) > 0
category: Shopping
subcategory: Online
field: items = [r.item for r in orders] # Add to transaction detailsNew rule directives:
let:- Cache expensive queries in named variablesfield:- Add computed fields to transactions (visible in HTML report)
Rule Mode Setting
Control how rules are matched when multiple patterns match:
# settings.yaml
rule_mode: first_match # Default - first matching rule wins
rule_mode: most_specific # Most specific pattern winsSubcategory Grouping in HTML Report
Toggle between merchant view and subcategory view in the HTML report. Click the grouping toggle to see spending aggregated by subcategory instead of merchant.
Custom Report Title
Replace year: with title: for custom report headers:
# settings.yaml
title: "2025 Household Budget" # New
# year: 2025 # DeprecatedBug Fixes
- Fix category percentage calculation when filtering by subcategory
- Fix popup click propagation in HTML report
- Fix
tally updatenot offering stable release when on prerelease - Fix JSON export crash accessing missing data
- Fix single-character delimiter handling
- Fix currency formatting throughout HTML report and CLI
Improvements
- Cash Flow Summary in CLI output
- Investment category in monthly trend charts
- Transactions sorted by date descending within merchant view
- Quiet mode implied for
--format jsonand--format markdown
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.244
What's Changed
Enhanced tally inspect Command
The inspect command now sniffs data and provides column analysis:
- Detects column types: dates (US, ISO, European), currency, numbers, categorical, ticker symbols
- Shows samples for both positive and negative transactions to understand sign conventions
- Identifies currency symbols, parentheses notation, mixed decimal formats
- Handles CSVs without headers by generating synthetic column names
tally inspect transactions.csvCombined Filters for tally explain
Filter explanations by multiple criteria simultaneously:
tally explain --month Jan --category Food config/
tally explain --month 2024-01 --location "New York" config/{*} Alias for Skip Columns (#61)
Format strings now accept {*} as an alias for {_} to skip columns. This improves compatibility with AI-generated configurations.
Enhanced CLI Output
- Cash flow section (income, transfers, net)
- Credits/refunds section for negative totals
- Monthly breakdown table
- Category percentages against gross spending
- Enhanced JSON/markdown exports with
by_month,by_category,credits
Improvements
- Tag badge colors: Tags now get unique colors assigned by frequency
- Autocomplete clarity: Categories and subcategories are now visually distinguished in the HTML report filter
Bug Fixes
- Fix chart aggregations incorrectly including negative amounts (credits/refunds)
- Fix cash flow calculation to properly exclude transfers
- Fix negative sign display on transfers in Cash Flow card (#57)
- Fix Windows install script failure with 8.3 short paths (#59)
Breaking Changes
- Removed
home_locations/travel_locations: The automatic travel detection feature has been removed. A deprecation warning will appear if your config uses these settings. Track travel via user-defined categories in merchant rules instead.
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.226
What's Changed
New Feature: Weekday Filter
Filter transactions by day of week using the new weekday variable (0=Monday through 6=Sunday):
[Starbucks - Work]
match: contains("STARBUCKS") and weekday < 5
category: Food
subcategory: Coffee
tags: work
[Starbucks - Weekend]
match: contains("STARBUCKS") and weekday >= 5
category: Food
subcategory: Coffee
tags: personal
Bug Fix: Tag Filtering Now Works at Transaction Level
Fixed a bug where filtering by tag (e.g., t:david) showed all transactions from a merchant if any transaction had that tag. Now it correctly filters to show only transactions with the matching tag.
This enables per-cardholder spending views and similar use cases where different transactions from the same merchant have different tags.
Documentation
- Documentation moved from README to tallyai.money
- Added quickstart guide, reference docs, and format examples
- Improved install UX and mobile navigation
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.219
Tally is Now Fully Customizable
This release removes all built-in classification assumptions. Previously, tally had hardcoded rules for what counts as "monthly" vs "variable" spending, which categories to exclude, and how to calculate averages. That's all gone.
Now, you and your LLM define everything. Tally provides the engine; you write the rules that match how you think about your money.
merchants.rules — Extract, Clean, Match, Tag
One file to control how transactions are processed:
[Netflix]
match: normalized("NETFLIX")
category: Subscriptions
subcategory: Streaming
tags: entertainment, recurring
[Amazon Large Purchase]
match: anyof("AMAZON", "AMZN") and amount > 500
category: Shopping
subcategory: Large
tags: big-purchase
[Uber Rides]
match: regex("UBER\\s(?!EATS)")
category: Transport
subcategory: Rideshare
tags: business
Match functions: normalized() (ignores spaces/punctuation), anyof(), startswith(), fuzzy(), contains(), regex()
views.rules — Visualize Your Way
Define views that make sense to you:
[Monthly Bills]
description: Consistent recurring expenses
filter: months >= 6 and cv < 0.3 # cv = amount consistency (lower = more consistent)
[Business Expenses]
description: Expenses to submit for reimbursement
filter: tags has "business"
[Big Purchases]
description: Major one-time expenses
filter: total > 1000 and months <= 2
⚠️ Breaking Changes
Transactions may need re-categorization. Built-in classification rules have been removed—merchants that were previously auto-categorized may now appear as "Unknown" until you add rules for them.
Old rule formats will warn or fail when unsupported features are used. If you see warnings:
- Use your LLM to migrate — paste the warning and your old config, ask it to update
- Run
tally discoverto find merchants that need rules tally referenceshows the complete new syntax
UI Improvements
- Text search, sortable columns, category color dots
- Credits/refunds shown separately
- Match info popups show which rule matched
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.140
What's Changed
tally workflowcommand - context-aware instructions based on your budget state- Simplified setup (removed AGENTS.md, CLAUDE.md, README.md generation)
- Terminal demo added to website
- Fixed macOS arm64 detection and prerelease update mechanism
- Improved Windows Unicode support
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.
Tally v0.1.125
What's Changed
Improved tally init Experience
The init command now provides a much better first-run experience:
Colored Output
- Green checkmarks for created files, yellow arrows for existing files
- Syntax highlighting for paths and commands
- Clickable hyperlinks for agent install URLs (in supported terminals)
Smart Guidance
- Fresh init: Full guide with data sources + agent setup steps
- Config exists without data: Prompts to add CSVs and configure yaml
- Fully configured: Just shows
tally runortally discover
Agent Detection
Shows which AI coding agents are already installed on your system:
3. Open this folder in an AI agent:
claude Claude Code ✓ installed
copilot GitHub Copilot ✓ installed
opencode OpenCode https://opencode.ai
codex OpenAI Codex ✓ installed
Bug Fixes
- Fixed macOS arm64 detection: Self-update now correctly downloads the arm64 binary on Apple Silicon Macs instead of always downloading amd64
Install
Linux / macOS:
curl -fsSL https://tallyai.money/install.sh | bashWindows PowerShell:
irm https://tallyai.money/install.ps1 | iexOr download the zip for your platform below.
See https://tallyai.money for more info.