Skip to content

Releases: Feromond/budget-tracker-tui

Budget Tracker 1.6.0

Choose a tag to compare

@Feromond Feromond released this 09 Sep 03:13
v1.6.0
53741f0

What's Changed

  • Document Homebrew installation instructions by @Feromond in #102
  • [Feature] Add investment tracking and portfolio views by @Feromond in #103
  • Expand and clarify the user guide by @Feromond in #104
  • Add database backups and restore management by @Feromond in #105
  • Bump version to 1.6.0 and update dependencies by @Feromond in #106

Full Changelog: v1.5.2...v1.6.0

Install

With Rust installed (skip this if you use homebrew or the Windows installer below):

cargo install budget-tracker-tui

On macOS or Linux you can also use Homebrew now:

brew install budget-tracker
No Rust? Prebuilt binaries for Linux, macOS, and Windows

Unpack the archive for your platform and put budget-tracker on your PATH.

Archive Platform
*-x86_64-unknown-linux-gnu.tar.gz Linux x86_64 (glibc 2.35+)
*-x86_64-unknown-linux-musl.tar.gz Linux x86_64 (static, any distro)
*-aarch64-unknown-linux-gnu.tar.gz Linux arm64 (glibc 2.35+)
*-aarch64-unknown-linux-musl.tar.gz Linux arm64 (static, any distro)
*-aarch64-apple-darwin.tar.gz macOS Apple Silicon
*-x86_64-pc-windows-msvc.zip Windows x86_64

Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

Two big things this release: investment tracking, and actual backups of your database.

Investments have been asked for since #41 and can be reached using the i key bind. It's all entered by hand, no live prices and no bank connection. You record what an account is worth (v for a valuation) and money going in or out (a inside an account), and the app works out the growth from there, so you never type in a gain yourself. The accounts list is your portfolio with value, invested, Gain, ROI and Annual, and Enter opens an account for its entry history, growth chart, and a year by year look at what you put in versus what it earned. ←/→ change the time range. One thing to watch: if an account already exists in real life, give it a starting value and how much of that you contributed when you create it, otherwise your whole balance counts as a gain you never made.

Backups should have been in here a long time ago. The app now snapshots your database once a day at startup, and always before a schema upgrade. Settings > Manage Backups lists them with b to take one, d to delete, and Enter to restore. Restoring copies your current database first so you can undo it, and a snapshot gets checked before it replaces anything. Automatic snapshots keep the last 5 by default and clean up per machine, so a synced folder won't have two computers deleting each other's backups.

Existing databases upgrade automatically on first launch, in a single transaction, so a failure leaves the file exactly as it was. The rest is the user guide rewrite, Homebrew, and dependency bumps.

TLDR:

  • Added investment tracking behind i, with valuations and contributions kept separate so gains are worked out instead of typed, closing #41
  • Added a portfolio view with value, invested, Gain, ROI and Annual, plus per account detail with entry history, growth chart, and a year by year contributions versus gains table
  • Added time ranges with ←/→ (YTD, 1Y, 3Y, 5Y, All), only showing ranges that cover less than All
  • Accounts can start with a value and a cost basis so existing holdings don't report the whole balance as a gain
  • Valuations older than 30 days get flagged with a ! and counted in the panel title
  • Accounts can be archived with e instead of deleted, hidden from the totals and charts until you press A
  • Investments are per ledger and copy along with one, and deleting a ledger now tells you how many accounts go with it
  • Added database snapshots: daily at startup, before a schema upgrade, on demand, and before every restore
  • Added Settings > Manage Backups to take, restore and delete snapshots, keeping the last 5 by default (1-50)
  • Snapshots are checked before restoring, and one from a newer version is refused
  • Automatic cleanup only touches this machine's snapshots, so synced folders stay safe
  • Rewrote and expanded the user guide, added Homebrew, and bumped dependencies
investments backup-management

Budget Tracker 1.5.2

Choose a tag to compare

@Feromond Feromond released this 03 Sep 05:30
v1.5.2
41f9dcd

