This release has many notable improvements. Some highlights:
- Download custom reports as an image
- Merge different transactions into a single transaction
- Run Actual outside of a Docker container without building from source—for more information, please check out the docs
- Use Cloudflare Access tunnels to connect to an Actual instance (newly fixed)
Docker tag: 25.5.0
Features
- #4219 Add functionality to download custom reports as an image. — thanks ADRROE
- #4593 Add option to control whether notes are imported during transaction imports — thanks iaewing
- #4739 added ability to merge transactions — thanks alecbakholdin
- #4798 Add new sync-server CLI tool to allow users to run the server with one command — thanks MikesGlitch
- #4807 Adds a feature to resize the category names in the budget table. — thanks misu-dev
Enhancements
- #4421 Added
ACTUAL_USER_CREATION_MODE=login
enviroment variable to create users on login — thanks lelemm - #4446 OpenID first login changed to confirm password — thanks lelemm
- #4484 [Mobile] Drag and drop to reorder expense categories in budget page (only supports for Chromium-based browsers for now) — thanks joel-jeremy
- #4567 Don't include hidden categories or groups in totals in tracking budget. — thanks psybers, lelemm, & youngcw
- #4584 Show closed accounts on mobile Accounts page. — thanks alcroito
- #4599 [Mobile] Drag and drop to reorder expense category groups in budget page (only supports for Chromium-based browsers for now). — thanks joel-jeremy
- #4692 Add previous/next month buttons to the MonthPicker — thanks misu-dev
- #4714 You can now unlink accounts from bank sync settings — thanks Triscal
- #4743 Add KBCBE (
KBC_KREDBEBB
) to banks with limited history — thanks bddvlpr - #4770 Missing translations [rules and to budget] — thanks lelemm
- #4847 Allowing the UI to call internal sync server commands when running in the Desktop app — thanks MikesGlitch
- #4857 Flip transaction amounts for Strawberry credit cards — thanks vincegio
Bugfix
- #4715 Reworked import to accept all amount options at the same time to fix UI lockout when using In/Out mode with existing split columns. — thanks Gmanicus
- #4719 Fixed issue where early-posted scheduled transactions used the scheduled future date instead of today's date. — thanks Bhautik2902
- #4724 Persist filters in Custom Report on interval or date range change — thanks tostasmistas
- #4733 Fixed issue where sidebar wouldn't persist pinning preference on page reload — thanks alecbakholdin
- #4735 Got rid of unnecessary warning when developing Actual — thanks alecbakholdin
- #4749 Fix template goals not being removed in certain conditions — thanks youngcw
- #4756 Gocardless bank sync: improved error handling for initial account linking. — thanks MatissJanis
- #4769 Fixed issue with close account flow not properly validating transfer or category — thanks alecbakholdin
- #4774 [Mobile] Fix income categories not changing colors based on active month — thanks joel-jeremy
- #4780 Add support for longer running SimpleFIN transaction requests — thanks matt-fidd
- #4812 Fix crash on transactions table with new transaction popup open — thanks jfdoming
- #4825 Fix CLI issue where
ACTUAL_DATA_DIR
env variable was not being respected when no config is present — thanks MikesGlitch - #4836 Fix for returnUrl in OpenID auth — thanks lelemm
- #4837 Fixed saving falsy values in saveGlobalPrefs — thanks alecbakholdin
- #4838 Fix HTML bug in ofx2json logic — thanks jfdoming
- #4844 Reload on all redirects to handle Cloudflare Access expiration. — thanks rgoldfinger
- #4845 Escape Payee for Commerzbank RegExp — thanks misu-dev
- #4853 Fix load backup modal giving a blank screen when opened in the desktop app — thanks MikesGlitch
- #4860 Fix some desktop app menu links — thanks MikesGlitch
- #4875 [Mobile] Fix overspent banner showing previously active month's overspent categories. — thanks joel-jeremy
- #4880 [Mobile] Fix hidden category groups not being hidden — thanks joel-jeremy
- #4881 Fix running balance on split schedule previews — thanks youngcw
- #4902 Fix OpenID first login using config.json or ENV vars — thanks lelemm
Maintenance
- #4544 Use AQL query to query category groups in loot-core server handlers and add a new
categories
query option forcategory_groups
table to include/exclude querying of associated categories i.e.q('category_groups').options({ categories: 'all' }).select('*')
— thanks joel-jeremy - #4547 Extract budget file related server handlers from main.ts to server/budgetfiles/app.ts — thanks joel-jeremy
- #4660 Extract auth related server handlers from main.ts to server/auth/app.ts — thanks joel-jeremy
- #4662 Extract encryption related server handlers from main.ts to server/encryption/app.ts — thanks joel-jeremy
- #4672 Converted IndexedDB files to strict TypeScript. — thanks MatissJanis
- #4674 Added initial Playwright tests for Electron — thanks MikesGlitch
- #4700 Upgrade to React v19 — thanks MatissJanis
- #4710 improving typechecker and lint local performance — thanks MatissJanis
- #4740 Fix bump versions script behaviour — thanks jfdoming
- #4752 Added Electron Playwright test fixture — thanks MikesGlitch
- #4757 add eslint auto-fixer to lint-staged — thanks MatissJanis
- #4767 Fix loot core resolution for electron in dev mode — thanks MikesGlitch
- #4768 Remove ngrok from electron. In future we'll move to a plugin. — thanks MikesGlitch
- #4816 Move loot-core/client codes over to desktop-client package — thanks joel-jeremy
- #4824 Slow improvements to Account.tsx (1/many) — thanks jfdoming
- #4832 Bump http-proxy-middleware from 3.0.3 to 3.0.5 — thanks jfdoming
- #4833 Bump vite from 5.4.8 to 5.4.18 — thanks jfdoming
- #4834 Bump nanoid from 3.3.7 to 3.3.11 — thanks jfdoming
- #4840 Move sync-server to vitest — thanks jfdoming
- #4851 Move crdt to vitest — thanks jfdoming
- #4856 Move api/desktop-client/eslint-plugin-actual to the newest vitest — thanks jfdoming
- #4859 Move loot-core to vitest — thanks jfdoming
- #4862 Move some .d.ts files to .ts — thanks jfdoming