The v1.7.2 release is for self-hosters only. It fixes signing in on SQLite instances that were upgraded from v1.5.x, and adds two commands for finding and filling in missing exchange rates. If you use Econumo at app.econumo.com, there’s nothing new for you here.
Self-hosting Econumo? Everything in this release is in For self-hosters at the end of this page.
For self-hosters #
Upgrading is a drop-in: pull the new image and restart. Migrations run on boot. On SQLite, the repair adds three entries to schema_migrations (20261031000010 to 20261031000012). On PostgreSQL they do nothing. The API doesn’t change.
Signing in works again after upgrading from v1.5.x #
On a SQLite instance whose history went through v1.5.0–v1.5.2, every new sign-in failed with a server error (no such column: provider). Sessions that were already signed in kept working, so the bug often showed up only after something revoked them, such as user:change-password.
Two migrations had shipped in the opposite order to their numbering, and the later one rebuilt the table of sign-in sessions without two of its columns. A repair migration now rebuilds that table in its correct shape on boot:
- Every session and personal access token is kept, with its scope unchanged.
- On the affected instances, sessions signed in through a provider before the upgrade no longer remember which provider it was, because those values were already lost. They stay signed in. Logging out of one skips the provider’s own sign-out page.
- Instances upgraded from v1.6.x or later, fresh installs and PostgreSQL were never affected, and they keep everything.
The server now also logs a warning when it applies a migration numbered below one it has already applied, which is the ordering that caused this bug.
Note If you worked around the bug by adding the
providerandid_tokencolumns by hand, the repair keeps the values in them.
Find and backfill missing exchange rates #
Conversions use each month’s stored rates. A month without any borrows the previous month’s rates, and months before the first stored rate convert 1:1. Two new commands find and fill those gaps:
currency:show-rate-gaps [start] [end] [--daily]lists the months (or days) in which a currency in use has no rate.currency:backfill-rates <start> [end] [--daily]loads exactly those gaps from Open Exchange Rates, one request per gap.
Dates take the form YYYY-MM-DD or YYYY-MM. For show-rate-gaps, the start defaults to your oldest transaction and the end to today. The backfill needs a start, because every gap costs one request from your API quota. It stops at the first failed request, and running it again resumes from there. Custom currencies are never checked, since they carry a fixed rate.
To fill the gaps on a Docker install:
- List them:
docker exec <container> /app/econumo currency:show-rate-gaps. - Load them from the first month listed:
docker exec <container> /app/econumo currency:backfill-rates 2024-01, using your own start. - Run
currency:show-rate-gapsagain to check that nothing is left.
Running without Docker #
The reference systemd unit is no longer a file in the repository (deployment/systemd/econumo.service is gone). Run Econumo without Docker now contains the whole unit, ready to save as /etc/systemd/system/econumo.service. A unit you already installed keeps working as it is. The release still attaches the econumo-linux-amd64 and econumo-linux-arm64 binaries and SHA256SUMS.
GitHub release #
- Econumo: v1.7.2
- Full changelog: v1.7.1…v1.7.2