aboutsummaryrefslogtreecommitdiffstats
path: root/TODO.md
blob: fe1fafc7d6321488018bbef5193cf46d6978ba5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# TODO

Next steps for firefly-cli. Each new command group follows the expandability
rule in CLAUDE.md (module + decorator, import line, unit test, SKILL.md, regen
bash completion).

## Command groups (deferred, roughly by demand)
- [x] `budget` — list/create/delete/enable/disable, limit-list/limit-set, and
      `tx add --budget`. Shipped v0.4.0 (review follow-ups v0.4.1).
- [ ] `bill` — list and inspect bills.
- [ ] `piggy` — piggy banks.
- [ ] `rule` — rules and rule groups.
- [ ] `recurring` — recurring transactions.
- [ ] `attachment` — list/download transaction attachments.
- [ ] `report` — summary reports (income/expense by period).
- [ ] `currency` — list/manage currencies.

## Verbs on existing groups
- [ ] `account delete` — currently needs a manual curl DELETE.
- [ ] `tx update` / `tx delete`.
- [ ] `tx edit --budget``tx add` can assign a budget (v0.4.0) but `tx edit`
      cannot re-budget an existing transaction. Add the flag mirroring `tx add`.
- [ ] `budget update` — rename a budget and/or edit its auto-budget fields
      (PUT /budgets/{id} accepts name + auto_budget_*). Only enable/disable
      (active toggle) shipped in v0.4.0; rename currently needs the web UI.
- [ ] `tx add --budget-id``--budget` resolves a name-or-id but sniffs
      all-digit refs as ids, so a budget literally named "7" is unreachable by
      name (see the ponytail note in `resolver.py`). Add an explicit
      `--budget-id`, mirroring `--from-id`/`--to-id`, if this ever bites.

## Output / UX
- [ ] `--human` column whitelists live in `output.py` `_VIEWS`; extend as new
      resource shapes are added (budget, bill, ...).
- [ ] Consider a `--no-color` flag (color is currently TTY-auto only).

## Infrastructure
- [ ] n-level command nesting. `cli.py` `_build_parser` and
      `scripts/gen_completion.py` both `partition(" ")` on the command name, so
      they only nest two levels (group + leaf). `budget limit-set` /
      `budget limit-list` are flattened to a hyphenated 2-token leaf as a
      workaround (v0.4.0). Refactor both to split the full name into tokens and
      build/scan nested subparsers per token, then a genuine `budget limit set`
      (three tokens) works and future groups needing sub-subcommands are a
      non-issue. Add a CLI-dispatch test (parse_args on the real parser), since
      the mocked unit suite calls handlers directly and cannot catch a
      dispatch/nesting break.
- [ ] `--raw` escape hatch for arbitrary API calls.
- [ ] OAuth as an alternative to personal access tokens.
- [ ] zsh / fish completion (bash done).

## UI/UX
- [x] completion suggests values for `--type` (account: asset/expense/revenue
      /liability, tx: withdrawal/deposit/transfer), keyed per command. Static
      enum, no API call. See `FLAG_VALUES` in `scripts/gen_completion.py`.