github davidfowl/tally v0.1.292
Tally v0.1.292

latest releases: v0.1.311, dev
4 days ago

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 changes

Consistent 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 details

New rule directives:

  • let: - Cache expensive queries in named variables
  • field: - 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 wins

Subcategory 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                    # Deprecated

Bug Fixes

  • Fix category percentage calculation when filtering by subcategory
  • Fix popup click propagation in HTML report
  • Fix tally update not 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 json and --format markdown

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Don't miss a new tally release

NewReleases is sending notifications on new releases.