Commit Graph

104 Commits

Author SHA1 Message Date
Matiss Janis Aboltins
84cebed20b Enforce consistent TypeScript type import style (#6805) 2026-02-10 13:33:20 +00:00
Joshua Granick
7732fac8b6 Fix sync server migrations (#6346)
* Fix sync-server migrations to use ESM loader

* Add release notes

* Apply CodeRabbit suggestions

* [autofix.ci] apply automated fixes

* Add file extension filter to sync-server migrations import

* [autofix.ci] apply automated fixes

* Ensure migrations occur synchronously

* [autofix.ci] apply automated fixes

* Minor cleanup

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2026-02-04 20:00:42 +00:00
Copilot
b50c45c9c9 Remove broken bank identifier spreadsheet link from GoCardless README (#6731)
* Initial plan

* Remove broken Google Doc link from GoCardless README

Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>

* Add release notes for PR #6731

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 21:16:44 +00:00
Matiss Janis Aboltins
b6452f930b lint: add perfectionist/sort-named-imports rule (#6680)
* Apply import sorting with perfectionist/sort-named-imports rule

- Add perfectionist/sort-named-imports oxlint rule
- Sort named imports: value imports before type imports
- Update component-library and desktop-client files to match new rule

* Add release notes for linting updates on named imports
2026-01-16 23:41:45 +00:00
Matiss Janis Aboltins
0c3a515e29 Update linting rules and replace @ts-ignore with @ts-expect-error (#6636)
* Update linting rules and replace @ts-ignore with @ts-expect-error

* Add release notes for PR #6636

* Fix TypeScript linting issue by adding @ts-ignore for electron types in server start message

* Change category to Maintenance and update linting rules

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-13 21:53:14 +00:00
lelemm
fed1cd7d30 Added Global Synced Prefs (#6234)
* Added Global Synced Prefs

* [autofix.ci] apply automated fixes

* Add release notes for PR #6234

* typecheck

* lint fix

* Refactor global synced preferences to server preferences

- Removed global synced preferences implementation and related files.
- Introduced server preferences with a new slice and hooks for managing user settings.
- Updated components and hooks to utilize server preferences instead of global synced preferences.
- Adjusted Redux store and mock configurations to reflect the changes.
- Enhanced user settings consistency across devices with the new server preferences structure.

* Implement server preferences for feature flags and enhance admin permissions

- Updated the Experimental component to conditionally display based on user permissions and login method.
- Refactored feature flag handling to use 'flags.plugins' instead of 'plugins'.
- Introduced server-side checks to restrict access to server preferences for admin users only.
- Added comprehensive tests for server preferences management, ensuring proper handling of user roles and preferences.

* Enhance error handling in saveServerPrefs thunk

- Updated the saveServerPrefs async thunk to handle potential errors from the server response.
- Added a check for the presence of an error in the result and return it accordingly.
- Ensured that preferences are still dispatched to the store upon successful save.

* Feedback: strict "flags.plugins" typing

* Feedback: move state slice

* Feedback: localstorage pref

* Feedback: move serverPrefsSlide into prefsSlice

* Refactor: Remove duplicate import of PostError in app.ts

* Rename serverPrefs state slice property to server (#6596)

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2026-01-09 08:17:36 +00:00
Lenno Nagel
a9509f477f Fix LHV bank adapter not being loaded due to filename mismatch (#6533)
* Fix LHV bank adapter not being loaded due to filename mismatch

The bank-factory.js loads bank adapters by filtering for files containing
underscores, but lhv-lhvbee22.js used a hyphen. This caused the LHV adapter
to never be loaded, falling back to the generic IntegrationBank handler
which doesn't extract payee names from card transaction remittance info.

Rename lhv-lhvbee22.js to lhv_lhvbee22.js to match the naming convention
used by all other bank adapters.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add release notes for PR #6533

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-06 18:43:54 +00:00
Copilot
fc89c74445 Fix authorization bypass allowing non-owners to delete shared budgets (#6338)
* Initial plan

* Add permission checks for budget deletion

- Server-side: Check if user is file owner or admin before allowing deletion
- Client-side: Hide "Delete from all devices" button for non-owners
- Add comprehensive tests for permission checking
- Non-owners see message that only owner can delete from server

Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>

* Add release notes for PR #6338

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6338

* Fix: Change unauthorized to forbidden in delete-user-file

Co-authored-by: matiss <matiss@mja.lv>

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6338

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6338

* Fix: Update error reason from 'unauthorized' to 'forbidden' in delete-user-file response

* Update VRT screenshot for date filter test case

* [autofix.ci] apply automated fixes

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: matiss <matiss@mja.lv>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-12-30 23:25:46 +00:00
Julian Dominguez-Schatz
65da89efeb Add configuration to use built-in test explorer in VS Code (#6505)
* Add configuration files to make tests runnable in VS Code

* Add default configs/fix tests when run from VS Code

* Fix typo

* Add release notes
2025-12-29 22:40:20 +00:00
Matiss Janis Aboltins
146aeb1f5a lint: fix most eslint/no-empty-function violations (#6457)
* lint: fix most eslint/no-empty-function violations

* Remove unnecessary closing brace in .oxlintrc.json
2025-12-20 21:38:05 +00:00
Matiss Janis Aboltins
d9a1260c91 lint: actual/typography disallow using curly quotes (#6454)
* Update typography rule to disallow curly quotes with auto-fix

- Reverse typography rule to detect and flag curly quotes instead of straight quotes
- Add auto-fixer that converts curly quotes to straight quotes
- Fix auto-fixer to properly escape quotes when they match string delimiters

* Fix quotation marks in error messages and formatting strings across multiple files

- Standardize quotation marks from curly to straight in error messages and string formatting for consistency.
- Update various components and utility files to ensure proper string handling and improve readability.

* Standardize quotation marks across multiple files

- Replace curly quotes with straight quotes in various documentation and code files for consistency and improved readability.
- Update error messages, comments, and documentation to ensure uniformity in string formatting.

* Standardize month formatting across multiple components

- Update month formatting strings from "MMMM 'yy" to "MMMM ''yy" in various components and utility files for consistency.
- Ensure uniformity in how months are displayed throughout the application.

* Refactor typography rule to enhance curly quote handling

- Simplify the error reporting mechanism for curly quotes by creating a shared fix function.
- Update test cases to include various curly quote scenarios for improved coverage.
- Ensure consistent handling of curly quotes in formatting functions across multiple files.

* Refactor typography handling and update tests for curly quotes

- Replace curly quotes with their Unicode equivalents in typography rule and related test cases for consistency.
- Remove unnecessary eslint-disable comments to improve code clarity.
- Ensure proper handling of quotes in arithmetic and utility tests to align with updated typography standards.

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6454

* Fix: Correct typo in budget cell notification message

Co-authored-by: matiss <matiss@mja.lv>

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6454

* Temporarily disable i18n string extraction workflow

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2025-12-20 19:51:16 +00:00
Matiss Janis Aboltins
4fc00ae7f1 lint: patch typescript ignored issues (#6450)
* Updates across multiple packages

* Release notes

* Enhance error handling in budget goals reducer by throwing an error when the template is null
2025-12-19 23:40:28 +00:00
Aaron
2d4b834fe8 typescript: update validate-user.js to validate-user.ts (#6142)
* typescript: update validate-user.js to validate-user.ts

* fix capitalization in release notes.
2025-12-13 18:54:01 +00:00
Matiss Janis Aboltins
0c95eb4838 Add ESM loader support and update sync-server modules (#6179)
* Add ESM loader support and update sync-server modules

* Update TypeScript configuration and fix bank file import filter in sync-server

* Remove deprecated loader and register files, update TypeScript configuration to use ES2021, and add a new script for automatically adding import extensions to JavaScript files.

* Update test script in package.json to include a custom loader and clean up import extensions script by removing unused 'stat' import.

* feat: Add warning for unresolved imports

Co-authored-by: matiss <matiss@mja.lv>

* [autofix.ci] apply automated fixes

* Remove unused 'import/extensions' rule from ESLint configuration

* Refactor import statements in sync-server

- Updated import path for migrations to remove file extension.
- Added ESLint directive to ignore import extension rule for reset-password script.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-06 03:23:44 +00:00
Matiss Janis Aboltins
666b0b80b6 Fix lint violations (#6299) 2025-12-04 23:17:31 +00:00
Digvijay Singh
d0f02c7272 Fix OpenID token expiration to correctly use seconds from config (#6130) 2025-11-12 16:51:39 +00:00
Lewis Chan
12923a87eb fix: openId.issuer config not loading from env vars (#6061)
* fix: openId.issuer config loading from env vars

* add release note

* [autofix.ci] apply automated fixes

* remove unused directive

* move test to the right place

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-05 23:57:02 +00:00
Michael Clark
37481535e7 ☁️ Fix server sync file download when server-files are in .config (#6010)
* fix server sync file download when server-files are in .config directory on linux

* extra security

* release notes

* putting it back after testing

* also accounting for directories

* derp
2025-10-27 20:11:40 +00:00
Matt Fiddaman
e4617e8cd4 fix GoCardless institutions with special continuous access EUA behaviour (#5967) 2025-10-21 17:24:05 +01:00
Matiss Janis Aboltins
97482a082d fix: prevent sensitive data leakage in error logs (#5948) 2025-10-18 16:33:27 +02:00
andreparames
86c1c30c97 enhancement: fix Cetelem bank transations (#5914)
* enhancement: fix Cetelem bank transations

The amount coming from GoCardless has the opposite sign of what we expect.

* Cetelem bank: make code more future-proof

Change based on code review suggestion

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-16 01:34:27 +01:00
Matt Fiddaman
3b0db2bed7 ♻️ bump various build dependencies (#5864)
* vite 7.1.9

* typescript 5.9.3

* @types/node 22.18.8

* linting

* emscripten types

* note
2025-10-06 17:32:42 +01:00
Matt Fiddaman
1210a74b4a fix error handling for simplefin batch sync (#5822)
* fix error handling for batch simplefin sync

* note
2025-09-30 23:51:17 +01:00
Matiss Janis Aboltins
65790d4b9c Fix token expiration parsing (#5782) 2025-09-25 18:07:26 +01:00
lelemm
81160256bc Frontend plugins Support [1/10]: CORS proxy (#5780)
* Frontend plugins Support [1/10]: Cors proxy

* Add release notes for PR #5780

* changed code as CodeQL suggested

* CodeQL improvement for ip validation to bypass dns changes

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Code Rabbit suggestion

* Update packages/sync-server/src/app-cors-proxy.js

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Added env var for cors proxy

* multiple changes

* missed updating yarn.lock

* making code rabbit happy

* Tests

* linter

* Code Rabbit changes

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-24 08:13:24 -03:00
Matt Fiddaman
4e9e153989 ensure file upload size limits are respected when syncing files (#5779) 2025-09-23 18:06:45 +01:00
dirk-apers
988bc21818 enhancement: add BPER Italy bank parser (BPER_RETAIL_BPMOIT22) (#5741)
* Refine BPER retail parser with anonymized fixtures

* style: streamline bper parser comments

* chore: add release note for BPER Italy parser
2025-09-19 17:31:04 +01:00
Matt Fiddaman
3318dd56e9 remove BANKS_WITH_LIMITED_HISTORY override array for GoCardless (#5714)
* remove banks with limited history gocardless array

* note

* [autofix.ci] apply automated fixes

* set 89 in fallback

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-11 15:48:43 +01:00
Mauro Artizzu
7a420b79f2 Handle detailedAccount null or undefined in gocardless service. Fixes #5664 (#5706)
* fix detailedAccount could be null or undefined

* add release notes
2025-09-11 14:45:43 +01:00
Michael Sanford
8e5a88bc55 Add NO_COLOR standard environment flag to sync-server logging. (#5676)
* Add NO_COLOR standard environment flag to sync-server logging.

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-05 15:31:12 -07:00
Gediminas Lelešius
58a638cee2 [fix] Support webRoot being in a hidden folder (e.g. .cache) (#5643)
Fixes #5642 and makes npx and pnpx work for @actual/sync-server
2025-08-29 15:52:29 -04:00
Matt Fiddaman
57240284a3 fix health check script (#5631)
* fix health-check

* note
2025-08-26 16:10:45 -04:00
CyberSardinha
d1519993d6 Add gocardless support for Stadtsparkasse München (#5383)
* Add files via upload

* added credits to the original author Nebukadneza

* [autofix.ci] apply automated fixes

* Create 5383.md

* Improve Stadtsparkasse München GoCardless transaction parsing

* Improve Stadtsparkasse München GoCardless transaction parsing

* Update 5383.md

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-12 01:18:55 -04:00
Alex Camilleri
c898116412 Added Länsförsäkringar bank (#5479)
* Added Länsförsäkringar

* Release Notes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2025-08-06 21:21:27 +01:00
Guillaume Taquet Gasperini
76de8bf67f Fix Boursorama GoCardless transaction ordering (#5344)
I wrongly thought that all the card transactions will always
have their first line with the `CARTE` identifier.
But as I have seen recently, it's not the case, and we shouldn't
rely on the ordering of the array returned by the Boursorama
GoCardless integration.

Thus, check for transaction patterns in all of the lines of the
unstructured array.

This addresses a true case (added in test) where the payee name
was wrongly extracted as being `110,04 Gbp / 1 Euro = 0,860763454`
2025-07-19 04:23:10 -04:00
Giorgio Grigolo
eb11e14e94 Added Bank of Valletta as a limited history bank (#5309) 2025-07-09 21:06:44 -04:00
Michael Clark
3a09d91399 :electron: Fix early server-started signification message (#5303)
* fix issue where server was telling parent process it was ready but was not finished listening

* release notes
2025-07-08 09:39:42 +01:00
Matt Fiddaman
2d95fe6d03 add some basic linting rules for translation consistency (#5212)
* lint rules

* trans rule

* migrate away from rulesDir config

* fixes

* prefer Trans to t()

* typechecker

* cleanup

* note

* typo

* extend regex to include punctuation

* extend fixer to handle imports

* autofixes from punctuation
2025-07-04 15:17:17 -04:00
0x4d4e
46eb2a7c38 Added a gocardless bank parser for Raiffeisen AT bank (#5244)
* Added a gocardless bank parser for Raiffeisen AT bank

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-06-28 09:13:45 -04:00
Guillaume Taquet Gasperini
d73ead135e Improve Boursobank Gocardless transaction parsing (#5202)
* Fix Boursobank transfer parsing

As per the comments on https://github.com/actualbudget/actual/pull/4958#issuecomment-2988814739,
the Boursobank transfer parsing was not working correctly.

Indeed, the array returned by GoCardless for transfers is randomly
ordered. So we cannot rely on the first line to know its type.

To work around this, the code gets a bit more complex by:
- Checking the first line for known types (card, loan, atm withdrawal)
  and handling them accordingly.
- If it's not one of these, we iterate through all the lines by checking
  if the array contains a line with the transfer type.

* Add credit note type for BoursoBank

An `Avoir` is a refund made to the credit card.
Adds the proper payee / notes parsing for it.

* Improve Boursobank card transaction parsing

Some Boursobank transactions have an unknown number attached to the
payee name. Remove it from the payee name to ensure consistency across
transactions.

For instance, `CARTE 19/03/25 Github 4 CB*0494` (notice the `4`).

* Improve Boursobank payee name backslashes handling

After more testing, I found that the backslashes present are for the
pending transactions, and indicating the localization of the payment.

To keep the payee name consistent, remove what follows the backslashes.

For instance `PICARD SA 1234\\PARIS\\ FR` is for a pending transaction
whereas `PICARD SA 1234` is what we receive for a completed one.

* Set notes with date for Boursobank card transactions

@mistyque requested to see the data of the card transaction in this
comment: https://github.com/actualbudget/actual/pull/4958#issuecomment-2981459622

* Add 5202 release note

* [autofix.ci] apply automated fixes

* refactor loops and match

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-20 19:48:22 -04:00
Matt Fiddaman
252f04e02c ♻️ remove body-parser dependency (#5197)
* bodyParser

* note
2025-06-19 15:30:12 -04:00
wachkyri
13cb85835b fix: wrong payeeName for KBC Brussels (#5193) 2025-06-18 20:49:24 -04:00
wachkyri
39cf04c74d add Belfius and KBC to banks with limited history (#5183)
* add Belfius and KBC to banks with limited history

* Update upcoming-release-notes/5183.md

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-18 16:40:07 -04:00
Tim Nielens
4b4e32d0e2 add BNP_BE_GEBABEBB in gocardless bank-factory.js (#5187)
* add BNP_BE_GEBABEBB in gocardless bank-factory.js

* Create release note 5187.md

* Update 5187.md
2025-06-18 14:50:11 -04:00
Rob Jackson
180431f9ed Fix account properties being overriden with empty values from metadata (#5115)
My Monzo bank appears to return 'name' through the GoCardless getDetails and getMetadata calls, but the value in the getMetadata response is an empty string! Merging metadata values over detail values therefore risks losing values, that are useful to have & to present to the user.

To solve this, we can make getDetailedAccount smarter about merging the two objects. We could swap the object splattening around so details has priority over metadata, but I'm not at all confident there won't be other banks doing strange things with additional properties that might suffer similar bugs in the reverse scenario.

Instead, we loop through all keys in both objects and construct a new merged object, continuing to prioritise metadata over details but changing it to a truthy-based comparison (with the `||` operator).

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-14 08:03:59 -04:00
Matt Fiddaman
0a5acebeaf use fallback linking parameters if initial GoCardless linking process fails (#5150) 2025-06-13 12:19:59 -04:00
Olicorne
d72140b8b6 add LCL to the list of bank with only 90 days of sync (#5087)
* add LCL to the list of bank with only 90 days of sync

Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>

* add missing release note

Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>

* Update upcoming-release-notes/5087.md

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>

---------

Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-10 14:04:46 -04:00
Albert Pedersen
d372b71f36 Trim EndToEndID from the Danish Danske Bank branch (#5101)
* Trim EndToEndID from the Danish Danske Bank

* Add release note for PR #5101

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-05 10:29:45 -04:00
Michael Clark
7441b5fa92 🐛 Fix server version on docker (#5093)
* fix server version on docker

* bit more safety

* fix lint

* release notes

* more error handling
2025-06-04 13:31:37 -04:00
Shimikito
a34c94d9fe Add ING PL (ING_PL_INGBPLPW) to banks with limited history (#5073)
* Update bank-factory.js 90 days bank history

Add ING PL (ING_PL_INGBPLPW) to banks with limited history

* Adding a bank with limited history - alphabetical fix

adding alphabetical sorting

* note

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-01 19:49:08 -04:00