Add a tags screen

Screen 8 lists every distinct tag -- the ones the index holds and the
ones rules.toml names -- with how many transactions carry it and the
rules that write it, each by file position with the transactions it
wins. It is where near-duplicate tags and tags several rules feed show
up, and a rule beaten by a more specific one reads (0) there as it does
on the rules screen. A tag no rule names any more says the next retag
clears it. The transfer label is not a tag and is never listed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 23:30:38 +02:00
co-authored by Claude Opus 5.5
parent ba7e0e2b42
commit 3d72a54be1
5 changed files with 169 additions and 5 deletions
+27 -5
View File
@@ -133,11 +133,12 @@ combined with `--wide`, whose columns all belong to a single transaction.
## The web app
`money serve`, which is also what `money` runs with no command, puts seven
`money serve`, which is also what `money` runs with no command, puts eight
screens in a browser: accounts, transactions, report, rule builder, rules,
transfer builder and transfers. It runs the same code as the CLI: amounts are formatted,
globs matched and transfers paired on the server, and the page only shows the
answers. It is one binary with the page built in; nothing else to deploy.
transfer builder, transfers and tags. It runs the same code as the CLI: amounts
are formatted, globs matched and transfers paired on the server, and the page
only shows the answers. It is one binary with the page built in; nothing else to
deploy.
```
money # http://127.0.0.1:8080
@@ -231,7 +232,7 @@ already in a folder are never renamed, since the index records them by path.
| Key | Action |
| --- | --- |
| `1` – `7` | accounts · transactions · report · rule builder · rules · transfer builder · transfers |
| `1` – `8` | accounts · transactions · report · rule builder · rules · transfer builder · transfers · tags |
| `/` | filter by description |
| `u` | show only untagged transactions (matched transfer legs are not among them) |
| `a` | clear the account filter |
@@ -470,6 +471,27 @@ once, both after asking. Definitions marked `⚠` are never pruned — they are
doing something, just not finishing it, and deleting one would hide the problem
rather than fix it. **Refresh pairing** re-reads what is currently in the index.
### Tags (`8`)
Every distinct tag, A→Z: the ones your transactions carry and any `rules.toml`
names, with how many transactions carry each and the rules that write it.
```
Tags · 2 tags
Tag Txns Rules
clothes 0 #4 *ZARA* (0)
groceries 2 #1 *LIDL* (0) #2 *KAUFLAND* (1) #3 *LIDL SOFIA* (1)
```
Rules are numbered by their position in `rules.toml`, as on the rules screen,
and the count after each is how many transactions it wins — so a tag's rules
add up to its transactions, and a rule at `(0)` is matching nothing or being
beaten by a more specific one. It is the place to spot near-duplicate tags
(`grocery` beside `groceries`) and tags that several rules feed. A tag no rule
names any more — `rules.toml` was edited since the last retag — says so; the
next Retag clears it. The transfer label is not a tag and never appears here.
## rules.toml
**The most specific rule wins**, so `*NIKOLA*` claims what it names even with a