574 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			574 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| HLEDGER-WEB(1)               hledger User Manuals               HLEDGER-WEB(1)
 | |
| 
 | |
| 
 | |
| 
 | |
| NAME
 | |
|        hledger-web  is  a web interface (WUI) for the hledger accounting tool.
 | |
|        This manual is for hledger-web 1.23.99.
 | |
| 
 | |
| SYNOPSIS
 | |
|        hledger-web [OPTIONS]
 | |
|        hledger web -- [OPTIONS]
 | |
| 
 | |
| DESCRIPTION
 | |
|        hledger is a reliable, cross-platform  set  of  programs  for  tracking
 | |
|        money,  time, or any other commodity, using double-entry accounting and
 | |
|        a simple, editable file format.  hledger is  inspired  by  and  largely
 | |
|        compatible with ledger(1).
 | |
| 
 | |
|        hledger-web  is hledger's web interface.  It starts a simple web appli-
 | |
|        cation for browsing and adding transactions, and optionally opens it in
 | |
|        a  web browser window if possible.  It provides a more user-friendly UI
 | |
|        than the hledger CLI or hledger-ui  interface,  showing  more  at  once
 | |
|        (accounts,  the  current account register, balance charts) and allowing
 | |
|        history-aware data entry, interactive searching, and bookmarking.
 | |
| 
 | |
|        hledger-web also lets you share a ledger with multiple users,  or  even
 | |
|        the  public  web.   There is no access control, so if you need that you
 | |
|        should put it behind a suitable  web  proxy.   As  a  small  protection
 | |
|        against  data  loss  when  running an unprotected instance, it writes a
 | |
|        numbered backup of the main journal file (only ?)  on every edit.
 | |
| 
 | |
|        Like hledger, it reads data from one or more files in hledger  journal,
 | |
|        timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,
 | |
|        or       $HOME/.hledger.journal       (on       windows,        perhaps
 | |
|        C:/Users/USER/.hledger.journal).  For more about this see hledger(1).
 | |
| 
 | |
| OPTIONS
 | |
|        Command-line options and arguments may be used to set an initial filter
 | |
|        on the data.  These filter options are not shown in the web UI, but  it
 | |
|        will be applied in addition to any search query entered there.
 | |
| 
 | |
|        Note:  if invoking hledger-web as a hledger subcommand, write -- before
 | |
|        options, as shown in the synopsis above.
 | |
| 
 | |
|        --serve
 | |
|               serve and log requests, don't browse or auto-exit
 | |
| 
 | |
|        --serve-api
 | |
|               like --serve, but serve only  the  JSON  web  API,  without  the
 | |
|               server-side web UI
 | |
| 
 | |
|        --host=IPADDR
 | |
|               listen on this IP address (default: 127.0.0.1)
 | |
| 
 | |
|        --port=PORT
 | |
|               listen on this TCP port (default: 5000)
 | |
| 
 | |
|        --socket=SOCKETFILE
 | |
|               use  a unix domain socket file to listen for requests instead of
 | |
|               a TCP socket.  Implies --serve.  It can  only  be  used  if  the
 | |
|               operating system can provide this type of socket.
 | |
| 
 | |
|        --base-url=URL
 | |