What's Changed

  • Add help and version command-line options by @Feromond in #92
  • Add sorting controls to category catalog by @Feromond in #94
  • Add inline budget target editing by @Feromond in #95
  • 89 feature request enable viewing difference between total set budget limits of all catergories by @Feromond in #97
  • Add effective dated budget history by @Feromond in #98
  • 93 feature request add budget line to yearly pattern bar chart by @Feromond in #99
  • Bump version to 1.5.2 by @Feromond in #100

Full Changelog: v1.5.1...v1.5.2

Install

With Rust installed (skip this if you use the Windows installer below):

cargo install budget-tracker-tui
No Rust? Prebuilt binaries for Linux, macOS, and Windows

Unpack the archive for your platform and put budget-tracker on your PATH.

Archive Platform
*-x86_64-unknown-linux-gnu.tar.gz Linux x86_64 (glibc 2.35+)
*-x86_64-unknown-linux-musl.tar.gz Linux x86_64 (static, any distro)
*-aarch64-unknown-linux-gnu.tar.gz Linux arm64 (glibc 2.35+)
*-aarch64-unknown-linux-musl.tar.gz Linux arm64 (static, any distro)
*-aarch64-apple-darwin.tar.gz macOS Apple Silicon
*-x86_64-pc-windows-msvc.zip Windows x86_64

Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

This release is all about budgets. The big one is that budgets now have history. Every budget you set is recorded with the month it starts applying, so changing an amount no longer rewrites what past months were budgeted at. Set your monthly budget to 2,000 in January, bump it to 2,500 in March, and January and February still report against 2,000 while March onward uses 2,500. Same thing for per-category budgets.

Because of that, budgets moved out of Settings and into the budget view, which is now where you set both. Press t for the monthly budget and e for the selected category's budget, and the popup asks how far the change should reach: from this month on, this month only, replace every month, or remove the change that starts here. The budget view also opens on the current month now even with no transactions in it, so you can set up a budget on a brand new ledger before entering anything. Your old target budget from Settings gets moved over automatically on first launch, dated before your earliest month, so nothing you already had changes.

The budget view also tells you how much of your budget you have actually assigned. There is a Category Budgets section showing the total of all your category budgets and the spare amount left from your monthly budget, which goes red and says Over Allocated if the categories add up to more than the monthly number. Handy for the "did I actually budget all of this" question without doing mental math. The per-category yearly pattern chart draws the budget for each month right on the bars too, so you can see which months you blew past it at a glance.

Budgets are per ledger now, so a scenario ledger can plan against a completely different budget without touching your real one, and copying a ledger brings its budgets along. Categories are still shared like before.

Rest is smaller stuff. The category catalog sorts by any column, you can set a category's budget straight from the catalog with b, and the app finally answers --help and --version instead of just launching.

TLDR:

  • Budgets are dated now, so changing one keeps your history intact
  • Moved budget editing into the budget view with t for the monthly budget and e for a category, plus scopes for how far a change applies
  • Added the allocated / spare / over allocated breakdown to the budget view, closing #89
  • Drew per-month budget guides on the category pattern chart, closing #93
  • Made budgets per ledger, carried along when you copy a ledger
  • Added sorting to the category catalog with 1-5 (or F1-F5), press again to flip direction, closing #90
  • Added b in the category catalog to set a budget without leaving it
  • Added --help and --version command-line options
  • Cumulative mode in the monthly summary now draws each month's own budget instead of one flat line
  • Kept the selected month when changing years in the monthly and category summaries
  • Old target budget from Settings migrates automatically, and the setting is gone

Updated Budget View

image

New Quick Category Budget Setting Menu

image

Budget Tracker 1.5.1

Choose a tag to compare

@Feromond Feromond released this 02 Sep 02:10
v1.5.1
e0bb74a

Full Changelog: v1.5.0...v1.5.1

Install

With Rust installed, no download needed (skip this if you use the Windows installer below):

cargo install budget-tracker-tui

Otherwise grab the archive for your platform below, unpack it, and put budget-tracker on your PATH.

As of 1.5.1 the crate is budget-tracker-tui and the command is
budget-tracker. They were previously budget_tracker_tui and
Budget_Tracker. Cargo does not remove the old install for you, so
clear it out first:

cargo uninstall budget_tracker_tui
cargo install budget-tracker-tui
No Rust? Prebuilt binaries for Linux, macOS, and Windows

Unpack the archive for your platform and put budget-tracker on your PATH.

