Discussion:
Another Web Frontend for HLedger: ledgeraccounting
Garret McGraw
2018-09-21 18:22:13 UTC
Permalink
Hi all,

I have spent a lot of time during the past year working on a web frontend
for ledger, specifically hledger, since it is my favorite. Thank you to
Simon and all the contributors for all for your hard work on it! I started
using hledger last year to track my home finances and realized that it
would be useful to be able to access my hledger file from anywhere and
allow my close family members to access our financial data too. I am very
interested in computer security and encryption so I knew that there are
many inherent risks in keeping one's finances available on the public
internet but I also realized that these risks can be mitigated by careful,
security conscious website design. I finally came up with a design of a web
UI that is based upon keeping the ledger file encrypted any time it is
stored in a file (on the server side). When the user is logged in to run
reports, it decrypts the ledger file using a PBKDF2 hash of the user's
password and then runs any reports and allows editing of the ledger using
the web UI. The decrypted ledger file is never written to the server's disk
and it is only decrypted to be passed via STDIN to hledger and then the
encryption key is thrown out until the next user request. Assuming no
long-running reports are still being processed by the server, closing the
browser tab discards any non-encrypted copy of the ledger file until the
user's next login, keeping all of the sensitive data private. Feel free to
read the "Security" section of the github README for many more details on
the security considerations.

Here are some of the highlights:

- Javascript and Python source code released under AGPL on
github: https://github.com/thecount2a/ledgeraccounting

- Supports editing ledger files using a friendly web UI grid
(double-click allows modifying any part of the ledger). Web UI also
collapses the splits in a nice way or allows you to expand all splits for a
more verbose view. Also, clicking the "Edit Text-based Ledger" button
allows you to edit the ledger in plain text, from the browser, if you
prefer that method.

- Web UI supports "balance" and "register" reports at this time. May
also include some hledger-specific reports in the future.

- Implements a custom, YNAB-style "envelope budgeting" approach for the
Budget reporting interface tab. The web UI allows transferring and
distributing income money among planned expenses from the budget report
page. Every envelope budgeting transaction is stored in a separate budget
ledger that is "overlayed" on the main ledger, for reporting purposes only.
Users may choose to ignore the budgeting feature entirely if they choose.

- Runs on Amazon Lambda and stores encrypted data within Amazon S3 so it
is fast, scalable, and always available. Logins are managed using Amazon
Cognito so the login code was written and audited by Amazon and therefore
should be pretty secure. The beta server will be available for free unless
it becomes too expensive for me to maintain in which case I may start
charging a small amount for ledger files above a certain size.

- Most simple text ledger files can be loaded and edited directly,
assuming they are a fairly basic portable ledger format. hledger directives
such as "P", "comment", or "account" are not supported at this point,
although I hope to add support for "P" to allow easier tracking of multiple
commodities.

- Supports import of OFX/QFX files and support for OFX direct connect to
banking institutions that support it. Also pulls data from ofxhome.com to
allow easy configuration of most OFX direct connect setups. All OFX direct
connect data is stored encrypted at rest within Amazon S3, again encrypted
using the user's password. All sensitive data may be sent to the server
decrypted in transit, since it must go to the server to be processed by
hledger and ofxclient but immediately after the request is finished, it is
discarded until the next request. Amazon Lambda's sandboxing features mean
that the data should be safe from attackers, while it is being processed in
the cloud. The only place the encryption key is stored long-term is in the
user's browser memory. As soon as the user closes the tab, the encryption
key is gone until next login. Users must backup their files regularly or
risk losing their financial data if they forget their password.

- Beta website is available at https://www.ledgeraccounting.org/

I hope some of you might find this tool useful. Please feel free to
contribute via pull requests on github or by offering feedback via email or
by using the issue tracker on github.

Best,
Garret
--
You received this message because you are subscribed to the Google Groups "hledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hledger+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Simon Michael
2018-09-21 20:21:43 UTC
Permalink
Hi Garret,

wow! You've done a lot! Congrats! I'll be playing more with this.

This makes 3 web UIs for hledger users: hledger-web, fava (+ledger2beancount), and now ledgeraccounting.