|               set  the  base  url  (default:  http://IPADDR:PORT).   You would
 | |
|               change this when sharing over the network, or integrating within
 | |
|               a larger website.
 | |
| 
 | |
|        --file-url=URL
 | |
|               set the static files url (default: BASEURL/static).  hledger-web
 | |
|               normally serves static files itself, but if you wanted to  serve
 | |
|               them  from  another server for efficiency, you would set the url
 | |
|               with this.
 | |
| 
 | |
|        --capabilities=CAP[,CAP..]
 | |
|               enable the  view,  add,  and/or  manage  capabilities  (default:
 | |
|               view,add)
 | |
| 
 | |
|        --capabilities-header=HTTPHEADER
 | |
|               read  capabilities  to  enable  from a HTTP header, like X-Sand-
 | |
|               storm-Permissions (default: disabled)
 | |
| 
 | |
|        --test run hledger-web's tests and exit.  hspec test  runner  args  may
 | |
|               follow a --, eg: hledger-web --test -- --help
 | |
| 
 | |
|        hledger input options:
 | |
| 
 | |
|        -f FILE --file=FILE
 | |
|               use  a  different  input  file.   For  stdin,  use  -  (default:
 | |
|               $LEDGER_FILE or $HOME/.hledger.journal)
 | |
| 
 | |
|        --rules-file=RULESFILE
 | |
|               Conversion  rules  file  to  use  when  reading  CSV   (default:
 | |
|               FILE.rules)
 | |
| 
 | |
|        --separator=CHAR
 | |
|               Field separator to expect when reading CSV (default: ',')
 | |
| 
 | |
|        --alias=OLD=NEW
 | |
|               rename accounts named OLD to NEW
 | |
| 
 | |
|        --anon anonymize accounts and payees
 | |
| 
 | |
|        --pivot FIELDNAME
 | |
|               use some other field or tag for the account name
 | |
| 
 | |
|        -I --ignore-assertions
 | |
|               disable balance assertion checks (note: does not disable balance
 | |
|               assignments)
 | |
| 
 | |
|        -s --strict
 | |
|               do extra error checking (check  that  all  posted  accounts  are
 | |
|               declared)
 | |
| 
 | |
|        hledger reporting options:
 | |
| 
 | |
|        -b --begin=DATE
 | |
|               include postings/txns on or after this date (will be adjusted to
 | |
|               preceding subperiod start when using a report interval)
 | |
| 
 | |
|        -e --end=DATE
 | |
|               include postings/txns before this date (will be adjusted to fol-
 | |
|               lowing subperiod end when using a report interval)
 | |
| 
 | |
|        -D --daily
 | |
|               multiperiod/multicolumn report by day
 | |
| 
 | |
|        -W --weekly
 | |
|               multiperiod/multicolumn report by week
 | |
| 
 | |
|        -M --monthly
 | |
|               multiperiod/multicolumn report by month
 | |
| 
 | |
|        -Q --quarterly
 | |
|               multiperiod/multicolumn report by quarter
 | |
| 
 | |
|        -Y --yearly
 | |
|               multiperiod/multicolumn report by year
 | |
| 
 | |
|        -p --period=PERIODEXP
 | |
|               set  start date, end date, and/or reporting interval all at once
 | |
|               using period expressions syntax
 | |
| 
 | |
|        --date2
 | |
|               match the secondary date instead (see  command  help  for  other
 | |
|               effects)
 | |
| 
 | |
|        --today=DATE
 | |
|               override   today's  date  (affects  relative  smart  dates,  for
 | |
|               tests/examples)
 | |
| 
 | |
|        -U --unmarked
 | |
|               include only unmarked postings/txns (can combine with -P or -C)
 | |
| 
 | |
|        -P --pending
 | |
|               include only pending postings/txns
 | |
| 
 | |
|        -C --cleared
 | |
|               include only cleared postings/txns
 | |
| 
 | |
|        -R --real
 | |
|               include only non-virtual postings
 | |
| 
 | |
|        -NUM --depth=NUM
 | |
|               hide/aggregate accounts or postings more than NUM levels deep
 | |
| 
 | |
|        -E --empty
 | |
|               show items with zero amount, normally hidden (and vice-versa  in
 | |
|               hledger-ui/hledger-web)
 | |
| 
 | |
|        -B --cost
 | |
|               convert amounts to their cost/selling amount at transaction time
 | |
| 
 | |
|        -V --market
 | |
|               convert amounts to their market value in default valuation  com-
 | |
|               modities
 | |
| 
 | |
|        -X --exchange=COMM
 | |
|               convert amounts to their market value in commodity COMM
 | |
| 
 | |
|        --value
 | |
|               convert  amounts  to  cost  or  market value, more flexibly than
 | |
|               -B/-V/-X
 | |
| 
 | |
|        --infer-market-prices
 | |
|               use transaction prices (recorded with @  or  @@)  as  additional
 | |
|               market prices, as if they were P directives
 | |
| 
 | |
|        --auto apply automated posting rules to modify transactions.
 | |
| 
 | |
|        --forecast
 | |
|               generate  future  transactions  from periodic transaction rules,
 | |
|               for the next 6 months or till report end date.   In  hledger-ui,
 | |
|               also make ordinary future transactions visible.
 | |
| 
 | |
|        --commodity-style
 | |
|               Override  the  commodity  style  in the output for the specified
 | |
|               commodity.  For example 'EUR1.000,00'.
 | |
