π Read the full release notes, with screenshots β
Econumo v1.3.0 is a feature release built around three themes: recurring transactions, user-managed currencies, and a jump from 2 to 11 UI languages. Transactions can now also be saved without a category, and that spending finally shows up in the budget. Everything is a drop-in upgrade β no configuration changes, no manual migration steps.
What's new
- Recurring transactions (#91) β save a transaction as a repeating template with a weekly, biweekly, monthly, quarterly or yearly schedule. The next occurrence shows up as a projected row in the account list ahead of its due date; you post it with one tap when it actually happens, or skip it. Posting is idempotent, and the schedule advances from the scheduled date with proper month-end handling (the 31st becomes Feb 28, then Mar 31 again β no drift). Managed from Settings β Finance. Creating a template from an existing transaction now links that transaction into the series (#171), and posting a due template from the account page writes it directly instead of reopening a prefilled form (#185).
- User-managed currencies with fixed rates (#92) β create your own currencies (a "Points" currency at 1 USD = 10 PTS, a currency your instance's rate provider doesn't cover, and so on) with a single fixed exchange rate against the instance base. Custom currencies work through shared accounts and budgets, and every currency β global or your own β can now be hidden from the pickers you don't use, replacing the old visibility rules with one model. Global currencies stay admin/CLI/rate-provider managed.
- Nine new languages β German (#182), French (#177), Spanish (#178), Italian (#179), Dutch (#180), Polish (#181), Portuguese (#183), Ukrainian (#176) and Simplified Chinese (#175), each a complete catalogue covering the UI, server-rendered error messages and transactional email. With English and Russian that is 11 languages, pickable on the sign-in pages and in Settings.
- Transactions without a category (#165) β the category field is now optional on regular income and expenses, and spending that has no category appears in the budget as a read-only Uncategorized element instead of being silently omitted from the totals.
- Fuzzy search on the classification pages (#170) β categories, tags, payees and currencies gain an instant filter, so long lists no longer mean scrolling.
Security hardening
- The CLI no longer logs plaintext secrets (#167) β
user:createanduser:change-passwordwrote their full argument vector, including the password and email, to the debug log. SinceECONUMO_LOG_LEVEL=debugis a persistent setting, those values could sit in container logs. Only the command name and argument count are logged now. If you have ever run those commands with debug logging on, treat the affected logs as sensitive and consider rotating those passwords. - Two dependency advisories closed (#169) β transitive
postcss(GHSA-r28c-9q8g-f849) and@hono/node-server(GHSA-frvp-7c67-39w9), both path-traversal issues in the frontend build toolchain.
Fixes & improvements
- Deleting an account no longer makes a transfer disappear from the other account until the next refresh (#186).
- A custom currency that was only pinned by a since-deleted account can be deleted again (#188). Currency deletion is now always a soft delete, so removing a currency can never cascade into accounts and transactions.
- Read-only shared accounts are greyed out and unselectable in the transaction pickers, instead of being offered and then rejected on save (#166).
- Bigger touch targets in the account/category/payee dropdowns on mobile, and no more iOS zoom when tapping a picker (#168).
- Currency settings: enabled currencies are listed first, and the bulk enable/disable link no longer disappears when you have no custom currencies (#174).
- Language picker ordering is now stable, with English first.
- Unservable
Accept-Languagevalues are recorded on the operation log line (#173), so self-hosters can see which locales their users actually ask for. - Budget API documentation gaps and a folder-move validation hole closed (#167, #172).
- Dependency updates across the Go and frontend stacks.
Upgrading
Drop-in for self-hosters: pull the new image and restart. Database migrations (including the new recurring_transactions table) run automatically on boot. No .env changes are required.
For third-party API clients, this release adds to the wire contract and removes nothing:
- New endpoints under
/api/v1/recurring/:get-recurring-transaction-list,create-recurring-transaction,update-recurring-transaction,delete-recurring-transaction,post-recurring-transaction,skip-recurring-transaction.create-recurring-transactionaccepts an optionalsourceTransactionId. - New endpoints under
/api/v1/currency/for user-owned currencies and visibility:create-currency,update-currency,delete-currency,hide-currency,show-currency,hide-all-currencies,show-all-currencies. Custom currencies carry a fixed rate, and currency payloads carry ascopeofglobal,ownorshared. categoryIdis now optional on non-transfer transaction writes; an empty string is treated as absent. Budget responses may include anUncategorizedelement.- Nine new values are accepted for
Accept-Language.
The ghcr.io/econumo/econumo:latest image tag points to this build; to pin the exact version use ghcr.io/econumo/econumo:v1.3.0.
Contributors
@dmtrkzntsv β all of the above, with Claude (Opus 5, Opus 4.8, Fable 5) co-authoring. Dependency updates by @dependabot.
Full changelog: v1.2.1...v1.3.0