Any future plans ?

Best
-Simon
Post by Garret McGraw
Hi all,
I have spent a lot of time during the past year working on a web frontend for ledger, specifically hledger, since it is my favorite. Thank you to Simon and all the contributors for all for your hard work on it! I started using hledger last year to track my home finances and realized that it would be useful to be able to access my hledger file from anywhere and allow my close family members to access our financial data too. I am very interested in computer security and encryption so I knew that there are many inherent risks in keeping one's finances available on the public internet but I also realized that these risks can be mitigated by careful, security conscious website design. I finally came up with a design of a web UI that is based upon keeping the ledger file encrypted any time it is stored in a file (on the server side). When the user is logged in to run reports, it decrypts the ledger file using a PBKDF2 hash of the user's password and then runs any reports and allows editing of the ledger using the web UI. The decrypted ledger file is never written to the server's disk and it is only decrypted to be passed via STDIN to hledger and then the encryption key is thrown out until the next user request. Assuming no long-running reports are still being processed by the server, closing the browser tab discards any non-encrypted copy of the ledger file until the user's next login, keeping all of the sensitive data private. Feel free to read the "Security" section of the github README for many more details on the security considerations.
Javascript and Python source code released under AGPL on github: https://github.com/thecount2a/ledgeraccounting
Supports editing ledger files using a friendly web UI grid (double-click allows modifying any part of the ledger). Web UI also collapses the splits in a nice way or allows you to expand all splits for a more verbose view. Also, clicking the "Edit Text-based Ledger" button allows you to edit the ledger in plain text, from the browser, if you prefer that method.
Web UI supports "balance" and "register" reports at this time. May also include some hledger-specific reports in the future.
Implements a custom, YNAB-style "envelope budgeting" approach for the Budget reporting interface tab. The web UI allows transferring and distributing income money among planned expenses from the budget report page. Every envelope budgeting transaction is stored in a separate budget ledger that is "overlayed" on the main ledger, for reporting purposes only. Users may choose to ignore the budgeting feature entirely if they choose.
Runs on Amazon Lambda and stores encrypted data within Amazon S3 so it is fast, scalable, and always available. Logins are managed using Amazon Cognito so the login code was written and audited by Amazon and therefore should be pretty secure. The beta server will be available for free unless it becomes too expensive for me to maintain in which case I may start charging a small amount for ledger files above a certain size.
Most simple text ledger files can be loaded and edited directly, assuming they are a fairly basic portable ledger format. hledger directives such as "P", "comment", or "account" are not supported at this point, although I hope to add support for "P" to allow easier tracking of multiple commodities.
Supports import of OFX/QFX files and support for OFX direct connect to banking institutions that support it. Also pulls data from ofxhome.com to allow easy configuration of most OFX direct connect setups. All OFX direct connect data is stored encrypted at rest within Amazon S3, again encrypted using the user's password. All sensitive data may be sent to the server decrypted in transit, since it must go to the server to be processed by hledger and ofxclient but immediately after the request is finished, it is discarded until the next request. Amazon Lambda's sandboxing features mean that the data should be safe from attackers, while it is being processed in the cloud. The only place the encryption key is stored long-term is in the user's browser memory. As soon as the user closes the tab, the encryption key is gone until next login. Users must backup their files regularly or risk losing their financial data if they forget their password.
Beta website is available at https://www.ledgeraccounting.org/
I hope some of you might find this tool useful. Please feel free to contribute via pull requests on github or by offering feedback via email or by using the issue tracker on github.
Best,
Garret
--
You received this message because you are subscribed to the Google Groups "hledger" group.
For more options, visit https://groups.google.com/d/optout <https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google Groups "hledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hledger+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Garret McGraw
2018-09-21 21:29:29 UTC
Permalink
The extent of my plans at this point is just to make it available and see
if people like it or have suggestions on how to improve it. Not everybody
wants a UI on top of their plaintextaccounting but the ones who do, usually
just don't want it to get in the way too much. My focus on security in this
implementation is primarily to make hledger available to people who can't
manage to compile it themselves, without having them worry about their data
getting loose on the Internet. The other ledger web UIs are difficult to
host securely in a convenient location, without a fair amount of knowledge
about webserver security. Also, I think ledgeraccounting offers some
budgeting features that the other web UIs don't (yet) have and possibly a
unique budget-overlay ledger approach to YNAB/Envelope-style budgeting,
which is now my preferred way to do budgeting. Other ledger web UIs also
doesn't support period column reports such as monthly or weekly, or at
least they didn't last year when I was investigating the various options,
I'm not sure if this has been changed since then. Even Gnucash is super
painful if you want to generate a monthly income and expenses table,
year-to-date! They can do a bar graph but a multi-column table with
time-aggregated data is almost impossible to configure with Gnucash.