Archive Platform
*-x86_64-unknown-linux-gnu.tar.gz Linux x86_64 (glibc 2.35+)
*-x86_64-unknown-linux-musl.tar.gz Linux x86_64 (static, any distro)
*-aarch64-unknown-linux-gnu.tar.gz Linux arm64 (glibc 2.35+)
*-aarch64-unknown-linux-musl.tar.gz Linux arm64 (static, any distro)
*-aarch64-apple-darwin.tar.gz macOS Apple Silicon
*-x86_64-pc-windows-msvc.zip Windows x86_64

Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

TLDR:

This is a really minor update. I am changing how the releases work and updating the repo name as well as the crates.io to match (meaning the old one got nuked 😢 ).

This change will provide proper checksums and more targeted versions that should make things easier. Then I can work on either auto updates or supporting more package managers in a much easier way.

Budget Tracker 1.5.0

Choose a tag to compare

@Feromond Feromond released this 30 Aug 21:45
v1.5.0
95e3eb8

Budget Tracker TUI 1.5.0

What's Changed

  • Multiple transaction ledgers by @Feromond in #79
  • Exit after opening update link and report failures by @Feromond in #81
  • Fix Amount To filter, guard exports against the database, format amounts as decimals by @Feromond in #82
  • Refactor form fields around typed field sets by @Feromond in #83
  • Avoid unnecessary terminal redraws by @Feromond in #84
  • Bump Version to 1.5.0 and Update Dependencies by @Feromond in #85

Full Changelog: v1.4.2...v1.5.0

To update/install easily without downloading anything you can use cargo! (If you are not using the installer below)

cargo install budget_tracker_tui

TLDR:

The big change this release is multiple ledgers. A single database can now hold several independent sets of transactions, so you can keep separate books for different accounts, or make a throwaway copy of your real data and play with forecasting and what-ifs without touching the original.

Ledgers live under Settings > Ledger, which shows whichever one is currently open. From that list you can switch (Enter), add (a), rename (e), copy with all its transactions (Ctrl+C), and delete (d, with a confirmation that names the ledger and its transaction count). The open ledger is shown in the transaction table title, and the table, filters, summaries, budget view, and CSV import/export all apply to just that ledger. Every ledger in a database shares the same category catalog and target budgets, so categories stay consistent across all of them.

Existing databases upgrade automatically on first launch. Everything you already have lands in a ledger named Main and nothing else changes. The database carries a data version now, and upgrades run in a single transaction so a failure leaves the file exactly as it was. If an older version of the app opens a database that a newer version already upgraded (easy to do when the file is synced between machines), it refuses to open it and tells you to update, instead of reading and writing a schema it doesn't understand.

The rest is bug fixes and cleanup.

  • Added multiple transaction ledgers per database: switch, add, rename, copy, delete
  • Versioned the database with safe in-place upgrades and a guard so older versions won't touch a newer database
  • Fixed the max amount field in advanced filtering not accepting any input, which broke when the recurring filter was added in 1.4.2
  • Blocked exporting a CSV over top of the active database file
  • Rejected new categories that only differ from an existing one by casing
  • Fixed amount formatting to stay in decimal instead of going through floats, so no more rounding artifacts
  • Opening the releases page from the update popup now exits the app so you aren't updating a running copy, closing #80
  • Cut unnecessary terminal redraws, refactored form fields onto typed field sets, and bumped dependencies
image

Budget Tracker 1.4.2

Choose a tag to compare

@github-actions github-actions released this 30 Aug 08:45
v1.4.2
ae22c64

Budget Tracker TUI 1.4.2

What's Changed

  • Add Recurring filter to advanced filters by @Feromond in #72
  • Update Rust dependencies to latest patch releases by @Feromond in #74
  • Add configurable recurring transaction forecasting by @Feromond in #75
  • Automate tagged releases and crate publishing by @Feromond in #77
  • Bump Version to 1.4.2 by @Feromond in #78

Full Changelog: v1.4.1...v1.4.2

To update/install easily without downloading anything you can use cargo! (If you are not using the installer below)

cargo install budget_tracker_tui

TLDR:

This update contains some version bumps for dependencies and for the rust compiler itself.

