Transfers are now a single item
A transfer is still two transactions (an expense and an income), but the two sides are now linked and handled as one.
- One item in every list: the monthly overview, all transactions, calendar, insights, trash and recurrence lists show a transfer once, with each side's amount, account, category and tags. If a filter leaves only one side visible, that side still shows.
- Kept in sync: date, reference date, paid and mute are copied to the other side whenever either one changes, including bulk edits and the API.
- Pair actions: editing opens the transfer form, and delete, restore, duplicate and bulk pay/unpay/delete/restore act on both sides.
- Rules now run on transfers made from the transfer form, once per side.
- Recurring and quick transfers: recurring and quick transactions get a Transfer type, with a "To account" and an optional "To amount". The Convert menu now works on transfers.
- "Combine transfers" is a new user setting, on by default. Turn it off to list both sides separately, as before.
Existing transfers are not linked, since there's no reliable way to pair them. Only transfers created from now on are combined.
Reconcile against a cutoff
Reconciling an account used to compare against every paid transaction, including ones dated in the future, which threw off credit card invoices. The reconciliation panel now has a Balance against option:
- All paid transactions: the previous behavior, still the default
- Up to date: paid transactions up to a given date
- Up to reference month: paid transactions up to a given reference month
The adjustment transaction is dated at the cutoff, so later reconciliations include it.
OIDC-only sign-in
New OIDC_DISABLE_LOCAL_LOGIN variable. When it's true and OIDC is configured, email and password logins are refused everywhere: the login page, the admin and the API's basic auth. API tokens and OAuth apps keep working. Changing it signs everyone out once. If OIDC_ALLOW_SIGNUP is false, make sure an admin's local account email matches their provider account before turning it on, or nobody will be able to sign in.
Thanks to @fariskazmi for the contribution.
Demo improvements
The demo instance now generates its data relative to today, so it never looks empty or out of date, and it shows almost every feature: multiple currencies, DCA strategies, credit cards, installments, recurring transactions, rules and more.
This release includes database migrations. They run automatically on startup.
What's Changed
- ci: run Django test suite on pull requests by @eitchtee in #630
- Translations update from Weblate by @eitchtee in #633
- build(deps): bump brotli from 1.2.0 to 1.2.1 by @dependabot[bot] in #632
- build(deps): bump djangorestframework from 3.17.2 to 3.18.2 by @dependabot[bot] in #631
- feat(accounts): reconcile balances against a date or reference month cutoff by @eitchtee in #634
- feat(demo): generate demo data relative to today by @eitchtee in #635
- feat(transactions): link transfer sides and show them as a single item by @eitchtee in #636
- Translations update from Weblate by @eitchtee in #638
- feat(auth): add OIDC_DISABLE_LOCAL_LOGIN to turn off password logins by @fariskazmi in #637
- Translations update from Weblate by @eitchtee in #639
New Contributors
- @fariskazmi made their first contribution in #637
Full Changelog: 0.24.0...0.25.0