Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
6f85167
rot snapshot
TheRustyPickle Sep 26, 2026
ec795fd
Sql format
TheRustyPickle Sep 26, 2026
45f8cfa
Migration and models for recurring txs
TheRustyPickle Sep 26, 2026
ff2e655
Logic for handling recurring tx
TheRustyPickle Sep 26, 2026
75ee560
Stepper and verifier for recurring
TheRustyPickle Sep 26, 2026
b221947
Recurring ui
TheRustyPickle Sep 26, 2026
0ed267d
Tests
TheRustyPickle Sep 26, 2026
fe33782
Prevent weekly time being fixed to the start date
TheRustyPickle Sep 26, 2026
d43de1b
Modify first stepper date to use the local time
TheRustyPickle Sep 26, 2026
516129e
Ui call updates
TheRustyPickle Sep 26, 2026
e1c1c93
Update
TheRustyPickle Sep 26, 2026
acd4347
Update tests
TheRustyPickle Sep 26, 2026
1acf8cb
Format
TheRustyPickle Sep 26, 2026
d6d8b9e
Update recurring field navigation
TheRustyPickle Sep 26, 2026
090a2a8
Update tests
TheRustyPickle Sep 26, 2026
bd1cdc1
Update readme
TheRustyPickle Sep 26, 2026
8a161f5
Update snapshot
TheRustyPickle Sep 26, 2026
4458b17
Update comments
TheRustyPickle Sep 27, 2026
119df0e
Fix Tx position swapping not working when there are exactly 2 txs
TheRustyPickle Sep 27, 2026
c42ea35
Fix error logs showing up as regular/non error in ui
TheRustyPickle Sep 27, 2026
a5a7484
Format
TheRustyPickle Sep 27, 2026
fa13b3f
Update snapshot
TheRustyPickle Sep 27, 2026
3c88eec
Update ci
TheRustyPickle Sep 27, 2026
a9de097
Add missing call to processing recurring txs
TheRustyPickle Sep 27, 2026
e234a06
Force process pending txs when recurring txs are added/edited
TheRustyPickle Sep 27, 2026
352f095
Reload pages on recurring tx addition/edit
TheRustyPickle Sep 27, 2026
b9037bd
Rename stale variable
TheRustyPickle Sep 27, 2026
a84bdde
Format
TheRustyPickle Sep 27, 2026
6edd5d8
Log verification of defensive check
TheRustyPickle Sep 29, 2026
7ff27f4
Unify autofiller
TheRustyPickle Sep 29, 2026
202565b
Add autofill for missing fields
TheRustyPickle Sep 29, 2026
e44adb8
Add other stuff on initial page
TheRustyPickle Sep 29, 2026
868ca0b
Update tests
TheRustyPickle Sep 29, 2026
6df6352
Update snapshot
TheRustyPickle Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
on:
push:
branches: [main, auto, canary]
pull_request:
branches:
- main

name: Test coverage

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
coverage:
name: Collect test coverage
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
# nightly rust might break from time to time
continue-on-error: true
env:
RUSTFLAGS: -D warnings
CARGO_TERM_COLOR: always
steps:
- name: Set temp directory on Windows
if: ${{ runner.os == 'Windows' }}
run: |
mkdir -p "D:\a\_temp"
echo "TEMP=D:\a\_temp" >> $GITHUB_ENV
echo "TMP=D:\a\_temp" >> $GITHUB_ENV
shell: bash
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# Nightly Rust is used for cargo llvm-cov --doc below.
- uses: dtolnay/rust-toolchain@4fd1da8b0805d2d2e936788875a7d65dbd677dc2 # nightly
with:
default: true
components: llvm-tools-preview
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2

- name: Install latest nextest release
uses: taiki-e/install-action@82cd3e7658a6f96c86c0234aeeda1748937cb0a1 # v2.85.13
with:
tool: nextest
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@82cd3e7658a6f96c86c0234aeeda1748937cb0a1 # v2.85.13
with:
tool: cargo-llvm-cov

- name: Collect coverage data
env:
RUSTUP_TOOLCHAIN: nightly
# Generate separate reports for nextest and doctests, and combine them.
run: |
cargo llvm-cov --no-report nextest
cargo llvm-cov --no-report --doc
cargo llvm-cov report --doctests --lcov --output-path lcov.info
- name: Upload coverage data to codecov
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # zizmor: ignore[secrets-outside-env]
with:
files: lcov.info
29 changes: 2 additions & 27 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,38 +17,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3
uses: mozilla-actions/sccache-action@v0.0.11
- uses: actions/checkout@v3
- name: Run rust format
uses: actions-rs/toolchain@v1.0.6
with:
profile: minimal
default: true
components: rustfmt
- uses: Swatinem/rust-cache@v2.8.1
- uses: Swatinem/rust-cache@v2.9.2
- run: cargo fmt -- --check

