-
1.2.0 Stable
released this
2026-09-27 15:45:13 +00:00 | 0 commits to main since this releaseFixes the plugin's identity so Discourse associates its site settings and admin UI correctly. The plugin's metadata name was
hledgerwhile the repository (and therefore the usual install directory) is nameddiscourse-hledger. When those differ, Discourse loads the plugin but does not attach its settings to it, so the plugin appeared in the admin Plugins list without a Settings button and without an entry in the admin sidebar.Installation
The plugin is named
discourse-hledgerthroughout now. Clone and install it intoplugins/discourse-hledger; the directory name must match the plugin's# name:. The settings category is nowdiscourse_hledger; the individual setting names are unchanged (hledger_*), so existing configuration carries over.Downloads
-
1.1.0 Stable
released this
2026-09-27 14:20:30 +00:00 | 3 commits to main since this releaseHardening and operational improvements on top of the first release. The report surface is unchanged; this release tightens how untrusted journals are executed and gives administrators more control over resource use.
Sandbox
hledger now also runs under a memory cap (
RLIMIT_DATA) and a file-size limit, and core dumps are disabled. The child'sPATHis reduced to the directory of the resolved executable. When hledger produces more output than the configured cap, the plugin reports a distinct "report too large" error instead of failing later while parsing truncated JSON.Rate limiting
A global rate limit (
hledger global rate limit per minute, default 120) now complements the existing per-IP limit, bounding report generation across all users even when requests are spread over many IPs. Set it to 0 to disable it.Journal validation
Directive rejection now also covers the
! includespelling, and journals with invalid encoding are reported as such instead of reaching hledger. The line limit is configurable (hledger max journal lines, default 5000).Caching and logging
Cached reports are keyed on the detected hledger version as well as the post revision, so an in-place hledger upgrade no longer serves stale results. Failed executions are logged server-side with the report type, topic and user plus a truncated stderr excerpt, without logging the journal itself.
Frontend
The dashboard no longer issues duplicate requests for the same report and parameters, and discards responses from superseded requests when reports or filters change quickly.
Equity
The equity distribution is documented and tested as based on absolute equity balances, and the in-app note states this explicitly.
Documentation
The README now covers the recommended default Docker deployment (installing the plugin and
hledgervia theapp.ymlafter_codehook), the layered security model, an OS/container sandbox recommendation for public instances, and the relevant site settings.Downloads
-
1.0.0 Stable
released this
2026-09-27 13:19:50 +00:00 | 12 commits to main since this releaseThe first release of the hledger plugin for Discourse. Put an hledger journal in a fenced
hledgercode block in the first post of a topic, and the block is replaced by a live, filterable report dashboard, generated on demand by the server'shledgerexecutable.Reports
The dashboard offers five views, each generated from hledger's machine-readable JSON output:
- Accounts — the full balance tree, with every parent account expanded.
- Balance sheet — assets, liabilities and equity, folded into sections.
- P&L — revenues and expenses.
- Equity — a per-commodity distribution of contributed capital.
- Journal — a transaction log with each posting.
Account trees
Accounts are shown as a tree: every name is capitalized, nested accounts are indented by depth, and on the balance sheet and P&L the matching top-level account is folded into the section heading instead of being repeated. Empty titled sections show a "No data" placeholder rather than a bare total.
Equity distribution
The equity view groups balances by commodity and shows each holder's amount alongside their percentage share of the contributed capital — with a reminder that this reflects contributed capital, not legal ownership.
Mentions
An account segment written as
@username(for exampleequity:@alice) is rendered as a Discourse mention link, with the same profile card as mentions in posts. Only segments that match an existing user are linked; anything else stays plain text.Display
Negative balances are shown in parentheses on the Accounts view, following accounting convention. Journal account paths keep their
:separators, with any mention segments linked inline. Reports can be filtered by a From/To date range, and the end date is inclusive.Security
Journals are treated as untrusted input. hledger runs with a scrubbed environment, a private temporary working directory, a hard wall-clock timeout, CPU and file-descriptor limits, and capped output.
includeand!includedirectives are rejected, the journal must be valid UTF-8 and within size and line limits, and only one journal per topic is accepted. Reports are returned only for topics the viewer may see, the endpoint is rate-limited to 30 requests per minute per IP, and results are cached per post revision.Requirements
- The
hledgerexecutable on the server. - Discourse 2.7.0 or newer.
Downloads