hledger-web 1.33 → 1.33.1
raw patch · 6 files changed
+159/−142 lines, 6 filesdep ~base64dep ~hledgerdep ~hledger-libPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base64, hledger, hledger-lib
API changes (from Hackage documentation)
Files
- CHANGES.md +9/−0
- Hledger/Web/Widget/AddForm.hs +9/−1
- hledger-web.1 +2/−2
- hledger-web.cabal +7/−7
- hledger-web.info +25/−25
- hledger-web.txt +107/−107
CHANGES.md view
@@ -21,6 +21,11 @@ User-visible changes in hledger-web. See also the hledger changelog. +# 1.33.1 2024-05-02++- Support base64 >=1.0++ # 1.33 2024-04-18 Fixes@@ -47,6 +52,10 @@ - Mention the `-E/--empty` flag for hiding zeros, the non-display of costs, and non-zeros that look like zero because of hidden costs.++[#2140]: https://github.com/simonmichael/hledger/issues/2140+[#2163]: https://github.com/simonmichael/hledger/issues/2163+[#2166]: https://github.com/simonmichael/hledger/issues/2166 # 1.32.3 2024-01-28
Hledger/Web/Widget/AddForm.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-}@@ -11,6 +12,9 @@ ) where import Control.Monad.State.Strict (evalStateT)+#if MIN_VERSION_base64(1,0,0)+import Data.Base64.Types (extractBase64)+#endif import Data.Bifunctor (first) import Data.Foldable (toList) import Data.List (dropWhileEnd, unfoldr)@@ -192,7 +196,11 @@ ] where -- decodeBase64EncodedText is defined in add-form.hamlet- b64wrap = ("decodeBase64EncodedText(\""<>) . (<>"\")") . encodeBase64+ b64wrap = ("decodeBase64EncodedText(\""<>) . (<>"\")") .+#if MIN_VERSION_base64(1,0,0)+ extractBase64 .+#endif+ encodeBase64 zipDefault :: a -> [a] -> [a] -> [(a, a)] zipDefault def (b:bs) (c:cs) = (b, c):(zipDefault def bs cs)
hledger-web.1 view
@@ -1,5 +1,5 @@ -.TH "HLEDGER\-WEB" "1" "April 2024" "hledger-web-1.33 " "hledger User Manuals"+.TH "HLEDGER\-WEB" "1" "May 2024" "hledger-web-1.33.1 " "hledger User Manuals" @@ -12,7 +12,7 @@ .PD \f[CR]hledger web \-\- [\-\-serve|\-\-serve\-api] [OPTS] [ARGS]\f[R] .SH DESCRIPTION-This manual is for hledger\[aq]s web interface, version 1.33.+This manual is for hledger\[aq]s web interface, version 1.33.1. See also the hledger manual for common concepts and file formats. .PP hledger is a robust, user\-friendly, cross\-platform set of programs for
hledger-web.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hledger-web-version: 1.33+version: 1.33.1 synopsis: Web user interface for the hledger accounting system description: A simple web user interface for the hledger accounting system, providing a more modern UI than the command-line or terminal interfaces.@@ -151,12 +151,12 @@ hs-source-dirs: ./ ghc-options: -Wall -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns- cpp-options: -DVERSION="1.33"+ cpp-options: -DVERSION="1.33.1" build-depends: Decimal >=0.5.1 , aeson >=1 && <2.3 , base >=4.14 && <4.20- , base64 <1+ , base64 , blaze-html , blaze-markup , bytestring@@ -171,8 +171,8 @@ , extra >=1.6.3 , filepath , hjsmin- , hledger ==1.33.*- , hledger-lib ==1.33.*+ , hledger >=1.33.1 && <1.34+ , hledger-lib >=1.33.1 && <1.34 , hspec , http-client , http-conduit@@ -213,7 +213,7 @@ hs-source-dirs: app ghc-options: -Wall -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns- cpp-options: -DVERSION="1.33"+ cpp-options: -DVERSION="1.33.1" build-depends: base >=4.14 && <4.20 , hledger-web@@ -233,7 +233,7 @@ hs-source-dirs: test ghc-options: -Wall -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns- cpp-options: -DVERSION="1.33"+ cpp-options: -DVERSION="1.33.1" build-depends: base >=4.14 && <4.20 , hledger-web
hledger-web.info view
@@ -16,7 +16,7 @@ 'hledger-web [--serve|--serve-api] [OPTS] [ARGS]' 'hledger web -- [--serve|--serve-api] [OPTS] [ARGS]' - This manual is for hledger's web interface, version 1.33. See also+ This manual is for hledger's web interface, version 1.33.1. See also the hledger manual for common concepts and file formats. hledger is a robust, user-friendly, cross-platform set of programs@@ -638,30 +638,30 @@ Tag Table: Node: Top223-Node: OPTIONS2575-Ref: #options2680-Node: General help options5645-Ref: #general-help-options5795-Node: General input options6077-Ref: #general-input-options6263-Node: General reporting options6920-Ref: #general-reporting-options7085-Node: PERMISSIONS10475-Ref: #permissions10614-Node: EDITING UPLOADING DOWNLOADING11826-Ref: #editing-uploading-downloading12007-Node: RELOADING12841-Ref: #reloading12975-Node: JSON API13408-Ref: #json-api13523-Node: DEBUG OUTPUT19011-Ref: #debug-output19136-Node: Debug output19163-Ref: #debug-output-119264-Node: ENVIRONMENT19681-Ref: #environment19800-Node: BUGS19917-Ref: #bugs20001+Node: OPTIONS2577+Ref: #options2682+Node: General help options5647+Ref: #general-help-options5797+Node: General input options6079+Ref: #general-input-options6265+Node: General reporting options6922+Ref: #general-reporting-options7087+Node: PERMISSIONS10477+Ref: #permissions10616+Node: EDITING UPLOADING DOWNLOADING11828+Ref: #editing-uploading-downloading12009+Node: RELOADING12843+Ref: #reloading12977+Node: JSON API13410+Ref: #json-api13525+Node: DEBUG OUTPUT19013+Ref: #debug-output19138+Node: Debug output19165+Ref: #debug-output-119266+Node: ENVIRONMENT19683+Ref: #environment19802+Node: BUGS19919+Ref: #bugs20003 End Tag Table
hledger-web.txt view
@@ -9,41 +9,41 @@ hledger web -- [--serve|--serve-api] [OPTS] [ARGS] DESCRIPTION- This manual is for hledger's web interface, version 1.33. See also the- hledger manual for common concepts and file formats.+ This manual is for hledger's web interface, version 1.33.1. See also+ the hledger manual for common concepts and file formats. - hledger is a robust, user-friendly, cross-platform set of programs for- tracking money, time, or any other commodity, using double-entry ac-- counting and a simple, editable file format. hledger is inspired by- and largely compatible with ledger(1), and largely interconvertible+ hledger is a robust, user-friendly, cross-platform set of programs for+ tracking money, time, or any other commodity, using double-entry ac-+ counting and a simple, editable file format. hledger is inspired by+ and largely compatible with ledger(1), and largely interconvertible with beancount(1). - hledger-web is a simple web application for browsing and adding trans-- actions. It provides a more user-friendly UI than the hledger CLI or- hledger-ui TUI, showing more at once (accounts, the current account+ hledger-web is a simple web application for browsing and adding trans-+ actions. It provides a more user-friendly UI than the hledger CLI or+ hledger-ui TUI, showing more at once (accounts, the current account register, balance charts) and allowing history-aware data entry, inter- active searching, and bookmarking. - hledger-web also lets you share a journal 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+ hledger-web also lets you share a journal 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 from (and appends to) a journal file specified- by the LEDGER_FILE environment variable (defaulting to- $HOME/.hledger.journal); or you can specify files with -f options. It- can also read timeclock files, timedot files, or any CSV/SSV/TSV file+ Like hledger, it reads from (and appends to) a journal file specified+ by the LEDGER_FILE environment variable (defaulting to+ $HOME/.hledger.journal); or you can specify files with -f options. It+ can also read timeclock files, timedot files, or any CSV/SSV/TSV file with a date field. (See hledger(1) -> Input for details.) hledger-web can be run in three modes: o Transient mode (the default): your default web browser will be opened- to show the app if possible, and the app exits automatically after- two minutes of inactivity (no requests received and no open browser+ to show the app if possible, and the app exits automatically after+ two minutes of inactivity (no requests received and no open browser windows viewing it). - o With --serve: the app runs without stopping, and without opening a+ o With --serve: the app runs without stopping, and without opening a browser. o With --serve-api: only the JSON API is served.@@ -61,36 +61,36 @@ like --serve, but serve only the JSON web API, not the web UI --allow=view|add|edit- set the user's access level for changing data (default: add).- It also accepts sandstorm for use on that platform (reads per-+ set the user's access level for changing data (default: add).+ It also accepts sandstorm for use on that platform (reads per- missions from the X-Sandstorm-Permissions request header). --cors=ORIGIN- allow cross-origin requests from the specified origin; setting+ allow cross-origin requests from the specified origin; setting ORIGIN to "*" allows requests from any origin --host=IPADDR listen on this IP address (default: 127.0.0.1) - By default the server listens on IP address 127.0.0.1, which is acces-- sible only to requests from the local machine.. You can use --host to- listen on a different address configured on the machine, eg to allow- access from other machines. The special address 0.0.0.0 causes it to+ By default the server listens on IP address 127.0.0.1, which is acces-+ sible only to requests from the local machine.. You can use --host to+ listen on a different address configured on the machine, eg to allow+ access from other machines. The special address 0.0.0.0 causes it to listen on all addresses configured on the machine. --port=PORT listen on this TCP port (default: 5000) - Similarly, you can use --port to listen on a TCP port other than 5000.- This is useful if you want to run multiple hledger-web instances on a+ Similarly, you can use --port to listen on a TCP port other than 5000.+ This is useful if you want to run multiple hledger-web instances on a machine. --socket=SOCKETFILE- listen on the given unix socket instead of an IP address and+ listen on the given unix socket instead of an IP address and port (unix only; implies --serve) - When --socket is used, hledger-web creates and communicates via a- socket file instead of a TCP port. This can be more secure, respects+ When --socket is used, hledger-web creates and communicates via a+ socket file instead of a TCP port. This can be more secure, respects unix file permissions, and makes certain use cases easier, such as run- ning per-user instances behind an nginx reverse proxy. (Eg: proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;.)@@ -98,28 +98,28 @@ --base-url=URL set the base url (default: http://IPADDR:PORT). - You can use --base-url to change the protocol, hostname, port and path- that appear in hledger-web's hyperlinks. This is useful eg when inte-- grating 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). Note this affects url generation+ You can use --base-url to change the protocol, hostname, port and path+ that appear in hledger-web's hyperlinks. This is useful eg when inte-+ grating 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). Note this affects url generation but not route parsing. - --test run hledger-web's tests and exit. hspec test runner args may+ --test run hledger-web's tests and exit. hspec test runner args may follow a --, eg: hledger-web --test -- --help hledger-web also supports many of hledger's general options. Query op-- tions and arguments may be used to set an initial filter, which al-- though not shown in the UI, will restrict the data shown, in addition+ tions and arguments may be used to set an initial filter, which al-+ though not shown in the UI, will restrict the data shown, in addition to any search query entered in the UI. - Note that hledger-web shows accounts with zero balances by default,- like hledger-ui (and unlike hledger). Using the -E/--empty flag at+ Note that hledger-web shows accounts with zero balances by default,+ like hledger-ui (and unlike hledger). Using the -E/--empty flag at startup will hide them. - If you see accounts which appear to have a zero balance, but cannot be- hidden with -E: these have a mixed-cost balance which looks like zero- when costs are hidden. Currently hledger-web does not show costs at+ If you see accounts which appear to have a zero balance, but cannot be+ hidden with -E: these have a mixed-cost balance which looks like zero+ when costs are hidden. Currently hledger-web does not show costs at all. General help options@@ -142,7 +142,7 @@ $LEDGER_FILE or $HOME/.hledger.journal) --rules-file=RULESFILE- Conversion rules file to use when reading CSV (default:+ Conversion rules file to use when reading CSV (default: FILE.rules) --separator=CHAR@@ -159,7 +159,7 @@ assignments) -s --strict- do extra error checking (check that all posted accounts are de-+ do extra error checking (check that all posted accounts are de- clared) General reporting options@@ -187,7 +187,7 @@ multiperiod/multicolumn report by year -p --period=PERIODEXP- set start date, end date, and/or reporting interval all at once+ set start date, end date, and/or reporting interval all at once using period expressions syntax --date2@@ -195,7 +195,7 @@ fects) --today=DATE- override today's date (affects relative smart dates, for+ override today's date (affects relative smart dates, for tests/examples) -U --unmarked@@ -214,21 +214,21 @@ hide/aggregate accounts or postings more than NUM levels deep -E --empty- show items with zero amount, normally hidden (and vice-versa in+ 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-+ 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+ convert amounts to cost or market value, more flexibly than -B/-V/-X --infer-equity@@ -238,38 +238,38 @@ infer costs from conversion equity postings --infer-market-prices- use costs as additional market prices, as if they were P direc-+ use costs as additional market prices, as if they were P direc- tives --forecast- generate transactions from periodic rules, between the latest- recorded txn and 6 months from today, or during the specified- PERIOD (= is required). Auto posting rules will be applied to- these transactions as well. Also, in hledger-ui make fu-+ generate transactions from periodic rules, between the latest+ recorded txn and 6 months from today, or during the specified+ PERIOD (= is required). Auto posting rules will be applied to+ these transactions as well. Also, in hledger-ui make fu- ture-dated transactions visible. - --auto generate extra postings by applying auto posting rules to all+ --auto generate extra postings by applying auto posting rules to all txns (not just forecast txns) --verbose-tags- add visible tags indicating transactions or postings which have+ add visible tags indicating transactions or postings which have been generated/modified --commodity-style- Override the commodity style in the output for the specified+ 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+ 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+ 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+ 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@@ -278,13 +278,13 @@ Some reporting options can also be written as query arguments. PERMISSIONS- By default, hledger-web allows anyone who can reach it to view the+ 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 ma-+ 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 ma- chine. o putting it behind an authenticating proxy, using eg apache or nginx@@ -294,44 +294,44 @@ 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+ 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 in-+ o manage - allows editing, uploading or downloading the main or in- cluded 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+ 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 in-+ 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 in- cludes. - Note, unlike any other hledger command, in this mode you (or any visi-+ 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+ 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+ 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+ 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 un- til the file has been fixed. @@ -339,8 +339,8 @@ 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+ 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@@ -357,7 +357,7 @@ /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+ (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@@ -398,25 +398,25 @@ "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 un-+ 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 un- derstanding, see the journal docs. 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+ 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 "ac-- countTransactionsReport ...". 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-+ countTransactionsReport ...". 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+ 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+ 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@@ -512,28 +512,28 @@ "tstatus": "Unmarked" } - And here's how to test adding it with curl. This should add a new en-+ And here's how to test adding it with curl. This should add a new en- try to your journal: $ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json DEBUG OUTPUT Debug output- You can add --debug[=N] to the command line to log debug output. N+ You can add --debug[=N] to the command line to log debug output. N ranges from 1 (least output, the default) to 9 (maximum output). Typi-- cally you would start with 1 and increase until you are seeing enough.- Debug output goes to stderr, interleaved with the requests logged on+ cally you would start with 1 and increase until you are seeing enough.+ Debug output goes to stderr, interleaved with the requests logged on stdout. To capture debug output in a log file instead, you can usually redirect stderr, eg: hledger-web --debug=3 2>hledger-web.log. ENVIRONMENT- LEDGER_FILE The main journal file to use when not specified with+ LEDGER_FILE The main journal file to use when not specified with -f/--file. Default: $HOME/.hledger.journal. BUGS We welcome bug reports in the hledger issue tracker (shortcut:- http://bugs.hledger.org), or on the #hledger chat or hledger mail list+ http://bugs.hledger.org), or on the #hledger chat or hledger mail list (https://hledger.org/support). Some known issues:@@ -558,4 +558,4 @@ SEE ALSO hledger(1), hledger-ui(1), hledger-web(1), ledger(1) -hledger-web-1.33 April 2024 HLEDGER-WEB(1)+hledger-web-1.33.1 May 2024 HLEDGER-WEB(1)