run_test:
name: Run tests
runs-on: ubuntu-latest
steps:
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.9
with:
version: "v0.10.0"
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2.8.1
- name: Install tarpaulin
run: |
curl -s https://api.github.com/repos/xd009642/tarpaulin/releases/latest | \
grep "browser_download_url.*x86_64-unknown-linux-musl.tar.gz" | cut -d : -f 2,3 | tr -d \" | wget -qi -
tar -xzf cargo-tarpaulin-*.tar.gz
mv cargo-tarpaulin ~/.cargo/bin/
- name: Run tests with tarpaulin
run: cargo tarpaulin --workspace --exclude tui --exclude shared --exclude db --out Xml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: cobertura.xml
verbose: true
4 changes: 4 additions & 0 deletions .rot/known_issues.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"version": 1,
"issues": {}
}
6,516 changes: 6,516 additions & 0 deletions .rot/snapshot.json

Large diffs are not rendered by default.

27 changes: 25 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 16 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<div align="center"><h1>Rex</h1></div>
<!-- rumdl-disable-file no-inline-html -->
<div align="center"><h1>Rex</h1></div> <!-- rumdl-disable-line first-line-heading -->
<div align="center">
<a href="https://wakatime.com/@RustyPickle"><img src="https://wakatime.com/badge/github/TheRustyPickle/Rex.svg" alt="wakatime"></a>
<a href="https://crates.io/crates/rex-tui">
Expand All @@ -15,12 +16,15 @@ Rex is a terminal user interface app for managing incomes, expenses, and transac
<h2>Key Features</h2>

* Easily view, add, edit, and delete transactions.
* Navigate through transactions and instantly observe balance changes after each transaction.
* Navigate through transactions and instantly observe balance changes after
each transaction.
* Chart for visualizing balance changes over a specific month, year, or all transactions.
* Access a summary with key insights and information on income, expense, and percentage distribution.
* Access a summary with key insights and information on income, expense, and
percentage distribution.
* Built using SQLite database and keeps everything local.
* Find transactions quickly using partial or specific information.
* Organize transactions with custom tags for easy filtering.
* Add recurring transactions with flexible interval rules.
* Works fully offline.

<h2>Installation</h2>
Expand All @@ -39,10 +43,11 @@ cargo run --release
**2. Run the Latest Release:**

* Download the latest executable from [Release](https://github.com/TheRustyPickle/Rex/releases/latest).
* Open terminal/CMD and start the program by the command `./rex` or `rex` depending on the OS at the correct directory.

* Open terminal/CMD and start the program by the command `./rex` or `rex`
depending on the OS at the correct directory.

or

* Double-click the executable which will try to open a terminal/CMD by itself.

**3. Install from Cargo:**
Expand All @@ -52,15 +57,18 @@ cargo run --release

**4. Install using a package manager:**

* On NetBSD a package is available from the [official repositories](https://pkgsrc.se/finance/rex). To install it simply run:
* On NetBSD a package is available from the
[official repositories](https://pkgsrc.se/finance/rex). To install it simply run:

```sh
pkgin install rex
```

<h2>App Data Location</h2>

See [here](https://docs.rs/dirs/latest/dirs/fn.data_local_dir.html) to learn about the initial directory where Rex data gets saved which is determined based on the OS.
See [here](https://docs.rs/dirs/latest/dirs/fn.data_local_dir.html) to learn <!-- rumdl-disable-line descriptive-link-text -->
about the initial directory where Rex data gets saved which is determined based
on the OS.

<h2>Feedback & Bug Reports</h2>

Expand Down
2 changes: 2 additions & 0 deletions app/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ license = "MIT"
anyhow.workspace = true
chrono.workspace = true
diesel.workspace = true
log = "0.4.34"
rex-db.workspace = true
rex-shared.workspace = true
strsim = "0.11.1"
strum.workspace = true
strum_macros.workspace = true
thiserror = "2.0.17"


[lints.clippy]
too_many_arguments = { level = "allow" }
Loading
Loading