Maybe you are wondering why I wrote another web UI for ledger instead of
improving an existing one such as hledger-web and that is a valid question.
My main answer is this: I don't know Haskell well enough to submit
modifications to hledger-web and I also never got a good feeling from the
user experience on the sandstorm.io version of hledger-web, due to
sandstorm.io being rough around the corners. sandstorm.io seems to have a
questionable funding model and I don't know if it will be around a year
from now. Ledgeraccounting can be hosted on Amazon Lambda for just pennies
per month and Amazon Lambda doesn't seem like it will be going away any
time soon. I'm sure ledgeraccounting could also be run inside of sandstorm
but I haven't looked into that yet. Haskell also doesn't have a very robust
OFX direct connect library. I am a fan of ledger-autosync which also uses
Python's ofxclient but I think I have re-implemented most of the
functionality that ledger-autosync has for ledgeraccounting but split
across Javascript and Python, so that it is more user-friendly. I like the
simplicity of hledger-web but I also wanted to use Angular JS for a web UI
because the grid that UI-grid (http://ui-grid.info/) offers is really easy
and convenient to use and it made it almost a piece of cake to implement a
light-weight ledger editor. I also like selecting my accounts from a
searchable dropdown list instead copy-and-pasting account names every time
I categorize an imported transaction.

Overall, I am pretty flexible about the future plans for ledgeraccounting.
I don't plan to charge money for access to the beta website
https://www.ledgeraccounting.org/ unless it becomes too expensive to pay
the Amazon bills but that seems unlikely, since it is still a tool targeted
for the more technical crowd, due to the nature of plaintextaccounting. The
worst case scenario for me is that people start uploading really large
many-many-megabyte ledger files and then my storage and computing costs go
up, since Amazon Lambda charges by the seconds of computing time. In that
case, I will just create a tiered system where people who want to use
ledgers larger than a certain size (maybe a couple of megabytes) pay a
small fee every month to maintain the servers. It's remotely possible that
ledgeraccounting could become popular among marginally-technical people who
are looking for an "Online version of Quicken" or a YNAB alternative. This
seems unlikely but if I do get a rush of feature requests from people who
aren't technically savvy, I might create a paid account system in order to
fund some part-time "consulting" type work to improve the code at a higher
pace than I would be able to afford to in my own spare time. Either way, I
don't plan to withhold any source updates from the github repository. That
would undermine the trust people should have in a piece of secure,
auditable software that stores private data in an encrypted form.

This was a bit of rambling but I hope it answers your question. Thanks for
taking a look! Please let me know if you have any feedback.

Garret
Post by Simon Michael
Hi Garret,
wow! You've done a lot! Congrats! I'll be playing more with this.
This makes 3 web UIs for hledger users: hledger-web, fava
(+ledger2beancount), and now ledgeraccounting.
Any future plans ?
Best
-Simon
Hi all,
I have spent a lot of time during the past year working on a web frontend
for ledger, specifically hledger, since it is my favorite. Thank you to
Simon and all the contributors for all for your hard work on it! I started
using hledger last year to track my home finances and realized that it
would be useful to be able to access my hledger file from anywhere and
allow my close family members to access our financial data too. I am very
interested in computer security and encryption so I knew that there are
many inherent risks in keeping one's finances available on the public
internet but I also realized that these risks can be mitigated by careful,
security conscious website design. I finally came up with a design of a web
UI that is based upon keeping the ledger file encrypted any time it is
stored in a file (on the server side). When the user is logged in to run
reports, it decrypts the ledger file using a PBKDF2 hash of the user's
password and then runs any reports and allows editing of the ledger using
the web UI. The decrypted ledger file is never written to the server's disk
and it is only decrypted to be passed via STDIN to hledger and then the
encryption key is thrown out until the next user request. Assuming no
long-running reports are still being processed by the server, closing the
browser tab discards any non-encrypted copy of the ledger file until the
user's next login, keeping all of the sensitive data private. Feel free to
read the "Security" section of the github README for many more details on
the security considerations.
https://github.com/thecount2a/ledgeraccounting
- Supports editing ledger files using a friendly web UI grid
(double-click allows modifying any part of the ledger). Web UI also
collapses the splits in a nice way or allows you to expand all splits for a
more verbose view. Also, clicking the "Edit Text-based Ledger" button
allows you to edit the ledger in plain text, from the browser, if you
prefer that method.
- Web UI supports "balance" and "register" reports at this time. May
also include some hledger-specific reports in the future.
- Implements a custom, YNAB-style "envelope budgeting" approach for
the Budget reporting interface tab. The web UI allows transferring and
distributing income money among planned expenses from the budget report
page. Every envelope budgeting transaction is stored in a separate budget
ledger that is "overlayed" on the main ledger, for reporting purposes only.
Users may choose to ignore the budgeting feature entirely if they choose.
- Runs on Amazon Lambda and stores encrypted data within Amazon S3 so
it is fast, scalable, and always available. Logins are managed using Amazon
Cognito so the login code was written and audited by Amazon and therefore
should be pretty secure. The beta server will be available for free unless
it becomes too expensive for me to maintain in which case I may start
charging a small amount for ledger files above a certain size.
- Most simple text ledger files can be loaded and edited directly,
assuming they are a fairly basic portable ledger format. hledger directives
such as "P", "comment", or "account" are not supported at this point,
although I hope to add support for "P" to allow easier tracking of multiple
commodities.
- Supports import of OFX/QFX files and support for OFX direct connect
to banking institutions that support it. Also pulls data from
ofxhome.com to allow easy configuration of most OFX direct connect
setups. All OFX direct connect data is stored encrypted at rest within
Amazon S3, again encrypted using the user's password. All sensitive data
may be sent to the server decrypted in transit, since it must go to the
server to be processed by hledger and ofxclient but immediately after the
request is finished, it is discarded until the next request. Amazon
Lambda's sandboxing features mean that the data should be safe from
attackers, while it is being processed in the cloud. The only place the
encryption key is stored long-term is in the user's browser memory. As soon
as the user closes the tab, the encryption key is gone until next login.
Users must backup their files regularly or risk losing their financial data
if they forget their password.
- Beta website is available at https://www.ledgeraccounting.org/
I hope some of you might find this tool useful. Please feel free to
contribute via pull requests on github or by offering feedback via email or
by using the issue tracker on github.
Best,
Garret
--
You received this message because you are subscribed to the Google Groups "hledger" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "hledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hledger+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Simon Michael
2018-09-22 02:27:43 UTC
Permalink
The extent of my plans at this point is just to make it available and see if people like it or have suggestions on how to improve it. Not everybody wants a UI on top of their plaintextaccounting but the ones who do, usually just don't want it to get in the way too much. My focus on security in this implementation is primarily to make hledger available to people who can't manage to compile it themselves, without having them worry about their data getting loose on the Internet.
I like more UI choices, and I like your attention to security & privacy a lot.
The other ledger web UIs are difficult to host securely in a convenient location, without a fair amount of knowledge about webserver security. Also, I think ledgeraccounting offers some budgeting features that the other web UIs don't (yet) have and possibly a unique budget-overlay ledger approach to YNAB/Envelope-style budgeting, which is now my preferred way to do budgeting.
I look forward to trying this out. When you get around to it, a sample data set with budgets etc. ready to play with will be great.
Other ledger web UIs also doesn't support period column reports such as monthly or weekly, or at least they didn't last year when I was investigating the various options, I'm not sure if this has been changed since then. Even Gnucash is super painful if you want to generate a monthly income and expenses table, year-to-date! They can do a bar graph but a multi-column table with time-aggregated data is almost impossible to configure with Gnucash.
I'm not sure either, but for a long time it has been one of hledger's particular strengths. I haven't managed to expose it in hledger-web or hledger-ui yet. I'm glad you implemented it.
Maybe you are wondering why I wrote another web UI for ledger instead of improving an existing one such as hledger-web and that is a valid question.
I wasn't. :)
My main answer is this: I don't know Haskell well enough to submit modifications to hledger-web
A good reason. You could probably attract a good few contributors who like hledger but don't want to work with Haskell.
and I also never got a good feeling from the user experience on the sandstorm.io <http://sandstorm.io/> version of hledger-web, due to sandstorm.io <http://sandstorm.io/> being rough around the corners. sandstorm.io <http://sandstorm.io/> seems to have a questionable funding model and I don't know if it will be around a year from now.
hledger-web has no dependence on Sandstorm of course. It's just nicely packaged in their app store. I wouldn't be surprised if that happened for yours too.
Ledgeraccounting can be hosted on Amazon Lambda for just pennies per month and Amazon Lambda doesn't seem like it will be going away any time soon. I'm sure ledgeraccounting could also be run inside of sandstorm but I haven't looked into that yet. Haskell also doesn't have a very robust OFX direct connect library. I am a fan of ledger-autosync which also uses Python's ofxclient but I think I have re-implemented most of the functionality that ledger-autosync has for ledgeraccounting but split across Javascript and Python, so that it is more user-friendly.
I didn't try it, not wanting to give my bank credentials to your beta app, but it looked super handy. Though no CSV support yet, so I'd have to pay Wells Fargo to turn on OFX Direct.
I like the simplicity of hledger-web but I also wanted to use Angular JS for a web UI because the grid that UI-grid (http://ui-grid.info/ <http://ui-grid.info/>) offers is really easy and convenient to use and it made it almost a piece of cake to implement a light-weight ledger editor.
Yes that's great. Reminds me of gnucash.
I also like selecting my accounts from a searchable dropdown list instead copy-and-pasting account names every time I categorize an imported transaction.
Definitely. (hledger-web does that too.)
Overall, I am pretty flexible about the future plans for ledgeraccounting. I don't plan to charge money for access to the beta website https://www.ledgeraccounting.org/ <https://www.ledgeraccounting.org/> unless it becomes too expensive to pay the Amazon bills but that seems unlikely, since it is still a tool targeted for the more technical crowd, due to the nature of plaintextaccounting. The worst case scenario for me is that people start uploading really large many-many-megabyte ledger files and then my storage and computing costs go up, since Amazon Lambda charges by the seconds of computing time. In that case, I will just create a tiered system where people who want to use ledgers larger than a certain size (maybe a couple of megabytes) pay a small fee every month to maintain the servers. It's remotely possible that ledgeraccounting could become popular among marginally-technical people who are looking for an "Online version of Quicken" or a YNAB alternative. This seems unlikely but if I do get a rush of feature requests from people who aren't technically savvy, I might create a paid account system in order to fund some part-time "consulting" type work to improve the code at a higher pace than I would be able to afford to in my own spare time. Either way, I don't plan to withhold any source updates from the github repository. That would undermine the trust people should have in a piece of secure, auditable software that stores private data in an encrypted form.
Makes sense.

Will you keep that name (ledgeraccounting), for both your hosted service and the free software app ? Some folks will assume it's Ledger-based, and I'm not sure how well it will work for searching.
This was a bit of rambling but I hope it answers your question. Thanks for taking a look! Please let me know if you have any feedback.
Very informative, thanks!
Garret
Hi Garret,
wow! You've done a lot! Congrats! I'll be playing more with this.
This makes 3 web UIs for hledger users: hledger-web, fava (+ledger2beancount), and now ledgeraccounting.
Any future plans ?
Best
-Simon
Post by Garret McGraw
Hi all,
I have spent a lot of time during the past year working on a web frontend for ledger, specifically hledger, since it is my favorite. Thank you to Simon and all the contributors for all for your hard work on it! I started using hledger last year to track my home finances and realized that it would be useful to be able to access my hledger file from anywhere and allow my close family members to access our financial data too. I am very interested in computer security and encryption so I knew that there are many inherent risks in keeping one's finances available on the public internet but I also realized that these risks can be mitigated by careful, security conscious website design. I finally came up with a design of a web UI that is based upon keeping the ledger file encrypted any time it is stored in a file (on the server side). When the user is logged in to run reports, it decrypts the ledger file using a PBKDF2 hash of the user's password and then runs any reports and allows editing of the ledger using the web UI. The decrypted ledger file is never written to the server's disk and it is only decrypted to be passed via STDIN to hledger and then the encryption key is thrown out until the next user request. Assuming no long-running reports are still being processed by the server, closing the browser tab discards any non-encrypted copy of the ledger file until the user's next login, keeping all of the sensitive data private. Feel free to read the "Security" section of the github README for many more details on the security considerations.
Javascript and Python source code released under AGPL on github: https://github.com/thecount2a/ledgeraccounting <https://github.com/thecount2a/ledgeraccounting>
Supports editing ledger files using a friendly web UI grid (double-click allows modifying any part of the ledger). Web UI also collapses the splits in a nice way or allows you to expand all splits for a more verbose view. Also, clicking the "Edit Text-based Ledger" button allows you to edit the ledger in plain text, from the browser, if you prefer that method.
Web UI supports "balance" and "register" reports at this time. May also include some hledger-specific reports in the future.
Implements a custom, YNAB-style "envelope budgeting" approach for the Budget reporting interface tab. The web UI allows transferring and distributing income money among planned expenses from the budget report page. Every envelope budgeting transaction is stored in a separate budget ledger that is "overlayed" on the main ledger, for reporting purposes only. Users may choose to ignore the budgeting feature entirely if they choose.
Runs on Amazon Lambda and stores encrypted data within Amazon S3 so it is fast, scalable, and always available. Logins are managed using Amazon Cognito so the login code was written and audited by Amazon and therefore should be pretty secure. The beta server will be available for free unless it becomes too expensive for me to maintain in which case I may start charging a small amount for ledger files above a certain size.
Most simple text ledger files can be loaded and edited directly, assuming they are a fairly basic portable ledger format. hledger directives such as "P", "comment", or "account" are not supported at this point, although I hope to add support for "P" to allow easier tracking of multiple commodities.
Supports import of OFX/QFX files and support for OFX direct connect to banking institutions that support it. Also pulls data from ofxhome.com <http://ofxhome.com/> to allow easy configuration of most OFX direct connect setups. All OFX direct connect data is stored encrypted at rest within Amazon S3, again encrypted using the user's password. All sensitive data may be sent to the server decrypted in transit, since it must go to the server to be processed by hledger and ofxclient but immediately after the request is finished, it is discarded until the next request. Amazon Lambda's sandboxing features mean that the data should be safe from attackers, while it is being processed in the cloud. The only place the encryption key is stored long-term is in the user's browser memory. As soon as the user closes the tab, the encryption key is gone until next login. Users must backup their files regularly or risk losing their financial data if they forget their password.
Beta website is available at https://www.ledgeraccounting.org/ <https://www.ledgeraccounting.org/>
I hope some of you might find this tool useful. Please feel free to contribute via pull requests on github or by offering feedback via email or by using the issue tracker on github.
Best,
Garret
--
You received this message because you are subscribed to the Google Groups "hledger" group.
For more options, visit https://groups.google.com/d/optout <https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google Groups "hledger" group.
For more options, visit https://groups.google.com/d/optout <https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google Groups "hledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hledger+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Simon Michael
2018-09-22 02:32:37 UTC
Permalink
Post by Simon Michael
This makes 3 web UIs for hledger users: hledger-web, fava (+ledger2beancount), and now ledgeraccounting.
Off the top of my head. I didn't mention the angular-based proof of concept in hledger-api/examples, or the GHCJS-compiled UI that runs entirely in the browser that I assume is not quite a practical web UI yet, and which I've temporarily misplaced... hopefully I haven't overlooked any others.
--
You received this message because you are subscribed to the Google Groups "hledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hledger+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Loading...