Other updates are targeted at the recurring transaction functionality. Recurring transactions are now a filter option to allow users to view just transactions that are recurring. Then I also added the ability to forecast / view recurring transactions as they will go into the future by a number of months determined by a setting within the options view.

  • Updated filters to include recurring transactions
  • Added recurring transaction forecasting
  • Updated release pipeline to improve how easy it is for me to publish and manage new releases to the project

Forecasted recurring transactions for 1 month into the future

budget_tracker_screenshot_censored

Settings for recurring forecasts

image

Budget Tracker 1.4.1

Choose a tag to compare

@Feromond Feromond released this 13 Jul 03:21
6b32ea5

Budget Tracker TUI 1.4.1

What's Changed

  • Use anchored dates for recurring transactions by @Feromond in #64
  • Normalize shift on Backspace, Delete, Enter by @Feromond in #65
  • Add Ctrl+F support for advanced filtering by @Feromond in #66
  • Bumped version from 1.4.0 -> 1.4.1 by @Feromond in #67
  • Remember origin when opening category catalog by @Feromond in #68
  • Add category catalog filtering and navigation by @Feromond in #69
  • Update README and add user guide by @Feromond in #70

Full Changelog: v1.4.0...v1.4.1

To update/install easily without downloading anything you can use cargo! (If you are not using the installer below)

cargo install budget_tracker_tui

TDLR:

Mostly bug fixes / smaller improvements. To find out what was in the latest major release, check out version 1.4.0

  • Fixed recurring transaction dates breaking in specific cases
  • Fixed how certain key combinations would prevent typing in the description or other input fields
  • Enabled getting to advanced filtering directly without needing to do the simple filter first
  • Made it easy to jump into the category catalog directly from the budget view
  • Improved the category catalog with filtering and improved navigation
  • Updated the readme to make it easier to read through and separated the detailed information into a docs/ folder
image

Budget Tracker 1.4.0

Choose a tag to compare

@Feromond Feromond released this 30 May 00:54
fa550f2

Budget Tracker TUI 1.4.0

What's Changed

  • Feature: Migrated to save transaction in sqlite + lots of cleanup by @Feromond in #56

Full Changelog: v1.3.1...v1.4.0

To update/install easily without downloading anything you can use cargo! (If you are not using the installer below)

cargo install budget_tracker_tui

TLDR:

  • Migrated primary data storage to fully now utilize the sqlite db (eventually can be extended to other options)
  • Enabled the ability to import / export CSV files still to maintain the functionality from before
  • Added a new recurring type for semi-monthly adjusted for weekdays.
  • Lots of backend / code cleanup to move things over towards this new organization, and improving some of the help info / documentation.

You now only have to maintain the database file and use that for syncs, instead of the fractured two file system I introduced in 1.3.0. This re-unifies things better and will make future features a lot easier to implement safely, while also improving performance in theory.


This branch moves transaction storage from a CSV file into the app's local SQLite database, so transactions now live in the same reliable, structured place as the category data instead of a separate text file. Each transaction gets a stable ID, and adds/edits/deletes are written directly to the database as you make them rather than rewriting the whole file each time. The first time you open this version, it automatically and safely brings your existing transactions.csv into the database and keeps the original as a .migrated-backup file, so no data is lost. CSV doesn't go away, it's now an import/export format instead of the primary storage. You can export all your transactions to a CSV anytime for backup or sharing, and import a CSV back in, where new rows are added and exact duplicates are skipped. Recurring transactions keep working exactly as before (the original transaction is still the "source" that generates the others up to today), and import/export handle those generated entries correctly so nothing gets duplicated.

Alongside the storage change, the settings screen was tidied up: the old "data file path" setting is gone, the database path is now the main location setting, and importing/exporting are clear actions that open a simple path prompt. A new recurring option was added, "Semi-Monthly (Weekday Adjusted)", which pays on the 15th and last day of the month but shifts to the nearest weekday when either falls on a weekend, matching how real payroll often works. The rest of the work is cleanup and accuracy: the code was reorganized so database, CSV, and import/export logic each live in clearly named places, the in-app help menu (Ctrl+H) was reviewed and corrected, the README was updated to reflect everything, and tests were added for the new database and recurring logic.

image

Budget Tracker 1.3.1

