* BACKLOG.org

A public store of tasks/changes that we're fairly sure would be good
to have, and their design notes. Here they compost nicely in the sun,
uncommitted and unscheduled. Some items might appear best when viewed
with org mode in Emacs.

Related:
- SM's private backlog, gradually moving here
- http://regressions.hledger.org, http://bugs.hledger.org, http://wishes.hledger.org
- https://hledger.org/mockups.html
- https://hledger.org/ROADMAP.html

** cli: help: clarify/improve the various kinds of command line help
*** survey/describe
Most of these are long, and best viewed with a pager, eg: hledger -h | less

**** Quick command line help:
#+begin_example
hledger     -h|--help
hledger-ui  -h|--help
hledger-web -h|--help
 General usage and command line flags for the main hledger UIs.

hledger
 hledger CLI's commands list.

hledger COMMAND -h|--help
 COMMAND's usage, flags, and manual section.

#+end_example

**** User manuals:

#+begin_example
hledger help [-i|-m|-p] [TOPIC]
 View hledger user manual with info, man or pager, positioned at TOPIC.
 Good for jumping to a known (or guessed) topic.
 Good for viewing the manual if you don't have info or man.
 This is the main manual, covering the CLI, file formats, and concepts.

hledger --info
hledger-ui --info
hledger-web --info
 hledger, hledger-ui or hledger-web's builtin user manual, viewed with info.
 Best for exploring the topic tree.

hledger --man
hledger-ui --man
hledger-web --man
 hledger, hledger-ui or hledger-web's builtin user manual, viewed with man.
 Quick and searchable. 

info hledger, man hledger
info hledger-ui, man hledger-ui
info hledger-web, man hledger-web
 hledger, hledger-ui, or hledger-web installed user manuals.
 Same as above, if the manuals are properly installed on your system.

https://hledger.org/hledger.html
https://hledger.org/hledger-ui.html
https://hledger.org/hledger-web.html
 hledger, hledger-ui and hledger-web manuals, viewed on the web.
 Best for comfortable viewing and navigation when online.

#+end_example

** cli: help improvements
*** auto pager
*** colour
*** show commands to get more detailed help
*** list output formats
*** list input formats
*** list runtime-detected input formats
*** more intro/manual in the main --help
*** commands list updates
Financial reports:
 aregister (areg)         show an account's transactions and running balance
 register (reg)           show postings in all/matched accounts and their total
 balancesheet (bs)        show assets, liabilities and net worth
 balancesheetequity (bse) show assets, liabilities and equity
 cashflow (cf)            show changes in liquid assets
 incomestatement (is)     show revenues and expenses
 balance (bal)            show custom balance reports, budgets, gains..
 roi                      show a return on investment report
*** --pivot: list possible arguments in help
** cli: --version: include latest commit date
** compat: support reading with beancount2ledger when in PATH
** compat: support reading with ledger2beancount & beancount2ledger when in PATH
** doc: quickstart: update download instructions, make maintainable
** entry command
*** a convenient non-interactive version of hledger add; and an extension point for data entry validations/automations
hledger entry [ONELINEENTRY]  
*** ONELINEENTRY is a single argument, in quotes: a journal entry using double-space instead of newlines
hledger entry '2021-01-01 * (123) farmers market  expenses:food  $10  assets:checking ; date:1/3'
*** or with no argument, each line from standard input generates a journal entry
*** with -a|--add, appends to the journal, like add/import
*** if entry does not begin with a date, uses today's date
hledger entry 'farmers market  expenses:food  $10  assets:cash'
*** if any other required parts are omitted, they are filled from similar past transactions, like add
These will match the txn above, and make the postings shown:
hledger entry 'farmers'                                        # expenses:food $10, assets:cash -$10
hledger entry 'farmers  expenses:food  $11'                    # expenses:food $11, assets:cash -$11
hledger entry 'farmers  $11'                                   # same
hledger entry 'farmers  11'                                    # same
hledger entry 'farmers  expenses:food  6  expenses:snacks  5'  # expenses:food $6, expenses:snacks $5, assets:cash -$11
*** leaf names of known accounts will be expanded
hledger entry 'farmers  food  6  snacks  5'                    # same
*** missing commodity symbol could also be inferred from source account's balance
*** or with a flag, missing required parts will give an error
**** --complete, --only, --standalone, --no-infer, --no-past, --no-journal
*** entry can run validation checks, including fancy ones like "asset accounts may not go negative"
** reports: allow -c '0.%' to set style of -%
** reports: relax the "whole subperiods" rule
*** when there's only one ?
bal -YH -e tomorrow would be titled with tomorrow's date instead of 12-31
*** when there's multiple, but no transactions before the begin date or after the end date ?
** timeclock: improve error message
hledger: clock-out time less than clock-in time in:
2021-09-17 * 12:00-06:00
    (no-electronics)          -6.00h

** timeclock: ugly parse error
hledger: line 6: expected timeclock code o but got i
CallStack (from HasCallStack):
  error, called at ./Hledger/Data/Timeclock.hs:85:32 in hledger-lib-1.22.99-HCWXy7WanhBI3o1AfvBpXy:Hledger.Data.Timeclock
** timedot: more flexible parsing
*** ignore all preamble lines (before first date line)
*** ignore all amountless lines
*** ignore org list bullets/checkboxes
*** check timedotstrict: disables ignoring preamble/amountless lines
** timedot: --alias doesn't work with timeclock, timedot ?

