Skip to content

Budget Tracker 1.4.0

Latest

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