| 
 | |
|        --color=WHEN (or --colour=WHEN)
 | |
|               Should color-supporting commands use ANSI color  codes  in  text
 | |
|               output.   'auto' (default): whenever stdout seems to be a color-
 | |
|               supporting terminal.  'always' or 'yes': always, useful eg  when
 | |
|               piping  output  into  'less  -R'.   'never'  or  'no': never.  A
 | |
|               NO_COLOR environment variable overrides this.
 | |
| 
 | |
|        --pretty[=WHEN]
 | |
|               Show prettier output, e.g.  using  unicode  box-drawing  charac-
 | |
|               ters.   Accepts 'yes' (the default) or 'no' ('y', 'n', 'always',
 | |
|               'never' also work).  If you provide an  argument  you  must  use
 | |
|               '=', e.g.  '--pretty=yes'.
 | |
| 
 | |
|        When a reporting option appears more than once in the command line, the
 | |
|        last one takes precedence.
 | |
| 
 | |
|        Some reporting options can also be written as query arguments.
 | |
| 
 | |
|        hledger help options:
 | |
| 
 | |
|        -h --help
 | |
|               show general or COMMAND help
 | |
| 
 | |
|        --man  show general or COMMAND user manual with man
 | |
| 
 | |
|        --info show general or COMMAND user manual with info
 | |
| 
 | |
|        --version
 | |
|               show general or ADDONCMD version
 | |
| 
 | |
|        --debug[=N]
 | |
|               show debug output (levels 1-9, default: 1)
 | |
| 
 | |
|        A @FILE argument will be expanded to the contents of FILE, which should
 | |
|        contain  one  command line option/argument per line.  (To prevent this,
 | |
|        insert a -- argument before.)
 | |
| 
 | |
|        By default, hledger-web starts the web app in "transient mode" and also
 | |
|        opens it in your default web browser if possible.  In this mode the web
 | |
|        app will keep running for as long as you have it open in a browser win-
 | |
|        dow,  and will exit after two minutes of inactivity (no requests and no
 | |
|        browser windows viewing it).  With --serve, it just runs  the  web  app
 | |
|        without  exiting,  and logs requests to the console.  With --serve-api,
 | |
|        only the JSON web api (see  below)  is  served,  with  the  usual  HTML
 | |
|        server-side web UI disabled.
 | |
| 
 | |
|        By  default the server listens on IP address 127.0.0.1, accessible only
 | |
|        to local requests.  You can  use  --host  to  change  this,  eg  --host
 | |
|        0.0.0.0 to listen on all configured addresses.
 | |
| 
 | |
|        Similarly,  use --port to set a TCP port other than 5000, eg if you are
 | |
|        running multiple hledger-web instances.
 | |
| 
 | |
|        Both of these options are ignored when --socket is used.  In this case,
 | |
|        it  creates  an  AF_UNIX socket file at the supplied path and uses that
 | |
|        for communication.  This is an  alternative  way  of  running  multiple
 | |
|        hledger-web  instances  behind a reverse proxy that handles authentica-
 | |
|        tion for different users.  The path can be  derived  in  a  predictable
 | |
|        way, eg by using the username within the path.  As an example, nginx as
 | |
|        reverse proxy can use the variable $remote_user to derive a  path  from
 | |
|        the  username  used  in  a  HTTP  basic  authentication.  The following
 | |
|        proxy_pass directive allows access to all  hledger-web  instances  that
 | |
|        created a socket in /tmp/hledger/:
 | |
| 
 | |
|                 proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;
 | |
| 
 | |
|        You  can use --base-url to change the protocol, hostname, port and path
 | |
|        that appear in hyperlinks, useful eg for integrating hledger-web within
 | |
|        a  larger website.  The default is http://HOST:PORT/ using the server's
 | |