Choose a tag to compare

@Feromond Feromond released this 01 Apr 05:00
6410a41

Budget Tracker TUI v1.3.1

Full Changelog: v1.3.0...v1.3.1

Summary

This version contains many minor improvements and bug-fixes. They are primarily around the budget view but some new minor features exist elsewhere.

Main Notes:

  • Fixed the broken yearly average value for the specific category budget view, closing #54
  • Cleared up some of the UI colouring in the budget view to make it a little less confusing when looking at numbers
  • Added a new copy transaction feature to the main view (ctrl+c). Allows for copying a transaction easily to not require full manual entry each time.
  • Improved some help menu information / cleaned up some project details.

For the most recent primary info for the project, still refer to the latest release:
https://github.com/Feromond/budget_tracker_tui/releases/tag/v1.3.0

Screenshot 2026-03-31 at 10 58 21 PM

Budget Tracker 1.3.0

Choose a tag to compare

@Feromond Feromond released this 19 Mar 04:57
4504ecd

Budget Tracker TUI v1.3.0

What's Changed

  • [Feature] Added sqlite database for category data and created a new budget view by @Feromond in #53

Full Changelog: v1.2.2...v1.3.0

Summary

Initial SQLite support has been added, starting with category management. This enables new functionality while laying the groundwork for a future, fully backward-compatible migration of transactions.
A new category catalog allows users to create and manage custom categories and subcategories, including setting target budgets for each subcategory.
The database defaults to budget.db and is stored alongside the transaction file. It can be moved or renamed freely. If the new location does not contain a database, the existing data will be copied. If a database already exists, it will be used instead.
Database files can be stored on cloud services to support syncing across devices.
Updating categories will also update any associated transactions. If a database is not synced across devices, transactions will remain intact but may appear as uncategorized until valid categories are available again.

Closed #49, #28, #14, and #52

budget_view

More detailed dive

I have started working on adding SQLite support into the app. I am starting slow with just the categories but this already enables a lot of great additional features! Transactions will also be migrated eventually but in a manner that does not break any existing workflows, and that will be seamless and backwards compatible.

With the addition of sqlite, I have created a category catalog. In there, it's possible now to create custom categories and subcategories. It is also now possible to add details such as a target budget per sub-category.

The database is by default called budget.db, and is stored in the default location (basically wherever your transaction file is). It can be moved and renamed and it will behave in the same style that the transaction csv did. Renaming or changing paths to a location that does not contain a database will copy over the existing database data. If copying to an existing database, it will swap instead of copying and use the new location without problems.

These database files can similarly be stored on cloud services to allow for the data to sync across devices.

Updating categories that are in use for transactions will update those transactions. Be careful to ensure that if you are changing existing categories or creating new ones to use, that you also sync the database so that when another device loads the transactions, it will be able to use those too. If you do make this mistake, not to worry! Nothing will happen to your transactions. They are fine to have invalid categories and sub-categories. They just can't be edited without saving a valid category or sub-category. They will be registered as uncategorized in any aggregated views.

Thanks to the category targets, I created a new view called budget view. This view can be accessed by pressing the 'b' key in the normal mode. This view will display very useful budgeting information, so long as you have set a target budget for some categories. Please feel free to send feedback for any issues or requests around this, as it was a relatively complex undertaking and I may have lost clarity.

A few other minor changes were made such as adding quarterly recurring transactions to the recurring transaction period options.

Budget Tracker 1.2.2

Choose a tag to compare

@Feromond Feromond released this 02 Feb 04:14
01ff2a3

Budget Tracker TUI v1.2.2 - More minor bug fixes and subtle improvements

What's Changed

  • [Feature] 2026 Update 1 - Updated dependencies and created new input process for easier future additions by @Feromond in #50
  • [Bug] Fixed the transaction type bug where 'i' and 'e' in the data would cause issues.

Full Changelog: v1.2.1...v1.2.2

Summary

This intention of this update was to refactor and fix a couple of small but annoying issues. I am currently in the process of working on a larger new feature drop that I am hoping to be able to release not too far from today. There are a lot of things keeping me quite busy which have delayed that, but I wanted to release this minor update now to provide improved stability and user experience for now.

Stay tuned for the larger new changes to come!