|        configured host address and TCP port (or http://HOST if PORT is 80).
 | |
| 
 | |
|        With --file-url you can set a different base url for static  files,  eg
 | |
|        for better caching or cookie-less serving on high performance websites.
 | |
| 
 | |
| PERMISSIONS
 | |
|        By default, hledger-web allows anyone who can  reach  it  to  view  the
 | |
|        journal and to add new transactions, but not to change existing data.
 | |
| 
 | |
|        You can restrict who can reach it by
 | |
| 
 | |
|        o setting  the IP address it listens on (see --host above).  By default
 | |
|          it listens on  127.0.0.1,  accessible  to  all  users  on  the  local
 | |
|          machine.
 | |
| 
 | |
|        o putting it behind an authenticating proxy, using eg apache or nginx
 | |
| 
 | |
|        o custom firewall rules
 | |
| 
 | |
|        You can restrict what the users who reach it can do, by
 | |
| 
 | |
|        o using the --capabilities=CAP[,CAP..] flag when you start it, enabling
 | |
|          one or more of the following  capabilities.   The  default  value  is
 | |
|          view,add:
 | |
| 
 | |
|          o view - allows viewing the journal file and all included files
 | |
| 
 | |
|          o add - allows adding new transactions to the main journal file
 | |
| 
 | |
|          o manage  -  allows  editing,  uploading  or  downloading the main or
 | |
|            included files
 | |
| 
 | |
|        o using the --capabilities-header=HTTPHEADER flag  to  specify  a  HTTP
 | |
|          header  from  which it will read capabilities to enable.  hledger-web
 | |
|          on Sandstorm uses the  X-Sandstorm-Permissions  header  to  integrate
 | |
|          with Sandstorm's permissions.  This is disabled by default.
 | |
| 
 | |
| EDITING, UPLOADING, DOWNLOADING
 | |
|        If  you  enable the manage capability mentioned above, you'll see a new
 | |
|        "spanner" button to the right of the search form.  Clicking  this  will
 | |
|        let  you  edit,  upload,  or  download the journal file or any files it
 | |
|        includes.
 | |
| 
 | |
|        Note, unlike any other hledger command, in this mode you (or any  visi-
 | |
|        tor) can alter or wipe the data files.
 | |
| 
 | |
|        Normally  whenever  a  file is changed in this way, hledger-web saves a
 | |
|        numbered backup (assuming file permissions allow it, the  disk  is  not
 | |
|        full,  etc.)  hledger-web is not aware of version control systems, cur-
 | |
|        rently; if you use one, you'll have to arrange to  commit  the  changes
 | |
|        yourself (eg with a cron job or a file watcher like entr).
 | |
| 
 | |
|        Changes  which would leave the journal file(s) unparseable or non-valid
 | |
|        (eg with failing balance assertions) are prevented.   (Probably.   This
 | |
|        needs re-testing.)
 | |
| 
 | |
| RELOADING
 | |
|        hledger-web detects changes made to the files by other means (eg if you
 | |
|        edit it directly, outside of hledger-web), and it  will  show  the  new
 | |
|        data  when  you reload the page or navigate to a new page.  If a change
 | |
|        makes a file unparseable, hledger-web will  display  an  error  message
 | |
|        until the file has been fixed.
 | |
| 
 | |
|        (Note: if you are viewing files mounted from another machine, make sure
 | |
|        that both machine clocks are roughly in step.)
 | |
| 
 | |
| JSON API
 | |
|        In addition to the web UI, hledger-web also serves a JSON API that  can
 | |
|        be  used to get data or add new transactions.  If you want the JSON API
 | |
|        only, you can use the --serve-api flag.  Eg:
 | |
| 
 | |
|               $ hledger-web -f examples/sample.journal --serve-api
 | |
|               ...
 | |
| 
 | |
|        You can get JSON data from these routes:
 | |
| 
 | |
|               /version
 | |
|               /accountnames
 | |
|               /transactions
 | |
|               /prices
 | |
|               /commodities
 | |
|               /accounts
 | |
|               /accounttransactions/ACCOUNTNAME
 | |
| 
 | |
|        Eg, all account names in the journal (similar to the accounts command).
 | |
|        (hledger-web's  JSON  does  not include newlines, here we use python to
 | |
|        prettify it):
 | |
| 
 | |
|               $ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
 | |
|               [
 | |
|                   "assets",
 | |
|                   "assets:bank",
 | |
|                   "assets:bank:checking",
 | |
|                   "assets:bank:saving",
 | |
|                   "assets:cash",
 | |
|                   "expenses",
 | |
|                   "expenses:food",
 | |
|                   "expenses:supplies",
 | |
|                   "income",
 | |
|                   "income:gifts",
 | |
|                   "income:salary",
 | |
|                   "liabilities",
 | |
|                   "liabilities:debts"
 | |
|               ]
 | |
| 
 | |
|        Or all transactions:
 | |
| 
 | |
|               $ curl -s http://127.0.0.1:5000/transactions | python -m json.tool
 | |
|               [
 | |
|                   {
 | |
|                       "tcode": "",
 | |
|                       "tcomment": "",
 | |
|                       "tdate": "2008-01-01",
 | |
|                       "tdate2": null,
 | |
|                       "tdescription": "income",
 | |
|                       "tindex": 1,
 | |
|                       "tpostings": [
 | |
|                           {
 | |
|                               "paccount": "assets:bank:checking",
 | |
|                               "pamount": [
 | |
|                                   {
 | |
|                                       "acommodity": "$",
 | |
|                                       "aismultiplier": false,
 | |
|                                       "aprice": null,
 | |
|               ...
 | |
| 
 | |
|        Most of the JSON corresponds to hledger's data types;  for  details  of
 | |
|        what  the fields mean, see the Hledger.Data.Json haddock docs and click
 | |
|        on the various data types, eg Transaction.   And  for  a  higher  level
 | |
|        understanding, see the journal manual.
 | |
| 
 | |
|        In some cases there is outer JSON corresponding to a "Report" type.  To
 | |
|        understand that, go to the Hledger.Web.Handler.MiscR haddock  and  look
 | |
|        at  the  source for the appropriate handler to see what it returns.  Eg
 | |
|        for  /accounttransactions  it's  getAccounttransactionsR,  returning  a
 | |
|        "accountTransactionsReport  ...".   Looking  up the haddock for that we
 | |
|        can see that /accounttransactions returns an AccountTransactionsReport,
 | |
|        which  consists  of a report title and a list of AccountTransactionsRe-
 | |
|        portItem (etc).
 | |
| 
 | |
|        You can add a new transaction to the journal  with  a  PUT  request  to
 | |
|        /add,  if  hledger-web  was started with the add capability (enabled by
 | |
|        default).  The payload must be the full, exact JSON representation of a
 | |
|        hledger  transaction  (partial data won't do).  You can get sample JSON
 | |
|        from hledger-web's /transactions or /accounttransactions,  or  you  can
 | |
|        export it with hledger-lib, eg like so:
 | |
| 
 | |
|               .../hledger$ stack ghci hledger-lib
 | |
|               >>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
 | |
|               >>> :q
 | |
| 
 | |
|        Here's how it looks as of hledger-1.17 (remember, this JSON corresponds
 | |
|        to hledger's Transaction and related data types):
 | |
| 
 | |
|               {
 | |
|                   "tcomment": "",
 | |
|                   "tpostings": [
 | |
|                       {
 | |
|                           "pbalanceassertion": null,
 | |
|                           "pstatus": "Unmarked",
 | |
|                           "pamount": [
 | |
|                               {
 | |
|                                   "aprice": null,
 | |
|                                   "acommodity": "$",
 | |
|                                   "aquantity": {
 | |
|                                       "floatingPoint": 1,
 | |
|                                       "decimalPlaces": 10,
 | |
|                                       "decimalMantissa": 10000000000
 | |
|                                   },
 | |
|                                   "aismultiplier": false,
 | |
|                                   "astyle": {
 | |
|                                       "ascommodityside": "L",
 | |
|                                       "asdigitgroups": null,
 | |
|                                       "ascommodityspaced": false,
 | |
|                                       "asprecision": 2,
 | |
|                                       "asdecimalpoint": "."
 | |
|                                   }
 | |
|                               }
 | |
|                           ],
 | |
|                           "ptransaction_": "1",
 | |
|                           "paccount": "assets:bank:checking",
 | |
|                           "pdate": null,
 | |
|                           "ptype": "RegularPosting",
 | |
|                           "pcomment": "",
 | |
|                           "pdate2": null,
 | |
|                           "ptags": [],
 | |
|                           "poriginal": null
 | |
|                       },
 | |
|                       {
 | |
|                           "pbalanceassertion": null,
 | |
|                           "pstatus": "Unmarked",
 | |
|                           "pamount": [
 | |
|                               {
 | |
|                                   "aprice": null,
 | |
|                                   "acommodity": "$",
 | |
|                                   "aquantity": {
 | |
|                                       "floatingPoint": -1,
 | |
|                                       "decimalPlaces": 10,
 | |
|                                       "decimalMantissa": -10000000000
 | |
|                                   },
 | |
|                                   "aismultiplier": false,
 | |
|                                   "astyle": {
 | |
|                                       "ascommodityside": "L",
 | |
|                                       "asdigitgroups": null,
 | |
|                                       "ascommodityspaced": false,
 | |
|                                       "asprecision": 2,
 | |
|                                       "asdecimalpoint": "."
 | |
|                                   }
 | |
|                               }
 | |
|                           ],
 | |
|                           "ptransaction_": "1",
 | |
|                           "paccount": "income:salary",
 | |
|                           "pdate": null,
 | |
|                           "ptype": "RegularPosting",
 | |
|                           "pcomment": "",
 | |
|                           "pdate2": null,
 | |
|                           "ptags": [],
 | |
|                           "poriginal": null
 | |
|                       }
 | |
|                   ],
 | |
|                   "ttags": [],
 | |
|                   "tsourcepos": {
 | |
|                       "tag": "JournalSourcePos",
 | |
|                       "contents": [
 | |
|                           "",
 | |
|                           [
 | |
|                               1,
 | |
|                               1
 | |
|                           ]
 | |
|                       ]
 | |
|                   },
 | |
|                   "tdate": "2008-01-01",
 | |
|                   "tcode": "",
 | |
|                   "tindex": 1,
 | |
|                   "tprecedingcomment": "",
 | |
|                   "tdate2": null,
 | |
|                   "tdescription": "income",
 | |
|                   "tstatus": "Unmarked"
 | |
|               }
 | |
| 
 | |
|        And here's how to test adding it with curl.   This  should  add  a  new
 | |
|        entry to your journal:
 | |
| 
 | |
|               $ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json
 | |
| 
 | |
| ENVIRONMENT
 | |
|        LEDGER_FILE The journal file path when not specified with -f.  Default:
 | |
|        ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour-
 | |
|        nal).
 | |
| 
 | |
|        A  typical  value  is  ~/DIR/YYYY.journal,  where DIR is a version-con-
 | |
|        trolled finance directory and YYYY is the current year.  Or  ~/DIR/cur-
 | |
|        rent.journal, where current.journal is a symbolic link to YYYY.journal.
 | |
| 
 | |
|        On Mac computers, you can set this and other environment variables in a
 | |
|        more  thorough  way that also affects applications started from the GUI
 | |
|        (say,  an  Emacs  dock  icon).   Eg  on  MacOS  Catalina   I   have   a
 | |
|        ~/.MacOSX/environment.plist file containing
 | |
| 
 | |
|               {
 | |
|                 "LEDGER_FILE" : "~/finance/current.journal"
 | |
|               }
 | |
| 
 | |
|        To see the effect you may need to killall Dock, or reboot.
 | |
| 
 | |
| FILES
 | |
|        Reads  data from one or more files in hledger journal, timeclock, time-
 | |
|        dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or
 | |
|        $HOME/.hledger.journal           (on          windows,          perhaps
 | |
|        C:/Users/USER/.hledger.journal).
 | |
| 
 | |
| BUGS
 | |
|        The need to precede options with -- when invoked from hledger  is  awk-
 | |
|        ward.
 | |
| 
 | |
|        -f- doesn't work (hledger-web can't read from stdin).
 | |
| 
 | |
|        Query arguments and some hledger options are ignored.
 | |
| 
 | |
|        Does not work in text-mode browsers.
 | |
| 
 | |
|        Does not work well on small screens.
 | |
| 
 | |
| 
 | |
| 
 | |
| REPORTING BUGS
 | |
|        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel
 | |
|        or hledger mail list)
 | |
| 
 | |
| 
 | |
| AUTHORS
 | |
|        Simon Michael <simon@joyful.com> and contributors
 | |
| 
 | |
| 
 | |
| COPYRIGHT
 | |
|        Copyright (C) 2007-2020 Simon Michael.
 | |
|        Released under GNU GPL v3 or later.
 | |
| 
 | |
| 
 | |
| SEE ALSO
 | |
|        hledger(1), hledger-ui(1), hledger-web(1), ledger(1)
 | |
| 
 | |
| 
 | |
| 
 | |
| hledger-web-1.23.99              November 2021                  HLEDGER-WEB(1)
 |