Compare commits

...

2085 Commits

Author SHA1 Message Date
Joel Jeremy Marquez
ad0bfb00cc Release notes 2025-02-21 09:26:24 -08:00
Joel Jeremy Marquez
73cd909043 [TypeScript] Make db.select functions generic 2025-02-21 09:26:24 -08:00
Joel Jeremy Marquez
9ca91b15bd Update types 2025-02-21 09:25:58 -08:00
Joel Jeremy Marquez
42217eac3d Release notes 2025-02-21 09:25:58 -08:00
Joel Jeremy Marquez
2e23cccb99 [TypeScript] Make db.all generic 2025-02-21 09:25:58 -08:00
Joel Jeremy Marquez
9a52b461a2 Release notes 2025-02-21 09:25:40 -08:00
Joel Jeremy Marquez
5b8c411134 [TypeScript] Make db.firstSync generic 2025-02-21 09:25:40 -08:00
Joel Jeremy Marquez
553e00b4df Fix strict type 2025-02-21 09:24:37 -08:00
Joel Jeremy Marquez
e06d75a397 Update db.first calls 2025-02-21 08:43:20 -08:00
Joel Jeremy Marquez
19fa629585 Cleanup type 2025-02-21 08:39:10 -08:00
Joel Jeremy Marquez
9137c4f432 Fix typecheck error 2025-02-21 08:39:10 -08:00
Joel Jeremy Marquez
7425d0cbd3 Release notes 2025-02-21 08:39:10 -08:00
Joel Jeremy Marquez
c0fde0d9d0 [TypeScript] Make db.first generic 2025-02-21 08:39:10 -08:00
lelemm
f5a1293e3c Enforce OPENID login (#4423)
* Enforce OPENID login

* Added `ACTUAL_OPENID_ENFORCE=true` enviroment variable to enforce only OpenID auth.

* Apply suggestions from code review

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

* code review

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-02-20 23:20:30 -03:00
Joel Jeremy Marquez
5a79beadfa Fix react-hooks/exhaustive-deps error on TransactionList.jsx (#4272)
* Fix react-hooks/exhaustive-deps error on TransactionList.jsx

* Release notes

* Remove useLayoutEffect

* Add back the useLayoutEffect
2025-02-20 16:38:03 -08:00
Joel Jeremy Marquez
6e934e46a8 Extract accounts related server handlers from main.ts to server/accounts/app.ts (#4227)
* Move transaction related handlers to server/transactions folder and use the new convention

* Fix lint and typecheck

* Move server account handlers from main.ts to accounts/app.ts

* Add accounts app to main.ts

* Release notes

* Fix types

* Fix typecheck error

* Fix types

* Fix build error

* Use main app
2025-02-20 16:36:27 -08:00
dependabot[bot]
18423a3167 Bump vitest from 1.6.0 to 1.6.1 (#4410)
* Bump vitest from 1.6.0 to 1.6.1

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v1.6.1/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-02-20 21:56:37 +00:00
Matt Fiddaman
c1a70377b9 prevent bank sync from crashing when payee not found (#4413) 2025-02-20 20:33:20 +00:00
Matt Fiddaman
dd4b891fd9 bump express dependencies (#4411) 2025-02-20 19:20:39 +00:00
Joel Jeremy Marquez
89a92ecbbe [TypeScript] Add types to SpreadsheetProvider (#4409)
* [TypeScript] SpreadsheetProvider

* Cleanup

* Release notes

* Update upcoming-release-notes/4409.md

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>

---------

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>
2025-02-20 11:05:34 -08:00
lelemm
bde99b75ae 🐛 Fix On budget / Off budget underline with translated languages (#4417)
* Fix `On budget` / `Off budget` underline

* md
2025-02-20 11:47:40 -07:00
Joel Jeremy Marquez
8d3b046bef Extract transaction related server handlers from main.ts to server/transactions/app.ts (#4221)
* Move transaction related handlers to server/transactions folder and use the new convention

* Fix lint and typecheck

* Release notes

* Update handler names

* Move get-earliest-transaction

* Update release notes

* Fix tests

* Fix types

* Fix lint

* Update snapshot

* Remove duplicate parse-file.ts

* Fix lint
2025-02-19 15:57:18 -08:00
Joel Jeremy Marquez
f7f58847dc useDisplayPayee hook to unify payee names in mobile and desktop. (#4213)
* useDisplayPayee hook to unify payee logic in mobile and desktop

* Release notes

* Fix typecheck errors

* Fix test

* Update test

* Revert (No payee) color

* Fix tests

* VRT

* Fix category transactions

* Fix lint and VRT

* Update VRT

* Translate

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-19 15:57:01 -08:00
Antoine Taillard
23752f1da9 Fix currencyToAmount incorrectly converting input (#4383)
* fix: ensure currencyToAmount works regardless of the configured number format

* chore: linting

* docs: add release note

* test: ensure correct amount is entered for debit when adding split transactions

* chore: rename variable thousandsSep to thousandsSeparator

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

* chore: rename variable decimalSep to decimalSeparator

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

* chore: rename decimalSep and thousandsSep variables to decimalSeparator and thousandsSeparator

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2025-02-19 15:31:48 -08:00
lelemm
1cc2da1de3 📚 Translation batch #1 (#4408)
* Translation batch

* md

* Update packages/desktop-client/src/components/settings/Export.tsx

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

* fix code review from coderabbit

* code review

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-19 18:24:15 -05:00
Michael Clark
04b5bdc62f 👷 Typescript: Improving typing of asyncStorage (global-store.json) (#4369)
* typing globalprefs

* adding release notes

* unneeded partial

* removing prop that crept in
2025-02-19 18:40:12 +00:00
Joel Jeremy Marquez
fc78d5b546 Fix react-hooks/exhaustive-deps error on useCategories.ts (#4261)
* Fix react-hooks/exhaustive-deps error on useCategories.ts

* Release notes
2025-02-19 08:40:02 -08:00
Joel Jeremy Marquez
f5586501bf Fix react-hooks/exhaustive-deps error on table.tsx (#4274)
* Fix react-hooks/exhaustive-deps error on table.tsx

* Release notes
2025-02-19 07:06:59 -08:00
Joel Jeremy Marquez
d902c38253 Fix react-hooks/exhaustive-deps error on TransactionsTable.jsx (#4268)
* Fix react-hooks/exhaustive-deps error on TransactionsTable.jsx

* Release notes

* Fix lint
2025-02-19 07:06:41 -08:00
Joel Jeremy Marquez
a085945898 Fix react-hooks/exhaustive-deps error on useProperFocus.tsx (#4259)
* Fix react-hooks/exhaustive-deps error on useProperFocus.tsx

* Remove comment in eslint config

* Release notes
2025-02-19 07:06:17 -08:00
Michał Gołąb
def06693ab [WIP] BANKS_WITH_LIMITED_HISTORY constant update (#4388) 2025-02-19 12:57:42 +00:00
Joel Jeremy Marquez
bf72a26e5c Fix react-hooks/exhaustive-deps error on Titlebar.tsx (#4273)
* Fix react-hooks/exhaustive-deps error on Titlebar.tsx

* Release notes
2025-02-18 22:36:19 -08:00
Joel Jeremy Marquez
10c35e18d3 Fix react-hooks/exhaustive-deps error on useAccounts.ts (#4262)
* Fix react-hooks/exhaustive-deps error on useAccounts.ts

* Release notes
2025-02-18 22:35:34 -08:00
Joel Jeremy Marquez
aea6e79402 Fix react-hooks/exhaustive-deps error on usePayees.ts (#4260)
* Fix react-hooks/exhaustive-deps error on usePayees.ts

* Rename

* Release notes
2025-02-18 22:32:30 -08:00
Joel Jeremy Marquez
81db7399da Fix react-hooks/exhaustive-deps error on useSelected.tsx (#4258)
* Fix react-hooks/exhaustive-deps error on useSelected.tsx

* Release notes
2025-02-18 22:18:02 -08:00
Julian Dominguez-Schatz
7c9a499f91 Foundations for the budget automations UI (#4308)
* Foundations for the budget automations UI

* Coderabbit
2025-02-18 20:06:54 -05:00
Julian Dominguez-Schatz
df9e6ec66d Fix top-level types of send function (#4145)
* Add release notes

* Fix types of `send` function

* Fix `send` types in a number of places

* PR feedback
2025-02-18 19:59:09 -05:00
Matt Fiddaman
a4d3f277ea update mapping data for existing synced transactions and always show direction dropdown (#4403)
* update sync mapping data for existing transactions on sync

* show payment direction dropdown regardless of sample data

* note

* ignore changes in raw_synced_data
2025-02-18 23:06:00 +00:00
Joel Jeremy Marquez
cab24df3ce [TypeScript] Make db.runQuery generic to make it easy to type DB query results (#4247)
* Make runQuery generic to make it easy to type DB query results.

* Release notes

* typo
2025-02-18 12:14:49 -08:00
youngcw
c92e445416 fix tooltip translation (#4402) 2025-02-18 11:19:31 -07:00
Gabriel J. Michael
e86cbcdbb3 Fixes #4069 : Ignore CSV inOutMode during OFX imports (#4382)
* Ignore inOutMode during OFX imports

* Add release notes

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-02-18 10:19:08 -07:00
youngcw
3a14d46a05 lint 2025-02-18 10:12:30 -07:00
youngcw
14c1d9f03b don't unbudget goals 2025-02-18 10:06:28 -07:00
Alberto Cortina Eduarte
1884a188b7 Remove deprecated imports for several components (#4385) 2025-02-18 14:57:13 +00:00
Michael Clark
c471c8908b 🐛 Fix new proxy middleware dependency missing on prod build (#4400)
* fix new proxy middleware not installed on prod build

* release notes
2025-02-18 13:37:42 +00:00
lelemm
7a252d0694 🐛 Fix: Error rate limit at user directory page (#4397)
* Error rate limit

* md
2025-02-17 19:49:23 -05:00
lelemm
3b6c97faab Development mode for sync server (React Fast Refresh on port 5006) (#4372)
* devmode for sync server

* removed pluggy from this version

* md

* code review

* changed how open browser

* missed this

* linter

* trigger actions
2025-02-17 20:49:46 +00:00
Adam Stück
bc09c0412c Add today button on mobile budget page (#4380)
* feat: today button on mobile budget page

Jumps to the current month

* add release note

* cleaner onCurrentMonth

* Update VRT

* use SvgCalendar from icons/v2

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

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-02-16 23:00:58 +00:00
Michael Clark
87779d3199 Updating sync server package name to @actual-app/sync-server (#4370)
* updating sync server to have a consistent package name

* release notes
2025-02-16 22:37:00 +00:00
Matt Fiddaman
e5eb8646c2 rename two migrations to realign with convention (#4343) 2025-02-16 18:57:03 +00:00
Joel Jeremy Marquez
0504becaf5 [TypeScript] Convert test page models to TS (#4218)
* Dummy commit

* Delete js snapshots

* Move extended expect and test to fixtures

* Fix wrong commit

* Update VRT

* Dummy commit to run GH actions

* Convert test page models to TS

* Release notes

* Fix typecheck errors

* New page models to TS

* Fix typecheck error

* Fix page name

* Put awaits on getTableTotals

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-16 10:24:38 -08:00
Martin Michotte
04f8140d26 Add fallback value for payeename: 'undefined' - CBC Bank (#4384)
* Add fallback value for payename: 'undefined'

* docs: add release note

* Add fallback value for payename: 'undefined' (for negative amounts)
2025-02-16 14:03:06 +01:00
Matt Fiddaman
9fd004205c Custom mapping and import settings for bank sync providers (#4253)
* barebones UI

* add saving and prefs

* add last sync functionality

* use mapping for synced transactions

* note

* jest -u

* Update VRT

* Coderabbit

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

* add new fields

* rename migration, newer in master

* lint

* coderabbit

* update snapshots

* GoCardless handlers fallback and notes

* expose new fields from SimpleFIN

* update tests

* update instructions on GoCardless handlers

* lint

* feedback

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-02-14 13:57:03 +00:00
Matt Farrell
f90fc69341 Add percentage adjustments to schedule templates (#4098) (#4257)
* add percentage adjustments to schedule templates

* update release note

* remove unecessary parentheses

* Update packages/loot-core/src/server/budget/goalsSchedule.ts

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

* PR comments addressed

* Linting fixes

* Updated error handling, added tests

* Linting fixes

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-02-13 16:53:28 -07:00
Michael Clark
7e1c0a8682 🐛 Fix Initializing the connection to the local database hang (#4375)
* fix initializing to the local db

* release notes
2025-02-13 22:43:33 +00:00
Julian Dominguez-Schatz
454f019f7a Make loot-core compatible with exactOptionalPropertyTypes (#4214)
* Make `loot-core` compatible with `exactOptionalPropertyTypes`

* Add release notes
2025-02-12 18:43:47 -05:00
Matt Fiddaman
f1a4c888b2 Re-enable linting on the server (#4363)
* getAccountDb

* uuidv4

* === / !==

* default exports

* re-enable linting for the server

* fix jest

* note
2025-02-12 21:42:07 +00:00
Matiss Janis Aboltins
524707cecc 🐛 fix category is nothing rule crashing spending report widget (#4360) 2025-02-12 14:54:47 +00:00
Matiss Janis Aboltins
8351edc8bb ♻️ (imports) updating some common component import paths to the component lib (#4358) 2025-02-12 09:15:34 +00:00
Julian Dominguez-Schatz
4957cd652b Correct link to translation setup for local install (#4353)
* Correct link to translation setup for local install

* Add release notes
2025-02-11 19:14:48 -05:00
Matt Fiddaman
ad58561f4e sync-server eslint --fix (#4362) 2025-02-11 23:25:37 +00:00
Koen van Staveren
dbdc5af2b9 fix: helpers with empty or undefined values (#4356)
* fix: helpers with empty or undefined values

* chore: note
2025-02-11 21:21:54 +01:00
Matiss Janis Aboltins
679b94a626 ♻️ moving more components to the new component-lib pkg (#4346) 2025-02-11 18:33:50 +00:00
Matt Fiddaman
5e217ec9a2 Sort SimpleFIN transactions in date order (#4354)
* sort SimpleFIN transactions

* note
2025-02-11 18:26:25 +00:00
Matiss Janis Aboltins
52ce2a179e ♻️ (api) removing deprecated 'methods' export (#4350) 2025-02-11 18:22:23 +00:00
Matiss Janis Aboltins
be1c194eb4 ♻️ (eslint) disallow importing actual-app/web in loot-core (#4347) 2025-02-11 18:22:09 +00:00
Matiss Janis Aboltins
7d9190ea9c ♻️ replace loot-core/src imports with loot-core (#4349) 2025-02-11 18:21:35 +00:00
ChickenSaysBak
c883e71e49 Fix calendar interaction when editing reports dashboard (#4336)
* Fix calendar interaction when editing reports dashboard

* Release notes
2025-02-11 11:02:00 -07:00
Michael Clark
6710456c05 ⚒ Workflow updates to only trigger when needed (#4352) 2025-02-11 14:54:40 +00:00
Michael Clark
be2126e136 ☁️ Server workflows run only when server files have changed (#4348)
* making the server workflows run only when server files have changed

* release notes

* also on merge to master

* rabbit suggestion

* e2e tests and size compare dont need to run when server changes

* adding to the paths ignore
2025-02-10 22:46:25 +00:00
Michael Clark
ac08b87273 Move sync-server into Actual repo (#4334) 2025-02-10 20:44:45 +00:00
Mike Clark
7ddd79c61e bringing in the lastest updates 2025-02-10 20:11:08 +00:00
Matiss Janis Aboltins
4ee70e7f1f component library - minimalistic infrastructure (#4169) 2025-02-10 19:49:59 +00:00
Michael Clark
7faecf4273 feedback (#5)
* feedback

* remove temp script
2025-02-10 19:26:54 +00:00
Mike Clark
ce99c49ddb updating the way the server loads the actual web build path to account for different folder structure 2025-02-09 10:16:29 +00:00
Mike Clark
c947d964fa release notes 2025-02-08 22:34:02 +00:00
mikesglitch
46aa79ab7c updating docker with new references to sync-server 2025-02-08 22:18:01 +00:00
Mike Clark
af3598ec76 docker updates for the new structure of sync server 2025-02-08 20:01:30 +00:00
Mike Clark
83ba751410 integrating actual-server git workflows 2025-02-07 20:30:41 +00:00
Mike Clark
722e30e385 updating yarn lock file to accomodate sync-server 2025-02-07 19:13:30 +00:00
Mike Clark
e88bd783f2 Merge branch 'oldserver_master' into actual-server-into-actual 2025-02-07 19:02:14 +00:00
Mike Clark
8c0ca48781 Moved actual-server into actual repo 2025-02-07 19:01:23 +00:00
Michael Clark
5f1fadb7cc Fix hard crash when closing budget thats synced to cloud file (#4322)
* fix hard crash when closing budget thats synced to cloud file

* release notes
2025-02-06 21:49:07 +00:00
Matt Fiddaman
cac4761982 🔖 (25.2.1) (#565) 2025-02-06 20:39:18 +00:00
Michael Clark
e1a694a554 Fix esm error on windows (#566)
* fix esm error on windows

* release notes

* renaming release note
2025-02-06 20:34:30 +00:00
Matt Fiddaman
c4ad24edde bump versions to v25.2.1 (#4319) 2025-02-06 19:01:37 +00:00
Michael Clark
f5b9a5b23d Fix electron translations (#4317)
* fix electron translations
2025-02-06 18:16:17 +00:00
Michael Clark
8b49a25ab4 A note informing of the repo merge of actual-server into the actual repo (#560)
* Update README.md

* Create 560.md

* Update README.md

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>

---------

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2025-02-06 16:12:45 +00:00
Matt Fiddaman
15298703ac fix Weblate URL if language has never been changed (#4312)
* fix weblate URL if language has never been changed

* note
2025-02-06 15:00:56 +00:00
youngcw
7096d00fc6 nYNAB import - properly handle hidden categories and groups (#4294)
* add error handler

* lint

* note

* rabbit

* handle groups

* handle hidden right

* cleanup mock file

* lint;note
2025-02-06 07:56:14 -07:00
youngcw
e8b4a750ed Handle duplicate categories/groups in nYNAB importer. (#4293)
* add error handler

* lint

* note

* rabbit

* handle groups
2025-02-06 07:36:31 -07:00
Julian Dominguez-Schatz
4a7b0e7365 Add an action to automatically generate release PRs (#4306)
* Add an action to automatically generate release PRs

* Add release notes

* PR feedback: error handling
2025-02-06 08:37:42 -05:00
Julian Dominguez-Schatz
f1da358186 Fix crashes on reports page with translations enabled (#4303)
* Fix crashes

* Add release notes
2025-02-06 08:37:23 -05:00
youngcw
a23a28522f [Goals]: Handle tracking budget income categories (#4300)
* handle tracking income categories

* note
2025-02-05 17:49:29 -07:00
Harry Digos
6a5de96033 fix deleting rules considering the applied filters (#4224)
* fix: combine selected and filtered rules when deleting

* chore: add release note

* fix: update deps array

* refactor: replace intersection

* fix: keep selected after filters
2025-02-05 22:38:22 +00:00
Matt Fiddaman
abeeb05091 dynamically load GoCardless handlers (#557)
* dynamically load GoCardless handlers

* note
2025-02-05 22:38:00 +00:00
Bruno Ribeiro
bd063423e5 fix(#2495): fix GoCardless transaction ID to fallback to it's own generated ID on sync (#4241)
* fix(#2495): fixed gocardless import ID

* chore: added release note

* chore: updated release note

* refactor: made condition more clear

* Revert "refactor: made condition more clear"

This reverts commit ec16c99041.

* fix: added edge case
2025-02-05 22:37:47 +00:00
Julian Dominguez-Schatz
ca480a8269 🔖 (25.2.0) (#561)
* 🔖 (25.2.0)

* Remove used release notes

* Pull in newly built npm package

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-05 16:11:05 -05:00
Julian Dominguez-Schatz
bdf4dda3a8 🔖 (25.2.0) (#4296)
* 🔖 (25.2.0)

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-05 16:10:13 -05:00
Matt Fiddaman
0c1c8e6adb Make password login page more mobile responsive (#4266)
* make password screen more responsive

* note
2025-02-03 08:33:39 +00:00
Matt Fiddaman
ed91fb1ef4 fix first occurrence of some schedules moved after the weekend not showing in preview (#4256) 2025-02-03 00:08:13 +00:00
Koen van Staveren
b14c77aed7 report sorting on dashboard (#4276)
* fix: report sorting on dashboard

* chore: note

* chore: feedback

* chore: fix vrt's

* Update packages/loot-core/migrations/1736640000000__custom_report_sorting.sql

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

* chore: use new migration

* Update packages/loot-core/migrations/1738491452000__sorting_rename.sql

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-02-02 16:56:04 +00:00
youngcw
64df0e107c 🐛 [Goals]: Fix inconsistent schedule amounts (#4265)
* remove the balance check

* fix inconsistent schedule amounts

* note, cleanup

* update error

* lint;test
2025-01-30 16:03:22 -07:00
Matt Fiddaman
9b59333563 keep all English translations regardless of translated % (#4232)
* keep all English translations regardless of translated %

* note
2025-01-30 09:00:59 +00:00
Julian Dominguez-Schatz
b09d800e40 fix: allow child transactions to have different transfer payees (#4255)
* fix: allow child transactions to have different transfer payees

* Add release notes
2025-01-29 18:54:53 -05:00
Koen van Staveren
d1c3b9bab1 enhance: add more action rule templating helpers (#4243)
* enhance: add more action rule templating helpers

* chore: note
2025-01-28 19:09:39 +01:00
Koen van Staveren
663f830cc9 fix: hide to budget tooltip when menu is open (#4246) 2025-01-28 16:44:58 +01:00
Denna
0312f516ad SSK_DUSSELDORF_DUSSDEDDXXX: remove non-booked transactions from import (#553)
* remove non-booked transactions from import

* Add release notes

* minor fix to please the linter

* Add coderabbit suggestions

* add test file

* fix test

* add coderabbit fixes to test file

* fix mock console

* Correct consoleSpy to make linter happy

* Add mock cleanup
2025-01-27 21:01:22 +00:00
Matt Fiddaman
9dcd22962c Fix persistent split error popover (#4225)
* unset transaction error in db when no longer present

* note
2025-01-27 14:51:49 +00:00
Samuel Barnes
f09f4af667 Custom upcoming length (#4206)
* save button

* release notes

* custom component shows

* custom input and saving working

* updated getUpcomingDays to handle custom values

* close modal after save

* test around getUpcomingDays

* updated to use more accurate timespan calculation

* fix for scheduled events only occurring till end of period

* add a day

* fixed input step down
2025-01-23 19:56:43 +00:00
Joel Jeremy Marquez
1f5e5d41a4 Remove unnecessary dispatch calls that are already being handled by shared-listeners.ts (#4179)
* Remove unnecessary dispatch calls that are already being handles by shared-listeners.ts

* Release notes

* Fix lint error
2025-01-23 08:28:05 -08:00
Matt Fiddaman
46f04f5d4c fix mobile template application e2e test (#4223) 2025-01-23 16:13:27 +00:00
Matt Fiddaman
caaa801d24 add option to complete non-recurring schedules from transaction menu (#4180) 2025-01-23 15:18:33 +00:00
youngcw
5448a5c264 🐛 [Goals]: Fix notifications not showing for single category template applications (#4222)
* show broken transfers

* more detail

* feat: add step to fix splits for fixing transfers with categories that should not be there

* reword

* update the setting

* note

* lint

* typo

* another misspelling

* fix single notification

* note

* Update VRT

* run checks

---------

Co-authored-by: UnderKoen <koenvanstaveren@hotmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-22 18:02:51 -07:00
youngcw
977657a0be Identify and fix broken transfers (#4216)
* show broken transfers

* more detail

* feat: add step to fix splits for fixing transfers with categories that should not be there

* reword

* update the setting

* note

* lint

* typo

* another misspelling

---------

Co-authored-by: UnderKoen <koenvanstaveren@hotmail.com>
2025-01-22 17:07:15 -07:00
Matt Fiddaman
2f8b839036 release schedule upcoming length adjustment (#4173)
* release schedule upcoming length adjustment

* note

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-22 20:09:27 +00:00
DarkWolfSLV
1cf64f87ab Display transaction notes on mobile, fixes #1764 (#4159)
* Display transaction notes on mobile, fixes #1764

* Display transaction notes on mobile, fixes #1764

* Display transaction notes on mobile, fixes #1764

* Display transaction notes on mobile, fixes #1764

* Moving the notes to the bottom

* Moving the notes to the bottom - right file.

* Updating the code as requested

* Adding conditional rendering as suggested by Bugs Bunny

* Adding conditional rendering as suggested by Bugs Bunny and lint

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-22 09:08:24 -08:00
Joel Jeremy Marquez
012cfd09ea [TypeScript] Convert playwright config and tests to TS (#4217)
* Convert playwright config and tests to TS

* Release notes

* Update VRT

* Dummy commit

* Delete js snapshots

* Fix call to expect

* Move extended expect and test to fixtures

* Fix wrong commit

* Fix typecheck error

* Update VRT

* Dummy commit to run GH actions

* Delete mobile budget test JS

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-22 09:00:10 -08:00
Kate
39361e5b62 Spending Report: Fix budget category filtering (#4194)
* Spending: Fix budget comparison filters
- Previously only worked for category *is*, now should work for any category filters

* Add release notes

* Spending Report: Fix linting, remove unused filters from budget filter options
- Removed ability to select 'contains', 'doesNotContain', or 'matches' filters for budget categories

* enhance: add possibility for join between zero budget and category

---------

Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
2025-01-22 10:08:05 +01:00
Luca Fenu
5ada00cf97 Add health check to docker compose (#546)
* Add health check to docker compose

* Added release note for PR

* Readded the mistakenly-deleted array to the release note author
2025-01-22 08:50:27 +00:00
Lenno Nagel
0f2226e993 Add support for LHV_LHVBEE22 (#542)
* Add support for LHV_LHVBEE22

* Add upcoming-release-notes/542.md

* Don't set bookingDate unless booked

* Add a basic spec file

* Add test case for invalid date and date validation to handle it

* Remove accessValidForDays
2025-01-22 08:46:11 +00:00
Joel Jeremy Marquez
f0c81eebbf Update global event listeners to handle sync server and DB update sync events (#4161)
* Update global event listeners

* Release notes

* Fix lint error
2025-01-21 22:18:06 -08:00
Joel Jeremy Marquez
a84af23e7e [e2e] Mobile budget menu modal VRT (#3583)
* Initial tests

* Mobile budget menu tests

* Fix + release notes

* Apply budget template test

* Fix test

* Fix category menu modal test

* Cleanup balance menu modal test

* Cleanup budget summary tests

* Updates

* Fix flakiness

* Cleanup

* Update packages/desktop-client/src/components/mobile/MobileNavTabs.tsx

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

* Cleanup based on coderabbit

* Fix flaky mobile test

* Assert data-navbar-state attribute

* Fix lint

* Update playwright timeout

* Remove Budget mode toggle logic

* VRT

* Update VRT

* Dummy commit

* Remove expect in mobile-navigation

* Update VRT

* Dummy commit to rerun GH actions

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-21 20:08:40 -08:00
Joel Jeremy Marquez
1442662eb7 [Typescript] Update validateBudgetName and uniqueBudgetName return types (#4208)
* Update validateBudgetName and uniqueBudgetName per coderabbit review

* Release notes
2025-01-21 10:44:03 -08:00
Joel Jeremy Marquez
4850034e6f [TypeScript] Add types to amount utils (#4207)
* Add types to amount utils

* Release notes
2025-01-21 10:03:54 -08:00
Matt Fiddaman
90dc050102 🌍 improve translation strings - part 2 (#4154) 2025-01-21 16:40:37 +00:00
Julian Dominguez-Schatz
7791b7401e Make Account.tsx compatible with exactOptionalPropertyTypes (#4189)
* Make `Account.tsx` compatible with `exactOptionalPropertyTypes`

* Add release notes
2025-01-20 21:40:43 -05:00
Julian Dominguez-Schatz
a97471557b Fix send types in a number of places (2/2) (#4147)
* Fix `send` types in a number of places

* Add release notes

* PR feedback
2025-01-20 17:09:27 -05:00
Matt Fiddaman
5f823156b7 add direkt_heladef1822 to bank-factory (#554) 2025-01-20 19:24:15 +00:00
Joel Jeremy Marquez
dd2b0a8bd5 [Mobile] Fix "Category budget has been updated to ..." notification even when the budget was not updated (#4200)
* Fix FocusableAmountInput's onUpdate to only fire when amount was updated

* Release notes
2025-01-20 06:31:51 -08:00
Nikita Zonov
c53e9e9e41 Add "Caixa Geral De Depositos" Portugal to banks with limited history (#547)
* Add "Caixa Geral De Depositos" Portugal to banks with limited history

* Create Release Notes file

* Update to alphabetical order
2025-01-20 10:20:49 +00:00
Samuel Barnes
6cbf3e33e6 Fix type mismatch in getStatus (#4199)
* fixed type mismatch

* release notes

* updated references to submit string

* fixed type in test

* updated test to work with add days method
2025-01-20 08:40:28 +00:00
Pierre Payet
cdbf3e06c1 Fix: update toolbar server status on sync (#4075)
* fix/#3128: listen to 'sync-event' to update user data when sync status changed, so 'userData.offline' is up to date and server status displayed is valid

* add upcoming release note

* fix: use of optional chaining for 'userData.offline' to fix typecheck errors

* fix: replace 'userData?.offline' by 'userDate' in useEffect's dependencies

* fix: add error handling for 'initializeUserData' method

* fix: remove optional chaining for 'userData.offline' and directly check if userData is not null

* fix: eslint warning "`loot-core/client/actions` import should occur before import of `loot-core/src/platform/client/fetch`"
2025-01-19 14:39:22 -08:00
Matt Fiddaman
1f2c6541b8 fix api crash - schedule upcoming length used raw (#4195)
* fix schedule bug

* note
2025-01-19 20:20:25 +00:00
sergiofmreis
ecb4d7153c Add support for ABANCA_CORP_CAGLPTPL payee name (#550)
* add support for ABANCA_CORP_CAGLPTPL payee name

* Create Release Notes file

* Lint institutionIds array

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-01-19 20:03:48 +00:00
Bruno Ribeiro
e70dc4efb0 enhance: add ability to control category learning per payee and globally (#4081)
* Added ability to control auto categories per payee and globally

* Added unit test

* Changed order of Learn Categories in settings page

* Removed console log and fixed prefs type

* Added release note

* Fixed default value for global setting

* Added tooltip and context menu option

* Removed test assertion

* Refactored default value for global setting

* Added missing boolean to saveDiff and saveDiffAndApply

* Fixed default global value

* Icon and Disable payee menu hidden when globally disabled

* Moved category learning settings to payees page

* Added automatic centering for payee SVGs

* Lint changes

* Typecheck changes

* Fixed copy paste

* Added more translation

* Changed global setting to a modal

* Fixed import order

* Renamed migration

* Update packages/desktop-client/src/components/payees/CategoryLearning.tsx

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

* Update packages/desktop-client/src/components/payees/CategoryLearning.tsx

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

* Update packages/desktop-client/src/components/payees/ManagePayees.tsx

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

* Update packages/desktop-client/src/components/payees/CategoryLearning.tsx

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

* Changed wording

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-19 19:41:43 +00:00
Julian Dominguez-Schatz
bbebf71378 Use 'cimode' as default language in tests (#4191)
* Use cimode as default language in tests

* Add release notes

* Temp: testing VRT

* Update VRT

* Revert test change

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-19 11:37:01 -05:00
Matt Fiddaman
f35c5a0ed9 Fix app hanging when schedule moved before weekend (#4196) 2025-01-19 16:32:17 +00:00
Joel Jeremy Marquez
9d63b23463 [Mobile] Show undo notification when updating category budget (#4181)
* [Mobile] Show undo notification when updating category budget

* Release notes

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-18 23:57:23 -08:00
Julian Dominguez-Schatz
705985a8df Fix rounding of split rules (#4190)
* Fix rounding of split rules

* Add release notes

* PR feedback
2025-01-18 20:02:02 -05:00
Matt Fiddaman
eb31071043 fix paid schedules showing as upcoming in the account (#4188) 2025-01-18 21:34:15 +00:00
Joel Jeremy Marquez
91c4e3e067 [Redux Toolkit Migration] appSlice (#4018)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* App slice

* Release notes

* Remove app state type

* [TS] Actual startOAuthServer function

* Rename slice

* Fix types

* Slice name

* Cleanup

* Fix lint errors

* Fix import

* Move sync actions to appSlice

* Revert to window

* Updates

* Revert browser-preload.browser.js
2025-01-18 13:34:04 -08:00
Matiss Janis Aboltins
7cb53502b8 ♻️ do not check outdated version for preview builds (#4183) 2025-01-18 20:23:38 +00:00
Matiss Janis Aboltins
87c26042b9 🐛 (mobile) fix amount input requiring two clicks on safari mobile (#4182) 2025-01-18 20:23:10 +00:00
Julian Dominguez-Schatz
6070166f4e Fix i18n language fallback for regional languages (#4185)
* Fix i18n language fallback for regional languages

* Add release notes

* Fix test
2025-01-18 15:07:15 -05:00
Julian Dominguez-Schatz
66619fa20d Fix various split transaction edits not working (#4186)
* Fix various split transaction edits not working

* Add release notes
2025-01-18 15:00:32 -05:00
Thiago Rodrigues (xthiago)
5e8a24f283 ensure GitHub name is used correctly across the project (#4187)
It follows the official trademark style[1].

[1] https://docs.github.com/en/site-policy/content-removal-policies/github-trademark-policy
2025-01-18 19:54:05 +00:00
Matiss Janis Aboltins
278e4ad74f 🐛 patch lint issues in master branch (#4184) 2025-01-17 22:08:48 +00:00
Joel Jeremy Marquez
c347653566 [Address suppressed ESLint errors] Fix exhaustive deps errors in App.tsx (#4124)
* Fix exhaustive deps errors in App.tsx

* Release notes
2025-01-17 11:37:52 -08:00
Joel Jeremy Marquez
c4593f3be9 [Redux Toolkit Migration] queriesSlice (#4016)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Release notes

* Cleanup types

* Cleanup

* Fix typecheck error

* Lint

* Fix typecheck error

* Fix import

* Fix typo

* Fix typo

* Update

* Copy category list so that sorting is not applied directly on category list redux state

* Update setLastTransaction payload

* Remove optional optional chaining on unwrap

* Rename accountId

* Fix type

* Remove return value of initiallyLoadPayees since no callers use it

* No need to getPayees. Just use the already loaded payees.

* Notify on action errors
2025-01-17 10:33:58 -08:00
Julian Dominguez-Schatz
99724f611c Add language setting (#4112)
* Add language global pref

* Add setting to control language

* Add release notes

* Update VRT

* Wrap missed strings in `t`

* Update VRT

* [placeholder] Bump CI

* Fix crash on old language file

* Fix loading wrong language

* Update packages/desktop-client/src/i18n.ts

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

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-17 12:39:16 -05:00
Joel Jeremy Marquez
f07ad1f8c6 [TypeScript] Add types to loot-core app (#4155)
* Add types to loot-core app

* Release notes

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-17 09:26:47 -08:00
Sam Pellino
4bfb64cdfc Update ConfirmCategoryDeleteModal.tsx (#4175)
* Update ConfirmCategoryDeleteModal.tsx

Added space between category name and "is"

* Create 4175.md

* added space to trigger change; cloned repo in vscode with prettier linter to fix github bot alerting about lint

* Formatted chate with Prettier
2025-01-17 14:50:06 +00:00
rodriguestiago0
626e7973ac Add YTD and last year to Reports headers (#4019)
* Add YTD and last year to Reports headers

* Add release note

* lint

* fix end date picker

* remove debugger

* Update VRT

* Update VRT

* Fix year to date and last year

* remove debugger

* pr comments

* fix small size

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-01-17 09:48:44 +00:00
Leo Lee
7ae6442296 (typescript) Refactoring the mobile TransactionList component to typescript (#4063)
* refactor: transaction-list to ts

* docs: add release note

* address PR comments

* typing getMenuItemStyle

* refactor: added runtime check for NaN
2025-01-16 14:38:22 -08:00
Matt Fiddaman
774402503f fix mobile schedule status (#4172) 2025-01-16 21:51:51 +00:00
Matt Fiddaman
cf360ad398 make one month schedule upcoming length dynamic and add current month option (#4168)
* improve one month upcoming length

* add current month upcoming length option

* note

* fix undefined
2025-01-16 20:47:39 +00:00
Matt Fiddaman
2a275b3821 Fix schedule actions not applying and schedules paid the same day not showing (#4171)
* fix schedule actions and schedules paid on current day not displaying

* note

* change wording of post/skip actions
2025-01-16 20:16:41 +00:00
Matiss Janis Aboltins
87428a7b65 🔧 (typescript) change moduleResolution to bundler (#4163) 2025-01-16 18:35:22 +00:00
Matt Fiddaman
6655f51ccc show all occurrences of upcoming schedules within the upcoming period (#4166)
* load all instances of scheduled transactions that occur within the upcoming period

* correct status in transaction table

* ts

* note

* ci

* upcoming -> forceUpcoming

* remove caveat from upcoming length setting modal
2025-01-16 17:04:31 +00:00
NiceDevil
ceeef91a45 Update Link to official authentik documentation (#4165) 2025-01-16 08:31:47 -07:00
Matt Fiddaman
b831d15eab upcoming schedule setting: move setting to modal (#4164)
* upcoming schedule setting: move setting to modal

* note

* change nomenclature

* remove strict override
2025-01-16 15:13:45 +00:00
Julian Dominguez-Schatz
26907d3b12 Improve string to be clearer in other languages (#4167)
* Improve string to be clearer in other languages

Change from using ':' and no question mark to a full sentence and a question mark

* Create 4167.md

* Fix quotes

* Fix

* Fix
2025-01-16 10:12:26 -05:00
Michael Clark
b9eaeafc1c 👷 Prep work for merging actual-server into actual repo (#4160)
* prep work for merging actual-server into actual repo

* release notes
2025-01-16 09:51:37 +00:00
Matt Fiddaman
45d53ff771 Use the maximum access validity time provided by GoCardless (#551)
* use validForMax supplied by GoCardless

* remove overrides in bank handlers

* note

* update types
2025-01-15 23:34:00 +00:00
Julian Dominguez-Schatz
b1627d7073 Fix send types in a number of places (1/2) (#4146)
* Fix `send` types in a number of places

* Add release notes
2025-01-15 17:18:55 -05:00
Matt Fiddaman
5fc3e2ea47 Fix inconsistent legend coloring in custom reports (#4162)
* fix inconsistent legend colouring in custom reports

* note

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-15 21:25:55 +00:00
Koen van Staveren
97b28ca375 Remove code injection for /update-vrt (#4151)
* Remove code injection for /update-vrt

* chore: release note

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-15 13:13:44 +01:00
Nik
aa529a2cf1 Add ability to provide defaults for and skip updating cleared status in API (#4129)
* Cleared import changes
- Add ability to provide default for cleared field
- Add ability to skip updating cleared field

* Add release notes

* Make linter happy

* Fix optional param

* Use nullish coalescing operator
2025-01-15 11:21:21 +00:00
nsulzer
205ccfe3d6 Add GoCardless integration for COMMERZBANK_COBADEFF (#537)
* Add GoCardless integration for COMMERZBANK_COBADEFF

* Add optional iban property to creditorAccount

* Use fallback for normalizeAccount and calculateStartingBalance

* Update src/app-gocardless/banks/commerzbank_cobadeff.js

---------

Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
2025-01-14 22:21:59 +01:00
Matiss Janis Aboltins
b92fa709eb ♻️ (typescript) ported TransactionsTable.test to TS (#4108) 2025-01-14 18:33:02 +00:00
Julian Dominguez-Schatz
5d91d29d77 Exclude untranslated languages from builds (#4148)
* Add script to remove untranslated language JSON files

* Remove untranslated languages in CI

* Add release notes
2025-01-14 09:57:11 -05:00
Julian Dominguez-Schatz
61d41cc28a Update issue template with translation issue type (#4144)
* Update issue template with translation issue type

* Add release notes
2025-01-14 09:44:11 -05:00
Julian Dominguez-Schatz
5921a35340 Fix string upload if new changes are present (#4149)
* Fix string upload if new changes are present

* Add release notes
2025-01-14 09:19:37 -05:00
Joel Jeremy Marquez
6573a52411 [Redux Toolkit Migration] accountsSlice (#4012)
* Migrate to accountSlice

* Release notes

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup types

* Cleanup

* Remove useActions

* AppStore type

* Fix typecheck error

* Fix typecheck error

* Move createAppAsyncThunk

* Fix errors

* Rename LinkAccountArgs to LinkAccountPayload

* Fix import transactions modal

* Update upgradingId type

* Undo accounts redux state rename

* Fix typecheck error

* Fix lint error

* Revert PayeeEntity import order
2025-01-13 14:42:12 -08:00
Matt Fiddaman
bec841932d Add sorting option to custom reports (#4141)
* support sorting data in custom reports

* disable on unsupported report types

* db migration

* note

* typecheck

* split out sorting function and support complete sorting of nested data

* Update VRT

* fix defaults

* Update VRT

* always allow sorting on data tables

* Update VRT

* coderabbit

* migration: populate sort_by for existing reports

* automagically reverse sort direction, add options for alphabetical and budget sort order

* Update VRT

* fix migration

* default sorting options for different report types

* revert vrt

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-13 22:11:51 +00:00
youngcw
629b001c01 [Goals]: fix stacked templates (#4120)
* fix stacked amounts

* note/lint
2025-01-13 15:10:32 -07:00
DJ Mountney
4bb59fd7f6 fix: Fix the auth proxy trust by ensuring the proxy is in the trust (#499) 2025-01-13 19:43:24 +00:00
Stefano
a1be1d43f6 Enactment: enable triggering of rules on selected transaction form the account view. (#3805)
* Adding functionality to trigger the rules of transaction from the transaction view

Signed-off-by: Stefano Tranquillini <stefano.tranquillini@gmail.com>

* fix warnings

Signed-off-by: Stefano Tranquillini <stefano.tranquillini@gmail.com>

* Fixing errors on the checks: adding changelog and lint

Signed-off-by: Stefano Tranquillini <1928354+esseti@users.noreply.github.com>

* Applying suggestion from the bot.

Signed-off-by: Stefano Tranquillini <1928354+esseti@users.noreply.github.com>

*  Enhance transaction processing in Account component by implementing rules execution and batch updates. Added utility function imports for improved functionality.

* Update packages/desktop-client/src/components/accounts/Account.tsx

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

* Refactor Account component imports by removing unused utility functions for cleaner code.

* Update packages/desktop-client/src/components/accounts/Account.tsx

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

* chore: correct coderabbitai

* Removed hotkey

* Update packages/desktop-client/src/components/transactions/SelectedTransactionsButton.tsx

---------

Signed-off-by: Stefano Tranquillini <stefano.tranquillini@gmail.com>
Signed-off-by: Stefano Tranquillini <1928354+esseti@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: UnderKoen <koenvanstaveren@hotmail.com>
2025-01-12 19:37:12 +01:00
Julian Dominguez-Schatz
1c6697a7ee Fix translations missing from preview deploys (#4130)
* Fix translations missing from preview deploys

* Add release notes
2025-01-11 12:31:07 -05:00
NiceDevil
da13dfa570 Correct name for authentik IDP (#4121) 2025-01-10 15:41:02 -07:00
Joel Jeremy Marquez
6bcccaa943 Add back eslint useDispatch and useSelector rules (#4123)
* Add back eslint useDispatch and useSelector rules

* Release notes

* Bring back import/no-unresolved
2025-01-10 14:06:10 -08:00
Matt Fiddaman
58f87dc80f ♻️ standardise GoCardless handlers (#541) 2025-01-10 11:20:11 +00:00
Julian Dominguez-Schatz
5a34c06859 Include translations in builds (#4089)
* Pull/push strings via Git instead of via API

This is necessary because the Weblate API doesn't handle stale strings
well. In particular, it won't remove them automatically.

* Schedule workflow instead of running on every commit

This is so we can minimize downtime for Weblate translations.

* Prevent pull requests modifying translations

* Don't commit translations during the merge freeze

* Add release notes

* Undo rename

* Don't commit translations nightly, per feedback

* Include translations just-in-time in builds

* Revert "Prevent pull requests modifying translations"

This reverts commit 8c19a0ce13.

* Re-ignore translations

* Update release notes to be accurate

* Create missing directory

* Fix conditional logic
2025-01-09 20:13:25 -05:00
Joel Jeremy Marquez
92c93b3f6e [Typescript] Server event types (#4110)
* [Typescript] Server event types

* Release notes
2025-01-09 15:09:52 -08:00
Rob Hofman
c017b8a228 Add default undefined option for payeename in KBC integration (#533) 2025-01-09 18:49:49 +00:00
Matiss Janis Aboltins
34ffc5c4b2 ♻️ refactor theme variable to be statically defined (#4086) 2025-01-09 18:12:16 +00:00
Koen van Staveren
14b0cd7b1d fix: notes is (nothing) not working (#3998) 2025-01-09 09:21:38 +01:00
Koen van Staveren
daca767808 enhance: allow prefix for budget templates (#4032)
* enhance: allow prefix for budget templates

for example:
Prime video: #template $10

* chore: note

* chore: fix test

* chore: move prefix to template-notes.ts
2025-01-09 09:20:43 +01:00
Matt Fiddaman
6111f94b51 Sort barchart data (#4072) 2025-01-08 17:52:51 +00:00
Travis Lesicka
ce0ca60bcf ♻️ (typescript) Refactor Accounts/Balances to tsx and Remove ts-strict-ignore from Accounts/Account (#4047)
* Convert Balance.jsx to Balance.tsx

* Removed @ts-strict-ignore from Account.tsx

* Create 4047.md

* Fix typo

* Added Translation helpers to aria-labels

* Clarified canCalculateBalance return value logic
2025-01-08 08:59:22 +01:00
douugdev
3fbe6d05c8 fix: any rule not accounting for empty filter (#4051)
* fix: any rule not accounting for empty filter

* chore: add changelog
2025-01-08 00:37:50 +00:00
Joel Jeremy Marquez
cc1c11aac9 [Redux Toolkit Migration] Use new Redux Toolkit configureStore API (#4000)
* Initial upgrade to redux toolkit, more fixes needed e.g. removing non-serializable values from the state

* Fix typecheck and lint

* Fix lint and typecheck errors

* Fix lint and typecheck errors

* Fix typecheck error

* Cleanup

* Remove useAppStore

* Cleanup

* Undo renames

* Code review feedback

* UndoState type

* UndoState type

* yarn install
2025-01-07 16:34:21 -08:00
Robert Dyer
7dad36528c Add Copy last 6/12 months to budget menu (#4096)
* Add Copy last 12 months to budget menu

* add release note

* Make sure budget month actions use showUndoNotification
2025-01-08 00:33:03 +00:00
Julian Dominguez-Schatz
c956f8003b Mark release as draft initially (#4105)
* Mark release as draft initially

* Add release notes
2025-01-07 18:35:44 -05:00
Matiss Janis Aboltins
0637b1d5f8 add bank adapter for BOI (#539)
*  add bank adapter for BOI

* Remove console log
2025-01-07 21:30:48 +00:00
spideraxal
e6ed4505b3 Corner case transaction for GoCardLess adapater (ING Romania) (#535)
* Added special corner case

* One additional validation + Release notes

* Fixed duplicate code

* Improved comment

* Improved comment

---------

Co-authored-by: spideraxal <me@spideraxal.com>
2025-01-07 22:17:51 +01:00
sveselinovic
a5d591fed7 fix: creating new payee with 'one of'-condition broken (#4099)
* fix: creating new payee with 'one of'-condition broken

* change author and description of release note
2025-01-07 21:57:53 +01:00
Koen van Staveren
215e00ac14 Improve abn amro sync (#534)
* chore: payee name for google pay

* chore: revert notes to include all data

* chore: release note

* chore: fix tests
2025-01-07 20:05:48 +01:00
Koen van Staveren
1f44903e4b enhance: net bar graph show net instead of two separate bars (#4033)
* enhance: net bar graph show net instead of two separate bars

* chore: note
2025-01-07 19:57:56 +01:00
Denna
1808f51e85 Add proper transaction formatting for Stadtsparkasse Düsseldorf (Germany) (#531) 2025-01-07 18:55:32 +00:00
Lenno Nagel
0f1c231d37 Fix WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (#538) 2025-01-07 18:53:04 +00:00
Matt Fiddaman
bd77dfd111 🔧 Migrate to ESLint v9 (#3993) 2025-01-07 18:51:59 +00:00
Matt Fiddaman
39cfa11b25 🌍 improve translation strings - part 1 (#4041) 2025-01-07 18:47:13 +00:00
Matiss Janis Aboltins
af0a14ce3d ♻️ (typescript) refactor ScheduleDetails to tsx (#3964) 2025-01-07 18:45:52 +00:00
Matiss Janis Aboltins
1f2155053f 🔥 remove unused permissions prop from Button components (#4085) 2025-01-07 18:25:05 +00:00
Matiss Janis Aboltins
d5ebcced38 🔥 remove unused report prop from Link component (#4083) 2025-01-07 18:24:49 +00:00
Robert Dyer
7c2408daa6 Do not show undo notifications on desktop (#4097)
* Do not show undo notifications on desktop

* add release note

* fix linter

* Update packages/desktop-client/src/hooks/useUndo.ts

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

* Update useUndo.ts

* fix code pasted on wrong line

* drive-by fix typo

* Update 4097.md

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2025-01-07 08:08:14 -07:00
Julian Dominguez-Schatz
95180cc780 🔖 (25.1.0) (#536)
* 🔖 (25.1.0)

* Remove used release notes

* Update web package

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-01-07 01:36:47 -05:00
Julian Dominguez-Schatz
82e1922bee 🔖 (25.1.0) (#4095)
* 🔖 (25.1.0)

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-01-07 01:06:34 -05:00
gabe
8f66605994 add buttons for combined-account transaction pages on mobile (#3734)
* add buttons for combined-account transaction pages (#2333)

* add release note for #3734

* add accessibility label to mobile combined-account header button

* increase touch targets for combined-account buttons

* remove highlight color and add bounce to header buttons

to match the feel of the other account buttons

* update vrt screenshots for actualbudget#3734
2025-01-06 16:18:54 -08:00
Leo Lee
eadd11b7f0 (typescript) Refactoring the mobile TransactionListWithBalance component into typescript. (#4061)
* refactor: convert txListwBal to tsx

* docs: add release notes

* docs: rename notes

* refactor: fix missing cleared/uncleared balance

* refactor: use Binding type
2025-01-06 13:23:03 -08:00
Julian Dominguez-Schatz
832fd1e5d8 Fix schedule split template amounts (#4077)
* Fix incorrect argument to goals schedule function

* Add argument types to prevent similar issues

* Add release notes

* Fix test types
2025-01-02 18:01:19 -05:00
Matt Fiddaman
928260ca3a Fix calendar report day background colour in development theme (#4073)
* fix calendar background in development theme

* note
2025-01-02 17:12:27 +00:00
Julian Dominguez-Schatz
be5bfa275e Fix icon hover effect in transaction table (#4070)
* Fix icon hover effect in transaction table

* Add release notes

* Add test
2025-01-02 11:45:59 -05:00
Matt Fiddaman
1e65939147 fix mobile hold buffer initial sign (#4068) 2025-01-01 22:18:28 +00:00
youngcw
7060e4b657 [Goals]: fix repeating spend templates (#4066)
* fix repeating spend templates

* work with all repeat types

* note
2025-01-01 15:03:30 -07:00
zenminimalist
2005c1b0ac [WIP] Update bank-factory.js and add Deutsche Kreditbank AG (DKB) (DKB_BYLADEM1) to the 90-days sync limited list (#528) 2024-12-31 15:32:01 +00:00
Matt Fiddaman
da613ab673 Fix payee cell overflowing when it contains an icon (#4056) 2024-12-30 20:39:47 +00:00
Koen van Staveren
d894281465 enhance: context menu on sidebar elements (#3777)
* enhance: context menu on sidebar account

* enhance: context menu on EditableBudgetName

* chore: release note

* chore: lint

* Update packages/desktop-client/src/components/sidebar/Sidebar.tsx

* chore: fix margin

* fix: merge

* chore: use useContextMenu hook

* style: change account name field an input

* lint

---------

Co-authored-by: matt <matt@fiddaman.net>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-12-29 21:13:57 +00:00
Koen van Staveren
5c577aa069 enhance: context menu on custom reports page (#3776)
* enhance: context menu on custom reports page

* chore: release note

* chore: lint

* chore: use both feature flags

* chore: use both feature flags

* chore: pr feedback

* fix: changing name with context menu
2024-12-29 20:51:56 +00:00
Robert Dyer
e6aeea668b Fix issue where the UI is stuck sync'ing if no data from server (#3941)
* Fix issue where the UI is stuck sync'ing if no data from server

* add release note
2024-12-29 20:49:19 +00:00
Julian Dominguez-Schatz
ded2f39e13 Fix loading of number format on initial app startup (#4038)
* Fix loading of number format on initial app load

* Add release notes
2024-12-27 18:19:22 -05:00
Matt Fiddaman
3f6068fe88 add electron build files to eslint ignore list (#4042)
* add electron build files to eslintignore

* note
2024-12-26 01:22:53 +00:00
Julian Dominguez-Schatz
9213ed75b5 Upload translations on builds of master (#4002)
* fix: translations were not being loaded properly

* fix: support running GitHub actions locally with `act`

* feat: upload new strings on master build

* Add release notes

* PR feedback: security
2024-12-24 12:48:41 -05:00
Matt Fiddaman
93262e7fb4 extend fix splits tool to report splits with mismatched amounts (#3970) 2024-12-24 07:43:44 +00:00
Matt Fiddaman
cd8bb8e139 change feedback issue for openid (#4030) 2024-12-23 17:11:46 -07:00
Koen van Staveren
bd126b499b feat: now button at budget page (#3703)
* feat: now button on budget

* Update VRT

* chore: change to icon

* chore: rename to today

* chore: fix not being centered on multiple months

* Update VRT

* Update VRT

* Trigger Build

* fix: keep now button with monthpicker not left

* Update VRT

* fix: center MonthPicker

* Update VRT

* Trigger Build

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-12-23 23:11:15 +01:00
Koen van Staveren
8976ffc256 enhance: allow negatives in the budget template (#4028)
* enhance: allow negatives in the budget template

* chore: add test case

* chore: release note
2024-12-23 23:10:54 +01:00
lelemm
0b2c8ccd88 OpenId Implementation (#3878)
* OpenId implementation

* Code rabbit auto generated code applied

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

* Code rabbit suggestions round 2

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

* fixes from code rabbit round 1

* fixes from code rabbit round 2

* change variable name

* code review round 3

* Update VRT

* small fix

* Update VRT

* linter

* app.tsx

* LoggedInUser

* UserAccess

* UserAccessHeader

* UserAccessPage

* UserAccessRow

* UserDirectory

* UserDirectoryHeader

* UserDirectoryPage

* UserDirectoryRow

* BudgetList

* Bootstrap

* Login

* OpenIdForm

* CreateAccountModal

* EditAccess

* EditUser

* GoCardlessInitialiseModal

* OpenIDEnableModal

* PasswordEnableModal

* SimpleFinInitialiseModal

* TransferOwnership

* AuthSettings

* fix hooks in EditUser

* enable electron openid login

* typecheck

* linter and typecheck fixes

* Update VRT

* small fix

* linter

* small changes for file owner name and a fix for privacyfilter in the username

* linter for merge

* change the entra url and changing the electron loopback url when built

* "logged in as" was showing when had no user

* linter

* linter²

* code review

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: matt <matt@fiddaman.net>
2024-12-23 09:46:22 -07:00
youngcw
cde81da72c [Goals]: Fix applying templates in tracking budget (#4010)
* fix logic

* note
2024-12-21 19:49:29 -07:00
lelemm
2ef397112c Added command lines to enable/disable openid from console (#527)
* Added command lines to enable/disable openid

* md

* Update src/scripts/disable-openid.js

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

* changed error codes based on code rabbit review

* fix for github auth

* code review

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-20 14:28:25 +00:00
Sthaagg Memnochs
6c57b4ec9e Add support for "FORTUNEO_FTNOFRP1XXX" to BANKS_WITH_LIMITED_HISTORY (#518) 2024-12-19 21:25:37 +00:00
Matt Fiddaman
6cfb9d2a7a Fix incorrect boldening of synced accounts in the sidebar (#4009) 2024-12-19 15:13:44 +00:00
Matt Fiddaman
4ce5e2fd07 Prevent schedules with null amounts from crashing the app (#3958)
* test

* note

* add comment
2024-12-18 21:55:23 +00:00
Matt Fiddaman
11bde73fa5 🔧 upgrade better-sqlite3 (#3987)
* upgrade better-sqlite3

* note
2024-12-18 09:05:46 +00:00
Arne Keller
efb50edf9f 🔧 upgrade better-sqlite3 (#524) 2024-12-18 09:05:41 +00:00
lelemm
96c37350d5 ⚙️Enchancement: Status code 500 for password invalid when disabling openid (#526)
* Error 500 when password invalid

* md
2024-12-17 09:11:54 +00:00
lelemm
f80eb888a0 🐛 Fix for Electron OpenID Authentication (#523)
* OpenID implementation

* Fix password login and session token initialization

* Disallow multiple authentication methods simultaneously.

Note this is only disallowed at bootstrap. If the database is edited
manually, we make no attempt to detect this.

* Refactored account-db.js into separate files in accounts/

* Migrate old database version

* Fix lint errors

* Add release note

* Add unit tests for runMigrations

* Integrate secrets database into migration system

* Remove unused imports

* trying local package

* merge

* working example

* working example

* working example

* forbidden instead of 401 when session expired

* cleanup

* small fix

* moving to another pc

* features

* more features

* added multiuser configuration

* lint fixes

* adjustments and linter

* making code more readible

* added token expiration and fixes

* fix on custom token_expiration

* lint

* build fixes

* fixes

* missing file

* linter

* linter

* test fixes

* linter

* first tests

* tests

* typo fix

* remove the init code from the old PR

* minor bug when enabling openid is deleting the password user

* fix bug when disabling openid

* another fix bug when disabling openid

* added option to login without discovery url

* adjustments for keycloak

* linter

* more tests

* adjustments

* linter fix

* added environment variable

* merge fixes for using middleware

* linter fix

* linter and tests

* tests adjustments

* added environment variables

* linter

* enhancements

* removed old files

* Added token expiration as environment variable

* fixes

* typescript fix

* linter

* unwanted code

* changed master to owner

* fixed down migrations and added transactions to it

* changed to the 'in' operator

* fixed typo

* code review

* code review

* json.parse may fail

* code review and removed duplicated methods

* multiple fixes and refactories

* bunch of fixes

* removed logs

* descriptive variable names

* linter

* code review

* linter

* improved variables

* fixes and refactories

* more code review

* variable name

* code review

* linter

* wrong logic after refactor

* refactor query

* fixes

* changes from code review

* added logs to toggleAuthentication

* removed not used route

* merged master into the branch

* removed toggleAuthenticatiomethod because you have to pass thru password config before enabling openid

* changed md file

* fixes on merge

* linter

* fix on tests

* more fixes

* fix

* another fix

* Update src/app-admin.js

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

* Update jest.global-setup.js

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

* code rabbit reviews

* linter

* Update migrations/1719409568000-multiuser.js

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

* Update migrations/1719409568000-multiuser.js

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

* Update src/account-db.js

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

* Update src/accounts/openid.js

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

* Apply suggestions from code review

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

* fix on code suggestion

* suggestion from coderabbit

* linter

* Apply suggestions from code review

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

* linter and code review

* Apply suggestions from code review

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

* Update src/util/middlewares.js

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

* fixes, ai code review, linter

* reverting res.locals and fixes

* Update src/accounts/openid.js

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

* Update src/load-config.js

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

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Update src/account-db.js

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

* fixes and refactories

* merge fix

* fix

* merge fix

* linter

* Update src/accounts/openid.js

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

* Update src/services/user-service.js

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

* Update src/services/user-service.js

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

* Update src/services/user-service.js

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

* more code review

* linter accepted code

* typo

* code review suggestion

* change to enable backward compatibility

* removed the userId = null

* fixes from code review

* Update jest.global-setup.js

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

* code review

* minor change

* code rabbit commit was wrong

* Fix for existing user sessions

* fixes on migration

* md

* Update migrations/1719409568000-multiuser.js

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

* added variable loginMethod for backward compatibility and renamed the other variable to make it more clear

* small fixes

* fix for electron

* md

---------

Co-authored-by: apilat <github@tmp.pegazy.org>
Co-authored-by: Jed Fox <git@jedfox.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-16 21:42:59 +00:00
Matiss Janis Aboltins
94666a2ac1 Update bug-report.yml 2024-12-16 20:21:44 +00:00
Matiss Janis Aboltins
b6fbcef6f0 Update bug-report.yml 2024-12-16 20:21:15 +00:00
Matiss Janis Aboltins
1165c4c008 Update bug-report.yml (#3992) 2024-12-16 20:20:21 +00:00
Johannes Löthberg
70f6afbda6 Add GoCardless integration for ENTERCARD_SWEDNOKK (#506)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2024-12-16 20:12:13 +00:00
guglicap
0d06bc1f7e Hype Bank (HYPE_HYEEIT22) Enhancements (#512) 2024-12-16 20:11:32 +00:00
nsulzer
6281d54a38 Add GoCardless integration for ABNAMRO_ABNANL2A (#513) 2024-12-16 20:10:47 +00:00
Matt Fiddaman
d637a69ee4 ISYBANK_ITBBITMM should prefer valueDate over bookingDate (#510)
* prefer valueDate for isybank-itbbitmm

* note

* fix
2024-12-16 20:05:09 +00:00
Darin Loh
8446356cc6 fix: space missing on create local account copy (#3985) 2024-12-15 12:27:39 +00:00
lelemm
ec977ee51a Calendar Report (#3828) 2024-12-14 20:19:14 +00:00
Dany Khalife (MSFT)
ef95850e93 Migrate useSplitsExpanded to TypeScript (#3945)
* useSplitsExpanded renamed to .tsx

* Some type hardening

* add release note

* lint

* typecheck

* lint

* rename expanded -> isExpanded
2024-12-11 17:52:41 -08:00
Joel Jeremy Marquez
81fc029a03 Use useTranslation hook instead of directly importing the t function (#3893)
* Use useTranslation hook instead of directly importing the t function

* Release notes

* Fix lint
2024-12-11 13:57:45 -08:00
Dany Khalife (MSFT)
9e6a486c90 Dkhalife/ts/categorytransactions (#3959)
* rename

* a bit of hardening

* release notes

* typecheck & lint

* lint
2024-12-11 21:46:55 +00:00
Marian Bäuerle
9af3539b91 Fix iOS mobile navigation tabs disappearing on bouncing top (#3962) 2024-12-11 13:28:03 -08:00
Joel Jeremy Marquez
62d8358f90 Remove use of useActions (#3911)
* Remove use of useActions

* Release notes

* Fix lint
2024-12-10 15:16:56 -08:00
Joel Jeremy Marquez
219e139d55 Consistent accounts terminology (For budget / Budgeted --> On budget) (#3903)
* Change for budget and budgeted terms to on-budget

* Release notes

* Update mobile account header

* Fix release notes

* Fix release note category

* Update VRT

* Rename variables

* Remove hyphens

* Show off budget

* Update VRT

* Dummy commit

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-12-10 15:15:44 -08:00
Joel Jeremy Marquez
298b734539 Optimize useSheetValue (#3879)
* Optimize useSheetValue

* Fix lint

* Fix mock bind

* Reduce re-renders

* Update useSheetValue

* Update

* Make QueryState immutable

* Release notes
2024-12-10 09:35:23 -08:00
Joel Jeremy Marquez
e96b986ad0 Add loading indicator when loading more transactions in mobile transaction list (#3900)
* Add isLoadingMore property to useTransactions hook

* Release notes

* Start loading more earlier
2024-12-10 09:22:28 -08:00
Joel Jeremy Marquez
5104a1a563 Convert BudgetTable.jsx to tsx (#3899)
* Convert BudgetTable to TypeScript

* Release notes
2024-12-10 09:21:25 -08:00
Travis Lesicka
6ea77324ef Duplicate Budget (#3847)
* Initial Commit

* Create 3847.md

* Removed un-needed comment

* Changed error log text

* Moved budget name validation from DuplicateFileModal to loot-core/server

* Added translation

* Fixed linting error

* Changed delete file hack

Changed from loading and closing the budget file to just opening and closing the database to be able to delete it.

* Removed hard coded english from loot-core server

* Updated wording and style of Duplicate File Modal

* Simpler wording for Duplication text and buttons
2024-12-10 08:55:38 -07:00
lelemm
2b908e9263 Filter account with 'on budget' or 'off budget' (#3891)
* Filter account by on budget / off budget

* small fix

* fix eval for new operations

* code review suggestion

* suggestions

* small fix for rules table

* batch loading the accounts

* Update packages/loot-core/src/server/accounts/transaction-rules.ts

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

* missed this type

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-12-10 11:52:38 +00:00
Matiss Janis Aboltins
a2892270d2 🐛 fix condition "notes contains (nothing)" throwing error (#3943) 2024-12-09 22:00:36 +00:00
Matiss Janis Aboltins
d649eec4db 🐛 fix misaligned gocardless credential popover (#3942) 2024-12-09 21:59:55 +00:00
Koen van Staveren
5717d90544 enhance: context menu budget page positioning (#3775)
* enhance: context menu budget page positioning
fix: make popover non selectable

* chore: release note

* Update upcoming-release-notes/3775.md

* chore: improve spelling

* feat: useContextMenu hook for context menus

* fix: linting
2024-12-09 20:32:12 +01:00
Adam Langbert
a35af73023 fix tracking budget docs link (#3944)
* fix tracking budget docs link

* add release notes
2024-12-09 10:00:10 +00:00
Eric Ji
e4b40fb831 Menu Option Disappears Completely On Certain Screen Size (#3880)
* remove use of View component

* created a release note

* rename release note to PR number not issue number

* revert changes to check e2e tests

* redo changes

* indentify exact styling issue

* use style instead of css
2024-12-07 23:20:38 -05:00
Matiss Janis Aboltins
fa8ff79208 (dashboards) piecharts - sorting and label spacing (#3855) 2024-12-07 13:29:40 +00:00
Matt Fiddaman
3ce7ae91d9 Add more logging for GoCardless rate limit information (#3895) 2024-12-06 21:29:37 +00:00
Matt Fiddaman
645958bbeb Return GoCardless rate limit information on error (#509) 2024-12-06 21:29:26 +00:00
annechoww
1b25235cc7 Category Labels Not Scaling Correctly On Small Screen (#3906)
* Fixed label scaling for smaller screens.

* Added release notes. Minor linting fix added.
2024-12-06 13:53:15 -07:00
Matt Fiddaman
f207803f7a 🔖 (24.12.0) (#3931)
* bump versions

* Remove used release notes

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-06 11:03:37 -07:00
Matt Fiddaman
df958eb35c update yarn.lock (#520) 2024-12-06 17:55:52 +00:00
Matt Fiddaman
39dbdc0418 🔖 (24.12.0) (#515)
* bump version

* Remove used release notes

* bump web version

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-06 16:39:22 +00:00
Julian Dominguez-Schatz
df7bc5d2f0 Fix a navigation bug and a crash from the account pages (#3932)
* Don't crash when making a txn from the uncat page

* Always navigate consistently from the txn add/edit page

* Add release notes

* Attempt to fix functional tests

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-12-06 08:34:20 +00:00
lelemm
5e7538fde3 'hasTags' should show only for notes (#3902)
* 'hasTags' should show only for notes

* md

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-12-05 15:38:10 -08:00
Joel Jeremy Marquez
2c0bd6bafd Use useNavigate instead of accessing window.__navigate (#3904)
* Use useNavigate instead of accessing window.__navigate

* Release notes

* Update packages/desktop-client/src/components/manager/ConfigServer.tsx

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-05 15:37:52 -08:00
Froghut
d3a7b6228a Fix gocardless bank "Hanseatic Bank" (access_valid_for_days max 89) (#514)
* Add support for "Hanseatic Bank" (access_valid_for_days max 89)

* add PR changelog file

* fix line endings + author format

* make linter happy

* make linter happy

* use alphabetical order for import and banks list
2024-12-03 17:53:00 +00:00
Michael Clark
501c8653ef 🐛 Fix flicker when saving transaction on account page when transactions are scheduled (#3920)
* fix flicker when saving transaction on account page when there are scheduled

* release notes
2024-12-02 08:53:57 +00:00
guglicap
484211185b Fix Hype Bank sync (HYPE_HYEEIT22) (#511)
* fix: wrong institution_id for HYPE_HYEEIT22 in `BANKS_WITH_LIMITED_HISTORY` array

* added upcoming-release-note

* fixed author name in release note
2024-11-28 18:56:47 +00:00
Joel Jeremy Marquez
22623ce65e Fix mobile transaction edit page's back button behavior (#3905)
* Fix mobile transaction edit page's back button behavior

* Release notes
2024-11-27 08:02:37 -08:00
lelemm
8506b87f2c 🐛 Fix existing sessions when using the latest version with Openid (#507) 2024-11-26 19:00:54 +00:00
Michael Clark
c25e3d4163 🐛 Fix performance when navigating between budget/accounts (#3882)
* memo the bindingobj

* release notes

* fix

* a bit heavy handed

* lint
2024-11-24 08:43:01 +00:00
dependabot[bot]
69a04a5c21 build(deps): bump cross-spawn from 7.0.3 to 7.0.6 (#505)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-23 12:18:51 +00:00
lelemm
826511779e OpenID (#498) 2024-11-23 11:55:56 +00:00
Michael Clark
339fac2806 🔧 Summary Card: Change the font size implementation to be simpler & fix import dashboard (#3871)
* change the font size implementation to be simpler

* release notes

* setting the line height back

* renames

* condtion on the font changed event

* fix type check

* typecheck

* clarifying comment

* remove margin on left and right - not required

* fix import

* fix derp
2024-11-22 15:52:27 +00:00
Joel Jeremy Marquez
2ebaa527be Convert mobile Accounts.jsx to tsx (#3862)
* Convert mobile Accounts.jsx to TS

* Release notes

* Fix lint
2024-11-21 16:01:26 -08:00
Joel Jeremy Marquez
c5411518c4 Use strict typing in useSheetValue and fix bug where query is not being updated when changed (#3864)
* Use strict typing in useSheetValue and fix bug where query is not being updated when changed

* Release notes

* Update VRT

* Fix regression

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-11-21 16:01:09 -08:00
Joel Jeremy Marquez
36839ff153 Convert ManagePayees components to Typescript (#3867)
* Convert ManagePayees components to Typescript

* Release notes

* Fix lint

* Fix lint

* Fix lint
2024-11-21 15:23:35 -08:00
Joel Jeremy Marquez
9d6db12921 Convert MergeUnusedPayeesModal.jsx to tsx (#3866)
* Convert MergeUnusedPayeesModal.jsx to tsx

* Release notes
2024-11-21 15:23:24 -08:00
Joel Jeremy Marquez
590ac1f95e Convert EditFieldModal.jsx to tsx (#3865)
* Convert EditFieldModal.jsx to tsx

* Release notes

* NoteAmendMode

* Fix lint
2024-11-21 15:23:09 -08:00
Joel Jeremy Marquez
8e76a65e0c Convert SimpleTransactionsTable.jsx to tsx (#3870)
* Convert SimpleTransactionsTable.jsx to tsx

* Release notes
2024-11-21 15:09:23 -08:00
Joel Jeremy Marquez
c3eda4247e Convert PostsOfflineNotification.jsx to tsx (#3868)
* Convert PostsOfflineNotification.jsx to tsx

* Release notes

* Fix lint
2024-11-21 15:09:00 -08:00
Matt Fiddaman
022b9b76b1 Allow the report table columns to grow to fill available space (#3872)
* allow report table columns to grow to fit

* note
2024-11-21 22:36:19 +00:00
Joel Jeremy Marquez
19f0037256 Fix preview transactions not showing on all accounts page and aggregated accounts page (budgeted/offbudget) (#3873)
* Fix preview transactions not showing on all accounts

* Release notes
2024-11-21 14:24:57 -08:00
lelemm
c626fc2f17 Summary report (#3792)
* Summary card report

* Apply suggestions from code rabbit

* Apply suggestions from code review

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

* MORE CODE RABBIT SUGGESTIONS

* typecheck fix

* change view form the details page

* added privacy filter

* Apply suggestions from code review

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

* debounce

* removed binary search and changed the summary page to not use the card component

* Update packages/desktop-client/src/components/reports/spreadsheets/summary-spreadsheet.ts

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

* fix on recommended code rabbit commit

* added some padding to number so it fits the window better for big numbers

* accept infinite

* feedback fixes

* Update packages/desktop-client/src/components/reports/reports/SummaryCard.tsx

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

* translations

* fix on the save, linter and changed "include summary date range" to "all time divisor"

* changed MD from enhancements to feature

* typo

* change card

* typecheck

* Update packages/desktop-client/src/components/reports/SummaryNumber.tsx

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

* typecheck

* changes to fit the number better

* small fix

* fix on filters

* code review

* revert code to check for height

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-11-21 09:25:09 -07:00
Matt Fiddaman
30f21497a6 fix bug in batch SimpleFIN startDate logic (#504) 2024-11-21 15:49:08 +00:00
Joel Jeremy Marquez
f523d25052 Convert ManagementApp.jsx to tsx (#3860)
* Convert ManagementApp to tsx

* Release notes
2024-11-20 14:53:23 -08:00
Joel Jeremy Marquez
278ac0c730 Strict TS typing for useResizeObserver (#3859)
* Strict type useResizeObserver

* Release notes

* Fix typecheck error
2024-11-20 14:53:11 -08:00
Ryan Bianchi
0696c8113d Fix category is/is not (nothing) filters (#3669)
* filter out transfers when category is none

* add filter for parent id

* fix Category is not (nothing) as well

* lint fixups

* add special case for 'category is not nothing'

* add release notes

* adding tests

* lint fix

* use $and expression for complex condition special cases

* add tests for condition special cases

* Update packages/loot-core/src/server/accounts/rules.ts

rename subExpression to and

Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>

* update uses of subExpression with and

* remove stray debugger rules

* Update VRT

* Revert "Update VRT"

This reverts commit a450fc7b2457bb578e53f62d5f4201e91e9a93c4.

* make and an internal op to avoid exposing it to the UI

* feedback

---------

Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: matt <matt@fiddaman.net>
2024-11-20 11:38:52 +00:00
Matiss Janis Aboltins
688de5f604 (dashboards) release as first party feature (#3856) 2024-11-20 08:31:54 +00:00
Joel Jeremy Marquez
881410bc74 Fix wrong scheduled transfer payment direction on PWA (#3402)
* Fix #3230

* Release notes

* Rename hook function

* [chore] Comment

* Coderabbit feedback

* Fix loading states

* Code rabbit

* No payee text

* Update VRT

* Update release notes

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-11-19 13:57:40 -08:00
Ali Gradina
b4d2d6a884 Marked files for translation (#3548) 2024-11-19 18:52:24 +00:00
youngcw
5cf439883e [Goals] fix limits (#3829)
* fix limits

* cleanup

* fix cases of negative previous balance
2024-11-19 06:53:21 -07:00
Matiss Janis Aboltins
23bb89b96e release tracking budget feature (#3833) 2024-11-18 22:41:50 +00:00
Matt Fiddaman
7010ab1eb6 add simplefin batch sync to api (#3821) 2024-11-18 20:38:45 +00:00
Joel Jeremy Marquez
18f538c54b Convert Mobile Transaction component to TransactionListItem + cleanup (#3761)
* Migration mobile Transaction component to TransactionListItem + cleanup

* Release notes + yarn install

* Fix style

* Padding changes + VRT

* Update useScrollListener

* Code rabbit feedback

* Do not show loading on preview transactions
2024-11-18 06:38:08 -08:00
Joel Jeremy Marquez
e170c0d274 Fix mobile navigation tabs expanding/collapsing when scrolling in modals (#3731)
* Update scroll provider so that it only captures the scroll on div container and not the whole window

* Fix lint + release notes

* Rewrite useScroll to be more performant by being ref based instead of state to avoid re-renders when scrolling

* Check undefined

* Rename to useScrollListener

* Remove small 1px gap under mobile nav tabs when fully open

* Cleanup

* Fix lint

* Coderabbit feedback
2024-11-17 12:23:05 -08:00
Sai Hemanth Beeraka
dad702e5c2 🐛 Fix validation issue for invalid server URLs in /config-server page (#3837)
* Fix breaking /config-server page logic for invalid server URLs

* Handle missing url in 'subscribe-needs-bootstrap' handler
2024-11-15 20:33:29 +00:00
Michael Clark
224d445840 🐛 Fix parameter formatting issues (#3841)
* fix some errors in translation format

* release notes
2024-11-15 12:38:54 +00:00
Awais Alee
670419b087 Added the i18n translation for desktop-client (#3832) 2024-11-14 19:05:15 +00:00
Michael Clark
58baf74992 🐛 Fix translations failing (#3830)
* fix translations failing

* release notes

* blasphemy

* more blasphemy

* putting warning back

* last heretic act

* making the world a better place
2024-11-14 08:58:09 +00:00
Awais Alee
d08be58f95 Marked files for translation (#3827)
* Add translation files for desktop client

* Add backend translation files for i18n integration

* code refactored

* code refactored

* code refactored
2024-11-13 15:08:01 +00:00
Greg Lorenzen
db68170cce Translation: desktop-client/components/payees/PayeeMenu (#3670)
* Translation: desktop-client/components/payees/PayeeMenu

* Add release notes

* Merge master

* Remove dynamic values from selected payee translation
2024-11-12 20:05:35 +01:00
Michael Clark
1e1092e472 :electron: Separate build folders for easier switching between web and electron (#3801)
* seperate build folders for easier switching between web and electron builds

* gitignore

* release notes

* one directory back from electron

* spelling mistake

* Update 3801.md

* test

* making it correct

* huh

* urghh

* again

* account for api bundle which uses electron bundle for some reason

* hu-

* lets go

* remove comment
2024-11-12 18:39:49 +00:00
The-Firexx
d1324408f4 Fixes #2885 - Focus ring getting stuck on last column of /accounts/budgeted (#3571)
* Fixes focus ring getting stuck on last column of /accounts/budgeted screen when creating a new transaction.

* Fix lint problems with the previous commit

* Changed the way the hook is made to the cancel and add button, removing the need to change Button2

* Changed the name of variables as mentioned in PR
2024-11-12 09:13:52 -08:00
Austin Pearce
9e478014c5 fix back button behavior after adding tx on mobile (#3825)
Co-authored-by: Austin Pearce <austin@apearce.dev>
2024-11-12 08:58:43 +00:00
Michael Clark
dd69e539d3 🐛 Fix iphone 13 unable to use regex lookbehinds (#3823)
* fix iphone 13 unable to use regex lookbehinds

* release notes
2024-11-12 08:58:01 +00:00
jotch
2cb668a40c fix: don't clobber server pathname (#3815)
* fix: don't clobber server pathname

The provided server URL may already include a pathname,
so all further segments need to be appended. This also
more closely matches the name `joinURL`.

* add release notes

* use `fs.join` to avoid double slashes
2024-11-12 08:56:44 +00:00
Joel Jeremy Marquez
3cefd98ce9 useTransactions hook to simplify loading of transactions (#3685)
* useTransactions hook to load transactions

* Release notes + lint fix

* Update useQuery

* useTransactions update

* Stabilize tests

* Fx flaky test

* Fix tests

* Fix tests

* Update queries

* Apply coderabbit suggestions

* Fix onlySync

* Update useTransactions

* Code rabbit suggestions

* useTransactionsSearch hook

* Debounce the useTransactionsSearch search method

* usePreviewTransactions debounce fix

* Fix lint

* Coderabbit feedback + make useSchedules consistent with query pattern used in useTransactions

* Code review feedback and improve schedules loading

* Update error handling

* Cancel debounce on unmount

* Fix lint

* set loading state on error

* Fix test

* VRT

* Revert VRT

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-11-11 22:41:42 -08:00
youngcw
fa2830a1fd fix remainder goal (#3822) 2024-11-11 15:19:22 -07:00
youngcw
57ac062edc [Goals] fix how goal values are calculated (#3817)
* fix how goals are calculated

* lint, note

* note
2024-11-11 07:46:09 -07:00
Awais Alee
0c94214a8f Marked files for translation (#3752)
* Enhance app with i18n translations

* Code Refactored

* Added translated desktop client files

* Code refactored

* Code refactored

* Fix lint issue

* Removed i18next line from RuleRow.tsx

* Code refactored

* Code refactored

* Code refactored

* Update packages/desktop-client/src/components/settings/Encryption.tsx

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>

* Added translation for setting encryption

* Update packages/desktop-client/src/components/settings/Themes.tsx

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>

* Added translation in src/components/settings/Encryption.tsx

* Update packages/desktop-client/src/components/settings/Themes.tsx

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>

* Update packages/desktop-client/src/components/settings/Themes.tsx

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>
2024-11-11 14:37:08 +00:00
Matt Fiddaman
b1bf7ee7cd add support for 1822-DIREKT-HELADEF1822 transaction information (#484) 2024-11-09 09:26:49 +00:00
Matt Fiddaman
266de169db use SimpleFin pending flag for cleared status (#494) 2024-11-09 09:26:40 +00:00
Matt Fiddaman
d412590b33 ING_PL_INGBPLPW should prefer valueDate over bookingDate (#493) 2024-11-09 09:26:26 +00:00
Dāvis
635ef27696 Enrich pending transaction creditor info for SWEDBANK_HABALV22 (#497) 2024-11-08 22:05:51 +00:00
Koen van Staveren
2b72b2f2f2 Update update-vrt.yml (#3800) 2024-11-07 16:03:15 +00:00
Koen van Staveren
985b653a87 Update update-vrt.yml (#3799) 2024-11-07 15:44:19 +00:00
Koen van Staveren
f14b160e5c [WIP] Update update-vrt.yml (#3798) 2024-11-07 16:29:31 +01:00
A. Schueler
8eafa1e741 fix: check gocardless bank data before setting state (#3793) 2024-11-07 15:01:37 +00:00
Travis Lesicka
aefd9504bf Update Sidebar - Refactor the Budget Name component (#3593)
* Initial Commit

Moved Budget Name to its own component for a cleaner Sidebar component.
Added pencil icon for editing budget name.
Removed Rename Budget from menu.

* Create 3593.md

* Fixed Menu Dropdown Arrow shrinks with long budget name

* Changes recommended by coderabbitai

* Fixed Lint issue

* Remove Help from Menu

* Remove menu from budget name and added Actual logo with menu

* Update VRTs

* Update VRTs

* Fix logo shrinking with long budget name issue

* Update 3593.md

* Removed Logo and pencil icon

* Update VRTs

* Removed unused classnames from SideBar and BudgetName component

* revert to upstream VRTs
2024-11-06 20:53:58 -07:00
Matiss Janis Aboltins
1f6977da81 🐛 (dashboards) remove faulty dashboard widgets (#3785) 2024-11-06 22:14:33 +00:00
Travis Lesicka
290402ee6a Fixes #3729: Typescript and Runtime error after previous merge (#3794) 2024-11-06 20:11:46 +00:00
Koen van Staveren
c3b95886db ci: add reactions to /update-vrt comment (#3789)
* ci: add reactions to /update-vrt comment

* chore: use correct permissions

* chore: don't cancel on non command message

* chore: make workflow not expose github secret

* Update .github/workflows/update-vrt.yml
2024-11-06 09:30:00 +01:00
Joel Jeremy Marquez
e53d444c32 Fix loading of mobile/desktop page on window resize (#3729)
* Fix loading of mobile/desktop page on window resize

* Release notes

* Fix lint

* Use useWindowSize since it matches behavior of documentElement clientWidth and clientHeight

* Debounce so that components are only reloaded when user finishes the resize

* Adjust debounce delay
2024-11-05 15:38:03 -08:00
Dāvis
ed098c4a69 Add support for SWEDBANK_HABALV22 transaction date (#490) 2024-11-05 22:31:21 +00:00
joel-rich
c0f9073f35 Fixes #3682 - Fix $ne filters incorrectly excluding null values (#3686)
* allow matching null values when not equals query filter is set

* Also fix namedParameter queries with  filter

* improve tests

* release note

---------

Co-authored-by: Joel Rich <joelrich@protonmail.com>
2024-11-05 00:39:43 -08:00
Koen van Staveren
19c6f85f5e Update update-vrt.yml (#3788) 2024-11-04 19:58:22 +01:00
Koen van Staveren
d4f1f703ea fix: /update-vrt (#3787)
fatal: detected dubious ownership in repository at
https://github.com/actions/runner-images/issues/6775
2024-11-04 19:43:49 +01:00
Michael Clark
914f59197f :electron: Removing node-fetch and updating root ca impl for more support (#3782)
* updating root ca impl to use node env variable for more support

* release notes

* removing node-fetch

* clean up

* error message

* Update 3782.md
2024-11-04 18:35:21 +00:00
youngcw
7c24c269e2 ♻️ make templates classy and replace 🍝 code (#3754)
* by check

* minor changes and TS class migration

* good starting point

* very basic testing

* fix

* basic overwrite of simple templates working

* mostly working.  By and schedule don't work

* some cleanup, better async

* add notifications

* add daily weekly limits

* by is working I think

* mostly working

* some fixes, make faster

* lint, note

* note

* cleanup old stuff

* fix paths

* test fixes

* fix test

* fix note

* rabbit, and fix long goal

* lint

* some fixes

* more typing

* fix save error

* last bunny fixes

* fix save, trim schedule names

* lint

* minor fixes

* last fixes

* lint
2024-11-04 11:28:01 -07:00
Matiss Janis Aboltins
c52e5c856d 🐛 (dashboards) save cash flow balance setting (#3745)
Closes #3671
2024-11-04 17:56:29 +00:00
Matiss Janis Aboltins
b08756cc39 ♻️ custom reports - moving to url identifiers (#3744) 2024-11-04 17:56:14 +00:00
Koen van Staveren
29fc22a171 fix: maintain the sort order of the server sync (#3748)
* fix: maintain the sort order of the server sync

* chore: release note

* fix: tests

* chore: release note
2024-11-04 17:56:15 +01:00
Matt Fiddaman
815f69a051 implement SimpleFin batch sync (#3581)
* initial

* remove incorrect automated imports

* fixes

* refactor to mark all transactions new

* clamp latestTransaction to current date

* refactor out temporary placeholder solution

* simplify bank syning logic

* stricter types

* note

* remove debug logging

* better logging

* error handling

* fix handling of SimpleFinBatchSync

* pass errors down

* fix

* another go!

* hopefully the last try...

* fix log

* Update packages/loot-core/src/server/accounts/sync.ts

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

* coderabbit: simplify promise construction

* Update packages/loot-core/src/client/actions/account.ts

Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>

* expand types

* month utils

* use aql over sql

* fix types

* fixes

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
2024-11-04 16:39:04 +00:00
Koen van Staveren
83ceea4250 fix: /update-vrt on forks (#3773)
* fix: /update-vrt on forks

* chore: add missing container for /update-vrt

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-11-04 17:01:55 +01:00
JahJoey
59d685fab6 Fix: #3719: Imported payee overflowing on transaction record (#3753)
* Modified tooltip to have set width to avoid overflow issue on imported payee records

* Added release note

* Fixed release note file name
2024-11-04 16:59:19 +01:00
Dreptschar
a267e3abb5 Apply Template to All Categories in Group for Web (#3666)
* add function to apply template to multiple category and add button to group sidebar

* add function to apply template to multiple category and add button to group sidebar

* add correct month

* clean up code

* clean up code

* clean up code

* clean up code

* add notification and clean up

* add notification and clean up

* add notification and clean up

* add notification and clean up

* add notification and clean up

* add release note

* excluded hidden categories

* removed unused method from api

* adjust template to run on already budgeted categories

* fix typecheck

* add apply multiple as budget action and remove from api

* lint clean up

* fix notification and remove log

---------

Co-authored-by: dreptschar <dreptschar@gmail.com>
2024-11-04 07:22:29 -07:00
Joel Jeremy Marquez
e078ed21ba [Typescript migration] Migrate AccountSyncCheck to ts (#3757)
* Migrate AccountSyncCheck to ts

* Release notes

* Fix lint
2024-11-03 13:04:43 -08:00
Nuno
b98ff3f50d build: bump docker image base, set node_env=prod (#479)
* build: bump docker image base, set node_env=prod

Signed-off-by: rare-magma <rare-magma@posteo.eu>

* docs: add release note

Signed-off-by: rare-magma <rare-magma@posteo.eu>

* build: use COPY commands

Signed-off-by: rare-magma <rare-magma@posteo.eu>

---------

Signed-off-by: rare-magma <rare-magma@posteo.eu>
2024-11-03 20:53:03 +00:00
Robert Dyer
879869c85a Check SimpleFIN access key format (#485) 2024-11-03 20:35:27 +00:00
Koen van Staveren
41d5922635 Add context menu's (#3381)
* feat: context menu on transactions

* feat: context menu's on budget page

* chore: release note

* fix: losing focus on context menu

* feat: schedules context menu

* feat: payees context menu

* feat: rules context menu

* chore: update release note

* chore: lint

* fix: broken balance movement menu

* fix: placement on context menu to be closer to cursor

* feat: context menu on budget field

* chore: lint

* Update packages/desktop-client/src/components/transactions/TransactionsTable.jsx

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

* chore: fix merge

* fix: e2e test

* fix: moving of the popover in the sidebar

* chore: lint

* chore: add feature flag

* chore: fix tsc

* chore: fix test

* Update packages/desktop-client/src/components/settings/Experimental.tsx

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>

* fix: to budget button

next steps didn't work

* chore: lint

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2024-11-03 14:26:53 -05:00
Julian Dominguez-Schatz
6f07894be7 Auto-reload on app updates (#3693)
* Auto-reload on app updates

* update #1

* test

* wip

* green

* wip

* ux

* green

* red

* cleanup

* Add release notes

* Unique notification name

* Missing awaits

* Try to fix Electron app

* Simplify update checking

* PR feedback
2024-11-03 13:00:12 -05:00
Koen van Staveren
871de93f2d ci: /update-vrt (#3764)
* ci: /update-vrt

* chore: release note

* chore: code rabbit feedback.

* chore: code rabbit feedback.

* chore: code rabbit feedback.
2024-11-03 10:51:34 -07:00
lelemm
15b2ef1591 Fix #2932: Schedule reset amount to ten (10) when amount is zero (0) (#3732)
* Fix #2932

* md

* e2e update

* Update packages/desktop-client/src/components/util/AmountInput.tsx

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-11-03 16:46:23 +00:00
Julian Dominguez-Schatz
2cd3c9f8a9 Update yarn.lock file (#495) 2024-11-03 10:44:21 -05:00
Julian Dominguez-Schatz
81afedb610 Bump web package 2024-11-03 10:23:12 -05:00
Julian Dominguez-Schatz
1c9b43671e 🔖 (24.11.0) (#492)
* 🔖 (24.11.0)

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-03 09:43:37 -05:00
Julian Dominguez-Schatz
1c05d7e5fe 🔖 (24.11.0) (#3766)
* 🔖 (24.11.0)

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-03 09:43:26 -05:00
Julian Dominguez-Schatz
6666014fe5 Fix bugs in payee table (#3768) 2024-11-02 16:09:17 -04:00
Michael Clark
dc425042ec 🔧 Remove test file (#3756)
* remove unneeded file

* release notes

* release notes
2024-10-31 10:13:24 +00:00
Robert Dyer
b5f8aa4d05 Only pull single account data from SimpleFIN if syncing one account (#483)
* only pull single account data from SimpleFIN if syncing one account

* add release note

* fix linter

* remove debug print

* Update src/app-simplefin/app-simplefin.js

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-10-30 00:03:32 +00:00
clutwo
e659ccf3f4 Update easybank-bawaatww.js to change accessValidForDays: 179 from 180 (#486)
* Update easybank-bawaatww.js to change accessValidForDays: 179 from 180

* added release notes

* changed author in releasenote
2024-10-30 00:01:09 +00:00
Michael Clark
603f970f12 🐛 Fix migrations not working on fresh clone (#487) 2024-10-28 22:17:35 +00:00
Koen van Staveren
59835a3ac1 fix: date handlebar functions (#3749)
* fix: date handlebar functions

* chore: release note

* chore: tests
2024-10-28 10:40:49 -07:00
adenpun
b349edd9e0 Fix "Name" field being in wrong colour in Schedules page (#3739)
* Fix schedule "Name" field being in wrong colour

* Add release note
2024-10-27 22:29:35 +00:00
joel-rich
f265dd9df0 fix Tag filtering crashing app when tag has regex special character (#3725)
* fix Tag filtering crashing app when tag has regex special character

* release-notes

---------

Co-authored-by: Joel Rich <joelrich@protonmail.com>
2024-10-27 08:10:52 +00:00
Michael Clark
a6da06a8ef 🐛 Extra error handling for if user has incorrect server url (#3736)
* adding some safety for if user has incorrect server url format

* added additional error handling for when incorrect server url has been setup

* good rabbit
2024-10-26 16:16:29 +01:00
Neil
f25dc1f261 Fix Parse for Date Range (#3735)
* fixed

* notes

* simplify
2024-10-25 08:16:36 -07:00
joel-rich
5751d5d107 Fix issue with Monthly Spending report not properly averaging previous three months (#3723)
* Fix issue with Monthly Spending report not properly summing previous three months

* release notes

---------

Co-authored-by: Joel Rich <joelrich@protonmail.com>
2024-10-25 07:06:10 +01:00
youngcw
4b063450a4 [Goals]: fix no messages #1507 (#3721)
* add dispatch

* note

* lint
2024-10-24 17:25:21 -07:00
Tim
fbb0f9bd75 fix modal scrolling performance on mobile (#3343)
This is primarily done by removing the blur effect from the overlay, and
replacing it will a translucent black.

The blur effect performs poorly on mobile devices.
2024-10-24 12:28:59 -07:00
lelemm
6af0dbab56 Fix Issue #3662 - Distribute button calculates splits one at a time (#3728)
* Fix Issue #3662

* added md
2024-10-24 09:31:44 -07:00
Matiss Janis Aboltins
5c94e3878e 🐛 (bank-sync) revert bank-sync status indicator change (#3720) 2024-10-24 08:26:27 +01:00
Koen van Staveren
10ca29e1e9 fix: Custom Report Total Mode not showing offbudget transactions #3627 (#3633)
* fix: Custom Report Total Mode not showing offbudget transactions #3627

* chore: release note

* chore: remove debug logging

* fix: table grouped report
2024-10-23 22:55:54 +01:00
Ahmed Elbohoty
4d89a9b86a Translation: desktop-client/src/components/reports/reports/CustomReport.tsx (#3722) 2024-10-23 21:07:15 +01:00
Matiss Janis Aboltins
34f3ccacf6 ♻️ (synced-prefs) remove no longer necessary migration (#3718)
* ♻️ (synced-prefs) remove no longer necessary migration

Closes #3551

* Release notes
2024-10-23 19:57:02 +01:00
Michael Clark
1b883aa0ab Fix race condition (#3717)
* fix race condition

* release notes
2024-10-23 18:45:01 +01:00
Robert Dyer
c9e6d7897b Do not request transactions when listing accounts (#482)
* Do not request transactions when listing accounts

* add release note

* fix linter
2024-10-23 10:04:32 +01:00
Tom Crasset
cc347aef08 integrate FileService for app-sync.js (#432)
* integrate FilesService for app-sync.js

* integrate comments

* fix linter

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-23 10:03:23 +01:00
Koen van Staveren
49c5adc9cf feat: sort transactions better (#470)
* feat: sort transactions better

* chore: release note

* chore: pr feedback
2024-10-23 09:53:12 +01:00
alcroito
b8c92b98b8 Add "N26" to banks with limited history (#473) 2024-10-23 09:46:24 +01:00
Nuno
f6f49b1fe7 refactor: set correct log level (#478)
* refactor: set correct log level

Signed-off-by: rare-magma <rare-magma@posteo.eu>

* docs: set correct pr number

Signed-off-by: rare-magma <rare-magma@posteo.eu>

---------

Signed-off-by: rare-magma <rare-magma@posteo.eu>
2024-10-23 09:39:10 +01:00
Francesco Truzzi
df42cccce7 Add Fineco to banks with limited history (#481)
* Add Fineco to banks with limited history

* update release notes
2024-10-23 09:38:33 +01:00
Koen van Staveren
54054736e9 fix: change payee rule not working #3702 (#3704)
* fix: change payee rule not working #3702

* chore: release note
2024-10-23 09:07:05 +01:00
Julian Dominguez-Schatz
5cf170a442 Fix merge race (#3713) 2024-10-23 08:55:30 +01:00
Neil
f9eb017a54 Remove spending report feature flag (#3611)
* Remove feature flag

* notes

* defualt show spending graph

* VRT
2024-10-23 06:59:47 +01:00
Julian Dominguez-Schatz
15351e034e Update Electron help menu to reflect new in-app menu (#3699)
* Update Electron help menu to reflect new in-app menu

* Add release notes

* Attempt to fix build issues

* Try 2 to fix IPC
2024-10-22 21:20:11 -04:00
Michael Clark
1895bc80c2 Handling tunnel errors as network failure (#3697)
* handling tunnel errors as network failure

* add release notes

* rabbit suggestion

* clean
2024-10-22 17:35:30 +01:00
Koen van Staveren
a91a8859ab feat: fix categories being set on offbudget transactions (#3705)
* chore: release note

* feat: fix categories being set on offbudget transactions

* fix: #2266

* fix: small mistake

* chore: update comment
2024-10-21 14:23:09 -07:00
deathblade666
a3256f5686 Adding a help modal for quick reference to goal template syntax (#3691)
* Adding a help modal for qucik reference to goal template syntax

* added release notes

* fixed misspelling of Enhancements

* fix lint errors

* Only show when Goal Template Flag is enabled

* fix lint

* Only show on Budget page

* fix lint

* Added Translation, change text formating to table (styling wip), change headers to use react-aria-component headings

* fix lint, made requested change to HelpMenuItem type

* stylized tables

* fixed type error

* Moved section headers to within Table Headers

* fix lint

* added space between last table and see more statement
2024-10-21 22:05:19 +01:00
joel-rich
715bc00e3b Fix incorrect cumulative totals for Days 28+ on the Spending Report (#3679)
* Fix bug with spending report cumulative totals

* release notes

---------

Co-authored-by: Joel Rich <joelrich@protonmail.com>
2024-10-21 06:59:41 +01:00
Vincenzo Di Biase
4e07357221 Add Reconcile button on the account page. (#3684)
* added reconcile button to account page

* add Reconcile Button in the account page

* added release note

* updated VRT snapshots

* removed Reconcile option from Account menu

* made the button minimal with tooltip and added vrt

* missing unused import

* fixed icon and button size

* fixed merge conflicts

* hide reconcile button on all account and for budget page

* fix lint from merged file

* changed reconcile button order

---------

Co-authored-by: vincenzo <dibiasev@gmail.com>
2024-10-20 13:11:45 -07:00
youngcw
03f2cabc18 clean up accidental push (#3695)
* clean up accidental commit

* move
2024-10-19 17:35:13 -07:00
Julian Dominguez-Schatz
259beb7665 Clarify logic to generate splits from rules (#3641)
* Add tests for bug

* Add tests for unexpected behaviour

* Refactor to consistently generate valid splits with no errors

* Add release notes

* Update test names
2024-10-19 19:35:52 -04:00
youngcw
0f3efde855 rabbit suggestion 2024-10-19 16:00:54 -07:00
Matiss Janis Aboltins
9aac44c58f ♻️ (typescript) migrated account header to TS (#3640)
* ♻️ (typescript) migrated account header to TS

* TS patches

* Patch types

* Update packages/desktop-client/src/components/accounts/Header.tsx

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-10-18 20:53:46 +01:00
Joel Jeremy Marquez
0d9528e22c @emotion/css as drop-in replacement for abandoned glamor library (#3471)
* Migrate to @emotion/css

* Remove custom CSSProperties

* Fix errors

* Fix typecheck error

* Fix lint error

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error

* Release notes

* VRT

* VRT

* Revert VRT

* Fix typecheck error

* Fix glamor import

* yarn

* Fix lint error

* Dedupe

* Fix typecheck error

* Update @emotion/css

* Revert vrt screenshots

* Fix toggle content

* Fix content

* Fix lint error

* VRT

* Cleanup unneeded style
2024-10-17 17:35:53 -07:00
Samuel Barnes
3f31d19d8a Add Upcoming length adjustment feature flag (#3651)
* feature flag created

* feature flag implemented

* feature toggle setting added

* added release notes

* Update packages/desktop-client/src/components/settings/Experimental.tsx

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

* vrt

* vrt

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-10-17 17:09:34 -07:00
youngcw
225c93914c allow 4 decimal places in file imports (#3676)
* allow 4 decimals

* note

* fix comment

* update test
2024-10-17 12:40:35 -07:00
youngcw
c25e97b0f6 [Goals] Add copy template (#3617)
* add copy template

* note, lint

* note
2024-10-17 09:28:09 -07:00
Samuel Barnes
e775306f81 [WIP] Add info text to Upcoming Length control (#3639)
* added info circle and box on click

* hover working

* moved title

* release notes

* updated release notes category

* split info bubble into its own component

* text longer than 500px will be split

* extracted text width into its own file

* wip tests

* wip testing

* removed separate method and tests

* added textWidth option to Info Bubble

* updated shadow
2024-10-17 09:27:49 -07:00
scojo
02824ad240 recalculateSplit one last time to clear any erroneous errors (#3624) 2024-10-15 13:58:52 -07:00
Greggory Rothmeier
1a13e98f49 Explicitly disable 1Password on table inputs (#3674)
* Explicitly disable 1Password on table inputs

* Add release notes

* Update packages/desktop-client/src/components/autocomplete/Autocomplete.tsx

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-15 13:48:43 -07:00
Koen van Staveren
3d9e90f797 feat: templating on payee_name (#3619)
* feat: templating on payee_name

* chore: release note

* fix: create test budget

* fix: transaction-rules tests

* fix: transaction-rules tests
2024-10-15 12:22:25 -07:00
Michael Clark
c30981638e Allowing data dir to be overridden (#480)
* allowing data dir to be overridden

* release notes

* Update load-config.js
2024-10-15 20:20:42 +01:00
Greg Lorenzen
b253246fe2 Translation: desktop-client/components/payees/ManagePayees (#3623)
* Translation: desktop-client/components/payees/ManagePayees

* Move react-i18next import before memoize-one

* Add release notes

* Add prettier formatting

* Fix eslint import/order warning

* Add translation support for "No payees" text
2024-10-14 22:20:27 +01:00
Julian Dominguez-Schatz
778fc713f3 Move help-related items under one single menu (#3648)
* Remove previous help-related elements

* Add new 'Help' menu with multiple options

* Fix alignment of popovers

* Better types

* Add release notes

* PR feedback

* Update vrt
2024-10-14 12:25:04 -04:00
Tim
e0f0d8e241 make BudgetTable Budgeted value positive on mobile (#3602)
* make BudgetTable Budgeted value positive on mobile

To match the desktop behaviour.

* add release notes

* update vrt snapshots

* fix tracking budget
2024-10-13 20:05:28 -07:00
Joel Jeremy Marquez
310d299ebd Use a toggle on mobile transaction's Cleared flag (#3622)
* Use a toggle on mobile transaction's Cleared flag

* Release notes

* Cleanup

* VRT

* Cleanup

* Remove glamor import

* Update light theme toggle color
2024-10-13 15:44:22 -07:00
Dreptschar
130f357bab Translation: desktop-client/src/components/common/search.tsx (#3659)
* Translation: desktop-client/src/components/common/search.tsx

* add release note

---------

Co-authored-by: dreptschar <dreptschar@gmail.com>
2024-10-13 20:00:27 +01:00
dependabot[bot]
f89817170a Bump word-wrap from 1.2.3 to 1.2.5 (#3657)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 21:11:09 -04:00
dependabot[bot]
ec37b39e34 Bump micromatch from 4.0.7 to 4.0.8 (#3655)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 20:45:23 -04:00
dependabot[bot]
23f75a6b6a Bump tough-cookie from 4.1.2 to 4.1.4 (#3654)
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.4.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.4)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 20:33:27 -04:00
dependabot[bot]
f206ba2f0f Bump tar from 6.2.0 to 6.2.1 (#3653)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 20:32:18 -04:00
dependabot[bot]
bd5c0cb981 Bump webpack from 5.90.0 to 5.95.0 (#3652)
Bumps [webpack](https://github.com/webpack/webpack) from 5.90.0 to 5.95.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.90.0...v5.95.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 20:13:07 -04:00
dependabot[bot]
3635c8c88a Bump webpack from 5.90.0 to 5.94.0 (#3649)
Bumps [webpack](https://github.com/webpack/webpack) from 5.90.0 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.90.0...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 20:01:48 -04:00
dependabot[bot]
5cb97d6f2f Bump vite from 5.2.11 to 5.4.8 (#3647)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.2.11 to 5.4.8.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.8/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.8/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 19:03:26 -04:00
Julian Dominguez-Schatz
e8af5b9014 Bump yargs to newer version (#3645)
* Bump `yargs` to newer version

* Add release notes
2024-10-12 18:18:36 -04:00
dependabot[bot]
328196c485 Bump vite from 5.2.11 to 5.2.14 (#3646)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.2.11 to 5.2.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.2.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.2.14/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 16:10:42 -04:00
dependabot[bot]
644fe8bdc6 Bump ejs from 3.1.9 to 3.1.10 (#3644)
Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 15:50:16 -04:00
Matiss Janis Aboltins
15b1b73379 polishing report responsitivity (#3636) 2024-10-12 20:39:21 +01:00
dependabot[bot]
8c7e93616f Bump semver from 5.7.1 to 5.7.2 (#3643)
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 15:31:09 -04:00
dependabot[bot]
a56d6f9e05 Bump ws from 7.5.9 to 7.5.10 (#3642)
Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-12 15:21:17 -04:00
Koen van Staveren
75acfc79e1 fix: run rules on reconciliation transaction (#3625) 2024-10-12 19:19:47 +01:00
Vincenzo Di Biase
300ddc6311 Fixes #3585 - Fixes Rule Conditions Removal (#3607) 2024-10-12 17:49:01 +01:00
David Martos
a8c4c5fa23 fix: Sabadell Bank regression, missing date field during normalization (#474)
* fix: Sabadell Bank regression, missing date field during normalization

* release notes
2024-10-12 17:27:36 +01:00
Koen van Staveren
05dda5f9d7 fix: escaping in action rule templating (#3632)
* fix: escaping in action rule templating

* chore: release note
2024-10-11 20:07:57 +01:00
Samuel Barnes
37ad584826 Add option to set how far out the upcoming scheduled transactions are shown in the account view. (#3310)
* initial poking around

* ui changes and setting

* wip

* null check

* removed more than a month

* prettier

* todo

* get status tests

* added prefs to app.ts

* updated to use LocalPrefs bc of limitation of app.ts

* updated schedules component to use localPrefs

* removed console.log

* release notes

* renamed release noted md

* eslint fixes

* import fix

* update useEffect dependencies

* removed a comment

* moved upcoming length setting to schedule page

* removed import

* made setting collapsible and moved to the top

* fixed breaking change

* updated to work with updated synced prefs methodology

* pulled preference from db

* updated tests with mock reset

* update vrt

* per coderabbit: upcoming length null value prevention

* update test to use number inputs rather than string

* aria label added to close button

* moved before/after each blocks per coderabbitai

* fixed default value typo

* updated edit button to use slimmer style

* vrt

* vrt

* vrt

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-10-11 07:43:37 -07:00
Ryan Bianchi
f9c08a995d Fix ability to have duplicate account names (#3527)
* add duplicate name validation to sidebar, and both narrow/wide Account pages

* unify error messages and styles

* keep state for the current account name on the mobile account modal

* add release notes

* remove extra validation function

* fix typo in AccountSyncSidebar params

* don't set current account name to empty string and prevent further changes on AccountMenuModal

* lint imports

* update error message to Name x already exists

* use proper translation functions

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-10-10 20:53:17 -07:00
Matt Fiddaman
e37a42faf9 make import button reflect accurate number of transactions to be added (#3613) 2024-10-10 20:19:35 +01:00
Matt Fiddaman
9f279486ce save csv inOutMode settings (#3543) 2024-10-10 20:19:14 +01:00
Michael Clark
0b3155608c :electron: Migrations out of sync modal (#3600)
* add a modal to say client is wrong version, accept the risks to continue using

* user friendly error

* hooking parts up - untested

* changed approach

* release notes

* removing old comments

* cleanup old code

* feedback
2024-10-10 19:39:09 +01:00
Koen van Staveren
3301cfa2fd fix: import meta of non custom report widgets (#3626) 2024-10-10 18:46:25 +01:00
Matiss Janis Aboltins
23de23bd4e ♻️ (typescript) migrate parts of ImportTransactionModal to TS (#3570) 2024-10-09 22:40:38 +01:00
Matiss Janis Aboltins
79f640cbc0 show the 'import transactions' button even if accounts have banksync (#3615) 2024-10-09 22:36:42 +01:00
David Martos
f786bdcec3 Fix rules not checking "category is nothing" when reconciling (#3572)
* Fix rules not checking "category is nothing" when reconciling

* release notes

* Apply suggestions from code review

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-09 18:18:28 +01:00
Matiss Janis Aboltins
f3ae31055e ♻️ (typescript) migrated ManagePayees and LoadBackupModal files (#3507) 2024-10-09 18:04:36 +01:00
Travis Lesicka
21cb684b26 Update sidebar scrolling (#3554) 2024-10-09 18:03:46 +01:00
Matt Fiddaman
e455369443 Don't consider payees used in rules as orphaned (#3609)
* don't consider payees in rules as orphaned

* release note

* lint

* indentation

* ignore deleted rules
2024-10-09 16:44:37 +01:00
Koen van Staveren
6d122c898d test: csv import e2e tests (#3499)
* test: csv import e2e tests

* chore: release note

* chore: lint

* chore: remove .only

* fix: csv import e2e tests

there was an issue with css precedent which I don't understand why but this fixes this

* chore: release note

* fix: flakiness e2e test

* Update bin/run-vrt

* fix: flakiness e2e test

* chore: lint

* chore: fix merge

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-09 08:34:59 +01:00
Koen van Staveren
e6024f7a8b fix: csv import with less than 5 columns (#3605)
* fix: csv import with less than 5 columns

* chore: release note

* Apply suggestions from code review

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

* Update packages/desktop-client/src/components/modals/ImportTransactionsModal/FieldMappings.jsx

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-09 08:33:47 +01:00
Koen van Staveren
1485d9c871 refactor: fill in basic types in rules.ts (#3365)
* refactor: fill in basic types in rules.ts

* chore: release note

* chore: implement pr feedback

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-08 22:22:56 +01:00
Matiss Janis Aboltins
290c6f646f 🔖 (24.10.1) (#475)
* 🔖 (24.10.1)

* Upgrade app
2024-10-08 18:26:04 +01:00
Matiss Janis Aboltins
85b3c5714e 🔖 (24.10.1) fix synced prefs (#3596) 2024-10-08 18:02:07 +01:00
Koen van Staveren
ce4b80f499 feat(rules): templating actions (#3305)
* feat(rules): templating actions

* chore: update snapshots

* fix: date functions templating

* chore: lint

* fix: put action templating behind feature flag

* fix: template syntax checking

* test: handle bar functions

* chore: pr feedback

* feat: add `{{debug x}}` handler
2024-10-08 17:43:04 +01:00
Michael Clark
464d9878c6 :electron: Remove unneeded logger and add reload functionality (#3599)
* remove unneeded logger and add reload functionality

* release notes
2024-10-08 16:46:09 +01:00
wysinder
71c208e444 Fixes #2703 - Fixes inaccurate running balance when hiding reconciled transactions (#3603)
* Show accurate balances when hiding reconciled transactions.

* Linting

* Add release notes
2024-10-08 07:59:22 -07:00
Joel Jeremy Marquez
1dce3183e5 [Mobile] Allow updating existing transaction's account (#3549)
* [Mobile]  Allow updating existing transaction's account

* Release notes

* Update packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx

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

* Update packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx

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

* Update packages/desktop-client/src/components/mobile/transactions/TransactionEdit.jsx

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-10-08 07:57:03 -07:00
Tim
051c8a6ed0 remove package.tgz file (#3601) 2024-10-08 07:54:46 -07:00
Matiss Janis Aboltins
bdeb19424b (dashboards) making "all widget" button always visible (#3588) 2024-10-07 21:07:58 +01:00
Matiss Janis Aboltins
5369494925 (dashboards) ability to quick-edit widget names from inner report pages (#3587) 2024-10-07 21:07:22 +01:00
Vincenzo Di Biase
e653ad33a6 Fixes #3597 first day of week on calendar transaction (#3598)
* fix 3597 first day of week on calendar transactin

* added release note

* fixed release note filename
2024-10-07 12:20:19 -07:00
Michael Clark
a7b8d1251c :electron: Move file settings to the file management area (#3584)
* move settings to the file management area

* more settings

* giving users option to automatically move files when changing dir

* trueee

* updates

* does this fix the type issue

* weird

* translating

* release notes

* release notes

* a bit extra safety

* updating wording

* parameterising backup params

* text update

* parameterise vals

* add a notification to ensure the user knows the dir has changed

* pencil icon to save real estate

* ordering

* Rename 3500.md to 3584.md

* Update packages/desktop-client/src/components/manager/BudgetList.tsx

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-10-07 19:34:25 +01:00
Matiss Janis Aboltins
d5e0b7da5d (synced-prefs) preloading in redux state to improve perf (#3544) 2024-10-07 18:07:31 +01:00
Matt Fiddaman
279d545a28 fix size comparison workflow (#3594)
* fix size comparison workflow

* note
2024-10-07 17:37:08 +01:00
Matiss Janis Aboltins
0b6ea52d9b 🐛 (reports) fix reports page having empty blocks (#3566) 2024-10-07 08:33:53 +01:00
Matiss Janis Aboltins
38c5f89c41 ♻️ (typescript) migrated NetWorth component to TS (#3576) 2024-10-06 20:09:11 +01:00
Michael Clark
b774a3b216 :electron: Removing electron-is-dev dependency (#3580)
* removing is-dev dependency

* release notes

* release notes
2024-10-06 17:36:18 +01:00
Matiss Janis Aboltins
dc5d1174c7 ⬆️ upgrade some github actions (#3577) 2024-10-06 07:06:10 +01:00
Joel Jeremy Marquez
33a7524cd7 [Mobile] Fix budget list on mobile auto selecting a budget file under the Switch budget file menu (#3574)
* Fix budget list on mobile

* Releast notes
2024-10-05 08:31:25 -07:00
Joel Jeremy Marquez
0a0e26372b [Mobile] Update to Budgeted to match the column name in mobile budget table (#3573)
* Update to Budgeted to match the column name in mobile budget table

* Release notes

* VRT

* VRT
2024-10-05 08:30:45 -07:00
Joel Jeremy Marquez
a28fb93cec Mobile VRTs (#3506)
* More Mobile VRTs

* Mobile VRTs

* Fix mobile budget page

* Updated VRT

* VRT fix

* Update VRT

* [skip ci] Release notes

* Cleanup tests

* Fix VRT

* VRT

* Extend timeout

* Clean screenshots

* Updated VRT

* Category / group VRTs

* Mobile budget page menu VRT

* Updated VRT

* Prevous and next budget month tests

* Code Rabbit suggestions

* Feedback

* VRT

* Fix getSelectedMonth

* Fix selectedBudgetMonthButton locator

* Fix flaky tests

* Update VRT
2024-10-04 12:09:29 -07:00
Matiss Janis Aboltins
365da79783 ♻️ split ImportTransactionsModal into smaller component files (#3552) 2024-10-04 18:23:25 +01:00
Michael Clark
df92c80c27 :electron: Reduce electron package size (#3553)
* remove unneeded loot core ref and keeping better-sqlite external

* release notes

* putting the package config back

* cleaning up

* add missing db files

* updates

* window state updates
2024-10-04 17:16:24 +01:00
Austin Pearce
d0caf9f521 fix yearly schedule templates (#3511)
Co-authored-by: Austin Pearce <austin@apearce.dev>
2024-10-03 11:49:21 -07:00
Ali Gradina
3f85aedd0b Marked files for translation (#3444)
* marked files for translation

* added release note

* fixed linting warnings

* 🐛 fix account filters being overridden (#3441)

* :electron: Reduce package size  (#3443)

* reduce package size of all packages

* release notes

* Update beforePackHook.ts

* [Maintenance] Cleanup react aria packages and dedupe (#3450)

* Cleanup react aria packages and dedupe

* Release notes

* ♻️ (synced-prefs) moving the prefs from metadata.json to the db (#3423)

* :electron: Restart server silently when adding self signed cert and add some logs (#3431)

* restart server silently on add self signed cert and add some logging

* release notes

* fix name

* updating names to be more specific

* removing setloading

* feedback

* ♻️ (synced-prefs) move budget type to synced prefs (#3427)

* update synced account balance in db if available (#3452)

* 🐛 (synced-prefs) fix bulk-reading not working in import modal (#3460)

* fix: csv import deduplication (#3456)

*  release simplefin as a first-party feature (#3459)

Closes #2272

* Do not allow renaming to an empty category or group name (#3463)

* Do not allow renaming to an emoty category or group name

* Release notes

* [Mobile] Fix #3214 - Pull down to refresh triggering clicks on budget cells (#3374)

* Fix #3214

* Fix rollover indicator

* VRT

* Fix typecheck error

* VRT

* Release notes

* VRT

* Update style

* Fix budgeted

* VRT

* VRT

* Revert VRT

* VRT

* Fix style

* Revert usePreviewTransactions

* Fix error

* Fix reports form submit handlers (#3462)

* Fix form submit handlers

* Release notes

* :electron: Remove some old updater code (#3468)

* remove some old updater code

* remove old updater logic

* CSV import e2e tests (#3467)

* Fix React Aria Button hover styles  (#3453)

* Fiox hover styles and use className instead of inline to prepare for future css migration

* Release notes

* Cleanup

* Update edit rule hover style

* Undoable auto transfer notes + auto notes for cover (#3411)

* Undo auto transfer notes + auto notes for cover

* Release notes

* Fix notes

* Fix notes undo

* Do not show clicked category on transfer or cover menus

* Fix typecheck error

* typecheck

* Fix removeCategoriesFromGroups

* 🐛 (reports) deleting custom report should remove it from the dashboard (#3469)

* Revert "CSV import e2e tests (#3467)" (#3474)

This reverts commit 5e12d4013a.

* ♻️ (synced-prefs) separate metadata and local prefs out (#3458)

* :electron: Replace deprecated file protocol registration (#3475)

* replace deprecated file handler in electron

* release notes

* types eh

* types

* update sql regexp to default to empty string when field is null (#3480)

* ♻️ rename report/rollover budget to tracking/envelope (#3483)

* 🐛 (import) fix csv import checkboxes not working (#3478)

* Update tooltip and themes with better visibility (#3298)

* Update tooltip and themes with better visibility

* Rename merge request # into release notes

* rename release note

* update VRT

* tweak light theme

* dont put border on autocomplete menus

* update VRT

* tweak popover style

* simplify

* update VRT

* update VRT

---------

Co-authored-by: Dustin Conlon <dustin@dustinconlon.com>
Co-authored-by: Dustin Conlon <58367364+VoltaicGRiD@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>

* fix modals on mobile BudgetTable (#3487)

* Fix privacy filter (#3472)

* Fix privacy filter

* Release notes

* Coderabbit suggestion

* VRT

* VRT

* Revert VRT

* VRT

* VRT

* VRT

* VRT

* Delete VRT

* VRT

* Revert VRT

* 🐛 fix custom reports crashing when opening table (#3484)

* 🧪 (tests) adding custom report e2e tests (#3493)

*  (dashboards) ability to save filters & timeframes on spending widgets (#3432)

* marked files for translation

* Revert "🐛 fix account filters being overridden (#3441)"

This reverts commit 7336badffd.

* Revert "Revert "🐛 fix account filters being overridden (#3441)""

This reverts commit 5cbadc41bb.

* Revert changes due to failed rebase

* removed import of t

* fixed lint warning

* added PayeeTableRow.tsx

* needed changes

* bugfix: pluralization

* variables adjustments

* removed doubled trans

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
Co-authored-by: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com>
Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: Dustin Conlon <dustin@dustinconlon.com>
Co-authored-by: Dustin Conlon <58367364+VoltaicGRiD@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Tim <hello@timsmart.co>
2024-10-03 18:39:40 +01:00
Matiss Janis Aboltins
6658dc2197 🔖 (24.10.0) (#472)
* 🔖 (24.10.0)

* Remove used release notes

* Upgrade @actual-app/web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-03 18:27:34 +01:00
Matiss Janis Aboltins
9b7a79a01c 🔖 (24.10.0) (#3545) 2024-10-03 18:06:47 +01:00
Michael Clark
125510c981 🐛 Fix balance carryover arrow on Firefox (#3535)
* Update BalanceWithCarryover.tsx

* Create 3535.md
2024-10-02 15:55:01 +01:00
Matiss Janis Aboltins
f3385dafa2 🔧 update issue links to point to discord & main actual repo (#471) 2024-10-02 12:00:12 +01:00
Matiss Janis Aboltins
327887b87d 🐛 (import) fix qfx import crash if input is malformed file (#3541)
Closes #3519
2024-10-02 11:35:07 +01:00
Matiss Janis Aboltins
47ef916873 🐛 (bank-sync) fix initial sync - close modal stack, show loading indicators (#3540) 2024-10-02 11:32:29 +01:00
Matt Fiddaman
5064b06f2c fix creating rule from transaction (#3539)
* fix creating rule from transaction

* note
2024-10-02 10:27:34 +01:00
Mariana Moreira
73f2de1ea6 [WIP] Add "Banco ActivoBank" (PT) to list of banks with limited history (#449)
* Update bank-factory.js

Add "Banco ActivoBank" to list of banks with a limited history

* Update README.md

* Rename README.md to 449.md

* Update 449.md

* Remove two duplicate lines
2024-10-01 18:39:28 -04:00
Joel Jeremy Marquez
4df03984bd [e2e] Account page tests - wait for transaction table to be visible (#3530)
* Wait for transaction table to be visible

* Release notes
2024-09-30 15:25:44 -06:00
Joel Jeremy Marquez
92980ab55b Set theme-color at App level instead of per page (#3521)
* Set theme-color at App level instead of per page

* Release notes

* Fix lint error
2024-09-29 20:25:19 -07:00
Joel Jeremy Marquez
3b97d1eec7 [e2e stability] Check for data-theme before taking a screenshot (#3523)
* Check for data-theme before taking a screenshot

* Release notes

* Update playwright.config.js

* Fix error

* Updates VRT

* VRT

* Revert VRT

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-09-29 09:00:54 -06:00
Julian Dominguez-Schatz
545c8d5456 Fix regression in case sensitivity for is/matches operator (#3399)
* Fix regression in case sensitivity for `is`/`matches` operators

* Add test

* Add release notes

* Fix failing tests

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-09-28 12:38:42 -04:00
Ryan Bianchi
f79edf866a pass causes along in failed-to-load exceptions (#3525) 2024-09-28 17:01:42 +01:00
Yue Wu
83ea40dff9 fix: pushModal not dispatched in GoCardless linking (#3515)
* fix: pushModal not dispatched in GoCardless linking

* chore: add PR release note

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-09-28 16:26:50 +01:00
Matt Fiddaman
444ac83697 Fix electron build workflows for ubuntu-latest (#3526)
* add apt update to ubuntu-latest electron build workflows

* release note
2024-09-28 08:17:04 -07:00
youngcw
8f725c7911 Add goal info to the prewarm list (#3514)
* add goals to prewarm list

* add to tracking

* note

* note

* lint
2024-09-27 17:36:41 -07:00
Matiss Janis Aboltins
6725d56bb8 🧪 improving rules test e2e stability (#3512) 2024-09-27 08:03:42 +01:00
Matiss Janis Aboltins
666b7870b7 🧪 improve setting e2e test stability (#3513) 2024-09-27 08:03:25 +01:00
Henry Bley-Vroman
686ce5b504 Privacy mode: instead of blurring, use an illegible font (#3376) (#3377)
* Privacy mode: instead of blurring, use an illegible font (#3376)

* Privacy mode: no layout shift when switching mode

* fix(Spending): update for latest PrivacyFilter

* refactor(PrivacyFilter): use CSS :hover

* chore(PrivacyFilter): no privacy mode BudgetCell height regression...

https://github.com/actualbudget/actual/pull/3377?show_full=true#issuecomment-2357385371

* chore(GroupMonth): drop no-impact PrivacyFilter styles
2024-09-26 22:31:01 -07:00
youngcw
4373f4d8f9 Ignore deleted categories when running templates (#3510)
* don't look at deleted categories

* note
2024-09-26 08:14:13 -07:00
Ryan Bianchi
479572fadb add disable option for ToBudgetAmount popover when displaying modal (#3509)
* add disable option for popover when displaying modal

* add release note
2024-09-26 07:06:47 -07:00
Rubén Martínez Hostyn
0757f9d680 Add support for Bizum transactions in Revolut (#459)
* fix: rename proprietaryBank to proprietaryBankTransactionCode

* feat: Add support for RevolutRevolt21 Bizum transactions

* test: Add RevolutRevolt21 bizum transactions tests

* chore: Add upcoming release note

* fix: Add missing bookingDate to tests

* fix: sort everything alphabetically
2024-09-26 09:56:50 +01:00
DirgoSalga
835b6987a7 Add custom handler for the German bank Rheinhessen Sparkasse to the GoCardless app (#454)
* Add custom handler for the German bank Rheinhessen Sparkasse to the GoCardless app.

Following the guide and using the template added the code, similar to other handlers, that should match the transaction as seen in the logs when syncing my bank through Actual.

The only thing that had to be added was the notes about the transaction are stored under remittanceInformationStructured and not under remittanceInformationUnstructured.

Testing still pending.

* FIx linting errors and add release notes

Replaced the indentation from 4 spaces to 2, to fix linting error as recommended by the yarn test.

Added the release notes file 454.md.

* FIx linting errors (second try) and fix error in the release notes

* Fix linting errors

* Update src/app-gocardless/bank-factory.js

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

* Update src/app-gocardless/bank-factory.js

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

* Update src/app-gocardless/banks/spk_worms_alzey_ried_malade51wor.js

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

* Update upcoming-release-notes/454.md

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

* Rename file "spk-worms-alzey-ried-malade51wor.js"

* Remove functions normalizeAccount and CalculateStartingBalance

Since no changes were made to the default functions, they should be deleted from this specific bank (SPK_WORMS_ALZEY_RIED_MALADE51WOR).

* Correct linting error

Remove import of unsed variables.

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-09-26 08:38:46 +01:00
Joel Jeremy Marquez
6e627c4e2e Fix mobile balance modal colors (#3492)
* Fix mobile balance modal colors

* Release notes

* Update packages/desktop-client/src/components/budget/BalanceWithCarryover.tsx

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

* Disable balance tooltip for mobile

* Fix lint error

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-09-25 21:02:42 -07:00
Ryan Bianchi
0f41e95952 Fix Issue 3331, sort favorite payees before other frequently used payees (#3412)
* add tests for payee dropdown bug on new transactions on all accounts page

* add tests for bugfixes

* sort favorite payees first, add tests for PayeeAutocomplete.getPayeeSuggestions

* lint and release notes

* fix release note number

* lint fixes

* add missing file in previous lint fix

* fix typecheck and linting errors

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-09-25 15:40:07 -07:00
Matt Fiddaman
2e70c11c74 Fix AccountNotLinedToRequisition Error typo (#465)
* fix GCL AccountNotLinedToRequisition typo

* release note
2024-09-25 23:03:46 +01:00
Tim
7e889300ef Add UncategorizedButton to mobile budget view (#3326) 2024-09-25 14:39:24 -07:00
Matiss Janis Aboltins
c497d3a941 🧪 improve onboarding e2e test stability (#3503) 2024-09-25 21:56:44 +01:00
Tim Quelch
fe17c6ba75 Forcibly reload app from server when API is redirected (#3286)
* Add advanced setting to reload app from server

* Add change notes

* Automatically reload when API call is redirected

* Error on redirect so we don't use the response

* Remove setting to reload

* Update release notes

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-09-25 13:41:52 -07:00
Junyuan Zheng
3a9a929f56 Fix issue #3252 remove extra space from category name (#3495)
* Fix issue #3252 remove extra space from category name

* add md file

* rename
2024-09-25 13:35:37 -07:00
Koen van Staveren
88a7432975 fix: vrt:docker with git-bash (#3497)
* fix: vrt:docker with git-bash

* chore: release note
2024-09-25 20:56:32 +01:00
Jonathan Fang
373dfb0465 Update README.md to fix typo (#3501)
* Update README.md to fix typo

Typo "Actual budget" to "Actual Budget"

* Create 3501

* Rename 3501 to 3501.md

* Update 3501.md
2024-09-25 14:08:44 +01:00
Neil
80a7a9873a SpendingReport: Fixing some display issues (#3451)
* work

* notes

* merge fixes

* legenditem

* VRT fixes
2024-09-25 12:08:43 +01:00
Matiss Janis Aboltins
9c2bb9b3de 🧪 improving rules e2e test stability (#3498) 2024-09-24 21:07:15 +01:00
Joel Jeremy Marquez
2acf996430 Fix mobile page header buttons (#3491)
* Fix button2 styles

* Create 3491.md

* VRT

* Revert VRT

* Put pressed css on Page component

* Remove data-pressed

* Fix lint errors

* [chore] Update README

* Remove Icon
2024-09-24 13:02:49 -07:00
Matiss Janis Aboltins
f3451bfc2e (dashboards) ability to save filters & timeframes on spending widgets (#3432) 2024-09-24 08:03:04 +01:00
Matiss Janis Aboltins
48cdffbc03 🧪 (tests) adding custom report e2e tests (#3493) 2024-09-23 22:10:46 +01:00
Matiss Janis Aboltins
37d201b6fb 🐛 fix custom reports crashing when opening table (#3484) 2024-09-23 21:10:07 +01:00
Joel Jeremy Marquez
d1ecb3db44 Fix privacy filter (#3472)
* Fix privacy filter

* Release notes

* Coderabbit suggestion

* VRT

* VRT

* Revert VRT

* VRT

* VRT

* VRT

* VRT

* Delete VRT

* VRT

* Revert VRT
2024-09-23 10:22:05 -07:00
Tim
90e2fe60d1 fix modals on mobile BudgetTable (#3487) 2024-09-23 18:15:49 +01:00
Robert Dyer
09e3721036 Update tooltip and themes with better visibility (#3298)
* Update tooltip and themes with better visibility

* Rename merge request # into release notes

* rename release note

* update VRT

* tweak light theme

* dont put border on autocomplete menus

* update VRT

* tweak popover style

* simplify

* update VRT

* update VRT

---------

Co-authored-by: Dustin Conlon <dustin@dustinconlon.com>
Co-authored-by: Dustin Conlon <58367364+VoltaicGRiD@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-09-22 13:01:30 -07:00
Matiss Janis Aboltins
6354598d48 🐛 (import) fix csv import checkboxes not working (#3478) 2024-09-22 20:30:59 +01:00
Matiss Janis Aboltins
55df377a20 ♻️ rename report/rollover budget to tracking/envelope (#3483) 2024-09-22 20:30:44 +01:00
dependabot[bot]
c01e229bd7 build(deps): bump express from 4.19.2 to 4.20.0 (#457)
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.20.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.20.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-22 20:04:52 +01:00
dependabot[bot]
e8ff02b2e7 build(deps): bump body-parser from 1.20.2 to 1.20.3 (#458)
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-22 19:46:10 +01:00
Ryan Bianchi
634508a3bc update sql regexp to default to empty string when field is null (#3480) 2024-09-22 18:11:20 +01:00
Rubén Martínez Hostyn
b1c8b3d689 fix: Update upcoming-release-notes link (#460) 2024-09-22 17:36:34 +01:00
Michael Clark
ec55e8dc9a :electron: Replace deprecated file protocol registration (#3475)
* replace deprecated file handler in electron

* release notes

* types eh

* types
2024-09-21 17:19:10 +01:00
Matiss Janis Aboltins
a1bc66b10a ♻️ (synced-prefs) separate metadata and local prefs out (#3458) 2024-09-20 20:01:51 +01:00
Matiss Janis Aboltins
4485a631cd Revert "CSV import e2e tests (#3467)" (#3474)
This reverts commit 5e12d4013a.
2024-09-20 19:48:10 +01:00
Matiss Janis Aboltins
25a4041958 🐛 (reports) deleting custom report should remove it from the dashboard (#3469) 2024-09-20 08:11:20 +01:00
Joel Jeremy Marquez
e6bf6da381 Undoable auto transfer notes + auto notes for cover (#3411)
* Undo auto transfer notes + auto notes for cover

* Release notes

* Fix notes

* Fix notes undo

* Do not show clicked category on transfer or cover menus

* Fix typecheck error

* typecheck

* Fix removeCategoriesFromGroups
2024-09-19 16:13:19 -07:00
Joel Jeremy Marquez
e507b8ff43 Fix React Aria Button hover styles (#3453)
* Fiox hover styles and use className instead of inline to prepare for future css migration

* Release notes

* Cleanup

* Update edit rule hover style
2024-09-19 16:12:57 -07:00
Koen van Staveren
5e12d4013a CSV import e2e tests (#3467) 2024-09-19 21:33:51 +01:00
Michael Clark
84af8b76be :electron: Remove some old updater code (#3468)
* remove some old updater code

* remove old updater logic
2024-09-19 09:16:50 +01:00
Joel Jeremy Marquez
b3669b3001 Fix reports form submit handlers (#3462)
* Fix form submit handlers

* Release notes
2024-09-18 06:29:06 -07:00
Joel Jeremy Marquez
6f41b20caf [Mobile] Fix #3214 - Pull down to refresh triggering clicks on budget cells (#3374)
* Fix #3214

* Fix rollover indicator

* VRT

* Fix typecheck error

* VRT

* Release notes

* VRT

* Update style

* Fix budgeted

* VRT

* VRT

* Revert VRT

* VRT

* Fix style

* Revert usePreviewTransactions

* Fix error
2024-09-18 06:28:37 -07:00
Joel Jeremy Marquez
37d391b4fc Do not allow renaming to an empty category or group name (#3463)
* Do not allow renaming to an emoty category or group name

* Release notes
2024-09-18 06:27:47 -07:00
Matiss Janis Aboltins
7702ee4f4f release simplefin as a first-party feature (#3459)
Closes #2272
2024-09-18 08:58:42 +01:00
Koen van Staveren
d0ba623cfa fix: csv import deduplication (#3456) 2024-09-18 08:56:54 +01:00
Matiss Janis Aboltins
ea675f11ee 🐛 (synced-prefs) fix bulk-reading not working in import modal (#3460) 2024-09-18 08:03:53 +01:00
Martin Michotte
7b314e3b25 fix: Wrong payeeName used for CBC_CREGBEBB (#451) 2024-09-17 21:12:22 +01:00
mezger6
f78383be29 Fix pending transaction amount sign and payee name for National Bank of Greece import (#448)
* fixed pending transaction amount sign and payeeName for NBG bank import

* added release note

---------

Co-authored-by: Stefanos Chatzimichelakis <s.chatzimichelakis@iccs.gr>
2024-09-17 21:12:12 +01:00
Matt Fiddaman
17fd06894a update synced account balance in db if available (#3452) 2024-09-17 21:10:52 +01:00
Matiss Janis Aboltins
4e6a3bbace ♻️ (synced-prefs) move budget type to synced prefs (#3427) 2024-09-17 20:21:06 +01:00
Michael Clark
3743a328e3 :electron: Restart server silently when adding self signed cert and add some logs (#3431)
* restart server silently on add self signed cert and add some logging

* release notes

* fix name

* updating names to be more specific

* removing setloading

* feedback
2024-09-17 08:59:33 +01:00
Matiss Janis Aboltins
6c87d85920 ♻️ (synced-prefs) moving the prefs from metadata.json to the db (#3423) 2024-09-17 07:59:26 +01:00
Joel Jeremy Marquez
5b685ecc64 [Maintenance] Cleanup react aria packages and dedupe (#3450)
* Cleanup react aria packages and dedupe

* Release notes
2024-09-16 13:07:52 -07:00
Matt Fiddaman
9ea7bd255a add support for ABANCA_CAGLPTPL payee name (#455) 2024-09-16 20:18:31 +01:00
Michael Clark
ae01066fe2 :electron: Reduce package size (#3443)
* reduce package size of all packages

* release notes

* Update beforePackHook.ts
2024-09-16 19:12:25 +01:00
Matiss Janis Aboltins
fefd1be22c 🐛 fix account filters being overridden (#3441) 2024-09-16 18:52:55 +01:00
Joel Jeremy Marquez
bdbf6e9ca6 [Maintenance] Reduce budget table re-renders (#3448)
* Reduce budget table re-renders

* Release notes
2024-09-15 15:10:52 -07:00
Ali Gradina
c5193b6d43 Marked files for translation (#3430) 2024-09-14 21:41:10 +01:00
Matiss Janis Aboltins
183c4b25a9 (dashboards) ability to save cash-flow report filters/date-range (#3417) 2024-09-13 19:40:10 +01:00
Ali Gradina
933804e836 Translation for IncomeHeader, BalanceMenu & BudgetMenu .tsx (#3426) 2024-09-13 18:25:57 +01:00
NickFR
0a59f793bf Translation: desktop-client/src/components/budget/BalanceWithCarryover.tsx (#3352) 2024-09-13 18:07:00 +01:00
Ali Gradina
cfa9ac09d7 Translation for MonthCountSelector, index, SidebarCategory & SidebarGroup Component (#3363) 2024-09-12 20:13:31 +01:00
molnarti
fe8532578d Update bank-factory.js (#452) 2024-09-12 19:27:39 +01:00
Joel Jeremy Marquez
420aad0878 Final PR for react-aria-components Modal migration (#3413)
* Final PR for react-aria-components Modal migration

* Complete manager modals migration

* Release notes

* fix lint

* Apps full height

* Fix lint error

* VRT

* Centralize providers

* Feedback
2024-09-11 11:42:11 -07:00
Neil
16944a6140 Spending Report: Header update (#3380)
* adjust header

* notes

* typecheck fixes

* fix bugs and UI changes

* fix error for invalid time

* change budget button wording

* fix some visual issues
2024-09-11 10:58:59 +01:00
Matiss Janis Aboltins
b2d7b65ce9 ♻️ (synced-prefs) moving budgetType pref back to MetadataPrefs (#3410)
* ♻️ (synced-prefs) moving budgetType pref back to MetadataPrefs (temporary)

* Release notes
2024-09-10 21:29:51 +01:00
Joel Jeremy Marquez
8c8c248ef7 [React Aria Button] Filter buttons (#3401)
* vrt

* Fix account menu test

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* VRT

* VRT

* React Aria Button - All except filters and autocomplete

* Fix typecheck errors

* Fix typecheck error

* Update

* Fix typecheck error

* Fix border

* VRT

* Revert MobileForms and TransactionEdit

* VRT

* VRT

* Revert VRT

* React Aria Button - Filter buttons

* Release notes

* Revert CoverModal and TransferModal
2024-09-10 13:09:32 -07:00
Michael Clark
6e8cdb30e8 :electron: Adding retries in to the file system writes (#3406)
* hardening the file system access by added retrys

* release notees

* remove unneeded console log

* promise-retry instead of my own

* tiny bit more info

* capital U
2024-09-09 22:10:07 +01:00
Joel Jeremy Marquez
3985d2549e [React Aria Button] All remaining components except filters, mobile transaction edit, and autocomplete (#3163)
* vrt

* Fix account menu test

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* VRT

* VRT

* React Aria Button - All except filters and autocomplete

* Release notes

* Fix typecheck errors

* Fix typecheck error

* Fix button links

* Update

* Fix typecheck error

* Fix link button variant

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error

* Fix border

* Fix mobile accounts page

* VRT

* Fix playwright config

* Revert MobileForms and TransactionEdit

* VRT

* Remove borderRadius

* Fix add account button

* VRT

* Revert VRT

* Fix tests

* Fix Cover and Transfer modals

* Fix lint error
2024-09-09 12:53:28 -07:00
Matiss Janis Aboltins
68a2af0248 (dashboards) ability to save net-worth widget details (#3364) 2024-09-09 20:38:33 +01:00
Matiss Janis Aboltins
7231959f81 ♻️ (synced-prefs) refactor ImportedTransactions usage of prefs (#3408) 2024-09-09 19:18:55 +01:00
Matiss Janis Aboltins
8498d7f788 ♻️ (synced-prefs) refactor number formatter away from redux (#3397) 2024-09-09 08:04:41 +01:00
Julian Dominguez-Schatz
d752389710 Update splash background to match theming (#3400)
* Update splash background to match theming

* Add release notes
2024-09-08 21:01:23 -04:00
Matiss Janis Aboltins
95ed7aaf27 ♻️ (synced-prefs) refactor some SyncedPrefs to string type (#3395) 2024-09-08 21:42:34 +01:00
Michael Clark
21dc573f3f 🔧 Prevent metadata.json update if the sync time value is the same (#3398)
* prevent metadata.json update if the sync time value is the same as the saved one

* release notes
2024-09-08 20:28:53 +01:00
Julian Dominguez-Schatz
cb0411b180 Convert RecurringSchedulePicker.jsx -> RecurringSchedulePicker.tsx (#3396)
* Supporting types

* Move `RecurringSchedulePicker.jsx` -> `RecurringSchedulePicker.tsx`

* Add release notes
2024-09-08 15:20:03 -04:00
David Martos
41b12151f6 Fix BancSabadell payee name based on the transaction amount (#445)
* Fix BancSabadell creditor and debtor names

* release notes
2024-09-08 19:45:17 +01:00
Julian Dominguez-Schatz
62dbe3acf5 Refine Menu/Select types to allow broader types for the value/name attribute (#3391)
* Refine `Menu`/`Select` types to allow arbitrary value types

* Add release notes
2024-09-08 13:16:50 -04:00
Michael Clark
bbff543768 🔧 Remove unneeded console log (#3394)
* remove unneeded console log

* release notes
2024-09-08 16:32:25 +01:00
Michael Clark
008a8a78b9 🔧 Prevent sidebar from saving to metadata until resize is complete (#3393)
* prevent sidebar from saving to metadata until resize is complete

* add release notes
2024-09-08 12:49:03 +01:00
Tim
c466189007 set html theme-color to match the webmanifest (#3332) 2024-09-07 20:12:53 +01:00
Tim
b856c4874e add option to select dark theme for "System default" (#3325)
* add option to select dark theme for "System default"

* add release notes

* fix release notes

* update visual tests
2024-09-07 20:08:04 +01:00
Michael Clark
407e3143eb :electron: Prevent keyboard shortcuts modal when entering shortcut into editable field (#3389)
* check input element is focused on before triggering keyboard shortcuts modal

* release notes

* remove comment
2024-09-07 19:04:53 +01:00
Robert Dyer
d60e7501cc Sync multiple accounts in a single SimpleFIN API call. (#384) 2024-09-07 10:33:17 +01:00
Neil
ac90eb21a6 Report Header: fix validateStart bug (#3379)
* day to month

* notes
2024-09-07 07:17:38 +01:00
Joel Jeremy Marquez
61bffa3d31 Auto notes when transferring budgets (#3119)
* Add expense category budget notes that resets every month + auto notes when transferring budgets

* Remove unused import

* Release notes

* VRT

* Fix typecheck error

* Rename

* Fix typecheck error

* Fix category name

* Update to notes to reassigned

* Append auto transfer notes to month notes

* Update release notes

* VRT

* VRT

* Fix lint error
2024-09-05 18:59:13 -07:00
NickFR
fca1bccda3 [WIP] Translation: desktop-client/src/components/budget/BudgetTotals.tsx (#3367)
* i18 translation

* realease note

* translate 'arial-label' text

* translate 'text'

* fixing 'text' translation

* <Trans> component for HTML tag

* Lint

---------

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2024-09-05 19:00:53 -04:00
Tim
8e6fb4c64f enhance mobile header links (#3344)
* enhance mobile header links

- change underlinedText style to use borderBottom
- disable text selection

* update vrt
2024-09-05 21:22:32 +01:00
Joel Jeremy Marquez
5229fe7d16 [Mobile] Budget page actions undo notifications (#3085)
* Mobile transaction long press

* Fix typecheck error

* Use react-aria useLongPress

* Category transactions batch updates

* Remove undo notification title

* Fix types

* Fix notes undo notification

* Move SelectedProvider to TransactionListWithBalances

* Notification inset + reuse useTransactionBatchActions

* Allow clicking action bar when notifications are present

* VRT

* VRT

* VRT

* VRT

* Show undo notification on budget page when applying budget actions/goal templates

* Release notes

* Transfer and cover undo notification

* More budget actions undo
2024-09-05 09:42:41 -07:00
Matiss Janis Aboltins
bc04a8cbec ♻️ (typescript) migrate reconcile file to TS (#3355) 2024-09-04 20:15:27 +01:00
Koen van Staveren
0a34ede61a fix: typescript rschedule types (#3361)
* fix: typescript rschedule types

* chore: release note
2024-09-04 12:56:21 -04:00
Matt Fiddaman
8a4a9ba083 fix incorrect hook usage in #3277 (#3356)
* fix incorrect hook usage in #3277

* release note
2024-09-03 21:25:46 +01:00
Matiss Janis Aboltins
61f5dcfd02 (dashboards) text widget (#3288) 2024-09-03 20:42:33 +01:00
Matiss Janis Aboltins
5cfa2cf577 ♻️ (typescript) moving account component to TS (#3311) 2024-09-03 19:35:02 +01:00
Robert Dyer
3f8963273b Translation: desktop-client/components/schedules (#3313)
* Translation: desktop-client/components/schedules

* add release note

* better handling of plural

* clean plural use

* add review suggestions

* more review suggestions

* change to t() syntax

* use basic list format

* eslint no longer needs disabled

* Fix interpolation of payees list.

Co-authored-by: Julian Dominguez-Schatz <jfdoming@uwaterloo.ca>

* fix linter

* fix typecheck

* tighten the types

* move to hook

* memoize the hook

---------

Co-authored-by: Julian Dominguez-Schatz <jfdoming@uwaterloo.ca>
2024-09-03 19:23:15 +01:00
Matt Fiddaman
1aa65946c2 🌍 add translations for desktop-client/components/accounts (#3277)
* add translations for `desktop-client/components/accounts`

* release note

* fix lint

* fix quotes

* feedback

* Update 3277.md
2024-09-03 19:20:55 +01:00
dependabot[bot]
0760583359 build(deps): bump micromatch from 4.0.7 to 4.0.8 (#447)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-03 18:39:42 +01:00
Matiss Janis Aboltins
a757ba6bdc 🔖 (24.9.0) (#444)
* 🔖 (24.9.0)

* Remove used release notes

* Upgrade actual-web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-03 18:21:51 +01:00
Matiss Janis Aboltins
44375e72ad 🔖 (24.9.0) (#3348) 2024-09-03 18:02:45 +01:00
Michael Clark
6454c10e63 🐛 Fix tooltip when using touch devices (#3342)
* fix tooltip when using touch devices

* release notes
2024-09-02 17:23:22 +01:00
Arnaud Weyts
7a018e09a9 Fix wrong payeeName used for KBC_KREDBEBB (#442) 2024-09-02 13:32:03 +01:00
Matiss Janis Aboltins
2a9546ced1 🐛 fix reconciliation closing on enter click (#3338) 2024-09-01 20:08:19 +01:00
Matiss Janis Aboltins
8926ff69b1 🐛 fix long payee name overflow (#3340) 2024-09-01 18:26:57 +01:00
Matiss Janis Aboltins
340169bfb6 🐛 fix schedules modal closing when selecting link transactions (#3337) 2024-09-01 18:26:41 +01:00
Tim
3a905d3f9a [WIP] fix toggleSpentColumn being called on every render (#3333)
* fix toggleSpentColumn being called on every render

* release notes
2024-08-31 20:10:02 +01:00
hsk-dk
c4d01fe63f Update bank-factory.js (#441)
* Update bank-factory.js

Added NORDEA_NDEADKKK (Nordea Personal Denmark) to the list BANKS_WITH_LIMITED_HISTORY

* Create 340.md

* Rename 340.md to 440.md

* Rename 440.md to 441.md
2024-08-31 20:09:56 +01:00
Ryan Bianchi
7738ea0c00 Fix suggested payee issues #3317 #3316 (#3318) 2024-08-30 19:04:50 +01:00
Rubén Martínez Hostyn
446f40714d Prevent account fallback if name is defined in formatPayeeName (#429)
* Prevent account fallback if name is defined

* Update realease-notes

* Add comment
2024-08-29 22:10:55 +01:00
Rubén Martínez Hostyn
3b26aa05b5 Fallback creditorName to remittanceInformationUnstructured in BANKINTER_BKBKESMM (#428)
* fallback creditorName to remittanceInformationUnstructured

* Update release-notes
2024-08-29 21:45:09 +01:00
Michael Clark
8e077e0282 :electron: Desktop app to work with self signed certificates (#3308)
* solves the problem but creates a vulnerability

* sake...

* working but need to specify rootca.pem

* works

* being flexible on the cert names, as long as its a crt or pem

* remove console logs

* initial setup for adding cert

* caps

* comments

* fix ts strict

* rewrote it

* release notes

* remove unneeded

* https no polyfill

* removing the cert reference if it is not found

* moving full stop
2024-08-28 21:39:14 +01:00
Matiss Janis Aboltins
ae608f0cb8 🐛 (dashboards) add back spending report if dashboards feature is not enabled (#3323) 2024-08-28 21:02:47 +01:00
Matiss Janis Aboltins
f1c0d0b8a6 🐛 fix 's' hotkey not working in transaction table (#3324) 2024-08-28 20:21:24 +01:00
Matt Fiddaman
d613a6be6e 🧹 optimise GoCardless bank sync to use fewer api calls (#436)
* don't fetch balance from gocardless unless it's needed

* release note

* refactor into common function

* Update src/app-gocardless/app-gocardless.js

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

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-08-26 11:03:59 +01:00
Matt Fiddaman
d9adb750d4 🧹 optimise GoCardless bank sync to use fewer api calls (#3279)
* optimise

* lint

* release note

* psybers feedback
2024-08-26 11:03:57 +01:00
Matt Fiddaman
2b37d5a642 fix gocardless error handling (#439)
* fix gocardless error handling

* release note

* remove redundant tests

* tcrasset feedback
2024-08-25 17:53:16 +01:00
lelemm
1750cd9081 Filter fix when alternating all <-> any (#3278) 2024-08-24 09:49:36 +01:00
lelemm
7769d0303e "has tags" filter (#3290)
* new tag filter

* fixes

* release notes

* fixes for the rules modal

* more fixes

* linter

* visual regression fixes

* review suggestions

* missing this change
2024-08-23 08:21:09 -07:00
Tom Crasset
6a41d28404 add logging middleware (#434) 2024-08-22 18:57:25 +01:00
Michael Clark
9108b63355 :electron: Notarize the mac desktop app (#3300)
* adding notarization stuff back in

* win csc settings so win build doesnt try to sign with mac stuff

* windows doesnt need to know about mac build

* teamid env var instead of config val as per docs

* for testing purposes only

* probably wont work

* yet, didnt work

* try this

* update notarize

* removing test code

* add release notes
2024-08-22 17:43:51 +01:00
Robert Dyer
1b70e59bde Apply regular expression conditions to imported transactions. (#3287) 2024-08-22 17:25:16 +01:00
Robert Dyer
b48d256ec4 Translation: desktop-client/components/sidebar (#3302) 2024-08-22 17:23:23 +01:00
Robert Dyer
9c0e6a307b Translation: desktop-client/components/reports/graphs (#3299) 2024-08-21 20:41:25 +01:00
Michael Clark
3e5ce72e27 :electron: Packaging different architectures and installers for windows (#3185)
* packaging different architectures for windows

* appx for the windows store app hosting

* remove unneeded applicationid

* adding windows store assets

* adding images

* appx added to artifacts

* add appx to release

* remove override build params

* being specific about the mac build - default is dmg

* are these all needed.. Seems so

* removing appx from the release notes as its only for the windows store

* moving appxs to a different artifact for smaller download

* Update electron-pr.yml

* update version

* update release process to remove actual-windows.exe because it can possible be the wrong arch
2024-08-20 12:01:36 -07:00
Matiss Janis Aboltins
b347f03fbb (dashboards) ability to rename all widgets (#3284) 2024-08-20 17:25:18 +01:00
Matiss Janis Aboltins
f3660c166f ⬆️ upgrade typescript, eslint, prettier (#3289) 2024-08-20 17:18:54 +01:00
Robert Dyer
aaf96bbc2c Better debug logs for bank sync errors. (#3296)
* Better debug logs for bank sync errors.

* add release note

* force CI update
2024-08-20 07:44:35 -07:00
Crazypkr1099
6d84b0e371 Fix wrong month on spending card (#3295)
* Create 2881.md

* Fix spending card reading wrong month

* Revert "Create 2881.md"

This reverts commit de26f690e8.

* Create 3295.md
2024-08-20 07:38:01 -07:00
Matiss Janis Aboltins
db4b504e53 typescript: migrate cards from jsx to tsx (#3285) 2024-08-19 18:07:20 +01:00
Matt Fiddaman
8d4dbbf5f2 🧹 remove unused accountMetadata GoCardless API call on sync (#435) 2024-08-19 01:01:34 +01:00
Tom Crasset
b8d2797259 Add integration tests for remaining app-sync.js endpoints% (#425) 2024-08-18 21:11:01 +01:00
Matiss Janis Aboltins
d6afc85a8c adding feedback links besides the feature flags (#3283) 2024-08-18 11:17:42 +01:00
Julian Dominguez-Schatz
ee21155d1a Display splits in previews (#2923)
* Display splits in mobile previews

* Display splits in desktop previews

* UI fix: hide checkboxes on preview child transactions

* UI fix: show notes on preview transactions

* Add release notes

* Update vrt for mobile padding fix

* Fix status display

* Collapse split previews by default

* PR feedback: fix issues with split payee

* Update new VRT with spacing from this PR
2024-08-17 16:30:27 -04:00
Robert Dyer
65a7c58441 Translation: desktop-client/components/budget/report (#3280) 2024-08-17 18:33:03 +01:00
Matiss Janis Aboltins
51ec600de2 customizable reports homepage - drag-able and resizable widgets (#3231) 2024-08-17 17:53:35 +01:00
Matt Fiddaman
8201085ccb fix payee name selection based on the amount (#427)
* fix payee name selection based on the amount

* release note

* fix unnecessary check, trans.amount is never set
2024-08-17 16:05:13 +01:00
Tom Crasset
c16a8faa3f add integration tests for the /sync endpoint (#423) 2024-08-17 15:21:03 +01:00
Matt Fiddaman
4ce7f55e0c add stale workflow update from actual (#430) 2024-08-17 12:34:40 +01:00
dependabot[bot]
574448ff3b build(deps): bump axios from 1.7.2 to 1.7.4 (#424)
Bumps [axios](https://github.com/axios/axios) from 1.7.2 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.2...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-17 12:28:20 +01:00
Robert Dyer
af5fd5b3ef Translation: desktop-client/components/autocomplete (#3275) 2024-08-17 11:44:37 +01:00
Tom Crasset
7fcda084ab refactor user validation into middleware (#422) 2024-08-16 21:41:22 +01:00
wdpk
eccdc52342 feat: [localization] Update README to mention weblate (#3271)
* weblate mention in readme

part of terms for libre plan

* Create 3271.md

* add link to internationalization section of documentation
2024-08-16 19:47:54 +01:00
Robert Dyer
4c192d7e1e Translation: desktop-client/components/filters (#3270)
* Translation: desktop-client/components/filters

* add release note

* fix linter

* add missing t definition
2024-08-16 13:35:57 +01:00
Tom Crasset
baf04a4d48 [Maintenance] improve testing utils and add delete-user-file test (#421)
* improve testing utils and add delete-user-file test

* remove linting errors

* add release notes

* match npm scripts naming style

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

* add raw middleware for /sync

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-08-15 17:52:39 +01:00
Matt Fiddaman
f715ceafc9 hide target category from cover overspending list (#3115)
* hide target category from cover overspending list

* release note

* suggestions from joel-jeremy

* useMemo and better types

* add change to mobile

* fix build

* fix mobile
2024-08-15 14:40:20 +01:00
Robert Dyer
af73dcd722 Add rule actions to prepend/append to transaction notes. (#3215)
* Add rule action to append to transaction notes.

* add release note

* support prepending

* fix linter

* update release note

* fix typecheck error

* update VRT test code

* revising VRT code

* select by row

* fix missing delete button

* fix VRT tests

* fix linter

* empty commit for CI

* avoid 'undefined' appearing in notes

* fix linter
2024-08-15 14:36:44 +01:00
Robert Dyer
5e3485a8e2 Automatically focus inputs, or the primary button, in modals. (#2974)
* Automatically focus inputs, or the primary button, in modals.

* Set focus on more modals.

* focus mobile transaction edits

* add release note

* fix linter

* fix linter
2024-08-15 14:36:09 +01:00
Julian Dominguez-Schatz
1458dbc307 Support type-checking on spreadsheet fields (part 3—last part) (#3097)
* Add report budget typing

* Remove default `any` types

* Add release notes

* Fix lint

* Attempt to fix unrelated test error

* fix: changed type name

* More correct types

* fix types
2024-08-15 08:32:41 -04:00
sarfios20
a879960a2d Add SANTANDER_BSCHESMM to banks with limited history (#418) 2024-08-15 08:44:37 +01:00
Stefan Wilkes
9ac77af077 Added configuration to CSV importer that allows to skip lines (#3234)
* Added configuration to CSV importer that allows to skip lines

* Fixed several type / parser check when import is executed with a different CSV structure on accounts with transactions

* Fixed linter warning

* Reverted changes on sync.ts as initial error is not occuring anymore.
This will also fix the tests again

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-08-14 22:16:33 +01:00
Neil
3e07d18acd Update ModeButton.tsx (#3257)
* Update ModeButton.tsx

* Update upcoming-release-notes

* Update 3257.md

* Update ModeButton.tsx
2024-08-14 21:45:59 +01:00
Matiss Janis Aboltins
fa6cc26416 ♻️ cleanup iterableTopologicalSort feature flag (#3262) 2024-08-14 19:42:04 +01:00
Robert Dyer
a1ca871b24 Allow escaping tags with double ##. (#3246)
* Allow escaping tags with double ##.

* add release note

* convert '#' to '##' in bank sync-generated notes
2024-08-14 18:40:06 +01:00
Julian Dominguez-Schatz
d9066a49c4 Remove some any types from the API (#3238)
* Remove some `any` types from the API

* Add release notes

* No backwards-incompatible changes

* Update tests to reflect API changes

* PR feedback: standardize on id for deletes

* PR feedback: restore partial updates
2024-08-14 13:28:09 -04:00
Julian Dominguez-Schatz
63ad6dadf2 fix(mobile): show category for on-to-off-budget transfers (#3258)
* fix(mobile): show category for on-to-off-budget transfers

* Add release notes
2024-08-14 13:27:34 -04:00
Michael Clark
89b096aa65 :electron: Fix export on mac (#3250)
* fix export on mac

* add release notes
2024-08-14 13:38:57 +01:00
Eirik Reksten
ee0156d35d 3211: Fix broken transaction import on new accounts (#3251)
* 3211: Added check for string before matching any object.

* Release notes for 3251.

* Fix release notes authors.
2024-08-14 10:13:07 +01:00
Alex Walker
9c17d55e0d Extract out note template logic from goaltemplates.ts, refactor and add unit tests (#3221)
Signed-off-by: Alex Walker <walker.c.alex@gmail.com>
2024-08-13 06:15:51 -07:00
Julian Dominguez-Schatz
411a6791b2 Fix transfer category in temporary transactions (#3239)
* Fix transfer category in temporary transactions

* Add visual regression tests to prevent this issue in the future

* Add release notes
2024-08-12 21:33:21 -04:00
Michael Clark
6f3af7b609 :electron: Fix "Unknown problem opening <local actual file>" on Electron (#3220)
* add electron logging to main browser process console

* add logging

* removing old way

* release notes

* adding some logs in to test mac build

* repent satan

* i caste yeee oooott sinner

* derp

* hmmm<

* forcing nodegyprebuild

* not like this.... Not like this... 😢

* hmm

* dunno

* will it recognise it if i link it manually.. 👀

* give up

* rebuild

* merge asars fasle

* update package

* manually do it ffs work damnit

* remove the cmd

* dont rebuild cause i build it manually

* dafuq is this, two bettersqlite modules installed huhhhhh

* test

* does this work?

* bloody hell

* couple more logs

* test this out

* arch in name

* adding the rebuild step back into first build

* try rebuild before pack - so we know what arch we need

* having a laugh

* tidying up

* release notes

* move package up a bit

* exit process if no electron verison
2024-08-12 22:50:48 +01:00
Joel Jeremy Marquez
43ff1c033e [React Aria Button] Reports page buttons (#3159)
* More components to use react aria Button

* vrt

* Fix account menu test

* vrt

* vrt

* VRT

* VRT

* React Aria Button - Reports page

* Release notes

* Fix typecheck error

* Fix typecheck error + VRT (Create new custom report button got slightly bigger)

* Fix payee icon color
2024-08-12 13:53:58 -07:00
Joel Jeremy Marquez
09c44d351d [Mobile] Long press transaction to reveal floating action bar with bulk actions (#2892)
* Mobile transaction long press

* Floating action bar

* Styling

* Add functionality

* Fix typecheck error

* Release notes

* Undo notifications

* Fix schedules and update transaction delete confirmation message

* Use react-aria useLongPress

* Bulk edit amount display

* Themes

* Do not clear on batch update

* useUndo hook

* Fix typecheck error

* Update useUndo

* Fix typecheck error

* Handle batch deleted transactions

* useMemo

* Make onClearSelectedTransactions mandatory

* Extract FloatingActionBar to a separate component

* Require onAddSelectedTransaction and onClearSelectedTransactions if there are  any selectedTransactions

* Fix schedule link

* Undo notification timeout

* Use useSelected

* Fix typecheck error

* Category transactions batch updates

* Remove undo notification title

* Fix types

* Fix notes undo notification

* Move SelectedProvider to TransactionListWithBalances

* Remove NewPayeeEntity

* Disable support for amount batch edit for now

* Fix lint error

* Notification inset + reuse useTransactionBatchActions

* Always show notification close button regardless if sticky or not

* Allow clicking action bar when notifications are present

* Fix typecheck error

* Remove inset on addNotification calls

* Use PressResponder

* Fix mobile transaction border

* VRT

* VRT

* VRT

* VRT
2024-08-12 13:53:14 -07:00
Julian Wachholz
a22160579d fix: i18n: Use 'en' as default language (#3242)
* fix: i18n: Use 'en' as default language

Using 'cimode' as default language code will return the
translation keys verbatim without doing interpolation.
This is unwanted unless working directly on localization.

Fixes #3240

* Add release note
2024-08-12 10:54:48 +01:00
Matiss Janis Aboltins
81df2ce7fd ♻️ (prefs) initial type implementation for synced/local/metadata prefs (#3236) 2024-08-12 08:12:14 +01:00
Jordan Lees
119d0b339d Fix off-by-one error when placing category into 2nd-to-last place (#3241)
* Fix off-by-one error when placing category into 2nd-to-last place

Signed-off-by: JL102 <jordanlees@mailbox.org>

* Add changelog file

Signed-off-by: JL102 <jordanlees@mailbox.org>

---------

Signed-off-by: JL102 <jordanlees@mailbox.org>
2024-08-11 22:49:17 -07:00
Julian Dominguez-Schatz
d1362c3d74 Correct type for to-budget field (#3237)
* Correct type for `to-budget` field

* Add release notes

* Don't enable `strictNullChecks` for now
2024-08-11 16:52:35 -04:00
Julian Wachholz
8142dd1ec9 feat: introduce i18n framework (#3036)
* feat: introduce i18n framework

* Incorporate review feedback

* Patch demo

* remove unnecessary arguments

* Consistently use t() function

* Fix typing issue

* Fix e2e tests

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-08-11 15:37:33 -04:00
pmoon
2afd6967b4 Fix reconcileTransactions Invokation To Use strictIdChecking (#3232) 2024-08-11 18:37:20 +01:00
Jakob Petsovits
eec5fbb1cc Return early from SimpleFIN /transactions if the account needs attention (#413) 2024-08-11 17:59:48 +01:00
Robert Dyer
fe922ec22e Highlight current month in budgets. (#3111) 2024-08-10 20:00:46 +01:00
pmoon
30a70f5627 fix(#2562): Prevent transaction deduplication for imported transactions (#2991)
* fix(#2562): Prevent transaction deduplication for imported transactions (#2770)

* fix(#2562): Prevent transaction deduplication for imported transactions

* chore(): eslint fixes

* chore(): Add release note file

* fix(#2562): Allow transaction deduplication if transaction being imported is null

* chore: Rename release note, add strazto as author

* test(loot-core): Add test case for new logic

* docs(release-notes.loot-core): Add pmoon00 as author

* test(loot-core): Update test case to not be affected by unrelated bug

* test(loot-core): fix linter

---------

Co-authored-by: Mohamed El Mahdali <mohamed.elmahdali.developer@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

* Add Handling For goCardless Fuzzy Search

* Rename Release Note File

* Rename Release Notes File

* Fix UseFuzzySearchV2 After Merge Conflict

* Update Fuzzy Search Query To Include New Columns

* Update useFuzzyMatchV2 Variable To useStrictIdChecking

* Update useStrictIdChecking To Only Be Used If It's Not Syncing From External Sources

---------

Co-authored-by: Matthew Strasiotto <39424834+strazto@users.noreply.github.com>
Co-authored-by: Mohamed El Mahdali <mohamed.elmahdali.developer@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-08-09 01:44:37 +01:00
Robert Dyer
65c5f2c559 Filter by account when linking schedules (#3188)
* Add "S" hotkey for viewing/linking schedules.

* Default to filtering by account name when linking a schedule to a transaction.

* Work on 'all accounts' page.

* Update help modal

* add release note
2024-08-08 13:16:19 -07:00
Michael Clark
1abca7619d :electron: Making Electron server logs visible in devtools (#3219)
* add electron logging to main browser process console

* add logging

* removing old way

* release notes
2024-08-08 20:45:57 +01:00
Robert Dyer
b74f0f2982 Show better error if SimpleFIN account cant be found. (#412) 2024-08-08 20:26:36 +01:00
Michael Clark
6a85f84565 :electron: Fix gocardless "Linking account" integration (#3212)
* fix gocardless call - forked process didnt know its origin

* add release notes

* mamma mia

* remove old change
2024-08-07 20:33:23 +01:00
Julian Dominguez-Schatz
65329398fd Support type-checking on spreadsheet fields (part 2) (#3095)
* Add rollover budget typing

* Fix lint

* Add release notes

* Fix strict typechecking
2024-08-07 07:55:54 -04:00
Matiss Janis Aboltins
a2e434a1fb ♻️ (reports) improve useReports data fetching hook to return loading state (#3198) 2024-08-06 20:47:43 +01:00
Neil
d2bbe6a98e Spending Report: Mobile UI (#3209)
* SpendingMobile UI

* notes
2024-08-06 20:36:45 +01:00
Matiss Janis Aboltins
2c1967d788 ♻️ (reports) add 'showTooltip' prop to various graphs (#3200) 2024-08-06 20:31:35 +01:00
Spencer Murray
798aee78c3 Identify Payee and Notes fields by name if they exist in CSV import (#3203)
* Use csv fields with name payee/notes as defaults for Payee/Notes in getInitialMappings

* Add release notes

* Run lint

* Use or instead of nullish coalesce to match other fields
2024-08-06 15:41:48 +01:00
Matt Fiddaman
2807c98c2c fix "unkown" typo in error message (#3205) 2024-08-06 10:09:21 +01:00
Joel Jeremy Marquez
5e9b976676 [React Aria Button] - Migrate desktop and mobile budget page buttons (#3156)
* More components to use react aria Button

* Release notes

* vrt

* Fix typecheck error

* Fix account menu test

* Fix typecheck error

* Fix typecheck error

* Remove unnecessary aria-labels

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* Fix typecheck error

* Fix lint error

* VRT

* Remove default :focus on Button2

* Add Button2 defaultClassName

* Update className

* Fix typecheck error

* Cleanup

* VRT

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error

* react-aria Button for budget pages

* Release notes
2024-08-05 20:45:30 -06:00
Joel Jeremy Marquez
44ce976ffa [React Aria Button] - Migrate sidebar, notifications, transactions, recurring schedule picker buttons (#2984)
* More components to use react aria Button

* Release notes

* vrt

* Fix typecheck error

* Fix account menu test

* Fix typecheck error

* Fix typecheck error

* Remove unnecessary aria-labels

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* Fix typecheck error

* Fix lint error

* VRT

* Remove default :focus on Button2

* Add Button2 defaultClassName

* Update className

* Fix typecheck error

* Cleanup

* VRT

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error
2024-08-05 20:44:51 -06:00
Robert Dyer
5ba80fcbdc Fix mobile status indicators cutting off. (#3206) 2024-08-06 02:10:10 +01:00
Matt Fiddaman
7b77f60458 Adds a tooltip to the transaction tables to show the imported payee (#3018) 2024-08-05 20:24:49 +01:00
Alex Walker
81f59ff776 Add unit tests for goal template types (#3183)
* Add unit tests for each goal type

* Add test for goals schedule template

* Update release notes
2024-08-05 11:58:49 +01:00
Robert Dyer
12f4295932 Stop server crashing when SimpleFIN is down. (#410) 2024-08-05 10:13:43 +01:00
Robert Dyer
d33e5cc766 Fix crash when SimpleFIN JSON data is bad. (#409) 2024-08-04 21:19:26 +01:00
Matiss Janis Aboltins
63d9547e7c ♻️ (reports) unify selectedCategories and conditions (#3178) 2024-08-04 20:09:54 +01:00
Neil
d18fd36ae1 Spending Report: UI Adjustments (#3166)
* adjust UI

* notes

* revert cashflow change

* merge fixes

* remove bold, adjust style code
2024-08-04 20:06:48 +01:00
rodriguestiago0
2b1ba88983 Add Reset Hold and Hold For Next Month api (#3140) 2024-08-04 19:56:11 +01:00
youngcw
8be867f884 Fix a few number parsing issues (#3044)
* revert built in number parse

* note

* tests

* remove trivial test

* more tests

---------

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2024-08-04 10:21:53 -07:00
Tim Quelch
cafe480ba4 Update monthly spending report option name (#3181)
* Update monthly spending report name

* Add change note

---------

Co-authored-by: DJ Mountney <david@twkie.net>
2024-08-03 11:33:22 -07:00
alcroito
6472c70960 Shorten hidden category names imported from YNAB4 (#3122)
Imported hidden categories had the parent category entity id (UUID)
appended to the end of the name, making the category name quite long
and somewhat hard to read.

Remove the entity id from the end, and replace the apostrophe that
divides the master category from the sub category with a forward slash.

This shortens the name, ensuring a better chance that the full
category name fits into the default table cell width.

Co-authored-by: DJ Mountney <david@twkie.net>
2024-08-03 11:18:33 -07:00
Sebastian Civarolo
56c5a533e7 Fix false positives for duplicate filters error when saving a new filter (#2970)
* update conditionExists function to compare filter options

* rename method

* array.some instead of for loop

* release note

* refactor the condition search
2024-08-03 11:09:25 -07:00
Matiss Janis Aboltins
7e3ff1ad03 (vrt) improving stability - rules test (#3186) 2024-08-03 19:06:48 +01:00
Peccadilloz
df3aaf961d Add gocardless support for Berliner Sparkasse (Germany) (#358) 2024-08-03 17:00:54 +01:00
Julian Dominguez-Schatz
e0d7233b40 Support type-checking on spreadsheet fields (part 1) (#3093)
* Correct table usage of `onBlur`

* Add basic spreadsheet typing structure

* Move to different module

* Add account typing

* Add release notes

* Fix lint

* Remove unneeded diff

* PR feedback
2024-08-03 11:06:47 -04:00
Julian Dominguez-Schatz
1b4c4319e1 Disable typography linter in tests (#3114)
* Disable typography linter in tests

* Add release notes

* Remove unused type ignore
2024-08-03 11:05:30 -04:00
Matiss Janis Aboltins
14f29941b0 ♻️ (typescript) make category and rule types stricter (#3180) 2024-08-03 15:24:01 +01:00
Matiss Janis Aboltins
6b57e45e04 🔖 (24.8.0) (#408) 2024-08-03 14:56:21 +01:00
Matiss Janis Aboltins
4389329bfa 🔖 (24.8.0) (#3179) 2024-08-03 14:30:33 +01:00
vrozaksen
842e11b3a1 [WIP] Update mbank-retail-brexplpw.js (#407) 2024-08-02 19:39:34 +01:00
Matiss Janis Aboltins
3a38c32b4c 🐛 (modals) allow content to be vertically scrollable (#3161)
* 🐛 (modals) allow content to be vertically scrollable

Closes #3079

* Feedback: overfloww auto

* fix modal scrollbar style

* dont need to spread

* lint 😞

* Update 3161.md

* adding width 100% to inputwithcontent

---------

Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>
2024-08-02 19:16:32 +01:00
spideraxal
e3101fb86b Improve GoCardless adapter for ING (Romania) (#405)
* Alphabetical order of banks

* Fix notes field for pendingg transactions

* Release notes fix

---------

Co-authored-by: spideraxal <me@spideraxal.com>
2024-08-01 17:59:27 +01:00
Yusef Ouda
c3c6acd37c Fix budget type toggle not working the first time (#3169)
* use default 'rollover' for budgetType localPref

* release notes

---------

Co-authored-by: Yusef Ouda <5180063+YusefOuda@users.noreply.github.com>
2024-08-01 17:59:04 +01:00
wnklmnn
8de0f6a72a Set minWidth on <input /> to allow it to shrink. (#3168)
* Set minWidth on <input /> to allow it to shrink.
Fixes #3126

* fix formatting

* add release-notes markdown
2024-07-31 18:31:49 -04:00
Neil
2799dbee3e Spending Report: Add Last Month (#3132)
* AddLastMonth

* notes

* Add data for last month a year ago

* Adjustments for save button

* spending card fix

* notes

* fix typecheck

* fix averages
2024-07-31 21:35:23 +01:00
Matt Fiddaman
58eeee825e add goal tooltip to balance in budget table (#3123)
* add goal tooltip to balance in budget table

* release note

* fix long goals over multiple months
2024-07-29 23:49:25 +01:00
Matiss Janis Aboltins
6653dca776 🐛 (modals) remove focus outline (#3160)
Closes #3141
2024-07-29 22:00:27 +01:00
Joel Jeremy Marquez
77ba15f54c Fix local playwright reporter config (#3158)
* Fix local playwright reporter config

* Release notes
2024-07-29 12:26:51 -07:00
Matt Fiddaman
943f903646 fix date calculation in Nationwide bank handler (#406)
* fix date calculation in Nationwide bank handler

* release note
2024-07-29 18:55:34 +01:00
rodriguestiago0
b4a620e74e Obfuscate password when login the login header (#402) 2024-07-29 18:49:59 +01:00
Matiss Janis Aboltins
653a0ab104 🐛 (rules) fix error handling (#3149) 2024-07-29 18:35:49 +01:00
Joel Jeremy Marquez
2c26fa51a3 Add Modal2 backdrop (#3147)
* Add Modal2 backdrop

* Release notes

* VRT

* Use HTML reported when running tests locally
2024-07-29 00:41:44 -07:00
Michael Clark
dff9911a15 [Fix] "Enter" key should save on "Cover Overspending" popup (#3153)
* allow autocomplete events to fire when dropdown is closed

* release notes

* simpler solution

* release notes
2024-07-28 21:47:13 +01:00
Michael Clark
3d5818f017 :electron: Fix electron "Data Dir" picker on Settings page (#3133)
* fix electron file location picker

* add release notes

* update message and style
2024-07-28 21:32:20 +01:00
Matiss Janis Aboltins
efd294dcef 🐛 fix plain-text link in simplefin error (#3151) 2024-07-28 14:57:24 +01:00
Matiss Janis Aboltins
0eb62a09bc 🔧 improve unit test stability while using uuid (#3144) 2024-07-27 21:24:19 +01:00
Joel Jeremy Marquez
73d52fa0d0 Fix Button2 isDisabled prop (#3146)
* Fix Button2 isDisabled prop

* Release notes

* Update 3146.md
2024-07-27 13:06:15 -07:00
Matiss Janis Aboltins
5b0cc63f73 🐛 add missing underline to links (#3143)
* 🐛 add missing underline to links

* Update accounts screenshots
2024-07-27 16:44:14 +01:00
Matiss Janis Aboltins
26a591f07f 🐛 add missing hover cursor to new button component (#3142) 2024-07-27 16:41:59 +01:00
Robert Dyer
fe8851c797 Fix running balances thick header. (#3082)
* Update running balances width to display large numbers.

* add release note

* update width

* update width

* Fix running balances thick header.

* add release note

* fix alignment

* fix lint

* dont make header clickable

* refactor so HeaderCell can be unclickable
2024-07-26 12:07:10 -07:00
youngcw
511f677ae4 [Goals]: Add a long term goal template (#3012)
* update the parser

* can set goal value, but there are errors and it still needs to look for a balance and not month amount

* fix apply budget

* un change

* note

* lint

* working processing, need to set colors based on month somehow

* add long goal option to the gui and db

* note, lint

* fix cleanup

* fix

* make mobile work, lint

* fix bindings

* more proper

* lint

* fix single category run

* don't unset goal values if they don't have a template too

* lint

* more lint

* fix check when no template exists

* rearrange to get around the issue of inconsistent colors

* lint

* typecheck

* add field to aql schema

* fixes

* cleanup

* migration date
2024-07-26 09:04:44 -07:00
Joel Jeremy Marquez
1cef0d11ee Fix menus autoclosed when clicked element on top of the menu item (#3131)
* Fix menus autoclosed when clicked element on top of the menu item

* Release notes
2024-07-25 13:50:23 -07:00
Neil
536cabb75b Spending Report: card fix (#3135)
* spending card fix

* notes
2024-07-25 18:07:43 +01:00
Neil
cceda03905 Spending Report: add save button (#3112)
* add save button

* notes

* rerun checks

* add time

* tooltips

* change entity to string

* lint fix

* adjust defaults

* lint
2024-07-25 09:35:44 +01:00
Neil
982f555a21 Custom Reports: updateReport db Schema fix (#3127)
* updateReport db Schema fix

* notes

* error
2024-07-24 19:20:41 +01:00
Fran González
fe70ecb635 Fixes #3089: Dismiss pop-over on budget action (#3092)
* Fix no dismissal on budget action

* Add release notes file

* Correct tag

* Remove unnecessary callback

* Linting

* Apply same strategy on reportcomponents

* Rename to onMenuAction
2024-07-23 10:38:30 -07:00
Matiss Janis Aboltins
d3d9f70657 ⬆️ upgrade yarn to 4.3.1 (#403) 2024-07-23 05:45:10 +01:00
Neil
5c0bee6031 Custom Reports: PlusOne (#3117)
* PlusOne

* notes

* add daterange filters
2024-07-22 19:02:21 +01:00
Bruno Ribeiro
4439bb6abe Enhance Autocomplete sorting, Payees tab filter, and Schedules tab filter to ignore characters with accents / diacritics (#3045)
* Autocomplete sort now ignores diacritics

* Payees tab now takes into account diacritics

* Category Autocomplete now ignores diacritics

* Schedules filter now ignore diacritics

* Added release note

* Fixed type error

* Added normalisation to manage rules filter

* Added normalisation to $like operator

* Added normalisation function to loot-core

* Fixed type error & added normalisation to notlike

* Fixed unit tests

* Changed normalise to use loot-core/shared on desktop

* Linting fix
2024-07-22 16:13:25 +01:00
Reece
b432204b4b modify fly.io url to point to correct documentation (#3113)
* modify fly.io url to point to correct documentation

* Create 3113.md
2024-07-21 15:27:13 -04:00
Matiss Janis Aboltins
9a85a72089 🔧 ping WIP PRs that have been inactive for a week (#3107)
* 🔧 ping WIP PRs that have been inactive for a week

* Bump the stale action version
2024-07-20 21:17:00 +01:00
Julian Dominguez-Schatz
a970a78932 Include more information in payee of split parent (#3049)
* Use dicts to look up common information

* Show abbreviated payees in split payee section

* Update vrt

* fix: missing transfer icon

* Add release notes

* fix: update vrt again

* bugfix: failing edge cases

* fix: stale test

* fix: stale test, p2 (+ vrt)
2024-07-20 11:43:24 -07:00
Joel Jeremy Marquez
ed65805d53 Port finance modals to use new Modal component based on React Aria Modal (#2946)
* React Aria Modal POC

* Fix imports

* Use composition

* Fix typecheck and lint errors

* VRT

* Fix schedule details modal header

* Fix typecheck error + VRT

* Fix typecheck error

* Release notes

* Update release note

* Fix props

* Update modal props

* useModalState hook

* VRT

* VRT

* Fix typecheck error

* Fix modal close

* VRT

* Fix test

* Fix typecheck error
2024-07-20 09:03:58 -07:00
Matiss Janis Aboltins
88ae7e9375 📝 update some information in the README (#3106) 2024-07-20 17:03:25 +01:00
Matiss Janis Aboltins
0135a4d1b9 🔥 (preferences) remove unused user prefs (#3104) 2024-07-20 09:53:54 +01:00
Matiss Janis Aboltins
4af2c4f214 ⬆️ upgrade yarn to 4.3.1 (#3105) 2024-07-20 09:53:42 +01:00
Ryan Bianchi
89a8f102dc Recently used and favorite payees (#2814)
* add idea of common payee, a top 10 frequently used payee

* add button in payee to mark as favorite

* cleanup

* minor fixes

* add release notes and make favorite optional

* fix TransactionsTable test

* lint and release notes

* rename section, resort list to ensure both are sorted

* don't show common, move bookmarked to menu

* add a limit on adding common payees

* linting

* reduce to 5 commonly used payees by default

* linting

* more linting

* update migrate timestamp

* more linting

* fix api name, bump migrate timestamp

* Add star to payee dropdown and rename section to 'Suggested Payees'

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-07-19 19:44:29 -06:00
spideraxal
c19cc56c55 Added GoCardless Integration for ING (Romania) (#401) 2024-07-18 20:40:03 +01:00
Sreetam Das
d032fce7ea fix: number format config not being respected for graphs (#2832)
* Add computed padding for handling clipped Net worth amounts

* Add comment, early handle 5 character case

* Add release note

* Use currency decimal preference for Net Worth graph Y-axis ticks

* use number format preference for `BarLineGraph` ticks

* use number format preference for checking `NetWorthGraph` tick overflow

* prevent `numberFormatConfig` overwrite

`getNumberFormat` uses `numberFormatConfig` as the default argument;
passing just `{ hideFraction: true }` caused `numberFormatConfig.format`
to be ignored

* add release note

* use `amountToCurrencyNoDecimal` instead for `{BarLine,NetWorth}Graph` ticks
2024-07-18 13:02:01 -06:00
Joel Jeremy Marquez
2fdc7fef32 Add callouts to starting fresh and migration documentations in README (#3101)
* Add callouts to starting fresh and migration documentations

* README

* Update README
2024-07-18 09:24:21 -07:00
Michael Clark
1e41d695c5 :electron: Added keyboard shortcuts reference to Help menu (#3100)
* adding keyboard shortcuts reference to help menu

* add release notes
2024-07-18 09:13:50 -06:00
wdpk
12f91f7d86 update split transaction handling for csv export (#2973)
* Split transaction handling for csv export (#2973)

* refactor, zero-amt parents and add split_amount

change how child/parents are counted to remove dependence on `sort_order` being negative. for export, give parent transactions a 0 in the `amount` column, but add a new column with their `split_amount` for other programs to possibly import

---------

Co-authored-by: Zeus\Herb <herb@win.dows>
Co-authored-by: DJ Mountney <david.mountney@twkie.net>
2024-07-18 07:57:36 -07:00
Michael Clark
f75d0f8099 :electron: security.js and preload.js ➡️ .ts (#3066) 2024-07-17 22:31:09 +01:00
Robert Dyer
07bbe00059 Add additional hotkeys (#3061)
* Add account page hotkeys

* add release note

* fix linter

* change shortcut

* change hotkey

* fix lint

* add budget shortcuts

* update help page

* fix linter

* add privacy filter hotkey p

* update help modal

* fix deps

* slash the zero

* bound the month picker

* change privacy shortcut to ctrl+p

* remap keys to ctrl

* add select all hotkey

* fix linter

* change add hotkey to T

* update help modal

* resize help modal

* fix linter

* shrink modal size more

* change budget reset behavior

* change privacy to shift+ctrl+p

* move shift to front
2024-07-17 14:41:50 -06:00
Simon Schmidt
be0d363576 CAMT.053: Handle missing ValDt on entries with Sts Book (#3086)
* Replicate seen-in-the-wild camt.053 example

* Handle missing ValDt in camt

* Release notes for #3086
2024-07-17 14:41:06 -06:00
Joel Jeremy Marquez
c2e648c9d5 React Aria Button on Modals (#2918)
* React Aria Button on modals

* Release notes

* Remove tabIndex

* Remove aria-label
2024-07-17 13:38:41 -07:00
Joel Jeremy Marquez
33049a77e7 Fix rules not being applied in mobile transaction entry (#3073)
* Fix rules in mobile transaction entry

* Release notes

* Remove alert
2024-07-17 13:38:19 -07:00
Joel Jeremy Marquez
89241623f3 React Aria Button on Management App (#2916)
* React Aria Button on management app

* Release notes

* Update release notes

* Fix typecheck error

* Remove aria labels

* Apply suggestions from code review

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

* Remove aria-labels

* Remove aria-label

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-07-17 12:20:12 -07:00
djm
40e432dedb Fix verify script (#400) 2024-07-17 20:08:17 +01:00
Robert Dyer
8434e8f5ce Fix "?" crashing on budget selection page. (#3084)
* Fix ? crashing on load budget page.

* add release note
2024-07-17 11:48:28 -06:00
Robert Dyer
9b99debacc Update running balances width to display large numbers. (#3080)
* Update running balances width to display large numbers.

* add release note

* update width

* update width
2024-07-17 10:20:22 -06:00
Austin Pearce
a23ec33591 Add autocapitalize (#3056) 2024-07-16 17:57:01 -07:00
Matiss Janis Aboltins
aaea04fc00 🔧 add lint-staged and husky to auto-patch formatting issues (#3058) 2024-07-16 19:10:57 +01:00
Austin Pearce
b4f0087eef increase mobile header label font weight (#3062) 2024-07-16 00:07:21 -07:00
Dan D.
7824c52d9f Fix SimpleFIN blank payee introduced in #353 (#397) 2024-07-15 18:21:37 +01:00
Matiss Janis Aboltins
f81c452ba5 ♻️ (tooltip) refactoring to react-aria (vol.10) (#2828) 2024-07-15 18:18:40 +01:00
Robert Dyer
7072674111 Add help modal for keyboard shortcuts. (#3033)
* Add help modal for keyboard shortcuts.

* add release note

* fix linter

* fix typecheck

* fix linter

* use component syntax for GroupHeading

* use component syntax for Shortcut

* fix linter

* use component syntax for KeyIcon

* refactor to support different dialogs

* show different help based on current page

* fix linter

* reword help

* capitalize letters

* show cmd on mac

* stop event propagation

* dont show if a modal is already open

* remove unused import

* rename modal

* move where location check happens

* dont stop event

* allow typing '?' in inputs

* better filter

* extract function

* fix linter

* dont show if filter popover is visible

* fix linter

* fix wrong shortcut, support SHIFT

* fix linter

* fix conditional
2024-07-15 08:06:09 -07:00
Michael Clark
16e887c917 :electron: Build electron for Mac Universal arch (#3015) 2024-07-13 22:03:57 +01:00
Oskar
145659b256 Add gocardless support for easybank (Austria) (#396) 2024-07-13 19:54:52 +01:00
Tom Crasset
572033debe migrate BudgetList to typescript (#3026) 2024-07-13 18:02:01 +01:00
Michael Clark
b85f9102ce :electron: Convert window-state.js ➡️ window-state.ts (#3027) 2024-07-13 13:05:42 +01:00
Yusef Ouda
942aebedd0 fixes alignment of notifications on mobile to be centered (#3046) 2024-07-13 12:45:51 +01:00
Chris Tozlowski
32d830440a Fix the position of the separator in the operator menu when editing a rule (#3037)
* Fix line separator position in operations menu

* release note
2024-07-12 08:20:44 -07:00
youngcw
4575616961 [Goals]: don't reset goals when using "apply template" (#3011)
* fix apply budget

* un change

* note

* lint
2024-07-12 07:05:05 -07:00
DJ Mountney
4a0e2ea306 Remove Trafico workflow in favour of our new GitHub bot (#3023)
* Remove Trafico workflow in favour of our new GitHub bot

* Add release note
2024-07-11 07:30:12 -07:00
Robert Dyer
14ec9a9089 Dim hidden income category rows (#3032)
* Dim hidden income category rows

* add release note

* fix linter
2024-07-11 05:47:12 -07:00
Matt Fiddaman
e91b4070aa Add mergePayees method to the API (#3028) 2024-07-11 10:01:41 +01:00
Robert Dyer
6dd34b0c63 Perform bank sync in same order as accounts shown in sidebar. (#3029) 2024-07-11 09:32:57 +01:00
Robert Dyer
ab4639f48f API: add getBudgets() methods to list all budgets in the local cache or remote server. (#2928) 2024-07-11 09:27:32 +01:00
Austin Pearce
aa3cbd881b Fix alignment of reports` (#3007) 2024-07-10 20:17:48 -07:00
Robert Dyer
8681c9c3e6 Fix editing transactions on mobile not going back. (#2968) 2024-07-10 22:00:50 +01:00
Matiss Janis Aboltins
9ec9aef632 (budget-type) moving the selector to settings page (#3017)
*  (budget-type) moving the selector to settings page

* Feedback: move the block down
2024-07-10 21:58:20 +01:00
Robert Dyer
3be7dd753d Add getAccountBalance() API. (#2930) 2024-07-10 21:52:21 +01:00
Tom Crasset
7e84cf897c add Fortuneo Banque GoCardless integration (#389) 2024-07-10 19:41:36 +01:00
Robert Dyer
259e84cea5 Expose bank sync account data in AQL. (#3022)
* Expose bank sync account data in AQL.

* add release note
2024-07-10 07:05:20 -07:00
Austin Pearce
f9014f0e19 Fix mobile payee creation (#3019) 2024-07-09 16:06:25 -07:00
Julian Wachholz
e59f5c9af8 Add apostrophe-dot number format (#2982) 2024-07-09 19:14:38 +01:00
Matt Fiddaman
3661c1585e Move bank sync payee name normalisation from actual to actual-server (#353) 2024-07-09 19:05:20 +01:00
Matt Fiddaman
771c01c8b4 Move bank sync payee name normalisation from actual to actual-server (#2721) 2024-07-09 19:05:15 +01:00
Michael Clark
9f72b43826 :electron: Remove unneded files (#3014) 2024-07-09 18:08:23 +01:00
Craig Dennis
17cdea9beb Update SEB Credit Card adapter to include SEB Card Accounts (#391) 2024-07-09 18:04:06 +01:00
Julian Wachholz
ec3475d834 Fix number formatting with non-breaking space (#2981) 2024-07-09 18:02:40 +01:00
Wizmaster
5ea9c587a8 Explicitly ask when reconciling transactions on manual import (#2717)
- Added import preview in transaction import list
- Added checkboxes to selectively prevent merging transactions

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-07-09 06:39:08 -07:00
DJ Mountney
228f38617b Remove trafico in favor of our community bot (#390)
* Remove traffico in favor of our community bot

* Add changelog
2024-07-08 13:37:47 -07:00
Matiss Janis Aboltins
1e38055376 🐛 (popover) fix date popover closing when editing a filter (#3009) 2024-07-08 19:57:00 +01:00
Julian Dominguez-Schatz
0ee9126820 Disable interactivity on preview status icons (#2924)
* Disable interactivity on preview statuses

These have no click action but have a focus effect of a purple circle
(residual from the "Cleared" checkbox styling) that looks a bit glitchy.

* Add release notes

* Exclude status field from keyboard navigation
2024-07-08 10:39:00 -07:00
Joel Jeremy Marquez
9e455e4c1e Fix cover modal title (#3008)
* Fix cover modal title

* Release notes
2024-07-08 09:59:36 -07:00
Yusef Ouda
d77b54f27b reorders 'Rename' above 'Hide' in menu popovers, adds debounce to sidebar animation (#3001)
* reorders 'Rename' above 'Hide' in menu popovers

* release notes

* adds debounce to sidebar animation

* bump debounce time

* release notes

* release notes

* Update debounce import

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* removes event listener on titlebar, changes margins
2024-07-08 09:51:28 -07:00
Sreetam Das
ff36d1efbe Add computed padding for handling clipped large Net worth amounts (#2818)
* Add computed padding for handling clipped Net worth amounts

* Add comment, early handle 5 character case

* Add release note

* Update packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx

Co-authored-by: Robert Dyer <rdyer@unl.edu>

* Update vrt snapshots

* Fix NetWorthGraph cutoff when `compact` is true

This happens in case of `ReportCard`

* Update VRT snapshots to revert to original

* Revert snapshots to original

* vrt

---------

Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-07-08 08:13:47 -07:00
youngcw
cbbbaf65cf remove version from electron build names (#3000)
* remove version from electron build names

* note

* fix
2024-07-07 14:54:14 -07:00
Yusef Ouda
f129b07dc9 Adds ability to resize sidebar (#2993)
* Adds ability to resize sidebar

* Adds release notes

* Changes to feature

* lint

* change translateX to use % for both states

* vrt

* set max sidebar width, cleanup

* set min and max widths

* min width to 200px

* changes resizable sidebar to use re-resizable instead off css resize

* vrt

* vrt
2024-07-07 14:10:41 -07:00
Robert Dyer
74ade73476 Update URL to log into SimpleFIN. (#385) 2024-07-07 20:31:59 +01:00
wdpk
81acd29c73 remove version from docker-compose.yml (#388) 2024-07-07 20:30:09 +01:00
Joel Jeremy Marquez
f1caf21deb Assign schedule to both transactions if schedule is a transfer (#2990)
* Assign schedule to both transactions if schedule is a transfer

* Release notes

* Migration for old scheduled transfer transactions
2024-07-07 09:29:27 -07:00
Michael Clark
a28ea6be8f :electron: server.js ➡️ server.ts (#2995) 2024-07-07 13:31:26 +01:00
Michael Clark
f36c5e002b :electron: Remove "About" screen and broken updater (#2983) 2024-07-05 21:35:52 +01:00
Michael Clark
803289ee1f :electron: Electron menu.js ➡️ menu.ts (#2978) 2024-07-04 20:12:22 +01:00
Joel Jeremy Marquez
76cdad4fe6 React Aria Button on Accounts and Payees page (#2914)
* React Aria Button on payees and accounts page

* Release notes

* Fix Reconcile

* VRT

* VRT

* Fix balance hover

* VRT

* Update packages/desktop-client/src/components/accounts/Balance.jsx

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

* Fix lint

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-07-04 11:56:14 -07:00
Tom Crasset
1da9c821ee Prettify GoCardless Bank Integration README (#386) 2024-07-04 17:24:26 +01:00
Julian Wachholz
d03b30bc00 Add PWA shortcuts (#2980)
* Add PWA shortcuts

* Add release note
2024-07-04 08:27:57 -07:00
dymanoid
710d9ab8ac fix: use Unicode-aware SQLite LIKE filtering (#2903)
* fix: use Unicode-aware SQLite filtering

* Add release notes, fix type check

* Fix code styling
2024-07-04 08:24:58 -07:00
DJ Mountney
d008944022 Remove the trafico pr review triggers (#2942)
* Remove the trafico pr review triggers

- We loose triggers for Approved and Changes Requested
- They weren't working on forks anyways

* Add release note
2024-07-04 07:34:38 -07:00
Robert Dyer
f18bce6094 Fix warning modal not showing a second time. (#2956)
* Fix warning modal not showing a second time.

* add release note
2024-07-03 18:13:57 -07:00
Michael Clark
31eb00a155 :electron: Electron package Typescript starting point (#2880) 2024-07-03 21:28:04 +01:00
Joel Jeremy Marquez
a67c969189 React Aria Button on Settings and Rules Page (#2913)
* React Aria Button on rules and settings page

* Release notes

* VRT
2024-07-03 13:04:26 -07:00
dymanoid
58e6c6f23a Fix rollover arrow display for mobile and desktop (#2943)
* Fix rollover arrow display for mobile and desktop

* Add release notes

* Implement review suggestions

* Fix rollover indicator without goals
2024-07-03 11:00:03 -07:00
Matiss Janis Aboltins
f046d75b75 ♻️ refactoring Select component to use existing Menu (#2905) 2024-07-03 18:25:41 +01:00
Joel Jeremy Marquez
30bcfedc86 React Aria Button as base of Button component (#2904)
* React Aria Button as base of Button component

* Release notes

* AmountInput sign button

* Fix tests

* Comment

* Fix disabled/pressed style

* Update react-aria-components version

* yarn.lock

* Apply defaultStyle

* Fix button props type
2024-07-03 09:33:57 -07:00
Matiss Janis Aboltins
866b4d6cd4 🐛 (bank-sync) fix account highlight dissapearing (#2898) 2024-07-03 17:15:36 +01:00
Julian Dominguez-Schatz
a42938fa64 Reapply rules to split transactions when the parent changes (#2834)
* Reapply rules to split transactions when the parent changes

Concretely, this enables the "standard" workflow for
split-transaction-entry on desktop, where you enter the payee first, and
then edit the amount afterwards (and expect splits in a rule to apply when
you edit the amount).

* Add release notes

* Fix bug in first field below parent transaction

* Update vrt
2024-07-02 21:31:14 -07:00
Michael Clark
e02b0f9bc7 :electron: Fix backup time format in electron (#2960)
* fix backup time in electron

* release notes

* bugfix not maintenance
2024-07-02 14:16:16 -07:00
Matiss Janis Aboltins
2006d885b8 🔖 (24.7.0) custom reports, splits in rules, tags and more (#383) 2024-07-02 21:49:02 +01:00
Matiss Janis Aboltins
049a41f366 🔖 (24.7.0) custom reports, splits in rules, tags and more (#2955) 2024-07-02 21:29:31 +01:00
Matiss Janis Aboltins
7f30680fb3 Revert "🐛 fix the app randomly navigating back (closing) (#2772)" (#2966)
This reverts commit 247e3e8d93.
2024-07-02 21:23:33 +01:00
Matiss Janis Aboltins
167522d322 ⬆️ upgrade dependency tree to solve CVE-2023-42282 (#378) 2024-06-29 08:55:37 +01:00
Robert Dyer
2d4256b239 Fix wording of split rule. (#2927)
* Fix wording of slit rule.

* add release note

* fix typo
2024-06-27 13:08:30 -07:00
Matiss Janis Aboltins
247e3e8d93 🐛 fix the app randomly navigating back (closing) (#2772) 2024-06-27 19:00:17 +01:00
Joel Jeremy Marquez
5951b92668 Group and ungroup split transactions (#2805)
* Group and ungroup split transactions

* Release note

* Fix release note category

* Do not allow on reconciled transactions

* Add account validation, fix undo behavior, set split payee

* Fix lint errors

* Allow extracting some child transactions

* Disabled split/unsplit selected items menu

* Fix lint error

* Fix typecheck error

* Special Split payee

* "Split" payee on parent transaction

* Show manage payees on payee autocomplete modal

* Fix typecheck error + cleanup

* Fix typecheck error + cleanup

* VRT

* Fix tests

* VRT

* Only show split/unsplit when applicable
2024-06-26 12:39:36 -07:00
youngcw
a9ee670eb4 change the mobile budget balance colors to be the same as desktop (#2940)
* change the mobile budget colors to be the same as desktop

* fix

* some lint and note

* actual note

* fix mad lint

* another lint
2024-06-26 10:03:37 -07:00
lelemm
3990aaf38f Fix: Transaction table constantly resizing (#2941) 2024-06-26 17:27:47 +01:00
Michael Clark
48f5880f1d :electron: Fix "Export" function on desktop app (#2925)
* fix electron export file

* add release notes
2024-06-25 09:38:39 -07:00
Neil
3332f58376 Custom Reports: Adjust Net values (#2871)
* Add Net value

* notes

* fix

* revert changes

* balanceTypeOpType

* lint fix

* add net numbers

* bar fix

* nit fixes and fix clicks

* remove abs
2024-06-24 20:08:59 +01:00
Michael Clark
46ea8fbf72 :electron: Fix regex filters on electron app (#2929)
* fix regex on desktop app

* add release notes
2024-06-24 08:08:15 -07:00
Matiss Janis Aboltins
6a21f8e3de Revert "fix(#2562): Prevent transaction deduplication for imported transactio…" (#2910) 2024-06-22 21:32:51 +01:00
Joel Jeremy Marquez
f02ca4e3d2 Format transaction notes as clickable tags (#2670)
* Format notes as clickable tags

* Release notes

* Fix tests - extract the handler to higher level component

* Update colors

* Fix filtering

* Rename variables

* Remove font weight

* Cleanup style

* Append note tag filters

* Fix overlapping UI

* Revert pill colors

* Rename prop

* Rename notes

* Delete filter margin

* Fix typecheck error

* VRT + typecheck fix

* Add matches op in rules + use it to match tags

* Fix database types

* Fix typecheck error

* Fix typecheck

* Move create_function call

* VRT

* Update tag regex

* Escape regex input

* Update tag regex

* Use onApplyFilter

* Update tag formatting

* Fix tag formatting

* Update regex

* VRT

* Update packages/desktop-client/src/components/modals/EditRule.jsx

Co-authored-by: Robert Dyer <rdyer@unl.edu>

* VRT

* Fix error

* Fix filtered balance

* VRT

---------

Co-authored-by: Robert Dyer <rdyer@unl.edu>
2024-06-21 10:47:21 -07:00
lelemm
7f658691bb Fix: column titles incorrect when selecting transactions and resizing window (#2867) 2024-06-20 21:49:33 +01:00
Matt Fiddaman
f5307e4bd4 Copy trafico workflow from actual (#380) 2024-06-19 21:22:47 +01:00
Matiss Janis Aboltins
5b1a730f11 💬 (bank-sync) update sync button label to improve discoverability (#2899) 2024-06-19 20:19:48 +01:00
Neil
0c14eb17c4 Unflag custom reports (#2554)
* remove featureflag

* notes

* merge fixes

* vrt

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-19 06:57:46 +01:00
dymanoid
7bb0425c81 Consider account sort order in autocomplete (#2896)
* Consider account sort order in autocomplete

* Add release notes
2024-06-18 15:44:44 -07:00
DJ Mountney
8832c2b234 Trafico embedded action (#2895)
* Embed trafico as an action

* Add all the event types from trafico

* Swith to main trafico branch

* Add release note
2024-06-18 15:30:24 -07:00
Crazypkr1099
437e202d27 Add filtering of group name to autocomplete for transactions (#2861)
* Delete packages/desktop-client/e2e directory

* Delete packages/desktop-client/e2e directory

* Add toggleable option to autoCompleteCategories

* Create 2861.md

* Fixing typescript error & removing console.log

* Added themesetting back in

* Added filtering and separation for group name autocomplete

* removed typescript error

* another typescript error fixed

* ts error

* removed styling

* Update 2861.md

* Update prefs.d.ts

* Update index.tsx

removed toggleable settings

* Update index.tsx

* removed toggleablesettings

* changed test tobe     items = screen
      .getByTestId('autocomplete')
      .querySelectorAll('[data-testid$="category-item"]');
    expect(items.length).toBe(3);
  });

* removed isChanged passdown

* Added string followed by category name capability, moved sorting logic to categoryautocomplete, used toSorted, used Usememo, added TS.

* Fix unnecessary changes

* Apply suggestions from code review

Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

* Fixed TS, sort, and memo to useCallback

* fix tosorted -> sort

* Apply suggestions from code review

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

* fix typescript issue

---------

Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-06-18 13:27:49 -07:00
Robert Dyer
d34f5eccb6 Timeout SimpleFIN sync calls after 60 seconds (#2891) 2024-06-18 20:55:09 +01:00
dependabot[bot]
382d347508 build(deps): bump braces from 3.0.2 to 3.0.3 (#377)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 20:42:21 +01:00
Matiss Janis Aboltins
c792c0f54e 🔧 add github action for handling stale PRs (#376) 2024-06-18 20:24:45 +01:00
Robert Dyer
73d0f04d45 Properly handle errors for SimpleFIN. (#375) 2024-06-18 19:39:08 +01:00
Robert Dyer
f1d3902e3e Rework bank secrets reset (#2870)
* Rework bank secrets reset

* Fix alignment

* Fix lint errors

* add release note

* Fix typo

* fix typo
2024-06-18 11:33:51 -07:00
lelemm
8b6ef7b325 Removed recursion in place for iterable solution to prevent stack overflow (#2848) 2024-06-18 18:39:24 +01:00
Neil
6ad0b47c7c Custom Reports: Include current (#2684)
* include current

* notes

* label change

* add migration and fix merge issues

* fix extra year/month

* default and disabled lists

* default on

* fixes

* rerun
2024-06-17 20:09:38 +01:00
Matiss Janis Aboltins
96964224f4 🐛 fix budget tooltip showing if panel is not collapsed (#2887) 2024-06-17 18:22:20 +01:00
Joel Jeremy Marquez
0ed5e3ebe6 Revert scheduled transaction date filter causing weekly scheduled transactions as Paid (#2890)
* Revert scheduled transaction date filter

* Release notes
2024-06-17 08:03:40 -07:00
Matt Fiddaman
925926f542 Add bank handler for NATIONWIDE_NAIAGB21 (Nationwide) (#372) 2024-06-16 14:47:41 +01:00
vojeroen
44ddf210ea fix TypeError in GoCardless bnp-be-gebabebb sync (#370) 2024-06-16 14:45:03 +01:00
Matt Fiddaman
62c6a8775c Add bank handler for VIRGIN_NRNBGB22 (Virgin Money) (#360) 2024-06-16 14:38:49 +01:00
Matiss Janis Aboltins
64cd6ee3c9 ♻️ (tooltip) refactoring to react-aria (vol.9) (#2826) 2024-06-16 14:31:10 +01:00
Crazypkr1099
abc4636662 Bugfix : Account Nav Padding Bottom containing ; (#2881)
* Added underline & Fixed Capitalization in Account Header

* Create 2847.md

* Changed border pixel size, made it more opaque.

* removed comments

* Update E2E

* Required to run E2E in local...

* Revert "Required to run E2E in local..."

This reverts commit e73ac75cb3.

* Revert "Update E2E"

This reverts commit 56990fd6fe.

* testing...

* testing...

* Update 2847.md

* Underline no longer goes to edge

* vrt

* vrt

* fix bad screenshot

* bug fix

* Create 2881.md

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-15 09:38:31 -07:00
aaimio
ade25b3304 fix: link schedules modal - table width (#2863)
* fix: remove negative margin on ScheduleLink

* chore: add note for upcoming release notes

* feat: increase width of <ScheduleLink>

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-13 14:43:19 -07:00
Neil
b192ad955e Custom Reports: fix card menus regression (#2878)
* fix menus

* notes
2024-06-13 16:45:57 +01:00
Joel Jeremy Marquez
e9da476b51 Fix mobile budget and spent column auto sizing (#2875)
* Fix mobile budget and spent column auto sizing

* Release notes
2024-06-13 07:35:32 -07:00
lelemm
12719e3049 FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average' (#2862)
* FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average'. This fix solves this issue

* added 2862.md

* Ajustments for category menu not closing properly and fix to negative values for income category copy budget

* fix lint

* changed variable name without changing references after lint ajust

* retrigger checks

* smaller 2862.md
2024-06-12 07:50:39 -07:00
aaimio
e178d9914d fix: schedules are missing highlight color (#2864)
* fix: remove redundant style

* chore: add note for upcoming release notes

* chore: fix typo
2024-06-11 12:21:00 -07:00
lelemm
6fd728aa2d fix: Account names in side nav squashed (#2866)
* Fix: Account names in side nav squashed

* add 2866.md

* lint
2024-06-11 12:20:00 -07:00
Crazypkr1099
bf26ca4eb9 Add Underline in Account Header (#2847)
* Added underline & Fixed Capitalization in Account Header

* Create 2847.md

* Changed border pixel size, made it more opaque.

* removed comments

* Update E2E

* Required to run E2E in local...

* Revert "Required to run E2E in local..."

This reverts commit e73ac75cb3.

* Revert "Update E2E"

This reverts commit 56990fd6fe.

* testing...

* testing...

* Update 2847.md

* Underline no longer goes to edge

* vrt

* vrt

* fix bad screenshot

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-11 20:07:19 +01:00
lelemm
f606d92c5c Changing the autocomplete search to accept text without accents to match options with accents (#2842)
* Changing the autocomplete search to accept text without accents to match options with accents

* lint fix

* Added upcoming-release-notes
2024-06-11 07:53:10 -07:00
Dan D
8b850f1410 Handle Null Org Domain in SimpleFIN for bank_id (#2836)
* Update main.ts - Handle Null Org Domain in SimpleFIN

SimpleFIN (currently) uses the org domain as the bank ID. According to SimpleFIN docs, this can possibly be a null value, as can the org name. However, at least one of the two must be present.

In Actual, org name is set to "Unknown" if it comes in as null, but the bank_id (previously just set to the org domain) was not, resulting in a null bank_id value at times.

* Create 2836.md

* Fix release notes format.

* Small change to release note.

* Change to use new org Id as fallback for bank_id

* Add orgId property, for new org id from SimpleFIN
2024-06-10 15:42:45 -07:00
Joel Jeremy Marquez
c992e340ca Cover overbudgeted action + make balance movement menus only appear on relevant conditions (#2850)
* Make balance movement menus only appear on relevant conditions

* Release notes

* Hide to be budgeted when covering overbudgeted

* Fix typecheck error
2024-06-10 13:16:27 -07:00
Robert Dyer
06f9db06b0 Fix amounts over 1 million cutting off (#2812)
* Fix amounts over 1 million cutting off.

* Update VRT

* Update VRT

* update VRT
2024-06-10 11:44:38 -07:00
Crazypkr1099
2b96bb3d52 Added Year comparison feature. (#2806)
* Added Year comparsion feature. Also fixed bug with greater than 28 days.

* Removed comments and console.logs

* Create 2806.md

* Cleaned up code

* Hide's graph if no data, and hides average, last month or last year if no data.

* Apply suggestions from code review

Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>

* Fixed spent MTD and last MTD. Added in all suggestions from carkom.

* Update 2806.md

* Added changes required by carkom #2

* Couple more fixes, only show graph if have data for last month (as requested by carkom)

* Removed console.log that was mistakenly added.

* removed useEffect

* Add files via upload

* Remove async function

* lint fix

* fixed carkom requests & added in fix for YAxis issues

* Fixed couple of mistakes. Removed Y Axis fix (new PR will be created)

* Cleanup code

* Fix mode buttons

* Removed console.log...

* Update showAverage Logic

* Update switch logic

default should be default for everyone other part of the graph.

* Add Math.abs

* lint fix

---------

Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
2024-06-10 12:41:45 +01:00
daca11
1af5ab09e9 Grab payee name for Abanca gocardless integration (#359) 2024-06-08 14:09:05 +01:00
Matiss Janis Aboltins
ebb9452b8f 🔖 (api) 6.8.1: fix #2829 (#2853) 2024-06-07 21:33:23 +01:00
Matiss Janis Aboltins
196f03b84e ♻️ (tooltip) refactoring to react-aria (vol.8) (#2822) 2024-06-07 19:21:09 +01:00
Matthew Strasiotto
93e784a0fe fix(#2562): Prevent transaction deduplication for imported transactions (#2770)
* fix(#2562): Prevent transaction deduplication for imported transactions

* chore(): eslint fixes

* chore(): Add release note file

* fix(#2562): Allow transaction deduplication if transaction being imported is null

* chore: Rename release note, add strazto as author

* test(loot-core): Add test case for new logic

* docs(release-notes.loot-core): Add pmoon00 as author

* test(loot-core): Update test case to not be affected by unrelated bug

* test(loot-core): fix linter

---------

Co-authored-by: Mohamed El Mahdali <mohamed.elmahdali.developer@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-06-07 10:47:16 -07:00
lichen
026194e5e2 Enable compress without dropping debugger to avoid SyntaxError in safari 16 {to #1766} (#2825) 2024-06-07 08:11:52 -07:00
Joel Jeremy Marquez
98341b440a [Mobile] Use AmountInput on mobile transfer and hold buffer modals (#2837)
* Use AmountInput on mobile transfer and hold buffer modals

* Release notes

* VRT + typecheck error fixes

* VRT

* VRT
2024-06-06 17:12:59 -07:00
Joel Jeremy Marquez
417f5805a8 [Mobile] Add loading indicator on mobile transactions list (#2831)
* Add loading indicator on mobile transactions list

* Release notes
2024-06-06 17:12:47 -07:00
Neil
094f0b8a91 Spending Report: filter out offbudget items (#2840)
* filter out offBudget

* notes
2024-06-06 18:47:34 +01:00
Robert Dyer
aa22e6951d Add GoCardless banks to the bank factory test suite. (#367) 2024-06-05 17:33:23 +01:00
Robert Dyer
55724acafa Refactor GoCardless bank code to avoid duplication (#362) 2024-06-05 17:32:44 +01:00
Julian Dominguez-Schatz
b89a32025a Use amount input on rules page instead of plain text field (#2566)
* Use amount input on rules page instead of plain text field

* Add release notes

* Remove unneeded attributes

* Support percent formatting

* Lint + typecheck

* Fix latent bug

* Handle existing data correctly

* PR feedback: naming

* PR feedback: force percent to a positive number

* PR feedback: reset percent to 100 upon changing input type

* Fix input clamping behaviour

* Empty commit to bump ci

* PR feedback: prop cleanup

* PR feedback: no default number format

* PR feedback: cosmetic refactor
2024-06-05 08:25:37 -07:00
Robert Dyer
d62919a357 [WIP] Don't show account tooltips during VRT (#2838)
* Don't show account tooltips during VRT

* add release note
2024-06-04 21:46:10 +01:00
Joel Jeremy Marquez
1c7d9bf141 [Mobile] Budget table revamp (#2642)
* Initial

* Add cheveron to logo

* Updates

* Release notes

* Fix typecheck error

* Fix build error

* Align budgeted

* Fix tests

* Dynamic font sizes in budget table cells

* VRT

* Apply AutoTextSize

* Layout updates

* VRT updates

* Resize text on value update + fix lint/typecheck  errors

* Category/groups take full width

* Cleanup + VRT

* Feedback

* VRT

* Change column visibility indicator

* VRT

* Use SvgExpandArrow

* VRT

* Zero balance contrast on light mode

* Update AutoTextSize key

* Color updates

* VRT
2024-06-04 13:16:09 -07:00
Robert Dyer
e3934b96dc Ignore coverage folder in the coverage report. (#366) 2024-06-04 20:07:55 +01:00
Stefan Hall
6d117f44de Support nynab imports that have (#2817)
- category groups called income
- categories called income
2024-06-04 10:33:28 -07:00
Joel Jeremy Marquez
64821e6a64 [Mobile] Auto create 2 child transactions on split (#2821)
* Auto create 2 child transactions on split

* Release notes

* Fix typecheck error
2024-06-03 19:52:35 -07:00
Neil
e7c6611c88 Custom Reports show activity fix (#2785)
* onShow Activity fix with Weekly Interval fix

* notes

* remove scrollbar

* notes update

* updates
2024-06-03 17:23:17 +01:00
Matt Fiddaman
6220aadb2d Fix CSV import not matching category is (nothing) rules (#2790)
* Fix CSV import not matching category is (nothing) rules

* release note
2024-06-03 08:11:02 -07:00
Sreetam Das
2959054d0c Update regex for looselyParseAmount for 5-9 decimal places (#2799)
* Update regex for `looselyParseAmount` for 5-9 decimal places

* Add release note

* Update comment, add some more tests
2024-06-03 07:52:01 -07:00
Julian Dominguez-Schatz
7d960579f9 Release 'Splits in rules' feature (#2789)
* Release 'Splits in rules' feature

* Add release notes

* Add missed comment

* Remove unused import

* Fix failing test
2024-06-03 07:39:57 -07:00
Robert Dyer
5fd1d05670 Show account notes in tooltip on sidebar (#2796)
* Show account notes in tooltip on sidebar

* add release note

* Only show tooltip for accounts

* Split account name and note into separate nodes

* Add padding inside tooltip

* Move tooltip to the right

* remove commented code

* Tweak the visual design

* Fix lint

* adjust padding

* Update packages/desktop-client/src/components/sidebar/Account.tsx

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

* refactor to avoid function

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-06-03 07:39:33 -07:00
Matiss Janis Aboltins
0e86dea544 ♻️ (tooltip) refactoring to react-aria (vol.6) (#2771)
* ♻️ (tooltip) refactoring to react-aria (vol.6)

* Release notes
2024-06-03 11:56:39 +01:00
Matiss Janis Aboltins
2221fd8dff 🔖 (24.6.0) (#368) 2024-06-03 11:05:23 +01:00
Matiss Janis Aboltins
c92266fd7f 🔖 (24.6.0) (#2819) 2024-06-03 10:46:40 +01:00
Robert Dyer
08aff05a06 Initial support for linking to off-budget accounts (#2788)
* initial support for linking to off budget

* add release note
2024-05-30 13:05:52 -06:00
Neil
1195af76a6 Filter Balance fix (#2777)
* filterQuery

* notes

* update

* lint fix

* VRT

* fix account filter

* VRT

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-05-29 19:33:49 +01:00
Neil
e4bc0caa51 Spending report error fix with some visual changes (#2809)
* spending error fix with some visual changes

* notes
2024-05-29 19:32:36 +01:00
youngcw
c3783b6498 Revert #2643 (#2803)
* Revert "Fix amount filter to include both incoming and outgoing amounts (#2643)"

This reverts commit df7ad22377.

* leave in old release note

* note
2024-05-28 08:35:31 -07:00
Robert Dyer
55ef74eabc Better account sync listing (#2795)
* Better account sync listing

* use PrivacyFilter on balances

* add release note
2024-05-28 08:27:32 -07:00
Robert Dyer
9667e1c269 Make picking budget months easier to see (#2797)
* Make picking budget months easier to see

* add release note
2024-05-28 07:57:24 -07:00
Julian Dominguez-Schatz
b803731bc5 Match on amount when creating a rule from a transaction (#2786)
* Use amount when creating a rule from a transaction

* Add release notes
2024-05-22 08:57:32 -07:00
Robert Dyer
8415e7cddc Avoid using underlines for emphasis (#2765)
* Avoid using underlines for emphasis

* add release note
2024-05-22 08:51:33 -07:00
Matiss Janis Aboltins
5f16349a19 ♻️ (tooltip) refactoring to react-aria (vol.7) (#2778) 2024-05-21 21:40:55 +01:00
Julian Dominguez-Schatz
aff5bba4ec Template only the relevant amount in a split-schedule category (#2652)
* Template only the relevant amount in a split-schedule category

* Add release notes

* Adjust sign correctly depending on category type
2024-05-21 10:29:39 -07:00
Joris Pelgröm
d79b8c6cb2 Fix notes icon changing size/position with long category or group names (#2773) 2024-05-21 08:20:46 -07:00
Tyler Marshall
bbc123c3b8 fix: move rollover arrow into view (#2774)
* fix: move rollover arrow into view

ref: https://github.com/actualbudget/actual/issues/2757

* fix: adds isNarrowWidth for responsive arrow

* ci: fix lint

* fix: update category name
2024-05-21 07:28:48 -07:00
Neil
04273d8064 Date Range error catch (#2769)
* Date Range error catch

* notes

* update checkDate
2024-05-20 21:27:24 +01:00
Neil
3f1fd55a7b Custom Reports: Table Totals Callback (#2768)
* Table Totals Callback

* notes

* Update packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableRow.tsx

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

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-05-20 17:23:59 +01:00
shall0pass
bfda42a2be Github action to automatically deploy a release image to Netlify (#2750)
* netlify script

* remove npm ci

* add filter

* release note

* whoops
2024-05-20 08:59:52 -05:00
Tyler Marshall
201f0fd336 fix: put income on left and expense on right always, hide when 0 (#2775) 2024-05-18 22:37:56 +01:00
Travis Ralston
99ab8db99f Ensure api types are included in the npm package (#2559)
* Ensure api types are included in the npm package

* changelog

---------

Co-authored-by: DJ Mountney <david@twkie.net>
2024-05-18 10:23:18 -07:00
DJ Mountney
f604fdaf36 Add crdt to the API package to fix types (#2738)
* Add crdt to the API package to fix types

- This way we get the crdt types supported

* Add release note

* Cleanup yarn.lock merge
2024-05-17 17:07:24 -07:00
Matiss Janis Aboltins
c311d4a8df 🐛 fix recurring schedule datepicker - port to new Popover (#2766) 2024-05-17 19:46:54 +01:00
Neil
1fc7c9974b Custom Reports: TS strict changes #3 (#2728)
* TS strict changes

* notes

* TS strict custom spreadsheets

* notes

* TS strict group speadsheets

* notes

* AreaGraph

* render row changes

* type fix

* merge fixes
2024-05-16 22:54:26 +01:00
Joel Jeremy Marquez
e63fb46c8f Add run-vrt script to run vrt inside docker (#2762)
* Add run-vrt script to run vrt inside docker

* Release notes

* Update README

* Support E2E_START_URL env variable

* Update README
2024-05-16 14:51:46 -07:00
Michael Clark
db6b4e4800 ⬆️ Updated better-sqlite3 to 9.6.0 (#357) 2024-05-16 21:10:40 +01:00
Michael Clark
2901b5e5d0 :electron: Update Electron to latest stable version (#2763) 2024-05-16 20:18:50 +01:00
vojeroen
abd049e715 fill in creditor name for BNP bank transactions (#349) 2024-05-16 19:57:24 +01:00
Rubén Martínez Hostyn
c51e636637 Add BANKS_WITH_LIMITED_HISTORY constant and Implement BANKINTER_BKBKESMM Bank Adapter (#355) 2024-05-16 19:56:51 +01:00
Matthew Booe
df7ad22377 Fix amount filter to include both incoming and outgoing amounts (#2643)
* Update filter amount to filter incoming and outgoing transactions

* Add test and fix logic

* Added release note

* Update with linter fixes

* Update new ammount filter to apply to all ops

* Fix lint
2024-05-16 11:25:56 -07:00
Joel Jeremy Marquez
b11a3dc267 [Mobile] Require account in mobile transaction entry + confirm transaction delete (#2753)
* Require account in mobile transaction entry + confirm transaction delete

* Release notes

* VRT

* VRT
2024-05-16 09:31:23 -07:00
Wizmaster
5a77051a72 Make comma's and period interchangeable when entering figures (#2672)
- Only allowed for formats not using period or comma as a thousand separator
2024-05-16 08:02:27 -07:00
Matiss Janis Aboltins
f8352808c4 (api) ability to run bank sync via the API (#2683) 2024-05-16 08:28:58 +01:00
Wizmaster
e5933ad8cd Don't update transaction date when importing manually (#2648)
- Manual import should not override the transaction date as done with bank account sync
2024-05-15 14:16:34 -07:00
Joel Jeremy Marquez
e3b4c3f559 Page enhancements - add page headers to mobile reports (#2733)
* Refactor Page component and use in report pages

* Release notes

* Fix typecheck error and budget table background

* Update pages

* VRT updates

* Reports page data-testid

* VRT updates

* Updates

* VRT

* Paddings

* Put create new custom report in page header

* Cleanup

* Feedback

* VRT

* Fix graph sizes in mobile

* Update flex grow

* VRT
2024-05-15 13:27:48 -07:00
Matiss Janis Aboltins
2d1abf477c 🐛 (api) fix performing api operations for local e2e encrypted files (#2698) 2024-05-15 17:10:32 +01:00
Matiss Janis Aboltins
392f8085c1 ♻️ (tooltip) refactoring to react-aria (vol.4) (#2724) 2024-05-15 08:35:38 +01:00
Joel Jeremy Marquez
6021d4ab0b [Mobile] Do not remember last entered category in mobile transaction entry (#2754)
* Do not remember last entered category in mobile transaction entry

* Release notes
2024-05-14 13:07:10 -07:00
Neil
f1f1ba87e2 Custom Reports: TS strict changes #2 (#2727)
* TS strict changes

* notes

* TS strict custom spreadsheets

* notes

* render row changes

* update report

* notes
2024-05-14 18:14:35 +01:00
Robert Dyer
7cee3b86ce Add API for working with rules (#2568)
* Add API for working with rules

* Add release note

* Change 'payees-get-rules' return type to RuleEntity[]

* Reuse existing handlers, make names not have 'payee', add two getters

* fix linter

* fix bad handler name

* fix broken handler name

* add test cases for 'getPayeeRules'

* fix broken test

* Remove unused locals

* Update packages/loot-core/src/types/api-handlers.d.ts

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

* Update packages/loot-core/src/types/server-handlers.d.ts

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

* Strict types and slightly improved return interface

* update test comment to match new API names

* fix linter issues

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-05-14 08:01:47 -07:00
Joel Jeremy Marquez
9acea32f3a Auto insert decimals to mobile split transaction amounts (#2746)
* Auto insert decimals to mobile split transaction amounts

* autoDecimals prop

* Fix typecheck error
2024-05-14 07:49:14 -07:00
Matiss Janis Aboltins
44770a36c7 🐛 fix networth graph loading forever for empty budgets (#2725) 2024-05-13 17:34:46 +01:00
Neil
3e03718f13 Fix spending report error (#2745)
* spending error

* fixes

* notes
2024-05-13 16:00:51 +01:00
Neil
9c3075f60f Custom Reports: TS strict changes #1 (#2726)
* TS strict changes

* notes

* renderRowProps

* RenderTableRow
2024-05-13 16:00:16 +01:00
Daniel Gale-Rosen
7e04226b34 Sort filters before creating dropdown (#2719)
* sort filters before creating dropdown

* add release notes
2024-05-13 07:40:31 -07:00
Joel Jeremy Marquez
b0f55fae38 Fix preview transactions not detecting schedule as paid when a child transaction is linked. (#2712)
* Consider child transactions when querying preview transactions

* Release notes
2024-05-09 09:44:25 -07:00
Boris Fritscher
7c658da15d [Feature] CAMT.053 import (new version) (#2706)
* Implement CAMT.053 transactions importer with a file parser and enable xml filetype in dialogs

* add release notes

* fix types and lint
2024-05-09 08:07:37 -07:00
Joel Jeremy Marquez
ddddec029f Update load budget loading texts (#2730)
* Update load budget loading texts

* Release notes
2024-05-08 15:58:01 -07:00
Neil
98d4cf450e Filters icon (#2729)
* filter icon change

* VRT

* notes

* lint fix
2024-05-08 22:23:28 +01:00
Joel Jeremy Marquez
243703b2f7 [Mobile] Budget file quick switch (#2507)
* Update autocomplete types

* Remote optional type

* Improve SingleInputModal

* Fix lint error

* Mobile budget file quick switch mode

* Release notes

* Updates

* Fix typecheck error

* Fix paddings

* Update modal

* Fix lint error

* Display no budget files

* Fix remote files not showing
2024-05-07 15:45:57 -07:00
Yoonjae Choi
e917c96407 [WIP] revise modal margin (#2714)
* design: revise modal margin

* docs: revise release note name

* remove: remove style padding

---------

Co-authored-by: Yoonjae Choi <Choi@quantusui-MacBookAir.local>
2024-05-07 15:27:54 -07:00
Neil
8a70d2464d Custom Reports: Show table activity (#2696)
* Show table activity

* notes

* lint fix

* add underline

* add linkstyle

* fix table aligment
2024-05-07 18:02:17 +01:00
Neil
dcb25bb5e6 Custom Reports convert all jsx files (#2707)
* Overview

* Router and Selector

* ReportSidebar

* ReportTopbar

* CustomReport

* updates

* notes

* Patch some TS issues

* fix malfunctioning disabled lists

* add find

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-05-07 17:59:51 +01:00
Joel Jeremy Marquez
f20e9c6bdb [Mobile] Schedule name and date in mobile scheduled transaction modal (#2664)
* [Mobile] Add schedule name and date to scheduled transaction modal

* useRef to prevent rerenders

* Release notes

* Fix typecheck error

* Fix lint errors

* Update schedule font

* Heavier font weight
2024-05-07 09:48:27 -07:00
Matiss Janis Aboltins
f73f6c7f0d ♻️ (tooltip) refactoring to react-aria (vol.3) (#2631) 2024-05-07 17:18:51 +01:00
DJ Mountney
37457cd6cd Create types for the external versions of entities meant for the API (#2716)
* Create types for the external versions of entities meant for the API

- Otherwise the types used in the API were actually wrong vs the data we were sending

* Add release note
2024-05-07 07:38:02 -07:00
Matiss Janis Aboltins
c16f4c71c5 🐛 remove mac electron app code-signing (#2715) 2024-05-07 08:04:21 +01:00
Joel Jeremy Marquez
452ca82287 Use budget name as export file name (#2713)
* Use budget name as export file name

* Release notes
2024-05-06 14:37:58 -07:00
Joseph Livecchi
ffddd9e8a5 Added Header Authentication - Client Part (#2362)
* Updated Login to handle header auth
2024-05-04 12:22:18 -07:00
Joseph Livecchi
3a486ed973 Added Header Authentication - Server Part (#312)
* Added loginMethod config option

Added a new config option loginMethod that can be password (default) or header for header authentication. This value is returned to the client to be used on the front end


---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Co-authored-by: DJ Mountney <david.mountney@twkie.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Johannes Löthberg <johannes@kyriasis.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: DJ Mountney <david@twkie.net>
2024-05-04 10:29:58 -07:00
DJ Mountney
2178da0414 Fix some additional incorrect types (#2676)
* Fix some additional incorrect types

- This is part of working towards having enough correct types to be able to run tsc on our packed api without error.
- Working towards being able to ship types for the api in the package

* Add release note
2024-05-04 09:58:44 -07:00
Jakob Lover
33c204dedb Extend bank adapter for SEB Kort (#350) 2024-05-04 11:41:26 +01:00
Joel Jeremy Marquez
f8809df59c Parallel cloud file download (#2700)
* Fetch cloud file and file info in parallel to speed downloads up

* Release notes

* Rename release notes
2024-05-03 13:25:29 -07:00
Dario Ernst
41a34d0f1c Add gocardless support for Sparkasse Karlsruhe (Germany) (#346) 2024-05-03 20:56:58 +01:00
Neil
04bc0c3c64 Monthly spending report (#2622)
* monthly Spending

* Add Average

* notes

* title

* date filter

* TS fixes and hide average when no data

* fix average tooltip and relabel x-axis

* Wording/verbiage

* filters changes

* feature flag

* networth card fix
2024-05-03 20:34:21 +01:00
Neil
0aa6a057b1 Custom Reports changes (#2677)
* adjustments

* notes

* scroll height

* lint fix

* compact scrollbar

* fixes

* filters fix

* scrollbar color

* fix week ranges
2024-05-03 20:32:37 +01:00
Matiss Janis Aboltins
f1488077dd 🔖 (24.5.0) mobile improvements and much more (#351) 2024-05-03 17:51:23 +01:00
Matiss Janis Aboltins
b34aaab5f5 🔖 (24.5.0) mobile improvements and much more (#2693) 2024-05-03 17:32:07 +01:00
Joel Jeremy Marquez
688bfe59e8 Fix management app flashing on page init (#2692)
* Fix management app flashing on init

* Release notes
2024-05-02 10:34:20 -07:00
Joel Jeremy Marquez
8f543a29e0 [Mobile] Fix mobile account notes modal not retrieving correct notes (#2690)
* Fix mobile notes modal not retrieving correct notes

* Release notes

* Revert useState initial value
2024-05-02 08:10:50 -07:00
shall0pass
ad73a404c4 [Goals] Allow decimal in percent templates (#2689)
* allow decimal in percent templates

* release note
2024-04-30 17:15:50 -05:00
youngcw
4ed9f4fff4 [Goals]add template to set x month average (#2688)
* add template to set x month average

* error on 0

* note

* lint
2024-04-30 12:19:31 -07:00
kyangk
176c8466a4 Ignore transactions with empty date & amount (#2653) 2024-04-27 21:26:12 +01:00
Matiss Janis Aboltins
703c319f7f ♻️ hide theme selector in prod (#2671) 2024-04-27 21:25:45 +01:00
Matt Fiddaman
ca8a8174c4 Fix menuItemTextHeader contrast in dark mode (#2638)
* Fix menuItemTextHeader contrast in dark mode

* release note

* darken menu background and change accent colour to purple in dark theme

* change menu keybind accept colour to purple in midnight theme

* update release note

* fix menuBorder colour
2024-04-27 09:29:47 -07:00
Joel Jeremy Marquez
f8af8f95ac Fix loading screen not showing when opening a budget file (#2663)
* Fix app loading screen

* Release note

* Code review feedback
2024-04-26 14:03:01 -07:00
youngcw
98a7aac736 add schedule name check to check templates (#2667)
* check schedule name

* note
2024-04-26 06:57:52 -07:00
Neil
d49f907f53 Custom Reports Adjustments (#2659)
* monthly Spending

* Add Average

* notes

* title

* date filter

* TS fixes and hide average when no data

* fix average tooltip and relabel x-axis

* Wording/verbiage

* remove spending files

* adjustments

* reports.d revert

* revert filter changes

* adjust update filters

* notes

* remove old notes

* adjust style

* lint fixes
2024-04-26 08:59:16 +01:00
Joel Jeremy Marquez
164dd399b0 [Mobile] Add amount colors to mobile accounts and transaction list (#2665)
* Add amount colors to mobile transaction list

* Release notes

* Fix lint error

* Add amount colors to mobile accounts page

* VRT updates
2024-04-25 19:30:26 -07:00
Matiss Janis Aboltins
f41d3f22c7 improving error handling for lazy-loading (#2657) 2024-04-25 19:31:04 +01:00
Neil
469c789c14 Mobile reports (#2624)
* mobile reports

* notes

* header updates

* hide tooltip in mobile view

* visual updates

* padding changes

* VRT

* bottom padding

* merge fixes

* VRT

* unselectable

* merge fixes
2024-04-24 16:08:02 +01:00
Wizmaster
6ec3728280 Fix reconciling split translations from nYNAB import creates orphan transfers (#2502)
* Reconciling split translations from nYNAB import creates orphan transfers
- Fixed link between subtransaction transfers and transaction transfers
- Reworked payee transaction and subtransaction import

* Reconciling split translations from nYNAB import creates orphan transfers
- Added release note

* Reconciling split translations from nYNAB import creates orphan transfers
- Reworkd data.transactions and data.subtransactions loops

* Reconciling split translations from nYNAB import creates orphan transfers
- Added comments

---------

Co-authored-by: DJ Mountney <david@twkie.net>
2024-04-23 18:16:33 -07:00
DJ Mountney
c8cc479358 Fix for electron builds (#2658)
* Test a fix for electron builds

* Add release note
2024-04-23 17:50:41 -07:00
Matt Fiddaman
51ad488ce2 Make /login show descriptive error when an incorrect password is submitted (#2641) 2024-04-23 17:21:10 +01:00
Neil
985411d48f Custom Reports: Line show activity (#2636)
* StackedBar Activity

* LineGraph and some session updates

* notes

* table graphs

* Revert "table graphs"

This reverts commit 69b5a44126.

* Revert stackedBar

* add filters

* revert

* notes

* lint fix

* visual updates
2024-04-22 20:28:00 +01:00
Joel Jeremy Marquez
53b5f3a0fc Consistent modal paddings (#2571)
* Update autocomplete types

* Remote optional type

* Improve SingleInputModal

* Fix lint error

* Update modal paddings

* Release notes

* Update release notes

* Update default Modal padding and style

* VRT update

* VRT

* VRT
2024-04-22 10:50:29 -07:00
Matt Fiddaman
c0b21a9f7e Add backup date field for GoCardless transactions with bank BNP_BE_GEBABEBB (#345)
* Add backup date field for GoCardless transactions with bank BNP_BE_GEBABEBB

* release note
2024-04-22 18:27:04 +01:00
Joel Jeremy Marquez
3ec4ef71c6 [Mobile] Update mobile labels to be sentence case + add labels to mobile budget and balance modals (#2627)
* Mobile UI updates

* Release notes

* VRT updates

* Midnight VRT
2024-04-22 08:41:16 -07:00
Joel Jeremy Marquez
5df02c19dc [Mobile] Add To Be Budgeted category to cover and transfer modal (#2635)
* Add To Be Budgeted category to cover and transfer modal

* Release notes

* Fix To Be Budgeted input selection

* Fix typecheck error

* Fix duplicate modals in firefox

* Fix lint error
2024-04-22 08:39:01 -07:00
Stefan Hall
464c9de6fb Add VRT test for validating that split transaction rules work as expected (#2604)
* Add UI test for validating that split transaction rules work as expected

* Apply suggestions from code review

Renames split-transactions-add to add-split-transactions

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

* Define id for finding splitactions on the page wher its used

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2024-04-22 08:15:43 -07:00
Matiss Janis Aboltins
aad609f427 added loading descriptions and lazy-loaded module retries (#2639) 2024-04-22 08:05:27 +01:00
Joel Jeremy Marquez
7313cf722d [Maintenance] Add midnight theme VRT screenshots (#2619)
* Add midnight theme VRT screenshots

* Release notes

* Midnight VRT screenshots

* Update packages/desktop-client/playwright.config.js

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

* VRT

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-04-21 21:49:03 -07:00
Joel Jeremy Marquez
978a658c1e [Mobile] Fix encryption modals for mobile (#2633)
* Fix encryption modals for mobile

* Release notes
2024-04-21 21:48:44 -07:00
Julian Dominguez-Schatz
cdad43ff32 Improve 'Before split' section in rule splits (#2651)
* Copy category from parent transaction when splitting

* Rename 'Before split' -> 'Apply to all'

* Add release notes

* Update tests to reflect change
2024-04-21 15:00:19 -07:00
Neil
4c29afd424 Custom Reports update TS issues (#2637)
* update TS issues

* notes

* review fixes

* revert

* add parseInt

* fix getLiveRange
2024-04-21 20:46:25 +01:00
Neil
c98a21b030 Custom Reports StackedBar show activity (#2606)
* StackedBar Activity

* LineGraph and some session updates

* notes

* table graphs

* Revert "table graphs"

This reverts commit 69b5a44126.

* revert Line

* notes update

* adust session code and add filters

* review fixes
2024-04-21 18:26:32 +01:00
Matiss Janis Aboltins
f5fde34952 🐛 fix budget-type identification when deleting files (#2649) 2024-04-20 22:36:22 +01:00
youngcw
59f854c075 fix superfluous tooltip scrollbars fixes #2621 (#2650)
* fix tooltips with scrollbars

* note
2024-04-20 14:32:43 -07:00
Matt Fiddaman
4ae654d54d Refactor to add strict type comparisons and remove unnecessary else blocks (#343) 2024-04-20 18:57:07 +01:00
Joel Jeremy Marquez
85affae70f [Maintenance] Fix slow/flaky VRT test (#2634)
* Reduce iterations on schedule test

* Release notes

* Set longer timeout
2024-04-19 14:06:21 -07:00
Matt Fiddaman
1bbba663b2 Make /admin/login return a descriptive error when no password is provided (#342) 2024-04-19 21:35:19 +01:00
Matt Fiddaman
44c7b4eab0 Make running app.js cwd agnostic, extend config to allow changing dataDir (#341) 2024-04-19 21:24:00 +01:00
Adam
57d4cc57cd [Maintenance] Organize .gitignore (#2623)
* Organize .gitignore

* Rename section in .gitignore

* Create 2623.md
2024-04-19 12:56:02 -07:00
youngcw
7d892d8164 Add assets to release (#2632)
* add flatpack to electron build

* note

* add to workflow

* try to fix workflow

* typos

* workflow

* work

* update

* add repo

* update other electron workflow

* stable doesn't work

* fix version

* add step

* note

* fix
2024-04-19 12:54:45 -07:00
youngcw
84fbc7e464 add flatpak to electron build list (#2617)
* add flatpack to electron build

* note

* add to workflow

* try to fix workflow

* typos

* workflow

* work

* update

* add repo

* update other electron workflow

* stable doesn't work

* fix version
2024-04-19 12:45:34 -07:00
Joel Jeremy Marquez
5f77b87b07 [Mobile] Add negative/positive colors to mobile transaction amount input (#2628)
* Add colors to mobile transaction amount input

* VRT updates

* Release notes
2024-04-18 21:03:38 -07:00
Neil
97ec8f8d3a Custom Reports: Add filters to sessionStorage (#2612)
* Add filters to sessionStorage

* notes

* setSessionReports util
2024-04-18 20:38:25 +01:00
Joel Jeremy Marquez
407ad4deee [Mobile] Budget month notes and budget action menu (#2610)
* Budget month menus

* Release notes

* Update vrt and fix lint

* Merge budget month modals into one modal

* Fix typecheck error

* VRT updates

* Update modal triggers

* VRT updates

* Adjust budget month modals size

* Fix lint error

* Remove excess padding

* Use modal padding prop
2024-04-18 10:36:23 -07:00
Matiss Janis Aboltins
1c04aeae39 🔥 stripping out plaid integration (#2616) 2024-04-18 18:31:28 +01:00
youngcw
02e7d036d5 rename electron master workflow (#2620)
* rename

* note
2024-04-17 13:18:21 -07:00
Joel Jeremy Marquez
16ef674910 [Mobile] Use decimal input mode for mobile modal amount fields (#2607)
* Use decimal input mode for mobile modal amount fields

* Release notes
2024-04-17 06:34:47 -07:00
Joel Jeremy Marquez
19bcfbe6e9 [Mobile] Collapsible budget groups (#2611)
* Mobile collapsible budget groups

* Release notes

* VRT updates

* No tap highlight when clicking collapse/uncollapse button

* Income group no tap highlight

* No highlight on hover
2024-04-16 13:26:23 -07:00
Adam
a2c1c2dea6 Change default theme from light to the system's default theme (#2544)
* Change Actual default theme to System Default

* Add release notes

* Update release notes

* update vrt

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-04-16 13:14:20 -07:00
Joel Jeremy Marquez
e9b5bfcc53 [Mobile] Use budget start month pref on mobile to match desktop behavior (#2613)
* Use budget start month pref on mobile to match desktop behavior

* Release notes

* Fix failing tests
2024-04-16 13:06:53 -07:00
Joel Jeremy Marquez
672dd5ea4b [Mobile] Fix account notes not retrieving correctly in mobile (#2599)
* Fix account notes not retrieving correctly

* Release notes

* Update release notes

* Fix type errors
2024-04-16 13:06:26 -07:00
Joel Jeremy Marquez
b101f9989b Display balances in category autocomplete (#2551)
* Display balances in category autocomplete

* Release notes

* Fix typecheck error

* Update balance colors

* Show category balances in mobile

* Patch unit tests

* Darket midnight theme autocomplete hover color

* Category autocomplete split transaction highlight

* Update 2551.md

* Extract modals from EditField

* Fix failing tests

* Update variable names

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-04-16 12:14:20 -07:00
Matiss Janis Aboltins
cf9b8c357e 🐛 (tooltip) add scrollbars to tooltips that go out of bounds (#2614) 2024-04-16 19:43:00 +01:00
Joel Jeremy Marquez
c71e1d2e8a [Maintenance] Add missing key prop to all modals (#2609)
* Add key prop to all modals

* Release notes
2024-04-16 10:36:07 -07:00
Mohamed El Mahdali
1e462714e4 fix(#2575): Stop cash flow card labels from getting cutting off if bar height is too low (#2597) 2024-04-16 18:27:13 +01:00
Neil
d9f55460dd Add daily and weekly to custom reports interval list (#2483)
* Button changes and time filters

* rename on dashboard

* notes

* fix time filters

* Sort Categories

* Page title

* category sort order

* move button

* featureflag

* Highlight report name

* sankey fix

* VRT

* remove doubled element

* adjust to match master

* add Year

* notes

* lint fix

* update names

* IntervalsUpdates

* fixing bugs

* ts updates

* lint fix

* merge fixes

* notes

* simplify lookups

* Add Daily and Weekly

* notes

* notes

* merge fix

* TS fix

* Change week start date based on user prefs

* fix weeks

* fix averages

* remove $week

* remove date-week

* TS fixes
2024-04-16 16:19:05 +01:00
Joel Jeremy Marquez
77a670bbc3 [Mobile] Scheduled transaction menu modal (#2608)
* Mobile scheduled transaction menu modal

* Release notes
2024-04-15 11:51:09 -07:00
Matiss Janis Aboltins
1a1fe9ac9d extra error handling in case backend failed loading (#2601)
*  extra error handling in case backend failed loading

* Release notes

* Rename some error vars
2024-04-15 07:39:57 +01:00
Johannes Löthberg
ae0faf467f Allow setting accessValidForDays and maxHistoricalDays per bank (#334)
* Allow setting accessValidForDays per bank

This also stops taking `accessValidForDays` from the client since it's
hardcoded there anyway and it's simpler to just have these per-bank
values in one place.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>

* Get the max allowed maxHistoricalDays value from the GoCardless API

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>

* Upgrade nordigen-node to 1.4.0

Contrary to the claims in the nordigen-node changelog 1.3.0 did *not*
fix the missing support for passing in accessValidForDays, so we have to
upgrade to 1.4.0 to actually get the fix.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>

---------

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2024-04-14 17:21:47 +01:00
Matiss Janis Aboltins
16df116d1d ♻️ (tooltip) migration to react-aria (vol 2) (#2593) 2024-04-14 11:30:57 +02:00
Joel Jeremy Marquez
d7075ae551 Balance menu modal enhancement (#2598)
* Balance menu modal enhancement

* Release notes

* Fix typecheck error
2024-04-13 20:51:56 -07:00
Joel Jeremy Marquez
e500cba7e9 [Mobile] Category budget actions modal (#2501)
* Update autocomplete types

* Remote optional type

* Improve SingleInputModal

* Fix lint error

* Category budget modals

* Cleanup + release notes

* Cleanup

* Fix typecheck errors

* Update useMergedRefs

* Fix lint error

* Fix typecheck error

* VRT updates

* Focus amount on mount

* Fix errors

* Open modal on budget amount click

* Updates

* Remove unused props + updates

* Fix lint error

* Close budget menu modal on enter

* Delete comment

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

* Update release notes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-04-13 13:49:09 -07:00
Joel Jeremy Marquez
2d188b3941 [Mobile] Category activity/transactions page (#2531)
* Mobile category transactions

* Release notes

* Fix typo

* Fix typecheck error

* Handle null location state

* VRT

* Fix account search

* Update test

* Search placeholder

* vrt

* Add month to page title

* Cleanup

* Fix AccountName component

* Replace ButtonLink with Link

* Fix typecheck

* Code review update
2024-04-13 11:45:43 -07:00
Matt Fiddaman
e88ea69801 Force transaction cleared checkboxes to show on reconcile view (#2589)
* Force transaction cleared checkboxes on reconcile view

* Add release notes
2024-04-13 09:44:54 -07:00
Mohamed El Mahdali
9aeab0ff5b Hide Y axis values of net worth graph when privacy mode i… (#2594) 2024-04-13 12:50:35 +01:00
Neil
36c700d92d Custom Reports: Show Activity for donutGraph (#2583)
* Activate Click for donut

* notse
2024-04-13 10:30:38 +01:00
Michael Clark
eed6105222 Electron: Fix load backup functionality (#2580) 2024-04-12 21:28:55 +01:00
dependabot[bot]
a5a5f30dd7 build(deps): bump tar from 6.1.11 to 6.2.1 (#335)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.11 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.1.11...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-12 21:25:59 +01:00
youngcw
291e3a8d14 Allow 5 decimal places in file import parser (#2588)
* allow specifically 5 decimal places in parser

* note

* update tests

* lint
2024-04-12 11:13:21 -07:00
Robert Dyer
edd34b7903 Dim categories hidden by their groups (#2582)
* Dim categories hidden by their groups

* Dim hidden cats on mobile view

* Do not show hide/show menu on mobile for categories in hidden groups

* Rename catGroup to categoryGroup

* Fix lint issue

* Hide menu line

* Pass in categoryGroup instead of isHidden

* avoid need for extra local

* fix lint issues
2024-04-12 10:56:46 -07:00
Attila Kerekes
345ea71eed Add option to disable reconciliation when importing CSV and files. (#2585) 2024-04-12 07:54:55 -07:00
Robert Dyer
d89a016ab1 Do not allow hiding income category group (#2581)
* Do not allow hiding income category group

* add release note

* rename file

* Migrate DB so income groups are not hidden

* Update migration to explicitly match on is_income = 1
2024-04-12 07:40:01 -07:00
Joel Jeremy Marquez
b87951855b [Maintenance] Remove left behind editableTitle prop (#2586)
* Remove left behind editableTitle prop

* Release notes
2024-04-11 14:53:49 -07:00
Joel Jeremy Marquez
70e37c0119 Use desktop colors for mobile autocomplete modals (#2577)
* Use desktop colors for mobile autocomplete modals

* Release notes

* Color updates

* Color updates

* Update close button

* Fix typecheck

* Rename to ModalCloseButton

* Update ModalTitle
2024-04-11 14:33:03 -07:00
Joel Jeremy Marquez
f55bd860ba [Mobile] Budget menu modals (#2491)
* Update autocomplete types

* Remote optional type

* Improve SingleInputModal

* Fix lint error

* Mobile budget page modals

* Release notes

* Fix typecheck / lint errors

* Fix typecheck errors

* Fix typecheck error

* Modal logo

* Fix typecheck error

* VRT updates

* Modal header margins

* Update 2491.md

* ModalTitle shrinkOnOverflow + VRT
2024-04-11 12:41:06 -07:00
DJ Mountney
0f960df8cf Improve api output types (#2567)
* Improve api output types

- Fixes some missing models
- Fixes some output path aliasing

* Add changelog
2024-04-11 07:36:48 -07:00
Attila Kerekes
915c562545 Add option to disable reconciliation when importing OFX files. (#2564) 2024-04-10 20:12:59 -07:00
Julian Dominguez-Schatz
770d86258f Support splits in create-rule option on account page (#2569)
* Support splits in create-rule option on account page

* Add release notes
2024-04-10 20:11:54 -07:00
Joshua Harris
a955fe2474 When starting input with operator, append to existing value instead of replacing (#2523)
Co-authored-by: Joshua Harris <2312397+JazzyJosh@users.noreply.github.com>
2024-04-10 08:05:20 -07:00
Joel Jeremy Marquez
4e9130ac29 [Mobile] Fix report budget income budgeted input (#2573)
* Fix mobile report budget income budgeted input

* Release notes
2024-04-09 13:08:02 -07:00
Joel Jeremy Marquez
e94a5505d8 [Mobile] Close modal after transferring / covering balance in mobile budget page (#2572)
* [Mobile] Close modals after performing a balance actions e.g. transfer / cover

* Release notes
2024-04-09 13:07:47 -07:00
Neil
1ee2cbec1c Custom Reports: Show Activity onClick (#2522)
* barGraph

* notes

* sessionStorage

* sessionStorage Complete

* Click for details

* mode click graphType

* compact

* hidden and offbudget working

* add pointer

* typecheck fix
2024-04-09 18:37:07 +01:00
Jenna
da6b039f10 Bugfix:Midnight theme button contrast (#2538)
* added green700 (g3) to highlight text in PayeeAutocomplete and CategoryAutocomplete

* added upcoming release note doc for Isuee 2488

* modified background and text to meet WCAG AA compliance for contrast

* updated code for autocomplete highlight on menu items

* fixed linting errors and renamed release note

* updated release note category from 'bug' to 'bugfix'

* fixing the light theme

---------

Co-authored-by: Jenn Cox <jenncox@Jenns-MacBook-Air.local>
2024-04-09 07:47:38 -07:00
Matiss Janis Aboltins
310cc04a2b ♻️ (bank-sync) unify the sync/reconciliation logic for internal & external sync (#2534) 2024-04-09 07:06:04 +01:00
shall0pass
6fce10aea0 [Bugfix] Remove menu from income group on mobile view (#2570)
* remove menu option from Income group

* note
2024-04-08 19:51:59 -05:00
Matiss Janis Aboltins
97a664159b ♻️ (tooltip) refactored tooltip to react-aria (#2493) 2024-04-08 17:51:38 +01:00
Robert Dyer
c2291d4b5d Show sync indicator in account header (#2560) 2024-04-07 22:03:59 +01:00
Neil
d6de90a296 Consolidate Link props (#2558)
* Remove Link Button

* remove AnchorLink

* remove ButtonLink

* notes

* merge fix

* clickLink

* typecheck fix

* remove link option from button

* remove ExternalLink

* VRT
2024-04-07 20:07:42 +01:00
Robert Dyer
f06bbf9a51 Add ACTUAL_PORT environment variable to docker-compose.yml (#333) 2024-04-07 16:27:48 +01:00
shall0pass
90305965ba Cleanup tool group enhancement (#2480)
* add group enhancement

* warnings

* note

* add more group functions

* add Global: to differentiate warning from group warnings

* weights not properly recorded for sinking groups, safeNumber error
2024-04-06 19:12:02 -05:00
Neil
b655009477 Custom Reports: Fix live range (#2557)
* fix live range

* card updates

* type fix

* notes
2024-04-06 22:46:58 +01:00
Joel Jeremy Marquez
2e600e52c7 [Maintenance] Update TransactionEdit conponent onEdit function to use serialized transactions (#2555)
* [Maintenance] Update onEdit to use serialized transactions

* Release notes
2024-04-06 15:19:12 -06:00
Neil
b5f617dbe5 Custom Reports bug fix (#2556)
* fix bug

* notes
2024-04-05 22:04:04 +01:00
Neil
b3fc23201e Fix toggle bug (#2553)
* fix toggle bug

* notes
2024-04-05 00:38:49 +01:00
Joel Jeremy Marquez
6f251e6024 [Mobile]: More functionalities (#2472)
* Balance modals

* Release notes

* Fix typecheck errors

* Fix errors

* Mobile scheduled transaction modal

* Cleanup

* Fix props

* Fix typecheck errors

* Updates

* Fix autocomplete typings

* Update autocomplete types

* Fix typecheck errors

* Fix typecheck errors

* Remote optional type

* Pass this to apply

* Use bind

* Fix typecheck error

* Ignore typecheck error for now

* Add onClose in Autocomplete

* open category modal on enter in transfer modal

* Budget summary modals

* Accounts update

* Add paddingBottom

* Fix typecheck error

* Revert navigate

* Disable esline

* Close account and Reopen account

* Improve SingleInputModal

* Fix lint error

* Fix category autocomplete modal header

* Rebase updates

* Cleanup

* Clearer error message

* Close report balance tooltip on selection

* Updated based on review
2024-04-04 13:53:55 -07:00
Matiss Janis Aboltins
b356004f68 🔧 updated github issue template to hopefully reduce the amount of support (#2548)
* 🔧 updated github issue template to hopefully reduce the amount of support

* Release notes
2024-04-04 19:34:09 +01:00
David Kus
66dc593fa5 Show/hide reconciled transactions in the account view (#2542)
* Show/hide reconciled transactions

* Adding release note

* Fixing lint issues

* Filters should still apply after hiding/showing reconciled

* Using fetch transactions with filter parameter
2024-04-04 08:04:19 -07:00
David Kus
8b34ba3958 Fixing import of reconciled split transactions (#2543)
* Fixing import of reconciled split transactions

* Adding release note
2024-04-04 08:03:52 -07:00
ilar
2df774d9f5 Mobile auto decimal (#2536)
* Format the input field when entering transaction value, automatically populate decimal position.

* Add note.

* Fix linting issues.

* Turn off autoDecimal if we're hiding decimals anyway.

* Shorten changelog.
2024-04-04 08:03:26 -07:00
Ryan Bianchi
c96c957a34 modify existing LineGraph to track budget items over time (#2506)
* modify exiting LineGraph to track budget items over time

* linter pass 1

* increase line weight, add sorting and colour to tooltip

* second lint pass

* add release note

* use new disabledLists, format tooltip, other nits from review

* add margins to LineGraph

* adding missed linting

* remove new line icon, add disable options for split, legend, label

* Update ReportTopbar.jsx

Remove unneeded lines

* lint fix

* SVGChart

---------

Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
2024-04-04 15:38:30 +01:00
Joel Jeremy Marquez
f3d7641ba9 [Maintenance] Extract menus to separate files (changes split from #2472) (#2511)
* Extract menus to separate files (change split from #2472)

* Release notes

* Fix lint error

* Code review feedback
2024-04-02 14:06:42 -07:00
Neil
83fd85f059 Custom Reports: Confirm delete report (#2521)
* confirm delete report

* notes

* card confirm
2024-04-02 20:30:12 +01:00
Neil
308f8339ae Add yearly to custom reports (#2466)
* Button changes and time filters

* rename on dashboard

* notes

* fix time filters

* Sort Categories

* Page title

* category sort order

* move button

* featureflag

* Highlight report name

* sankey fix

* VRT

* remove doubled element

* adjust to match master

* add Year

* notes

* lint fix

* update names

* IntervalsUpdates

* fixing bugs

* ts updates

* lint fix

* merge fixes

* notes

* simplify lookups
2024-04-02 20:29:20 +01:00
Joel Jeremy Marquez
9697795279 [Maintenance] Replace react-merge-refs with useMergedRefs (#2509)
* Uninstall react-merge-refs

* Fix import

* Update useMergedRefs
2024-04-02 11:14:23 -07:00
Johannes Löthberg
9b40610f26 Bump GoCardless access validity from 30 to 90 days (#2518)
All banks are supposed to provide at least 90 days of access.

As of July 2023 EEA banks are required to allow access for up to 180
days[0], but this does not apply to UK banks, and apparently there might
still be EEA banks which don't comply with the new regulations.

We should consider eventually defaulting to 180 days and allowing
per-bank and maybe per-country overrides, but bumping it to 90 days
immediately provides a better user experience.

  [0]: https://nordigen.zendesk.com/hc/en-gb/articles/13239212055581-EEA-180-day-access

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2024-04-02 18:31:44 +01:00
dependabot[bot]
1c61508abb build(deps): bump express from 4.18.2 to 4.19.2 (#329)
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-02 18:29:59 +01:00
shall0pass
2a1c452aac Append, Prepend, or Replace notes in bulk actions (#2468)
* sort of working

* fix null condition, move buttons up

* visual and workflow updates

* update colors on hover

* release note

* fix another condition that inserted null
2024-04-02 10:37:49 -05:00
shall0pass
1dd1c188d6 Goals: Up To Template calculation with negative category balance (#2535)
* 'up to' calculation

* note

* update to last months balance
2024-04-02 10:35:55 -05:00
Matiss Janis Aboltins
deec1f998c 🔖 (24.4.0) custom reports improvements, stability enhancements (#332)
* 🔖 (24.4.0) custom reports improvements, stability enhancements

* Remove used release notes

* Upgrade actual

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-02 07:30:31 +01:00
Matiss Janis Aboltins
8f634099e2 🔖 (24.4.0) custom reports improvements, stability enhancements (#2537) 2024-04-02 07:07:16 +01:00
Joel Jeremy Marquez
7ee48e4c1d Fix mobile autocomplete colors (#2530)
* Fix mobile autocomplete colors

* Release notes

* Remove narrow specific autocomplete colors

* Update upcoming-release-notes/2530.md

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

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-04-01 05:43:30 -07:00
Matiss Janis Aboltins
270705b3cd 📈 adding extra console.log lines for bank-sync to help with troubleshooting (#2529)
* 📈 adding extra console.log lines for bank-sync to help with troubleshooting

* Release notes
2024-03-31 13:28:45 +01:00
Neil
9588a76109 Add Area Icon (#2526)
* Add Area Icon

* notes
2024-03-30 20:14:49 +00:00
Ryan Bianchi
ada9e7da31 [WIP] Fix custom reports cold-reload crash (#2528)
* when custom reports were cold-reloaded, the selections would be null crashing the page

* add release notes for PR

* fix typo in release note file name
2024-03-30 20:03:20 +00:00
Neil
38ffccb903 Custom Reports live data (#2505)
* Live card data

* Live Data

* notes

* Patch strict TS issues

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-03-26 09:04:26 +00:00
Robert Dyer
f5023a7c07 feature: Show account sync indicators when viewing accounts on mobile (#2476)
* cleanup: Move account sync indicators to the left on mobile

* cleanup: account sync indicators on mobile should show pending/failed syncs

* feature: show account sync indicator when viewing account on mobile

* fix lint issues

* add release note
2024-03-25 22:11:50 -07:00
Joel Jeremy Marquez
bc6a0f8e60 Fix mobile transactions load more (#2504)
* Fix mobile transaction load more

* Release notes
2024-03-25 08:24:07 -07:00
Joel Jeremy Marquez
5ee7d336ef Autocomplete changes related to mobile modals PR (#2500)
* Autocomplete changes related to mobile modals PR

* Release notes

* Fix lint error

* AccountDetails

* Code review updates
2024-03-25 08:23:29 -07:00
Matiss Janis Aboltins
24e42daa51 🐛 fix hotkeys sometimes not working (#2489) 2024-03-24 07:08:07 +00:00
Matiss Janis Aboltins
4bafd13c55 🐛 (import) disallow importing transactions with too large or small amounts (#2494) 2024-03-24 07:06:34 +00:00
Björn Wallebäck
bf404104c2 feat: add 'SEB Kort Bank AB' credit card support (#325)
* feat: add 'SEB Kort Bank AB' credit card support

* add: release notes for #325

* Calculate balance correctly for SEB Kort credit cards
2024-03-23 11:04:00 +00:00
Matiss Janis Aboltins
afaee6bc16 ♻️ (typescript) port some common components to strict TS (#2481) 2024-03-23 09:35:20 +00:00
Neil
e44fbb3847 Create wip (#2443)
* Create wip.yml

Adding WIP to new PRs

* Create 2443.md

notes

* Update .github/workflows/wip.yml

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

* Update .github/workflows/wip.yml

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

* Update upcoming-release-notes/2443.md

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

* Update wip.yml

* Update 2443.md

* Update wip.yml

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-03-22 20:53:12 +00:00
Neil
ff70c654a2 Custom Reports Error Catch (#2492)
* Error Catch

* notes

* fixes
2024-03-22 16:03:47 +00:00
Joel Jeremy Marquez
586a26968c Force async onRefresh on PullToRefresh component (#2487)
* Force async onRefresh

* Release notes
2024-03-21 13:36:59 -07:00
dependabot[bot]
5fde6561d0 build(deps): bump follow-redirects from 1.15.4 to 1.15.6 (#322)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 19:39:58 +00:00
Matiss Janis Aboltins
107acdb36b 🐛 (report) do not include offbudget transfers in cash-flow card expenses (#2485) 2024-03-21 19:13:59 +00:00
Matiss Janis Aboltins
5343030800 🐛 (import) patch phantom transactions getting created (#2464) 2024-03-21 18:16:37 +00:00
Robert Dyer
d7635755f2 Fix error when viewing uncategorized transactions when there are upcoming scheduled transactions. (#2475)
* fix: Error when opening uncategorized transactions page

* add release note

* fix linter warning
2024-03-21 07:45:58 -07:00
Wizmaster
501c6a02cc Import locked transactions from nYNAB (#2474)
* Import locked transactions from nYNAB

* Import locked transactions from nYNAB
- Adding PR release note
2024-03-20 08:13:01 -07:00
Neil
6281cc751e Custom Reports: Intervals Updates (#2479)
* IntervalsUpdates

* notes

* updates

* add Ranges

* calc Leg strict

* ts updates

* review updates
2024-03-20 09:01:44 +00:00
Ikko Eltociear Ashimine
dc7cab501e Update sync.ts (#2478) 2024-03-19 19:35:52 +00:00
Daniel Gale-Rosen
f51376a4a5 Increase minimum cleared column width (Fix #2341) (#2462)
* increase minimum cleared column width

* add release notes

* update snapshots
2024-03-17 21:25:14 -07:00
Joel Jeremy Marquez
6f600a4fee Convert BudgetTable to a functional component (#2459)
* Convert BudgetTable to a functional component

* Release notes

* Fix lint errors

* Remove undo-event listener
2024-03-15 07:25:07 -07:00
Neil
c82a6dc5ef Custom Reports disabled list (#2410)
* Add interval split and menu items

* notes

* disabledList work

* notes

* fix

* fix balanceType

* rework constants

* review fixes
2024-03-14 19:35:59 +00:00
youngcw
ab97a3fbcd import locked transactions ynab4 (#2455)
* import locked transactions

* note, lint
2024-03-12 17:06:52 -07:00
shall0pass
8b15c8cc17 [Theme] Bugfix: Bulk edit background color for Midnight theme (#2460)
* bulk edit background color

* change

* NOTE
2024-03-12 19:01:28 -05:00
Matiss Janis Aboltins
02ec279a64 ♻️ (typescript) make rollover budget components strict TS compliant (#2453) 2024-03-12 22:04:25 +00:00
Joel Jeremy Marquez
ab8c3c018a [Maintenance] Reorganize mobile components (#2425)
* Reorganize mobile components

* Fix lint error

* Cleanup

* Fix lint error

* Release notes

* Cleanup

* Cleanup useActions

* useDebounceCallback
2024-03-12 15:01:38 -07:00
Joel Jeremy Marquez
8356640e45 Fix midnight theme autocomplete hover (#2461)
* Fix midnight theme autocomplete hover and make ItemHeader not depend on category groups

* Update

* Release notes

* Fix typecheck error
2024-03-12 12:54:16 -07:00
Joel Jeremy Marquez
1767a32b3d [Maintenance] Input onChangeValue and onUpdate prop naming (#2381)
* Differentiate Input onUpdate to onChangeValue

* Release notes

* Fix lint error

* Remove onChange
2024-03-12 08:54:47 -07:00
Neil
5bcfc71be6 Hide hidden categories in auto-complete (#2429)
* the work

* notes

* add to elements
2024-03-11 16:23:37 +00:00
DJ Mountney
998efb9447 Fix budget key tab navigation (#2452)
* Fix budget key tab navigation

- restore the collapsed property

* Add release note
2024-03-09 14:19:30 -07:00
Robert Dyer
dc159d71a2 Show a modal to confirm unlinking accounts (#2441) 2024-03-09 18:40:16 +00:00
Robert Dyer
7db7b5c400 Provide "api/category-groups-get" API endpoint (#2446) 2024-03-09 17:29:20 +00:00
Robert Dyer
823b426952 Show scheduled transactions when viewing "All accounts" (#2447) 2024-03-09 17:17:15 +00:00
DJ Mountney
8827169bfa Fix flaky transfer e2e test (#2434)
* Fix flaky transfer e2e test

- If tests ran too fast, the transactions wouldn't finish rendering
  before the select of the transactions was attempted.

* Add release note
2024-03-07 13:02:42 -08:00
CampaniaGuy
90eaf2ba17 [WIP] Implement "pill gesture" icon in navigation bar on Mobile view for better UX (#2419)
* Fix mobile UX, issue #2079

* upcoming-release-notes

* Fix navigation bar buttons not fully displayed

* pill size changed, exported nav bar height

* Edit navigation bar const
Edit nav bar pill color

* Removed export

* Fixes release notes

* Fixed formatting

* Fix mobile UX, issue #2079

* upcoming-release-notes

* Fix navigation bar buttons not fully displayed

* pill size changed, exported nav bar height

* Edit navigation bar const
Edit nav bar pill color

* Removed export

* Fixes release notes

* Fixed formatting

* Test schedules and mobile images created

* Reverted schedules checks test images
2024-03-06 15:41:05 -07:00
Neil
a5fa0f3bb6 Show activity updates (#2408)
* Show activity changes

* notes

* adjust filter loading

* switch back

* adjust test

* lint fix

* budget test

* lint fix

* Filtered Balance

* flicker fix

* VRT updates

* remove test variables

* default category

* categoryId separated
2024-03-06 22:37:28 +00:00
Matiss Janis Aboltins
4570459d85 🔥 delete abandoned sankey feature (#2417)
Closes #1919
2024-03-06 17:28:08 +00:00
Attila Kerekes
76cbd44c75 fix ofx amount parsing for longer decimal places (#2421) 2024-03-06 09:42:41 -07:00
shall0pass
0e0d960cd4 [Bugfix] Midnight theme - Budget Name color, Mobile category color in account view (#2422)
* budget name / mobile account category color

* note

* color of plus on account page
2024-03-05 13:50:41 -06:00
shall0pass
98c17bd5e0 [Goals] Schedule top off amount (#2404)
* add log messages to schedule templates

* log the included schedules

* more log output

* use a negate filter for sinking funds

* carve out a top out exception if no sinking funds

* note
2024-03-04 14:46:08 -06:00
shall0pass
601c9aa7df [End of Month Cleanup] Remove automatic funding of rollover categories (#2409)
* remove automatic funding of rollover categories

* note
2024-03-04 14:45:15 -06:00
Matiss Janis Aboltins
3b77609159 (bank-sync) quality of life improvements for sync (#2416) 2024-03-04 18:42:34 +00:00
DJ Mountney
66261641a0 Add option to make a transfer from two selected transactions (#2398)
* Adds option to make a transfer from two selected transactions

- Transactions amount must match
- Transactions must be from different accounts
- Split transactions not eligible
2024-03-03 13:34:08 -08:00
DJ Mountney
4b034468e3 Update shared transaction module to strict typescript (#2388)
* Update shared transaction module to strict typescript
2024-03-03 13:18:03 -08:00
Martin Myhrman
6e9eddeb56 feat: add SEB Privat bank (#316) 2024-03-03 20:11:56 +00:00
Matiss Janis Aboltins
b700aee87d ♻️ (typescript) move some files to strict mode (#2403) 2024-03-03 17:50:13 +00:00
Matiss Janis Aboltins
b926af286a 🔖 (24.3.0) (#317)
* 🔖 (24.3.0)

* Remove used release notes

* Upgrade @actual/web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-03 17:25:45 +00:00
Matiss Janis Aboltins
9fca85209f 🔖 (24.3.0) (#2413)
* 🔖 (24.3.0)

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-03 17:05:39 +00:00
Neil
a9362cc6f9 BarGraph crash (#2411)
* Fix crash

* notes
2024-03-02 07:35:05 +00:00
Neil
40296dc876 Custom reports updates (#2386)
* Button changes and time filters

* rename on dashboard

* notes

* fix time filters

* Sort Categories

* Page title

* category sort order

* move button

* featureflag

* Highlight report name

* sankey fix

* VRT

* remove doubled element

* update

* fixes

* fixes

* create button fix and rename card fix

* Title change
2024-03-01 18:41:32 +00:00
Neil
ed1e0ceb30 Custom Reports AutoComplete (#2350)
* updated saved work

* merge fixes

* Disable CREATE TABLE

* notes

* turn on db table

* Fix TableGraph recall crash

* table format changes

* type fixes

* fixing some card displays

* merge fixes

* revert table change

* cardMenu width

* Add Saved Reports Autocomplete

* notes

* fix invalid values crash

* Title and auto-focus and esc

* notes

* fix filtering logic

* reload saved filters

* lint fix

* visual graph changes

* merge fixes

* fix

* review updates
2024-02-28 21:50:23 +00:00
Neil
55817b0e70 Add interval split and menu items to custom reports (#2389)
* Add interval split and menu items

* notes
2024-02-28 19:47:42 +00:00
youngcw
6d7d12138c Update csv amount parser. Fix #2374 (#2399)
* specify 2 decimal places in the csv amount parser

* note

* update tests

* cleanup
2024-02-28 11:39:23 -07:00
dependabot[bot]
f43097f813 build(deps): bump ip from 2.0.0 to 2.0.1 (#314) 2024-02-28 08:10:17 +00:00
youngcw
52f1f79c01 fix #2363 broken create schedule from transaction (#2401)
* fix missing name

* note

* update how payees is created

* lint
2024-02-27 10:44:20 -07:00
shall0pass
991fc4f450 [Theme] Midnight updates (#2394)
* color updates

* release note
2024-02-26 14:21:54 -06:00
Dan D
04147fb9b9 Pending Transaction Support for SimpleFIN Integration (#315)
* Add Pending Transaction Support

Adds support for pending transactions (for banks that support them) from SimpleFIN.

* Release Note - Pending Transactions for SimpleFIN

* Fix Linter Errors

* Fix additional Iinter errors

* Spacing - Lint Error Fix
2024-02-21 13:28:10 -07:00
shall0pass
4a8c692d06 [Theme] Midnight updates (#2385)
* update colors

* remove comments
2024-02-21 13:50:00 -06:00
Neil
0609f47cc3 AutoComplete clean-up (#2349)
* AutoComplete clean-up

* notes

* lint fix

* fix tests

* review fix

* type
2024-02-21 18:59:05 +00:00
Julian Dominguez-Schatz
0d1e6f2ee7 Display rules with splits on rules page (#2368)
* Show splits on rules page

* Add `ActionExpression` for 'allocate'-type actions

* Add release notes

* Fix type errors
2024-02-21 11:47:23 -07:00
Neil
8568aebdbb Custom Reports: save reports (*new SQL table creation*) (#2335)
* updated saved work

* merge fixes

* Disable CREATE TABLE

* notes

* turn on db table

* Fix TableGraph recall crash

* table format changes

* type fixes

* fixing some card displays

* merge fixes

* revert table change

* cardMenu width

* notes

* fix filtering logic

* reload saved filters

* lint fix

* visual graph changes

* slice fixes

* typescript update
2024-02-21 18:12:26 +00:00
Julian Dominguez-Schatz
bfb7c1d213 Add plugin for offline PWA support (#2369)
* Add plugin for offline PWA support

* Add release notes

* Attempt to fix kcab fetch issue

* Fix type errors

* Cache more file types

* Empty commit to try to bump action

* Attempt to fix fonts
2024-02-20 18:23:27 -07:00
Joel Jeremy Marquez
e526555748 [Maintenance] Add tsconfig excludes (#2380)
* Add tsconfig excludes

* Release notes
2024-02-20 13:11:14 -08:00
DJ Mountney
45c4b262a2 Fix ability to rename budget in the UI (#2383) 2024-02-20 11:04:54 -08:00
youngcw
e1f805b9c9 schedule default amount (#2360)
* schedule default amount

* note

* vrt
2024-02-20 10:07:18 -07:00
DJ Mountney
d0c11cd3af Converts html special characters in ofx values to plaintext (#2364)
* Converts html special characters in ofx values to plaintext

- Apply during ofx/qfx import
2024-02-17 10:49:02 -08:00
shall0pass
0c5bce8baf [Enhancement] Theme: Midnight (#2312)
* midnight updates

* updates

* updates

* background one shade darker

* change highlights to match other accents

* release note

* link color

* variable spelling

* Upcoming pill color

* theme switch bug

* remove development, type error

* toggle background, disabled background+text

* account pillboxes and icons

* typecheck error
2024-02-16 09:43:24 -06:00
Matiss Janis Aboltins
e650e00cb8 ♻️ (eslint) enable some rules to enforce better code quality (#2357) 2024-02-16 07:34:55 +00:00
DHRUV RAMDEV
422996f8a7 fix: Margin when editing account on desktop (#2286)
* fix: Margin when editing account on desktop

* add release notes

* increase margin

* Update regression tests

* fix: Reduce padding in other areas

* update snapshots
2024-02-15 10:34:23 -08:00
Tristan Radisson
9cad57c607 #1383 Allow early post transaction of schedules (#2358)
* Allow early schedule post transaction

* Added release notes file
2024-02-15 07:33:00 -07:00
DJ Mountney
cd4a2b6678 Fix the link page for gocardless (#311)
* Fix the link page for gocardless

Ensures the redirect page is auto-closed after linking
2024-02-13 11:20:31 -08:00
Neil
2a0f8335ed Convert SavedFilters to Typescript (#2320)
* move saved filters

* MenuButton

* fixes

* update

* FiltersStack

* notes

* merge fixes

* review fixes

* error catch
2024-02-13 11:16:54 -08:00
DJ Mountney
16faf49438 Update the nordigen-node gem to get new endpoints (#310)
* Update the nordigen-node gem to get new endpoints
2024-02-13 09:34:35 -08:00
Joel Jeremy Marquez
08cbdab2a1 Hooks for frequently made operations (#2293)
* Hooks for frequently made operations

* Release notes

* Fix typecheck errors

* Remove useGlobalPrefs

* Add null checks

* Fix showCleared pref

* Add loaded flag for categories, accounts and payees state

* Refactor to reduce unnecessary states

* Fix eslint errors

* Fix hooks deps

* Add useEffect

* Fix typecheck error

* Set local and global pref hooks

* Fix lint error

* VRT

* Fix typecheck error

* Remove eager loading

* Fix typecheck error

* Fix typo

* Fix typecheck error

* Update useTheme

* Typecheck errors

* Typecheck error

* defaultValue

* Explicitly check undefined

* Remove useGlobalPref and useLocalPref defaults

* Fix default prefs

* Default value

* Fix lint error

* Set default theme

* Default date format in Account

* Update packages/desktop-client/src/style/theme.tsx

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

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-02-12 07:07:44 -08:00
Matiss Janis Aboltins
ec2de3b387 🔥 (remove victory dependency) (#2356) 2024-02-11 21:50:18 +00:00
Johannes Löthberg
65372e86a5 Remove category spending report (#2344)
It has been superseded by the new custom reports feature.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2024-02-11 17:06:41 +00:00
Hinerangi Courtenay
53a61000a4 fix: Mobile menu blocks items #2040 (#2352)
* Fix Mobile menu blocks items (#2040)

* Only set bottom padding on pages the mobile nav bar is used (#2040)

* Add release note for PR
2024-02-10 18:13:13 -08:00
Neil
485902af6b Update Custom Report styles (#2345)
* updated saved work

* merge fixes

* Disable CREATE TABLE

* notes

* turn on db table

* Fix TableGraph recall crash

* table format changes

* type fixes

* fixing some card displays

* merge fixes

* revert table change

* Revert Changes

* notes

* merge fixes

* notes

* notes

* revert notes

* Area changes
2024-02-10 21:54:47 +00:00
Neil
5a67b7e822 Dynamic graph margins (#2346)
* dynamic graph margins

* notes
2024-02-08 16:31:54 -08:00
DJ Mountney
b994a6a74a Fix parse errors with OFX data with no transactions (#2342)
* Fix parse errors with OFX data with no transactions

- Return an empty array instead of an array of undefined
2024-02-08 13:15:21 -08:00
Matiss Janis Aboltins
b1b266e83c 🐛 (typescript) patching sendCatch type (#2343)
* 🐛 (typescript) patching sendCatch type

* Release notes
2024-02-08 20:53:05 +00:00
youngcw
58626c0026 update manifest (#2285)
* update manifest

* note

* note

* typo

* theme color

* add maskable icons

* fix icon color
2024-02-08 10:41:55 -07:00
DJ Mountney
45094daf2f Typescript: pass 2 at updating api-handlers to match server handlers (#2334)
* Typescript: pass 2 at updating api-handlers to match server handlers
2024-02-08 09:06:43 -08:00
Julian Dominguez-Schatz
2bb7b3c2ee Add rules with splits (#2059)
* Add split creation UI to rule creation modal

* Support applying splits when rules execute

* fix: deserialize transaction before running rules

According to how rules are run in other places in the app, we should be
supplying a "deserialized" (i.e., integer-for-amount and ISO date)
transaction rather than a "serialized" (amount-plus-formatted-date) one.
This fixes a crash in how split transactions are applied, as well as
date-based rules not applying correctly previously (any rule with a date
condition would never match on mobile).

* Add release notes

* Fix missing types pulled in from master

* PR feedback: use `getActions`

* PR feedback: use `flatMap`

* Fix action deletion

* Don't flicker upon split deletion

* Let users specify parent transaction actions (e.g. linking schedules)

* Support empty splits

* Revert adding `no-op` action type

* Support splits by percent

* Fix types

* Fix crash on transactions page when posting a transaction

The crash would probably have occurred in other places too with
auto-posting schedules :/

* Fix a bug where schedules wouldn't be marked as completed

This was because the query that we previously used didn't select parent
transactions, so no transaction was marked as being scheduled (since
only parent transactions have schedule IDs).

* Add feature flag

* Limit set actions within splits to fewer fields

* Fix merge conflict

* Don't run split rules if feature is disabled

* Fix percent-based splits not applying

* Fix crash when editing parent transaction amount

* Auto-format

* Attempt to fix failing tests

* More test/bug fixes

* Add an extra split at the end if there is a remaining amount

* Make sure split has correct values for dynamic remainder

* Remove extraneous console.log
2024-02-08 07:56:30 -07:00
Matiss Janis Aboltins
d6f610a326 added 'show/hide balance' button to cash flow report (#2322) 2024-02-08 08:12:36 +00:00
Joel Jeremy Marquez
8a8113a648 Update loot-core deps (#2280)
* Upgrade desktop-client depenencies

* yarn dedupe

* Update useSelectors

* Update loot-core deps

* yarn dedupe

* Move deps to devDependencies

* yarn dedupe
2024-02-07 18:40:59 -08:00
Joel Jeremy Marquez
029e2f09bf Update desktop client package versions (#2270)
* Upgrade desktop-client depenencies

* Release notes

* yarn dedupe

* yarn dedupe

* Fix typecheck error

* Update sass

* Update useSelectors
2024-02-06 17:43:09 -08:00
jaarasys-henria
86007e392f [Enhancement] Make transaction list sortable by cleared status (#1994) 2024-02-06 15:07:36 -07:00
Neil
4c4f2fd426 Custom Reports: add save reports menu (#2257)
* Add schema work

* notes

* merge fixes

* Add Reports Save Menu

* merge fixes

* updates

* notes

* updates

* updates

* save updates fix

* typecheck fixes

* merge fixes

* saveReport strict Typescript

* fix sidebar

* lint fix

* fixing functionality plus clean up

* clean up
2024-02-05 22:40:46 +00:00
Matiss Janis Aboltins
7a18827b1d allow running AQL against local database (#2326) 2024-02-05 19:16:02 +00:00
shall0pass
77fd65b2e7 [Bugfix] Cleanup tool: Add balance check (#2295)
* add balance check

* lint

* fill rollover categories after non-rollover

* allow partial fills of non-rollover

* update

* release note and youngcw suggestion

* warnings

* remove commented coded
2024-02-05 06:21:42 -06:00
Julian Dominguez-Schatz
30f03e8079 Save name fields on unfocus (#2327) 2024-02-04 16:50:36 +00:00
Matiss Janis Aboltins
6e16262b63 🔥 removing unused/dead code (#2328) 2024-02-04 16:05:11 +00:00
xentara1
29a515f3fe [Feature] Add ability to create schedules from existing transactions (#2222) 2024-02-03 19:00:27 +00:00
Julian Dominguez-Schatz
a5ab1a8fae Re-open autocomplete dropdown on change (#2325)
* Re-open autocomplete dropdown on change

* Add release notes with new PR ID
2024-02-03 11:16:15 -07:00
yoyotogblo
d37622162a Change lookback and look forward time range when fuzzy matching (#2300)
Change to 7 days prior and after for imported transactions when fuzzy matching
2024-02-03 11:08:45 -07:00
Neil
e3a8366dd7 Update and organize reports (#2274)
* Add schema work

* notes

* merge fixes

* Add Reports Save Menu

* merge fixes

* updates

* notes

* updates

* updates

* save updates fix

* typecheck fixes

* revert changes

* notes

* error fixes

* update

* fix

* merge fixes

* review changes

* reportChange and savedStatus

* Update packages/desktop-client/src/components/reports/SaveReport.tsx

Co-authored-by: DJ Mountney <david.mountney@twkie.net>

* merge fixes

---------

Co-authored-by: DJ Mountney <david.mountney@twkie.net>
2024-02-02 23:52:35 -08:00
Joel Jeremy Marquez
d5e49dde59 Update yarn to 4.0.2 (#2283)
* Update yarn

* Release notes
2024-02-02 18:11:07 -08:00
Joel Jeremy Marquez
f5258e6ebe Consider child transactions when fuzzy matching imported transactions (#2309)
* Consider child transaction when fuzzy matching

* Release notes
2024-02-02 18:03:57 -08:00
Joel Jeremy Marquez
f4d80fad92 [Maintenance] Remove modals.d.ts (#2298)
* Remove modals.d.ts

* Release notes

* Fix typecheck

* Fix lint error
2024-02-02 17:56:23 -08:00
DJ Mountney
3324dd5fa0 Fix docker start browser error (#2304)
* Fix docker start browser error

Don't launch browser when in docker
2024-02-02 17:18:27 -08:00
shall0pass
14509d15df [Bugfix] Dark Theme variable name misspelled (#2317)
* misspelling of variable name

* release note
2024-02-02 15:51:06 -06:00
Ifeoluwa Odubela
9b461c48c9 Bugfix: Add Primary Button hover background colors for light and dark theme #1971 (#2123)
* Bugfix: Add Primary Button hover background colors

* Add release notes

* Rename 1971.md to 2123.md

* Update release note 2123.md typo

* Update packages/desktop-client/src/style/themes/dark.ts

* Update packages/desktop-client/src/style/themes/light.ts

---------

Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
2024-02-02 21:26:13 +00:00
jaarasys-henria
55f2d126b3 [Maintenance] Pass HTTPS flag to dev container to enable HTTPS (#2316) 2024-02-02 21:14:45 +00:00
Matiss Janis Aboltins
6ae2047ab8 🔧 upgrade deprecated github actions (#2319) 2024-02-02 20:38:57 +00:00
Matiss Janis Aboltins
13a39168c4 🔧 upgrade deprecated github actions (#307) 2024-02-02 20:35:24 +00:00
Pedro Primor
9fdffcc8e9 Change month picker hover background color (#2121)
* Change month picker hover background color

* Add release notes

* Add updated screenshots from visual regression tests

* Revert "Add updated screenshots from visual regression tests"

This reverts commit d9d83b4789.

* Update failing visual regression tests screenshots

* Revert "Update failing visual regression tests screenshots"

This reverts commit aaef019191.
2024-02-02 13:11:16 -07:00
DHRUV RAMDEV
3daff4381f feat: Don't allow duplicate cat-groups in budget (#2262)
* feat: Don't allow duplicate cat-groups in budget

* Add release notes

* fix: error message

* pass group instead of name for accurate error message

* improve error message
2024-02-02 13:10:36 -07:00
Neil
5914469b11 Convert FiltersMenu to Typescript (part 1) (#2231)
* migration work

* notes

* typecheck

* typecheck fixes

* fixes

* merge fixes

* typecheck updates

* review fixes
2024-02-02 20:10:24 +00:00
youngcw
39e7f2598b fix budget header collapsed colors (#2313)
* fix budget header collapsed colors

* note
2024-02-02 13:09:53 -07:00
Neil
c8d326d24b Custom Reports - split out hidden categories from offbudget (#2302)
* Add Toggles

* budget table

* testing

* updates

* updates

* fixes

* updates

* fix Menu

* lint fixes

* fix keybindings

* revert budget menu changes

* notes

* remove default exports

* fixes

* disabled fix

* add style option

* lint fix

* remove css

* lint fixes

* color updates

* merge menu with togglemenu

* host

* menu fixes

* fix regression

* remove host

* adjustments

* work

* fix hidden filters

* merge fixes

* adjustments

* updates

* fix uncat table values

* fixes

* notes

* title change

* Adjust showHide selector
2024-02-02 20:09:27 +00:00
circle3451
10d53fbe5f Add gocardles ssupport for Andelskassen Fælleskassen (#305) 2024-02-02 20:06:34 +00:00
Matiss Janis Aboltins
21c65cf68f 🔖 (24.2.0) cleared transaction improvements; experimental simplefin bank-sync (#306) 2024-02-02 19:40:44 +00:00
Matiss Janis Aboltins
d8639a2a71 🔖 (24.2.0) cleared transaction improvements; experimental simplefin bank-sync (#2311) 2024-02-02 19:20:53 +00:00
Matiss Janis Aboltins
734191424b 🐛 (goCardless) patch incomplete migration (#2308) 2024-02-01 16:40:12 +00:00
shall0pass
5d4fcfde00 [Enhancement] Goal Target with cleanup template (#2282)
* update goal target after montly cleanup

* release note
2024-01-31 13:42:05 -06:00
Joel Jeremy Marquez
54d7e5460a [Cleanup] useSingleActiveEditForm hook on mobile budget table (#2263)
* useSingleActiveEditForm on mobile budget table

* Release notes

* Remove unused variables
2024-01-30 14:37:06 -08:00
youngcw
43ebe9e0fd fix bad account sort order in demo (#2279)
* fix bad sort order in demo

* note

* add async back

* fix tests

* fix2

* fix3

* update vrt

* fix image
2024-01-26 09:12:54 -07:00
youngcw
515bdf5a74 update vrt instructions (#2287)
* update

* note

* revise
2024-01-26 09:06:12 -07:00
Ed
018714610a Updating link for GoCardless Bank Account Sync (#2276)
* Updating link for GoCardless Bank Account Sync

* Adding release notes

* Update URL to point to docs

* Fixing lint
2024-01-26 07:11:18 -08:00
Joel Jeremy Marquez
00ee165f8e Mobile Off Budget category label (#2284)
* Mobile Off Budget category label

* Release notes

* Fix error

* Fix release notes
2024-01-26 07:09:29 -08:00
Neil
68442ae9e6 Custom reports: hide "show ..." checkboxes in menu (#2174)
* Add Toggles

* budget table

* testing

* updates

* updates

* fixes

* updates

* fix Menu

* lint fixes

* fix keybindings

* revert budget menu changes

* notes

* remove default exports

* fixes

* disabled fix

* add style option

* lint fix

* remove css

* lint fixes

* color updates

* merge menu with togglemenu

* host

* menu fixes

* fix regression

* remove host

* adjustments

* onToggle

* vrt fix

* typecheck

* merge fixes

* colors

* lint fix
2024-01-24 21:49:12 +00:00
shall0pass
b937bfae04 [Bugfix] Goals: Database entry (#2281)
* fix database insertion

* dbMonth format

* release note
2024-01-24 14:51:38 -06:00
DJ Mountney
317e7f135e 🐛 Avoid passing a boolean to the import trans category title (#2278)
* Avoid passing a boolean to the import trans category title

- Fixes an error regading passing false to title
  when category is not available
2024-01-24 11:23:02 -08:00
DJ Mountney
5adb083575 🐛 Fix a missing ref param warning for forwardRef (#2277)
* Fix a missing ref param warning for forwardRef

- Drop unused usage of forwardRef on TableWithNavigator
2024-01-24 11:13:43 -08:00
Joel Jeremy Marquez
524bd4e9eb Update vite / swc / ts versions (#2268)
* Update vite / swc / ts versions

* Release notes

* Revert root tsconfig module changes

* yarn dedupe

* Dummy update to run pipeline

* Update webpack and playwright

* Update playwright docker images
2024-01-24 10:49:12 -08:00
Matiss Janis Aboltins
9dfd6ce34c 🐛 fix uncategorized transaction banner flashing on load (#2273) 2024-01-23 08:23:32 +00:00
Matiss Janis Aboltins
5d28bc0e3b 🏷️ making some files comply with strict TS (#2247) 2024-01-22 19:01:05 +00:00
Matiss Janis Aboltins
a4e97e0070 ♻️ refactored cash-flow report from victory to recharts (#2260) 2024-01-22 08:34:51 +00:00
Matiss Janis Aboltins
a6e38ad2ae allow un-reconciling (unlocking) transactions (#2252) 2024-01-22 08:34:40 +00:00
Matiss Janis Aboltins
bb0ae4ebc3 🔥 removing unused variables (batch 2) (#2256) 2024-01-21 14:55:24 +00:00
youngcw
dd29e02c5c fix color of schedule before/after weekend box (#2261)
* fix color of schedule after box

* note
2024-01-20 15:37:34 -07:00
Zach Whelchel
75186183eb SimpleFin (#2188)
* Some initial UI work for adding SimpleFin.

* SimpleFin proof of concept working.

* Adds linking & unlinking to existing accounts through the account menu UI.

* Added loading and lint fixes.

* Lint changes.

* Added release notes.

* Typecheck cleanup.

* Import, lint, typecheck cleanups.

* More typecheck cleanup.

* Refactored language for consistency.

* Added default institution name.

* Lint cleanup.

* Addressed change requests.

* Added a default to migration, made variables consistent, added feature flag.

* Added account_sync_source to server schema.

* Adds account_sync_source to test.

* Fix for typecheck.

* Attempt to make typecheck happy.

* Added strict ignore.

* Moved account_sync_source to the right model (face palm).

* Hotfix for institution format.

* Lint cleanup.

* Removed unnecessary promise.all.

* Lint cleanup.
2024-01-20 14:35:52 -08:00
Zach Whelchel
e7f6348d9a SimpleFin (#296)
* Initial support for SimpleFin.

* Added release notes and lint cleanup.

* Changed some notes for better context.

* Fixed logic.

* Changes per requests on PR.

* More cleanup of null checks.
2024-01-20 14:35:30 -08:00
Neil
83f13cbdc8 add compact to custom reports (#2258)
* add compact

* notes
2024-01-20 21:18:15 +00:00
DJ Mountney
0045d9212e Bundle loot-core types into the API (#2053)
* Bundle loot-core types into the API

So we can have loot-core be the source of truth
for some types that get passed through

- Improves downstream development with API by including types
- Use path aliases for dist vs dev tsconfigs
- Convert api index to typescript as example
- Permit ts-ignore for issues with our version of typescript

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-20 10:30:23 -08:00
Matiss Janis Aboltins
dd254c6c23 🔧 add link to community discord for support (#2250) 2024-01-20 10:40:52 +00:00
Neil
c66d6e00f5 Custom Reports - add schema (#2246)
* Add schema work

* notes

* merge fixes

* add to handlers

* notes update

* Update packages/loot-core/src/server/reports/app.ts

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

* review changes

* type updates

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-20 10:22:28 +00:00
Matiss Janis Aboltins
ae3be13aa8 🔥 removing unused variables (batch 1) (#2255) 2024-01-19 23:02:21 +00:00
Neil
cd9d1fb674 Clean-up some custom reports code (#2254)
* work

* missed

* notes

* change element name

* update

* update changes

* merge fixes
2024-01-19 22:39:09 +00:00
Matiss Janis Aboltins
edba670d3a ⬆️ (prettier) upgrade, fix issues and enable for jsx files (#2253) 2024-01-19 21:48:30 +00:00
Matiss Janis Aboltins
fbb1a9647d 🐛 fix 'delete budget' button always deleting cloud file (#2251)
Closes #2216
2024-01-19 20:04:00 +00:00
Neil
06cf65497f Custom Reports: fix broken table (#2249)
* fix broken table

* notes

* error fixes
2024-01-19 19:37:14 +00:00
Neil
62a0a0fedc Custom Reports compact additions (#2245)
* compact additions

* notes

* vrt fix

* revert AnchorLink

* Update upcoming-release-notes/2245.md

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

* merge fixes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-19 08:59:47 +00:00
Neil
106dce25dd Custom Reports update entites (#2244)
* work

* notes

* missing entity

* lint
2024-01-18 22:39:42 +00:00
Norbert Takács
af6de6b585 Update README.md broken link (#303)
* Update README.md broken link

* added release notes

* moved release file

* Delete upcoming-release-notes/299.md

---------

Co-authored-by: Norbert Takacs <norbert.takacs@postnord.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-01-18 11:20:22 -07:00
Harrison Kiang
d8c7a0a358 non-root users for Dockerfiles (#300)
* Optional non-root users for Dockerfiles
2024-01-18 09:26:51 -08:00
DJ Mountney
58f7b09e8d Limit yarn concurrency on 32bit (#302)
* Limit yarn concurrency on 32bit

- improves ci stability
2024-01-18 09:04:04 -08:00
Matiss Janis Aboltins
ff11399180 ♻️ (typescript) fixing strictNullChecks=true issues (#2228)
* ♻️ (typescript) fixing strictNullChecks=true issues

* Patch test-helpers

* Strict patch
2024-01-18 08:23:50 +00:00
Matiss Janis Aboltins
363c9e4afb 🐛 (gocardless) fix sync when additionalInformation field is null (#2238) 2024-01-18 08:23:29 +00:00
Neil
e745a4073b Custom Reports: fix table rendering (#2192)
* reorg

* notes

* Add render

* privacy Filter additions

* merge fixes

* notes

* merge fixes

* Apply patches for strict mode

* review fixes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-16 20:14:38 +00:00
DJ Mountney
7d1a895b48 Restore ability to use console.log in vite (#2233)
Restore ability to use console.log in vite

- Swap our swc plugin to remove-react-properties
- Configure remove-react-properties to preserve our testids
2024-01-16 09:40:44 -08:00
DJ Mountney
a8b42bcd50 Change the vite chunk filename hash usage (#2224)
* Change the vite chunk filename hash usage

- Change to more closely match the . syntax we use with webpack
- This should fix some issues with our size compare as well
* Account for chunks being base64
2024-01-15 09:47:09 -08:00
Matiss Janis Aboltins
f33bce41ea ♻️ (typescript) enable strict mode everywhere (#2230) 2024-01-15 08:24:33 +00:00
Ikko Eltociear Ashimine
cdefe6133f chore: Update actions.ts (#2227)
non-existant -> non-existent
2024-01-14 16:13:48 +00:00
Nik
44a5199a31 Add split distribution (#2151)
* Add split distribution feature

* Add upcoming release notes

* Fix tests

* Fix remaining test

* Disable distribute button when all transactions are filled

* Add canDistributeRemainder

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-13 15:43:13 -08:00
Neil
dccad902d6 vite host regression fix (#2217)
add host to vite config
2024-01-12 17:45:20 -08:00
Neil
b477f7c2f1 Custom Reports: Enable Show Labels (#2124)
* work

* updates

* merge fixes

* syntax fix

* Add Label element

* updates

* notes

* normalize customLabel

* fix

* range adjustments

* margin update

* merge fixes

* review Updates

* labelFix

* Fix adjustTextSize
2024-01-12 21:46:22 +00:00
Stefan Hall
540c410957 fixed:issue->#1968 Import from nYNAB fails with unknown error (#2191)
* Allow case insensitive ynab5 import for special 'starting balance' payee

* set upcoming release number to related github issue

* extract string comparison into separate function

and reuse when checking starting balance/s on ynab4 import

* make all category group checks case insensitive

when importing from ynab5 to make the check strategy consistent when importing from ynab5

* extract findById into sreusable function

to 'simplify' usage

* Add null check

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2024-01-12 12:59:31 -08:00
Matiss Janis Aboltins
e205344867 ♻️ (typescript) fixing strictNullChecks=true issues (#2212) 2024-01-12 17:49:54 +00:00
albertchae
7b36c2207a Remove obsolete fly.template.toml (#284) 2024-01-12 17:19:20 +00:00
HansiWursti
8b968579b1 Proposal - Disable Save Button in Mobile Transaction View if field is edited (#2214)
* Disable SaveButton if field is edited

* Add Release Notes and fix VRT
2024-01-12 08:57:22 -08:00
Matiss Janis Aboltins
6ce794ffcc 🔥 (ofx) removing old parser (#2215)
* 🔥 (ofx) removing old parser

* Release notes

* Patch unit test
2024-01-12 07:27:18 -08:00
dependabot[bot]
6de1fe34e3 build(deps): bump follow-redirects from 1.15.2 to 1.15.4 (#299)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 19:08:01 +00:00
DJ Mountney
d5359a96ca Proposal for switching desktop-client to vite (#2084)
* Proof of concept for switching desktop-client to vite

* Fix other packages ts tests issues

* Update jsx tests to use vitest instead of jest

* Inject our global shims properly

* Add comment regarding new plugin

* Cleanup unnessary change after rebase

* Fix inter fonts pathing

* Remove manual chunks sizes for now

Just set the limit higher

* Bring back size compare

* Suppress victory warnings

* Remove craco config now that it's not used

* Add vite basic ssl plugin

- This autogenerates self-signed certs in dev mode when HTTPS env is set
- Made to match the CRA behaviour

* Add release note

* Remove warning suppression for victory

- Updated to a rollup version that includes the fix
2024-01-11 10:18:49 -08:00
Matiss Janis Aboltins
3eee0b11d2 🐛 (autocomplete) fix multi-autocomplete causing crashes (#2207) 2024-01-10 17:15:34 +00:00
HansiWursti
e792afb1fd ReAdd Mobile Account Error Page (#2204)
* Add "error" Page for special accounts in Mobile
2024-01-09 15:06:24 -08:00
HansiWursti
4fb55d0d70 Mobile - Add cleared and uncleared Balances in Account Details (#2056)
* - Added Mobile Account Cleared and Uncleared
  Balanced

* Changed font size

* Add release notes

* Changed Visibility

* Centered the different Values

* Updated VRT

* Fix merge Conflict?!
2024-01-09 15:06:01 -06:00
DJ Mountney
b330991855 Add proper types to runHandler (#2136)
* Add proper types to runHandler

- Args and return values from runHandler should now work within loot core
- Updated some of the handler types to be more accurate
2024-01-09 13:05:15 -08:00
shall0pass
165ad45822 [Enhancement] Add crossorigin field to manifest line (#2206)
* add crossorigin

* release note

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-09 15:04:22 -06:00
Joel Jeremy Marquez
295917036b ESLint to enforce Actual's useNavigate hook (#2208)
* ESLint to enforce Actual's useNavigate hook

* Release notes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-09 13:03:09 -08:00
Matiss Janis Aboltins
ef9a7cfe85 🔧 (ci) fork the electron build job - master and PR (#2209) 2024-01-09 20:06:50 +00:00
Matiss Janis Aboltins
ff073b1221 ♻️ (gocardless) renamed nordigen_* secrets to gocardless_* (#293) 2024-01-09 19:21:28 +00:00
Matiss Janis Aboltins
4ece4a7ff6 ♻️ (gocardless) rename nordigen_* secrets to gocardless_* (#2181) 2024-01-09 19:21:16 +00:00
DJ Mountney
761b3c6a16 Tests: Add api tests for payees and transactions (#2168)
* Tests: Add api CRUD tests for payees and transactions
2024-01-09 11:20:06 -08:00
Matiss Janis Aboltins
7ace8c52dd 🔧 (electron) release electron app to app store (osx) (#2182) 2024-01-09 18:54:57 +00:00
Subhaditya Nath
f6dd0ecdb9 Fix site.webmanifest to enable Actual to be installed as Chromium PWA (#2202) 2024-01-09 10:21:34 -06:00
Waseh
1d4eaaa79c Change SparNord integration to add support for Lægernes Bank (#298) 2024-01-09 09:00:33 +00:00
visurel
3b83f064d4 Add GoCardless bank integration for SPK_MARBURG_BIEDENKOPF_HELADEF1MAR (#297) 2024-01-09 08:59:16 +00:00
rjwonder
97a4296d7c Update sync.ts with additionalInformation as fallback (#2176) 2024-01-09 08:53:15 +00:00
Matiss Janis Aboltins
89698480a5 🐛 (rules) add 'no rules' message & always show rule table (#2199) 2024-01-09 08:32:12 +00:00
Matiss Janis Aboltins
1a6db82cfb Revert "👷 (ci) adding helper comments for failed CI jobs (#2074)" (#2183)
This reverts commit e11b65719e.
2024-01-08 18:38:46 +00:00
Matiss Janis Aboltins
6ce502ea24 ♻️ refactor(electron): moving back from websockets to IPC (#2190) 2024-01-08 18:34:19 +00:00
youngcw
fd962a97b0 fix missing borders in single category drop down in report budget (#2195)
* fix missing borders in single category drop down in report budget

* note
2024-01-08 11:20:52 -07:00
youngcw
300ed824f0 change the pie chart background color in the report status (#2196)
* change the pie chart background color in the report status

* note
2024-01-08 11:20:29 -07:00
Neil
caca2497ea Add ability to import categories from CSV (#2163)
* update transaction table

* notes

* adjust parser
2024-01-08 17:51:51 +00:00
shall0pass
33e778fe9f [Maintenence] Refactor Goals Schedule file (#2102)
* refactor pass 1

* refactor pass 2

* refactor pass 3

* commented out startDate

* remove console logging

* release note

* non-repeating error

* add daily

* move else

* Fix compounding to_budget

* lint

* reapply 2125
2024-01-07 16:19:19 -06:00
Neil
8c43c78fc7 Custom reports reorganize table graph files (#2153)
* reorg

* notes

* Update upcoming-release-notes/2153.md

Co-authored-by: DJ Mountney <david.mountney@twkie.net>

* merge fixes

* fix

* another

* f

---------

Co-authored-by: DJ Mountney <david.mountney@twkie.net>
2024-01-07 21:55:21 +00:00
DJ Mountney
e0d82fd4f9 Revert "Add "error" Page for special accounts in Mobile" (#2186)
* Revert "Add "error" Page for special accounts in Mobile (#2114)"

This reverts commit b6462347a9.
2024-01-06 15:20:19 -08:00
HansiWursti
b6462347a9 Add "error" Page for special accounts in Mobile (#2114)
* Add "error" Page for special accounts in Mobile
2024-01-06 14:33:59 -08:00
Joel Jeremy Marquez
8bf0f8e5bf [TS migration] MobileBudget tsx (#2081)
* MobileBudget tsx

* Release notes

* Fix type error

* Update upcoming-release-notes/2081.md

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

* SyncRefresh.tsx

* Remove loadCategories

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-06 14:32:16 -08:00
Joel Jeremy Marquez
bc07235017 ESLint no-default-export 13 - final (#2185)
* ESLint no-default-export 13 - final

* Release notes

* Fix lint error

* Add api/migrations to override

* Fix lint error
2024-01-06 14:00:13 -08:00
Joel Jeremy Marquez
794476ac51 ESLint no-default-exports 12 - all loot-core folders except server (#2184)
* ESLint no-default-exports 12 - All loot-core folders except server

* Release notes

* Fix imports
2024-01-06 13:49:02 -08:00
Joel Jeremy Marquez
30bc216142 ESLint no-default-exports 11 - icons (last one for desktop-client package) (#2173)
* ESLint no-default-exports 10 - icons

* Fix icon imports + lint errors

* Release notes

* Fix typecheck error

* Fix icon import

* Fix lint error
2024-01-06 13:38:54 -08:00
Joel Jeremy Marquez
6f8d2574ab ESLint no-default-exports 10 - all desktop-client src folders except icons (#2172)
* ESLint no-default-exports 10 - all desktop-client src folders except icons

* Release notes
2024-01-06 12:57:45 -08:00
Joel Jeremy Marquez
9262b46428 ESLint no-default-exports 9 - all components folder (#2171)
* ESLint no default exports 9 - components folder

* ESLint no default exports 9 - components folder 2

* Release notes
2024-01-06 12:35:50 -08:00
Joel Jeremy Marquez
8e1c11e18e ESLint no-default-exports 8 (#2170)
* Fix default imports

* Fix manager Modals import

* ESLint no default exports 8

* Release notes

* Schedules
2024-01-06 12:14:52 -08:00
Joel Jeremy Marquez
6b5ee3f774 ESLint no-default-exports 7 (#2169)
* Fix default imports

* Fix manager Modals import

* ESLint no default exports 7

* Release notes
2024-01-06 11:54:52 -08:00
Joel Jeremy Marquez
02d3f96c20 ESLint no-default-exports 6 - View.tsx (#2120)
* Fix default imports

* Fix manager Modals import

* ESLint no default export part 6 - View.tsx

* Fix default imports

* Fix imports

* Release notes
2024-01-06 11:40:09 -08:00
Joel Jeremy Marquez
829c83afb2 ESLint no-default-exports 5 - Text.tsx (#2119)
* Fix default imports

* Fix manager Modals import

* ESLint no-default-exports part 5 - Text.tsx

* Fix default import

* Release notes
2024-01-06 11:21:25 -08:00
Joel Jeremy Marquez
5d29585fb7 ESLint no default exports 4 (#2118)
* ESLint no-default-exports part 4

* Fix default imports

* Fix default imports

* Fix manager Modals import

* Release notes
2024-01-06 11:06:39 -08:00
Joel Jeremy Marquez
882fd9f5cd ESLint no-default-exports 3 (#2117)
* ESLint no default exports - part 3

* Fix default imports

* Release notes

* Fix Menu
2024-01-06 10:57:19 -08:00
Jason
d203def230 Fix when pressing Enter adds an extra split transaction when no split remains (#2144)
* Fix pressing enter adds split transaction when no split remains

* Added release notes

* Refactor to use find indstead of findIndex
2024-01-06 09:43:06 -08:00
Joel Jeremy Marquez
4d7cfab8bc ESLint no-default-exports 2 - Button.tsx (#2116)
* ESLint no default imports - Button

* Fix

* Release notes

* Fix Button imports
2024-01-06 09:32:06 -08:00
Joel Jeremy Marquez
84a9269ae4 ESLint no-default-exports 1 (#2115)
* ESLint no-default-imports part 1

* Release notes

* Remove Notes.tsx default export

* Fix Notes imports
2024-01-06 09:06:26 -08:00
t4cmyk
c330020487 Add GoCardless bank integration for ING_INGDDEFF (#294)
including some test data

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-06 16:29:45 +00:00
Jakub Kuczys
83d2472a55 Ask for confirmation when editing date of a locked transaction (#2134)
* Ask for confirmation when editing date of a locked transaction

* Add release note
2024-01-06 08:14:00 -07:00
Khanh Nguyen
458d556e51 added cleared column in csv export (#2138)
* added cleared column in csv export

* added release note
2024-01-06 08:09:48 -07:00
Jason
d9aeb8db1e Change net worth graph to show more detail in compact card view (#2132)
* Change net worth graph to show more detail in compact card view

* Added release notes

* Update release notes

* Update VRT images
2024-01-06 08:06:24 -07:00
David Kus
85c0352abb Adding filter for reconciled transactions (#2108)
* Adding filter for reconciled transactions

* Adding release note
2024-01-06 08:05:49 -07:00
Matiss Janis Aboltins
7a40a645e6 ♻️ (TypeScript) fix strictFunctionTypes violations (pt 5) (#2072) 2024-01-06 12:58:08 +00:00
Matiss Janis Aboltins
7e9921e9e5 ♻️ (TypeScript) fix strictFunctionTypes violations (pt 4) (#2142) 2024-01-06 12:48:45 +00:00
Matiss Janis Aboltins
2f7b3917ed 🔖 (24.1.0) Mobile split transactions (#295) 2024-01-06 10:18:51 +00:00
Matiss Janis Aboltins
02aff1acbe 🔖 (24.1.0) Mobile split transactions (#2177) 2024-01-06 09:56:10 +00:00
Matiss Janis Aboltins
e0d66d3083 🐛 (rules) fix filtering in the rules page (#2141) 2024-01-05 19:06:32 +00:00
Joel Jeremy Marquez
d999e466b7 Fix mobile transaction page amount input (#2166)
* Request active edit on focus

* Release notes

* Track previous focus state

* use inputRef to focus

* Focus total amount effect

* Run active edit action synchronously

* Revert unneeded changes

* Run cleanup synchronously

* Cleanup

* runAction

* Space
2024-01-05 07:05:07 -08:00
Martin French
e589163bb7 [Goals] Negate schedule amount to budget if income (#2125)
* Negate schedule amount to budget if income

* Release notes

* Determine sign at initial calc

To ensure no unintended impact to remainder calcs etc.

* Lint fixes
2024-01-03 08:02:07 -06:00
Matiss Janis Aboltins
d2b86d100c 🐛 (import) fix reconciled transactions getting overriden on import (#2140) 2024-01-01 12:44:57 +00:00
Matiss Janis Aboltins
d8996405c4 revert: ♻️ (TypeScript) fix strictFunctionTypes violations (pt 4) (#2128) 2023-12-29 18:32:10 +00:00
Martin French
e548125907 [Bugfix] Fix update transaction API bug (#2127) 2023-12-27 17:20:58 +00:00
Neil
edbcaba89b Custom reports header fix (#2085)
* tablechanges

* notes

* trigger rerun

* fixes

* lint fixes
2023-12-26 17:55:41 +00:00
Joel Jeremy Marquez
b39d106c04 Mobile category modal menu (#1964)
* Mobile category modal menu

* Release notes

* Apply category and group modals

* Category modal updates + notes

* Reduce notes modal view height

* Update CategoryGroupMenu modal view height

* Update CategoryMenu modal view height

* Fix lint error

* No notes text

* Add budget-table testid on edit mode

* Fix lint error

* Fix lint error

* Remove edit mode tooltip

* Update modals

* Updates + Simplify code by removing edit mode

* Optional closeModal arg

* Fix mobile budget table category divider

* Cleanup + close modal on click outside

* collapseModals action

* Fix lint errors

* Category modal hidden menus + Lift edit state to MobileBudget component

* Hide category / group actions when editing title

* Add margins between buttons

* Fix lint errors
2023-12-22 14:35:46 -08:00
Joel Jeremy Marquez
4894118809 Mobile split transactions (#2068)
* Mobile split transactions

* Release notes

* Fix colors

* Update test ids

* AmountInput component on split transactions

* Add notes to mobile split transaction

* Ease of use improvements + functional components

* Ease of use updates

* VRT updates

* Fix AmountInput blur

* Remove negative state in AmountInput + fix vrt
2023-12-22 13:53:39 -08:00
Matiss Janis Aboltins
933fc27126 📝 (gocardless) updated the docs - removed redundant information (#292) 2023-12-22 21:33:06 +00:00
Matiss Janis Aboltins
c6723da780 ♻️ (TypeScript) fix strictFunctionTypes violations (pt 4) (#2071) 2023-12-22 21:20:29 +00:00
Neil
7a8c320560 Custom Reports Donut Graph refactor (#2098)
* donut refactor

* notes

* fixes
2023-12-22 20:31:36 +00:00
Joel Jeremy Marquez
6fbf0fdc10 [ESLint] Enable prefer-const project-wide (#2113)
* Enable prefer-const project-wide

* Release notes

* Fix remaining lint errors
2023-12-22 11:42:40 -08:00
Matiss Janis Aboltins
efaefcfaa9 ♻️ (typescript) moving DeleteFile modal to TS (#2112) 2023-12-22 19:13:49 +00:00
Matiss Janis Aboltins
73d281b6ee ♻️ (eslint) disallow unnecessary curly braces (#2111) 2023-12-22 09:30:05 +00:00
Matiss Janis Aboltins
03e943f383 ♻️ (TypeScript) fix strictFunctionTypes violations (pt 3) (#2070) 2023-12-22 09:29:48 +00:00
Matiss Janis Aboltins
5854dffd50 🐛 fix category spending report (#2096) 2023-12-19 18:40:08 +00:00
Matiss Janis Aboltins
c727e3e980 ♻️ (TypeScript) fix strictFunctionTypes violations (pt 2) (#2066) 2023-12-19 18:01:06 +00:00
youngcw
b385c715ef [Goals]: don't run templates in hidden groups (#2100)
* don't run templates in hidden groups

* note

* lint
2023-12-18 08:00:30 -07:00
youngcw
77e550f028 [Goals]: fully skip budgeted categories when only applying (#2099)
* remove budgeted categories from list when only applying

* cleanup

* speed up the category removal

* note
2023-12-18 07:58:49 -07:00
DJ Mountney
9ea8e86bb3 (ESLint) Enforce filename extensions for jsx (#2101) 2023-12-18 11:00:47 +00:00
Neil
273fa8cd59 Custom reports: make views global (#2094)
* make views global

* notes and lint fixes

* fixes

* lint fix

* fix

* fix
2023-12-17 22:18:57 +00:00
IzStriker
d4c8b5fa16 [TS migration] Reafactor tooltips.js to use typescript (#2073) 2023-12-17 20:55:16 +00:00
Neil
e62e8ca24e Custom Reports Enable Legend (#2078)
* enable Legend

* notes

* adding type

* overhaul

* calculateLegend
2023-12-16 21:38:45 +00:00
Neil
4497fbcb10 Custom Reports date paused (#2080)
* work

* fixes

* updates

* update table layout

* revert changes

* notes

* updae names and improve flow
2023-12-15 15:05:06 -08:00
Matiss Janis Aboltins
c910b6efcb Revert "♻️ (gocardless) renamed nordigen_* secrets to gocardless_*"
This reverts commit 633463a184.
2023-12-15 19:20:57 +00:00
Matiss Janis Aboltins
633463a184 ♻️ (gocardless) renamed nordigen_* secrets to gocardless_* 2023-12-15 19:18:54 +00:00
Matiss Janis Aboltins
8a15caf42d ♻️ (TypeScript) fix strictFunctionTypes violations (pt 1) (#2065) 2023-12-15 18:09:36 +00:00
iOSLife
af9efa09f0 API – Return Hidden for Category and CategoryGroup (#2062) 2023-12-15 18:09:14 +00:00
HansiWursti
a5557ca032 Fix issue 1878 (#2093)
* Fix issue 1878

* Add release notes
2023-12-15 10:38:47 -07:00
HansiWursti
0bf587bcf5 Added BG Color to view to fix Issue 2089 (#2092)
* Added BG Color to view to fix Issue 2289

* add release notes
2023-12-15 08:46:52 -07:00
Matiss Janis Aboltins
e11b65719e 👷 (ci) adding helper comments for failed CI jobs (#2074) 2023-12-14 19:02:05 +00:00
Julian Dominguez-Schatz
c09a85f340 Add schedule end date/count field (#1899)
* Add "end" field with date/count options

* Use "end" field to generate schedule

* Show "end" field in recurring description

* Disable weekend before/after picker when not enabled

* Add release notes

* Fix failing typechecks

* Add some description tests

* PR feedback

* 'Features', not 'Feature'

* Fix goal templates infinite loop

* Empty commit to bump ci

* Fix bug where schedule templates in the past would apply incorrectly

For example, if you had a schedule which started in November 2023 for
1.00, and you applied the schedule in October 2023, then you would end
up with a value of 0.50 applied in October.

* Fix handling of schedules with an end date

This commit also includes a refactor of the skip-weekend logic: rather
than referring only to dates with skipped weekends (which requires
checking whether the "next date" request worked correctly), we track a
"base date" which is the previous value of the schedule according to the
rrule, excluding any weekend-skipping. This lets us use `addDays(baseDate, 1)`
to get the next occurrence, regardless of the weekend behaviour.

Doing things this way ensures that the loop will always make progress.

* Only compute skipped weekend if weekend skips were requested

* Fix typo in iterate-schedule-occurrences code

We should be using `nextBaseDate` to derive the next base date, not
`nextDate`; this is because we want the base date to be guaranteed to
make progress in each loop iteration, so we can finish in at most 30
iterations without duplicate base dates.

* Use const

* Revert const -> let for one mutable variable
2023-12-14 05:43:16 -06:00
Joel Jeremy Marquez
f90fe04b2b Add left and right margins to modals (#2082)
* Add left and right margins to modals

* Release notes
2023-12-13 19:47:47 -08:00
spezzino
ca55d9c85e add support for auto theme (#1906)
* add support for system theme

* add release notes

* Rename auto theme

* add theme selector

* update visual snapshots

* update snapshots

* update snapshots
2023-12-13 15:10:14 -07:00
Neil
4ada92071e Custom Reports typescript updates and small functional changes (#2046)
* work

* notes

* error fixes

* updates

* card fix

* fix filters

* fixes
2023-12-12 11:34:58 -08:00
DJ Mountney
e848946898 Remove older version of react-router (#2064) 2023-12-12 17:58:22 +00:00
Neil
9da05543c3 Dark Theme color fixes (#2048)
* subdued fix

* notes

* fixes

* upcoming

* autocomplete menu

* make notes consistenet on budget page

* VRT updates
2023-12-12 06:40:52 -08:00
Neil
8a721bf2e0 Renaming variables for reports files (#2069)
* work

* notes

* error fixes

* updates

* card fix

* fix filters

* splitting PR work

* notes

* fixes

* lint fix

* Update upcoming-release-notes/2069.md

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

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-12-12 05:06:05 -08:00
Lucas
36914abcd4 Cashflow.js -> Cashflow.tsx (#2005) 2023-12-12 10:21:48 +00:00
Neil
cd2d186599 Add new types for reports files (#2067)
* work

* notes

* error fixes

* updates

* card fix

* fix filters

* splitting PR work

* notes
2023-12-11 16:31:25 -08:00
Joel Jeremy Marquez
b3bcff094d [Maintenance] ESLint - prefer-const on loot-core server (#2032)
* Another round of prefer-const rule updates

* Release notes

* Fix test error

* Fix sync.ts
2023-12-09 13:22:16 -08:00
Matiss Janis Aboltins
7955fe7aed ♻️ (typescript) refactor FixedSizeList to TS (#2022) 2023-12-07 19:30:29 +00:00
Matiss Janis Aboltins
5ac4c58d1e 🔖 (23.12.1) fix '.migrate' file causing Synology NAS problems (#290) 2023-12-07 18:28:42 +00:00
Neil
2741422c0a Custom Reports optimization (#1988)
* Range fix and payee fix

* bug fixes and UI tweaks

* range options, hover UI

* Select - UnSelect All Buttons

* fix hidden group bug

* YAxis PrivacyFilter

* notes

* more privacyFilter graphs

* overflowY fix

* Loading Indicator

* Fix Filter button hover

* data revamp

* review fixes

* LoadingIndicator fixes

* remove a loop

* filterbuttontype

* lint fixes

* review fixes

* filtersbutton

* updates

* Split out functions to separate files

* uncategorized optimization

* rename ambiguous variables

* notes

* remove indexStack

* renaming variables

* Improve scrolling of tableGraph

* revert renaming variables

* code fixes

* lint fixes

* review fixes

* fix

* review fixes

* variable name changes

* const eslint fixes

* remove indexStack
2023-12-06 09:33:19 -08:00
Tuhin Ghose
cde4551eb7 [Maintenance] Migrating util.js and chartTheme.js to typescript (#2009) 2023-12-06 08:26:17 +00:00
Matiss Janis Aboltins
7174fccfe4 ♻️ (typescript) adding strict typings to utils.ts (#2023) 2023-12-06 08:22:33 +00:00
Joel Jeremy Marquez
0303292a28 [Maintenance] ESLint: prefer-const components folder part 2 (#2034)
* ESLint prefer-const components folder part 2

* Release notes
2023-12-05 13:36:29 -08:00
Joel Jeremy Marquez
f95df06800 [Maintenance] ESLint: prefer-const components folder part 1 (#2033)
* ESLint prefer-const components folder part 1

* Release notes
2023-12-05 13:14:37 -08:00
Bernd Schorgers
f93893e007 Store migrations statestore in datadir (#289) 2023-12-05 21:10:17 +00:00
DJ Mountney
3680d45814 Add API category tests (#2036) 2023-12-05 20:08:48 +00:00
Joel Jeremy Marquez
dc872647a9 [Maintenance] Use Page component for mobile pages (#1993)
* Use Page component for mobile pages

* Release notes

* Use Button instead of Link in MobileBackButton

* Update mobile budget table to use Page component

* Settings page cleanup

* Fix lint error

* Updates + small font size increase in  page headings

* Fix rebase error

* Button height

* Revert payees navtab
2023-12-05 11:18:35 -08:00
Matiss Janis Aboltins
7a45d467b7 ♻️ (eslint) enable 'react/no-children-prop' rule and fix issues (#2029) 2023-12-05 18:58:22 +00:00
Joel Jeremy Marquez
79aa07ff1a Fix bulk edit field modal in desktop (#2031)
* Fix bulk edit field modal in desktop

* Release notes
2023-12-05 09:44:30 -08:00
Kyle Mckay
c4ff099f26 Fix failure to create category with deleted name (#2002)
* Fix failure to create category with deleted name

I'm not 100% familiar with the design of the data model so may have
misinterpreted what's going on here, but how I read this:

- The tombstone flag is used to soft delete categories.
- When creating a new category, duplicate names within a group are
  prevented.
- When checking for duplicate names, the tombstone flag was unchecked
  which meant deleted categories were falsely blocking creation.

I had a look at category deleteion logic to verify that simply including
the tombstone flag in this check is sane and see that there's a category
mapping being maintained to redirect one category to another on
deletion. So from what I can tell the correct behaviour here is to allow
a new category with the previously deleted name, rather than to revive
the old category (to preserve that old mapping lineage).

* Add release note

* Add regression test
2023-12-05 08:48:16 -07:00
Vishnu Kaushik
ad2b577515 Fix #1977: Filter Amount formatting issue (#2008)
* Fix #1977: Filter Amount formatting issue

* Fix linting and add release notes
2023-12-05 08:42:54 -07:00
Michael Clark
5f52801869 [Maintenance] Adding Aria labels for accessibility (#2025) 2023-12-04 19:31:38 +00:00
Ameek Singh
6bfd9586e0 [Maintenance] Converting dateRange and useReport to tsx (#2007) 2023-12-02 22:43:56 +00:00
Michael Clark
f36713e0be [Maintenance] BudgetTotals, GoCardlessLink, Import, WelcomeScreen components to Typescript. (#2004) 2023-12-02 22:43:29 +00:00
DJ Mountney
8b20169b59 Add some initial api tests for budgets and accounts (#1991) 2023-12-02 20:42:53 +00:00
Matiss Janis Aboltins
42699ac044 🔖 (23.12.0) darkmode, transaction locking, mobile updates and more (#286) 2023-12-02 19:45:50 +00:00
Matiss Janis Aboltins
da03acc394 🔖 (23.12.0) darkmode, transaction locking, mobile updates and more (#2003) 2023-12-02 19:26:02 +00:00
Joel Jeremy Marquez
5d1f2d48ae Larger mobile autocomplete fonts and paddings (#1900)
* Larger mobile autocomplete fonts and paddings

* Release notes

* VRT + update tests

* Update tests

* Update data-highlighted and tests

* Use styles text

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Fix tests

* Adjust Add Transaction padding + VRT updates

* Larger autocomplete text and divider

* Fix rebase

* Fix rebase

* Fix icons

* Adjust fonts

* Fix lint errors

* PR feedback

* VRT

* Update embedded autocomplete highlight hover color

* Refactor create payee button

* Embedded create payee button color

* Dummy change to re-run CI
2023-12-01 13:10:01 -08:00
Feliciaan De Palmenaer
bb07652cf8 Changed fintro specific bank integration to work with BNP and Hello Bank (#285) 2023-12-01 17:50:53 +00:00
Matiss Janis Aboltins
dc47c6d72a 🐛 improved gocardless error handling (#282) 2023-12-01 17:49:27 +00:00
youngcw
c96782d7c1 [Goals]: Sort the priorities properly (#2000)
* sort properly

* note
2023-12-01 08:40:35 -07:00
Neil
5d61dfce68 Update rules API (#1987)
* Update rules.ts

* notes

* Update packages/loot-core/src/server/accounts/rules.ts

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

* Entity update

* fix

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-11-30 10:27:51 -08:00
Toon Willems
4b12561905 Add workaround for non-unique transactionIds for Belfius bank (#283)
Co-authored-by: Toon Willems <toon.willems@silverfin.com>
2023-11-30 17:51:39 +00:00
youngcw
5a81a25b7e fix broken schedule amount sign in firefox (#1992)
* fix broken schedule amount sign in firefox

* note

* delete line
2023-11-30 09:50:31 -07:00
Stefan Hall
29f323e721 Validates minimum node version to 18.12.0 for @actual-app/api npm package (#1980) 2023-11-28 19:19:18 +00:00
shall0pass
c462604833 [Bugfix] Goals: Schedule overbudget condition (#1984)
* fix overbudget in schedules template

* release note
2023-11-27 18:18:26 -06:00
Neil
e48f36cd20 Custom Reports Bug Fixes (#1930)
* Range fix and payee fix

* bug fixes and UI tweaks

* range options, hover UI

* Select - UnSelect All Buttons

* fix hidden group bug

* YAxis PrivacyFilter

* notes

* more privacyFilter graphs

* overflowY fix

* Loading Indicator

* Fix Filter button hover

* review fixes

* LoadingIndicator fixes

* remove a loop

* filterbuttontype

* review fixes

* filtersbutton

* updates
2023-11-26 12:19:58 -08:00
Michael Clark
1ed84059d7 [Maintenance] Update ConfirmCategoryDelete, GoCardlessExternalMsg, ManageRulesModal to tsx (#1972) 2023-11-26 19:49:26 +00:00
William Kurniawan
5d8b96a749 Fix cancel add category group (#1975) 2023-11-26 16:38:05 +00:00
Julian Dominguez-Schatz
0920bdc3fa Fix bug in rule transaction apply preventing amount overrides (#1976) 2023-11-26 16:35:09 +00:00
Mohamed Muhsin
c3a9b4dda3 [refactor] Migrate Discover schedules to tsx (#1946) 2023-11-26 15:51:18 +00:00
Matiss Janis Aboltins
eab0068428 🎨 (fix) gocardless success button color (#1970) 2023-11-26 15:50:28 +00:00
Joel Jeremy Marquez
0d1b962b2f Fix budget amount not saved when clicking on another budget cell (#1965)
* Fix budget amount not saved when clicking on another budget cell

* Release notes
2023-11-25 16:52:38 -08:00
Joel Jeremy Marquez
67b9143dfc Transfer and Off Budget category in mobile (#1955)
* Transfer and Off Budget category in mobile

* Release notes

* Fix typo

* Update lookupName callers
2023-11-25 16:52:05 -08:00
Zach Whelchel
e7f298e32a [Bugfix] Fixed modal error and transactions now unlock when moved across accounts. (#1962) 2023-11-25 14:52:01 +00:00
Matiss Janis Aboltins
516f0c259f 🔧 (vrt) make screenshot comparisons more strict (#1960) 2023-11-25 14:34:24 +00:00
Neil
2c87c60328 Dark Theme Live (#1925)
* Remove Featureflag

* notes

* VRT updates

* Dark Theme fixes

* VRT updates

* VRT updates

* Revert "VRT updates"

This reverts commit 7d669f2df2.

* Revert VRT

Reverting VRT

* VRT updates

* pillbackground

* VRT updates

* Theme Selector

* VRT Updates

* notes

* VRT updates
2023-11-24 13:20:03 -08:00
DJ Mountney
b4fd6e86ed Create category rules for ynab imports (#1944) 2023-11-23 08:36:15 +00:00
Matiss Janis Aboltins
a3e71a8b49 🔧 (eslint) enable object-shorthand:properties rule (#1959) 2023-11-22 22:52:53 +00:00
Joel Jeremy Marquez
aa9c992f2e Part 2 of eslint prefer-const (#1958)
* Part 2 of eslint prefer-const

* Release notes

* Update
2023-11-22 14:28:09 -08:00
Zach Whelchel
ca498b19cc Lock transactions after reconcilliation (#1789) 2023-11-22 22:14:34 +00:00
Matiss Janis Aboltins
ca4ea97768 ⬆️ (node-migrate) upgraded to v2.0.1 (#281) 2023-11-22 22:14:02 +00:00
Matiss Janis Aboltins
8be2389fd9 ♻️ (typescript) ported gocardless auth file to TS (#1941) 2023-11-22 21:54:43 +00:00
Matiss Janis Aboltins
46988800ef ♻️ (typescript) refactor global-events to TS (#1942) 2023-11-22 19:35:30 +00:00
Joel Jeremy Marquez
881999bcfe ESLint prefer-const (#1956) 2023-11-22 11:12:22 -08:00
Joel Jeremy Marquez
9c124e8e44 Consistent button size in budget title bar + use zondicon eye icon (#1951)
* Consistent button size in budget title bar + use zondicon eye icon

* Release notes

* VRT
2023-11-22 11:02:02 -08:00
Kyle Mckay
3306963c54 [Maintenance] Refactor payee table to typescript (#1948) 2023-11-22 17:58:07 +00:00
Kyle Mckay
baa474843a [Maintenance] Split up large payee management components file (#1950) 2023-11-21 19:27:20 +00:00
Matiss Janis Aboltins
6ed1b58321 🔧 (eslint) disallow using 'var': no-var rule (#1949) 2023-11-21 19:18:13 +00:00
Val Markovic
87813b398a Add "docker.io/" registry prefix to docker compose image (#274)
Required by Podman Compose. Docker Compose should not care either way. The registry prefix is explicitly supported in the [compose file spec](https://github.com/compose-spec/compose-spec/blob/master/spec.md#image)
2023-11-21 11:14:45 -08:00
Paul Sukow
28266ed9a2 Fix switching budget from rollover budget to report budget and immediately back does not work (#1933)
* Fix switching budget from rollover budget to report budget and immediately back does not work

* Pr Changes
2023-11-21 08:15:18 -08:00
Julian Dominguez-Schatz
cd6bd9ece8 Fix crash when undoing a rule application (#1885)
* Undo shouldn't open modal if it wasn't open before

* Add release notes
2023-11-21 00:19:31 -08:00
Michael Huynh
fb2f712c16 Fix flickering scroll bar on mobile transaction input (#1782) (#1929) 2023-11-20 12:46:47 -08:00
Joel Jeremy Marquez
f58fae8d16 Support multiple months in experimental ofx parser (#1921)
* Support multiple months in experimental ofx parser

* Release notes

* Fix lint error
2023-11-20 12:44:28 -08:00
Joel Jeremy Marquez
a10b10a87b [regression] Remove extra padding in mobile accounts page (#1916)
* [regression] Remove extra padding in mobile accounts page

* Release notes

* VRT
2023-11-20 12:44:12 -08:00
DJ Mountney
47007232b8 Switch from en-ZA to en-SE for space-comma NumberFormat (#1938) 2023-11-20 20:28:55 +00:00
Stefan Hall
4761e9ce2f Specify minimum node version for @actual-app/api nom package (#1934) 2023-11-20 18:37:38 +00:00
Kyle Mckay
849262c95e [Maintenance] Refactor amount input to typescript (#1936) 2023-11-20 18:29:19 +00:00
Shazib Hussain
e6e184c412 Fix Electron Build (#1926) 2023-11-20 18:16:25 +00:00
Shazib Hussain
9c6d9ecf0a Don't allow duplicate category names (per group) (#1833)
* Remove author from electron package.json

* Don't allow dupes in cat names (per group)

* Release Notes

* Handle reorders and moves

* Fix linter warnings

* Fix typecheck

* Show the name of the duplicate category

* missed func call

* Upper case before compare

* lint fixes

---------

Co-authored-by: Shazib Hussain <contact@shazib.com>
2023-11-20 09:41:13 -07:00
Joel Jeremy Marquez
65273127f5 Mobile report budget (#1880)
* Mobile report budget

* Release notes

* Update bindings

* Cleanup

* Mobile report budget summary + reuse desktop components
2023-11-18 20:22:05 -08:00
Joel Jeremy Marquez
b5530085bb Mobile create account (#1853)
* Mobile create account

* Release notes

* Update add button style

* Add back desktop page header padding

* Empty accounts handling

* decimal keyboard on CreateLocalAccount balance input

* VRT updates
2023-11-18 20:21:41 -08:00
Michael Clark
9ec82d52c9 [Maintenance] Update CloseAccount, AccountAutocomplete, SavedFilterAutocomplete, PayeeAutocomplete components to Typescript. (#1923) 2023-11-18 13:21:21 +00:00
Matiss Janis Aboltins
7865e08c91 ⬆️ (yarn) upgrade yarn to v4 and better-sqlite3 to v9.1.1 and node to v18 (#277) 2023-11-17 22:20:53 +00:00
shall0pass
93922567fc [Bugfix] Goals: Fix Schedule Infinite loop (#1917)
* logic

* release note
2023-11-17 11:09:13 -06:00
Neil
7c0b7a2f17 Duplicate color removal (#1911)
* duplicate color removal

* notes
2023-11-16 02:17:51 -08:00
Neil
e8055bbc35 Mobile pages standardized (Colors/UI) (#1874)
* Mobile Color Consistency

* VRT updates

* color updates

* notes

* Sync Text

* Adjust header font smaller

* color and format adjustments

* tidying header buttons

* color and button adjustments

* Header Text color

* VRT updates

* back button changes

* VRT changes

* adjust buttons

* lint fix

* darkTheme header background

* VRT updates

* VRT updates
2023-11-16 00:08:46 -08:00
Neil
7fdd9767ba sideBar Dark Color changes (#1887)
* sideBar Dark Color changes

* notes

* VRT updates

* test fixes

* color fixes

* Revert "test fixes"

This reverts commit 3c6131b2c4.

* Revert "VRT updates"

This reverts commit b84d7659a4.

* color update

* VRT updates

* calendar changes

* VRT update

* notes update

* color change

* Revert "VRT update"

This reverts commit 4c5aba4247.

* Revert "VRT updates"

This reverts commit ba142b0653.

* VRT updates
2023-11-16 00:05:58 -08:00
Neil
1f105999af Customizeable Reports (#1791)
* Reorganize and add graphs

* Create Customizable Chart

* Notes

* Hide Menu update Donut

* lint fixes

* Organize Menus

* Change Title

* UI changes

* UI updates

* Add Data Table

* Functionality additions and Privacy Filters

* Date filters working and formatting changes

* Fix default spreadsheet and add tableGraph

* Integrate Summary Data and Split Legend

* started adding functionality on charts

* list fix

* Enabling more graphs, fixing errors

* Legend, interactions, Empty Rows Filter

* fixes for EmptyRows/interactions/legends

* formatting UI and filtering data

* format date

* fix errors

* Fix Legend Order

* lint fixes

* Add tooltips

* Feature Flag

* fix overview card, fix offbudget checkbox

* Revamped dataType, added scrollBars

* data display adjustments

* data spreadsheet updates/groups added to matrix

* Add Category Selector

* Add Labels Button

* formatting fixes

* Add Averages to dataTable

* data bug fix

* Added all type back in with exceptions

* formatting

* split assets/debts, add Uncategorized

* bug fixes and UI updates

* add scrollbars to table

* formatting dataTable

* tooltips, navigation and graph labels

* Code clean-up and re-org

* revert color change

* Change labels name

* organize files

* code cleanup

* Tooltip Colors

* Descoping legend for future PR

* descope legend & rename split

* rename type variable to be more descriptive

* adjustments for sankey and eslint merges

* notes update

* code review fixes

* code fixes

* fix date selections
2023-11-16 00:04:29 -08:00
Matiss Janis Aboltins
e116d01453 🐛 (gocardless) fix banksync - create singleton client (#278) 2023-11-16 07:19:19 +00:00
Stefan Hall
f970263c72 Add typings condition operators for Action class (#1909) 2023-11-15 17:18:06 +00:00
Neil
fecc9178b3 Color Consolidations (#1868)
* Color normalization

* color updates

* VRT updates

* update colors table

* VRT updates

* more VRT updates

* pillborder

* VRT updates

* Revert "VRT updates"

This reverts commit ae58317b00.

* Revert "more VRT updates"

This reverts commit a316745efd.

* Revert "VRT updates"

This reverts commit 03797af362.

* Revert "VRT updates"

This reverts commit 454adac251.

* VRT refresh

* border color

* Checkbox Border

* VRT updates
2023-11-15 01:18:46 -08:00
Matiss Janis Aboltins
08c80b6f58 ⬆️ (yarn) upgrade to v4 and better-sqlite3 to v9.1.1 (#1902) 2023-11-14 08:34:12 +00:00
Joel Jeremy Marquez
a3995582c4 Swipe up mobile navbar (#1758)
* Swipe up mobile navbar to reveal more menus

* Release notes

* Revert navbar button height to 70

* Reduce debounce value

* More tabs coming soon

* VRT update

* VRT update

* Fix: e2e tests

* Smoother mobile navtabs

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-11-13 14:14:16 -08:00
Shaan Khosla
5008eb022f Sankey with Recharts (#1739)
* added sankey plot

* fix sankey

* formatting

* formatting

* lint

* reduce margin

* experimental flag

* update location of recharts install

* truncate tooltip

* add titles to node and sizing

* better filtering

* comments, types, and check if data exists

* don't log

* clean up extra views

* responsive container, and fix label in graph

* change back

* fix bug and font

* static tooltip

* update overview to fit both sankey and category spending

* overview sankey

* increase iterations, fix right text, and release notes

* remove is out

* lint

* fix tooltip space

* fix margins

* format and efficient sql payees query

* restructure category sum value

* add tooltip names...again

* conditionally use container

* use useCategories
2023-11-12 16:01:12 -05:00
Joel Jeremy Marquez
353e7be31f Support ofx INVSTMTMSGSRSV1 (#1876)
* Support ofx INVSTMTMSGSRSV1

* Release notes
2023-11-11 13:28:48 -08:00
Michael Clark
30c7024663 [Maintenance] Convert ExpenseGroup, ExpenseCategory, IncomeCategory components to Typescript. (#1897) 2023-11-11 21:05:45 +00:00
youngcw
22efe74ec8 add budget tables to the aql schema (#1895)
* add budget tables to the schema

* note

* note fix

* lint
2023-11-11 13:08:14 -07:00
dependabot[bot]
a6c1443669 build(deps): bump axios from 1.3.2 to 1.6.1 (#276)
Bumps [axios](https://github.com/axios/axios) from 1.3.2 to 1.6.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.2...v1.6.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-11 18:49:16 +00:00
Matiss Janis Aboltins
5792b15cb5 🔧 (eslint) enabling 'react/no-unstable-nested-components' rule (#1893) 2023-11-11 18:46:28 +00:00
shall0pass
168b79a178 [Maintenance] Goals break out goal target calculations to individual files (#1888)
* move goal calculations to separate files by type

* bug squashing

* release note
2023-11-11 10:48:33 -06:00
Michael Clark
7062f2a7d9 Maintenance: BudgetSummaries, MonthPicker, SidebarCategory components to tsx. (#1879) 2023-11-10 21:38:18 +00:00
Matiss Janis Aboltins
af666458d3 (VRT) darkmode visual regression tests (#1860) 2023-11-10 21:17:07 +00:00
Neil
184b302273 Remove Static Colors (#1875)
* Color Changes

* notes
2023-11-09 15:51:58 -08:00
Neil
3004f336da Final Colors Consolidation (#1871)
* Color Updates

* color change

* notes

* fix preview background
2023-11-09 15:45:59 -08:00
James Costian
45bb7696c3 Support full month names when importing CSV transactions (#1862)
Support dates like "Dec 24, 2020" and "december 24, 2020"
2023-11-09 10:16:23 -07:00
James Costian
199a9f838d Make Select All respect filters and splits (#1864) 2023-11-09 07:11:51 -08:00
Matiss Janis Aboltins
de604b9f3a 🐛 (docker) add missing migrations folder (#275) 2023-11-09 07:53:19 +00:00
youngcw
df5aa3186c Goals: Save full goal value and add an indicator of goal status (#1780)
* first pass at progress bar

* db migration / enter goal in db

* add getGoal function

* stabilize

* whoops

* TS

* reset goal in db if no template found

* reconfirm

* release note

* typo

* rename migration

* to ms

* move priority logic, consistent variable names,

* fixup

* clear goal if template removed

* Visual goals (#40)

* 🔥 removing privacyMode feature flag (#1688)

* 🎨  fix multiline label in schedules modal (#1687)

* Update Visual Regression README File (#1689)

* Fix typo in GoCardlessLink.js (#1684)

happend -> happened

* queried cleared balance for tooltip (#1678)

* Dark Theme Reports/Settings (#1512)

* 🐛 Mobile account transaction list: Fix sticky date section headers (#1698)

* 👷  do not cancel github ci jobs on master branch (#1692)

* Sidebar Account Fix (#1703)

* Dark Theme Final (#1513)

* Category autocomplete should only search selectable categories  (#1681)

* set colors based on a goal value

* extra comment

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>

* update release note

* lint

* use null as cleared state

* show goal status via colors (#41)

* cleanup

* I think its working

* lint

* fix report budget, by adding in the goal coloring

* fix the error by adding colors to the report side (#42)

* [refactor] Migrate Schedules Table to typescript (#1691)

* 🔧  removing unnecessary manual module resolution (#1707)

* 🐛 (mobile) scrolling in lists with pull-to-refresh (#1706)

* 💄 (mobile) updating apple home-screen icon (#1705)

* Enhance Y-Axis Scaling on Net Worth Graph (#1709)

* fix report budget, by adding in the goal coloring

---------

Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>

* report budget database updates

* Goal progress bar (#1734)

* first pass at progress bar

* db migration / enter goal in db

* add getGoal function

* stabilize

* whoops

* TS

* reset goal in db if no template found

* reconfirm

* release note

* typo

* rename migration

* to ms

* move priority logic, consistent variable names,

* fixup

* clear goal if template removed

* Visual goals (#40)

* 🔥 removing privacyMode feature flag (#1688)

* 🎨  fix multiline label in schedules modal (#1687)

* Update Visual Regression README File (#1689)

* Fix typo in GoCardlessLink.js (#1684)

happend -> happened

* queried cleared balance for tooltip (#1678)

* Dark Theme Reports/Settings (#1512)

* 🐛 Mobile account transaction list: Fix sticky date section headers (#1698)

* 👷  do not cancel github ci jobs on master branch (#1692)

* Sidebar Account Fix (#1703)

* Dark Theme Final (#1513)

* Category autocomplete should only search selectable categories  (#1681)

* set colors based on a goal value

* extra comment

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>

* update release note

* lint

* use null as cleared state

* show goal status via colors (#41)

* cleanup

* I think its working

* lint

* fix the error by adding colors to the report side (#42)

* [refactor] Migrate Schedules Table to typescript (#1691)

* 🔧  removing unnecessary manual module resolution (#1707)

* 🐛 (mobile) scrolling in lists with pull-to-refresh (#1706)

* 💄 (mobile) updating apple home-screen icon (#1705)

* Enhance Y-Axis Scaling on Net Worth Graph (#1709)

* fix report budget, by adding in the goal coloring

---------

Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>

* report budget database updates

* Fix schedule searchbar (#1729)

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>

* working dynamic colors.  Need to figure out what changes are actually needed

* cleanup

* more cleanup

* lint

* reset the goal when applying a single template

* make getCategory function

* remove some unneeded changes

* actually remove the changes, not just comment

* cleanup some unneeded code that was causing some bugs. Works for me, but should be vetted more

* lint

* add json definitions to database

* use template feature flag to enable colors

* some fixes

* don't set goals for remainders, remove unneeded change

* lint

* release note

* lint again

* fix mobile crash

* undo changes in CellValue.tsx

* lint

* use getStyle

* move status calc to helper

* lint

* recommendations

* suggestion

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

---------

Co-authored-by: shall0pass <20625555+shall0pass@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2023-11-08 12:44:45 -07:00
Sreetam Das
1c68c3f964 [Bugfix]: Account filter for budgeted and offbudget accounts (#1867)
* Update AQL filter for budgeted and offbudget accounts

* Add release note
2023-11-07 11:52:32 -08:00
Matiss Janis Aboltins
1f79708ea3 ability to add migrations (#267) 2023-11-07 18:10:16 +00:00
Matiss Janis Aboltins
494d67459f Create FUNDING.yml (#270) 2023-11-06 20:06:51 +00:00
Neil
a15f80e771 Warning Color Consolidations (#1798) 2023-11-05 17:29:55 +00:00
Jesse Visser
be18891957 Enhancement: Add option to select in/out field during import (#1788) 2023-11-05 14:49:00 +00:00
Stefan Hall
a6dae398da fixed:issue->#1835 Support NYNAB import of transactions that contain subtransactions tha… (#1836) 2023-11-05 14:42:23 +00:00
Joel Jeremy Marquez
d8c885bf4e Mobile budget pull down to sync (#1858)
* Mobile budget pull down to sync

* Release notes
2023-11-04 16:45:16 -07:00
Evan Trujillo
f94d8aff9f [Bugfix]: Dark mode - darker tint for pageTextLink (#1765) 2023-11-04 21:47:02 +00:00
Seth Gillett
a549cdf0e7 fixed:issue->#1762 Schedule creation modal notify user of weekend skip option (#1840) 2023-11-04 15:58:26 +00:00
凯 - kǎi
b7a2f16246 fix styling of transaction page on mobile (#1820) 2023-11-04 15:31:35 +00:00
Michael Clark
0ec88ecc24 Maintenance: Moving some components to Typescript (#1834) 2023-11-04 15:23:09 +00:00
Matiss Janis Aboltins
9e7c2e7a65 🔖 (23.11.0) (#273) 2023-11-04 10:32:08 +00:00
Matiss Janis Aboltins
39fa9f2097 🔖 (23.11.0) (#1859) 2023-11-04 09:27:13 +00:00
Matiss Janis Aboltins
9040cab600 🐛 fix: bring back rollover arrow in budget page (#1856)
Closes #1845
2023-11-03 18:44:05 +00:00
Matiss Janis Aboltins
e56cb4bc85 🐛 fix: add missing top border for budget menu icon (#1855)
* 🐛  fix: add missing top border for budget menu icon

* Release notes
2023-11-03 18:33:12 +00:00
Joel Jeremy Marquez
fc08baf7ae Fix mobile budget click handlers (#1844)
* Fix mobile budget click handlers

* Release notes
2023-10-31 07:48:32 -07:00
Joel Jeremy Marquez
7325153da1 Mobile balance cover/transfer/rollover overspending (#1802)
* Mobile balance cover/transfer

* Release notes

* Fix errors

* Cleanup

* Fix hit boxes and add line clamp

* Fix styling

* Prevent simultaneous field edits

* Use onPointerDown

* Remove balanceTooltip close effect
2023-10-29 20:26:12 -07:00
Joel Jeremy Marquez
e12793e7eb Inline mobile category and group edit (#1781)
* Inline mobile category and group edit

* Release notes

* Allow one edit at any time

* Mobile: long press to edit category/group

* Mobile: set userSelect: 'none'

* Move getLongPressEvents

* Add role to prevent tap-to-search

* Add role to text

* Prevent default on longpress

* Add tabIndex to disable tap-to-search

* Add back userSelect

* Role updates

* Remove userSelect

* Revert long press category name

* Remove unused import

* Fix lint error

* Edit mode

* Do not allow to start an edit when another  field is currenty being edited

* Fix blur event not firing

* Grey out zero spent or balance values

* VRT update

* Fix budget cell being zero on click

* Delete useLongPress
2023-10-28 09:42:47 -07:00
Kit PANG
5fe146ee0a Allow categorise transfer to off budget accounts on mobile (#1824)
* Allow categorise transfer to off budget accounts

* Add release notes
2023-10-27 09:48:01 -07:00
Joel Jeremy Marquez
0af2987cef Hide mobile nav tabs on scroll (#1745)
* Hide mobile nav tabs on scroll

* Release notes

* Reduced navbar bottom padding

* Make hide transition a bit faster

* Update scroll defaults

* VRT snapshots

* Fix: safari scroll bounce effect disrupting the show/hide of bottom nav

* Update release notes

* No tap highlight on MobileNavTabs

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-10-22 19:12:39 -07:00
Joel Jeremy Marquez
e266093a4a Custom useNavigate which tracks previous location (#1808)
* Custom useNavigate which tracks previous location

* Release notes

* Fix lint errors
2023-10-22 11:41:07 -07:00
Michael Clark
19f0efb654 Maintenance: Converting Utils and Sort to typescript (#1823) 2023-10-22 16:18:59 +01:00
Neil
e0b2eab475 Error Color Consolidation (#1756)
* Error Color Consolidation

* notes

* color changes
2023-10-21 14:33:30 -07:00
Neil
25f4e2a8b5 Page color updates (#1799)
* page color updates

* notes
2023-10-21 14:23:02 -07:00
Shaan Khosla
d338a73794 add styling back to cash flow graph (#1819)
* add styling back

* release notes

* vrt
2023-10-21 10:21:16 -07:00
Shaan Khosla
75f2bf8b1b 2 new vrt tests for reports (#1814) 2023-10-19 17:33:31 +01:00
dependabot[bot]
1f5ff932b1 build(deps): bump @babel/traverse from 7.20.13 to 7.23.2 (#272) 2023-10-19 08:44:25 +01:00
Michael Clark
eb54487d8e Maintenance: Convert FixEncryptionKey, Loading, AnimatedLoading components to TypeScript (#1784) 2023-10-19 08:14:50 +01:00
Michael Clark
5cc6bad34b Maintenance: Updating icons generator to output typescript (#1785) 2023-10-19 08:13:04 +01:00
Neil
acf4456077 darkMode Fixes (#1800)
* darkMode Fixes

* notes

* AutoComplete Colors

* Sync button fix

* dark color changes
2023-10-16 07:18:33 -07:00
youngcw
b45615e6fc Darkmode: fix theming on budget table (#1795)
* fix darkmode for budget table

* note

* lint

* fix totals line, fix group colot
2023-10-16 07:13:32 -07:00
Michael Huynh
38609ee25a Add user-friendly theme option labels (#1796) (#1797) 2023-10-16 07:05:01 -07:00
Joel Jeremy Marquez
cae2b9cd5a Allow linked child transactions (#1759)
* Allow linked child transactions

* Release notes
2023-10-13 21:19:42 -07:00
Joel Jeremy Marquez
4cacc845c0 Fix mobile budget header sync button (#1783)
* Fix mobile budget header sync button

* Release notes
2023-10-11 00:21:29 -07:00
Shaan Khosla
3dfbd23f96 POC Recharts charting library (#1740) 2023-10-11 08:02:01 +01:00
youngcw
21effa654d Goal speedup2 (#1720)
* only use needed priorities

* cleanup

* cleanup

* cleanup

* maybe better?

* note

* note fix

* suggestion

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2023-10-10 14:39:37 -07:00
Joel Jeremy Marquez
c33dc6fbad Mobile category and group functionalities (#1737)
* More mobile functionalities

* Cleanup

* Remove close button on mobile budget summary modal

* Release notes

* Close mobile inputs on enter

* Fix mobile budget row header color

* Fix income group hidden

* Add validation + close button on category tooltip

* Add mobile budget visual cues

* More mobile visual cues

* Error message fix

* Update blank category name behavior

* Cleanup

* Cleanup

* Fix mobile group deletion and category tooltip behavior

* Zero sign for AmountInput

* VRT snapshot updates

* Handle null values in must-category-transfer
2023-10-10 13:02:33 -07:00
Michael Clark
057caf127a Maintenance: DateSelect component to tsx & server-handlers get-categories type (#1776) 2023-10-10 20:38:15 +01:00
Matiss Janis Aboltins
767bc8ecb6 Update FUNDING.yml - add github sponsors (#1772) 2023-10-10 20:19:53 +01:00
Compositr
bdf5c45cda Sync on ctrl+s (#1770) 2023-10-10 20:19:23 +01:00
凯 - kǎi
3dfe633428 fix: csv parser delimiter (#1774) 2023-10-09 20:49:54 +01:00
Michael Clark
efba86a72d Maintenance: BudgetSummary & CreateLocalAccount to tsx (#1768) 2023-10-09 18:46:29 +01:00
shall0pass
316da144e1 [Bug] End of month cleanup error (#1750)
* check for null carryover

* release note

* simplify logic
2023-10-06 17:12:13 -05:00
shall0pass
d3ab8f9812 [Bug] Goals: Fix schedules 'in between' calculation (#1753)
* fix in between calculation

* release note
2023-10-06 17:11:52 -05:00
Joel Jeremy Marquez
0ea7f1852b Prevent parent transaction from being added to transfer account (#1751)
* Prevent parent transaction from being added to transfer account

* Release notes
2023-10-06 15:06:55 -07:00
Josh Krebs
3c341fc583 Budget tsx refactor (#1743) 2023-10-06 21:51:29 +01:00
Matiss Janis Aboltins
de90504a6d 🐛 (electron) reconnect to sockets if connection lost (#1694) 2023-10-05 08:40:41 +01:00
Matiss Janis Aboltins
75af7b9987 🔧 (github) adding issue templates (#262)
* 🔧 (github) adding issue templates

* Release notes
2023-10-05 08:40:11 +01:00
Matiss Janis Aboltins
b8fbc9b19c 🔥 remove jlongster/actual-server package (#260)
* 🔥  remove jlongster/actual-server package

* Release notes
2023-10-05 08:40:00 +01:00
Matiss Janis Aboltins
fc643d28c6 ⬆️ upgrade better-sqlite3 to v8.6.0 (#268)
* ⬆️  upgrade better-sqlite3 to v8.6.0

* Release notes
2023-10-05 08:39:45 +01:00
Michael Clark
f6e2d3b1f3 Maintenance: CreateAccount and CreateEncryptionKey to tsx (#1755) 2023-10-04 22:33:05 +01:00
Joel Jeremy Marquez
f1973d55c0 Editable mobile budget (#1662)
* Editable mobile budget

* Fix error on empty amount

* Fix typo

* Decimal keyboard + select input on click

* Remove scrollIntoView

* Fix focus

* Focus input on negative/positive

* Use CellValue

* Functional mobile components

* Blur fix c/o dmlazaro

* Use pointer event

* Remove useFireChangeOnUnmount

* Release notes

* Prevent default on pointerdown

* Add dmlazaro to release notes

* Disable amount input button when not focused

* Remove input refocus
2023-10-04 14:19:12 -07:00
Neil
476070b0a7 Consolidate Notice Colors (#1724) 2023-10-04 20:47:14 +01:00
Matiss Janis Aboltins
9d6b9c556d 🔖 (23.10.0) (#269)
* 🔖 (23.10.0)

* Remove used release notes

* Upgrade web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-04 18:00:13 +01:00
Matiss Janis Aboltins
510f635bbc 🔖 (23.10.0) (#1757)
* 🔖 (23.10.0)

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-04 17:33:51 +01:00
Neil
d1e57340b8 Regression fixes (#1752)
* regression fixes

* notes

* VRT updates
2023-10-02 11:46:28 -05:00
Matiss Janis Aboltins
9ca36f3eeb ♻️ (typescript) hardening data entity types (#1680) 2023-09-27 20:56:53 +01:00
shall0pass
05f0df4917 [Bugfix]: Goals - Fixed an overbudgeting condition (#1738)
* fix

* release note
2023-09-26 09:50:47 -05:00
Michael Clark
5f347bbe40 Maintenance: Consolidate useMergedRef and convert to typescript (#1733) 2023-09-24 17:40:44 +01:00
Shaan Khosla
3c4f62bd51 keep name after schedule completion or recreation (#1728) 2023-09-24 17:37:49 +01:00
Shaan Khosla
abd2d424a6 Fix schedule searchbar (#1729) 2023-09-24 17:34:49 +01:00
Jainam Desai
89c5f15c1f Add link type to Button Component (#1725) 2023-09-23 10:38:50 +01:00
Syukron Rifa'il Muttaqi
2a597fb3b8 fix: filter empty note (#1708) 2023-09-22 20:11:21 +01:00
Shaan Khosla
2f97c3a1e2 changed default months to 5 in cash flow report (#1723) 2023-09-22 20:03:10 +01:00
Matiss Janis Aboltins
ba5174ddfa 🐛 (mobile) redirect to budget page for all 404 (#1721) 2023-09-22 08:37:16 +01:00
Matiss Janis Aboltins
9a900f9ff1 ♻️ moving rule server actions to separate file (#1677) 2023-09-22 08:36:56 +01:00
Joshua Krebs
2081e25cf5 refactor BudgetMonthCountContext to tsx (#1722)
* refactor BudgetMonthCountContext to tsx

* add release notes
2023-09-21 16:25:40 -07:00
youngcw
49ab358cf2 Goals: speed up and a bugfix (#1718)
* speed up and a bug fix

* cleanup

* note

* lint
2023-09-21 09:08:26 -05:00
Jainam Desai
efb72af1b8 Add common component for AnchorLink and ButtonLink (#1701) 2023-09-20 17:19:09 +01:00
Crazypkr1099
16334f67a5 Enhance Y-Axis Scaling on Net Worth Graph (#1709) 2023-09-19 18:40:33 +01:00
Matiss Janis Aboltins
ddb78af57d 💄 (mobile) updating apple home-screen icon (#1705) 2023-09-18 18:43:34 +01:00
Matiss Janis Aboltins
9e2226e384 🐛 (mobile) scrolling in lists with pull-to-refresh (#1706) 2023-09-18 18:43:13 +01:00
Matiss Janis Aboltins
a1dd6cf3dc 🔧 removing unnecessary manual module resolution (#1707) 2023-09-18 18:42:57 +01:00
Mohamed Muhsin
2ee023ac22 [refactor] Migrate Schedules Table to typescript (#1691) 2023-09-17 19:05:32 +01:00
Shaan Khosla
3496ac28f3 Category autocomplete should only search selectable categories (#1681) 2023-09-16 09:58:59 +01:00
Neil
f6f496f656 Dark Theme Final (#1513) 2023-09-16 09:56:19 +01:00
Neil
68147d654f Sidebar Account Fix (#1703) 2023-09-15 21:39:58 +01:00
Matiss Janis Aboltins
3d29cfbed5 👷 do not cancel github ci jobs on master branch (#1692) 2023-09-15 17:10:31 +01:00
Trevor Farlow
fbd1097a0c 🐛 Mobile account transaction list: Fix sticky date section headers (#1698) 2023-09-15 07:25:19 -06:00
Neil
0cc34798fb Dark Theme Reports/Settings (#1512) 2023-09-13 18:40:16 +01:00
Shaan Khosla
b6100cfecd queried cleared balance for tooltip (#1678) 2023-09-13 17:58:48 +01:00
Ikko Eltociear Ashimine
d835b113f8 Fix typo in GoCardlessLink.js (#1684)
happend -> happened
2023-09-12 17:25:18 +01:00
Crazypkr1099
4e4d20ad31 Update Visual Regression README File (#1689) 2023-09-12 17:15:04 +01:00
Matiss Janis Aboltins
8167ea8a83 🎨 fix multiline label in schedules modal (#1687) 2023-09-12 17:11:00 +01:00
Matiss Janis Aboltins
42e1b5ca7e 🔥 removing privacyMode feature flag (#1688) 2023-09-12 17:10:46 +01:00
Neil
55285f4c5f Dark Theme Manager and Modals (#1503) 2023-09-11 20:11:58 +01:00
Crazypkr1099
5565116c34 Add spent column to mobile view (#1651) 2023-09-11 18:06:19 +01:00
Matiss Janis Aboltins
addd8e0f5f (e2e) adding sample schedules to test budget (#1672) 2023-09-11 08:42:22 +01:00
Johannes Löthberg
46dbc89482 Make edge builds fetch master builds from correct repository (#265)
If we don't verify that the repository ID is what we expected then we
will pull artifacts from PRs where the source branch is `master`.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-09-10 20:04:19 -05:00
Matiss Janis Aboltins
0e66ebfeef ⬆️ (electron) upgrading electron-based dependencies (#1674) 2023-09-10 16:15:27 +01:00
youngcw
05f2e2af1a Mobile: Show proper name of income group (#1679)
* Show right name for income group on mobile

* release note
2023-09-09 17:59:05 -04:00
Neil
8ff89a5ab4 DarkTheme Schedules/Payees (#1487) 2023-09-09 18:21:17 +01:00
Matiss Janis Aboltins
faa4a7c0e2 🔧 (eslint) convert rules from ERROR to WARN to improve devX (#1599) 2023-09-09 17:54:06 +01:00
Joshua Krebs
ba4885cb85 refactor budget/IncomeHeader to tsx (#1670) 2023-09-08 19:39:48 +01:00
Matiss Janis Aboltins
a8a0f777e2 🐛 (mobile) fix schedule status positioning (#1669)
* 🐛 (mobile) fix schedule status positioning

* Release notes
2023-09-08 07:56:00 +01:00
Matiss Janis Aboltins
852b5373bc 🐛 (signup) fix setting up for the first time with missing protocol (#1657) 2023-09-07 17:40:58 +01:00
Joel Jeremy Marquez
bca09023e2 Left over glamor style cleanup (#1668)
* #1666 - left over glamor style cleanup

* vrt

* Release notes
2023-09-06 23:04:47 -07:00
Matiss Janis Aboltins
4d8efccc73 🔧 (electron) improved OS detection (#1658)
* 🔧 (electron) improved OS detection

* Release notes
2023-09-07 06:56:15 +01:00
Matiss Janis Aboltins
0e539d91fe (mobile) pull down to trigger bank-sync (#1663)
*  (mobile) pull down to trigger bank-sync

* Release notes

* Remove canSync checks
2023-09-07 06:56:02 +01:00
Matiss Janis Aboltins
2ff1e67e8a 🐛 (mobile) fix sync button design (#1665)
* 🐛 (mobile) fix sync button design

* Release notes
2023-09-07 06:55:47 +01:00
youngcw
35c3d54688 Mobile: Dont show hidden groups (#1654)
* fix percent goals in the same priority level not compounding but overwritting

* release note

* don't show hidden groups on mobile view

* cleanup

* cleanup2

* cleanup3

* release note
2023-09-06 21:33:44 -07:00
Joel Jeremy Marquez
50f60b18e7 Enable swc sourcemap (#1659)
* Enable swc sourcemap

* Release notes
2023-09-06 18:48:37 -07:00
youngcw
bc5c2ce059 Mobile: don't show hidden income categories (#1656) 2023-09-06 19:42:38 +01:00
Shyam Guthikonda
21d5f117ee TypeScript migration (partial). (#1660) 2023-09-06 17:27:16 +01:00
Joel Jeremy Marquez
319d196e93 Webpack + SWC Loader (#1650)
* desktopc-client swc-loader

* More swc

* Jest swc + upgrades

* Revert @swc/jest usage for now

* SWC minify

* Remove setupFilesAfterEnv in package.json as per warning message in CI

* Release notes

* Minify on CI

* swc helpers in loot-core

* @swc/jest

* Upgrade webpack

* Add @swc/core to crdt

* Use yarn cache in github actions

* Cleanup

* Fix electron

* Revert "Fix electron"

This reverts commit 787af1980648fa30788a1d1678dcda534716f31d.

* Revert action.yml cache changes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-09-05 13:42:44 -07:00
Joel Jeremy Marquez
96863b3196 Change Accounts page BUDGET label to FOR BUDGET in mobile (#1639)
* Change BUDGET to FOR BUDGET in mobile accounts page

* Release notes

* Updated screenshot
2023-09-05 10:48:29 -07:00
Joel Jeremy Marquez
9fde36dca1 Fix ofx/qfx import options (#1649)
* Fix ofx/qfx import options

* Release notes
2023-09-05 09:54:04 -07:00
Syukron Rifa'il Muttaqi
108daedff5 Fix submit form on enter key pressed (#1634) 2023-09-05 08:34:34 +01:00
Joel Jeremy Marquez
bf786e8872 Break apart budget/misc.js (#1584)
* Break apart budget/misc.js

* Release notes

* Rename release notes

* UI bolder "No server" text
2023-09-05 00:27:52 -07:00
Joel Jeremy Marquez
3eb09b66ec Fix blur performance issue in Safari (#1646)
* Fix blur performance issue in Safari

* Release notes
2023-09-04 23:17:16 -07:00
Joel Jeremy Marquez
cb00826f51 Fix mobile page "back" behaviors (#1648)
* Fix mobile page "back" behaviors

* Release notes
2023-09-04 23:17:03 -07:00
Joel Jeremy Marquez
15ab80a475 Remove glamor css (#1637)
* Remove glamor css syntax

* Release notes

* Remove fallback value

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

* Remove fallback value

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

* Remove fallback value

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

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-09-04 23:16:41 -07:00
Joel Jeremy Marquez
3e32db74cc Fix onNavigateToSchedule prop (#1645)
* Fix onNavigateToSchedule prop

* Release notes
2023-09-04 11:51:59 -07:00
Mohamed Muhsin
db07d7a73d refactor: make Schedules component to tsx (#1644) 2023-09-04 17:41:02 +01:00
Oleh
65899b0ef0 Add support for markdown in notes (#1587) 2023-09-04 08:28:07 +01:00
Joel Jeremy Marquez
63c3d07cb9 Replace usage of glamor CSSProperties with React CSSProperties (#1542)
* Remove usages of glamor CSSProperties

* Cleanup

* Re-add CellButton className prop

* More removal of glamor CSSProperties

* Release notes

* Fix vrt test failures

* Use React CSSProperties in View

* Custom CSSProperties type

* Settings UI regression fix

* Fix type check errors

* Address PR comments

* CategorySpendingGraph style

* Fix rebase mistake
2023-09-03 16:15:44 -07:00
Matiss Janis Aboltins
246e0d76c1 ⬆️ (better-sqlite3) upgrade to 8.6.0 to fix electron export crash (#1643) 2023-09-03 21:57:12 +01:00
Matiss Janis Aboltins
1a15d2c039 ♻️ use useCategories everywhere (#1597) 2023-09-03 21:56:58 +01:00
Matiss Janis Aboltins
90e32df3fb 🐛 (vrt) set static version (#1641) 2023-09-03 21:44:24 +01:00
Joel Jeremy Marquez
8ef2c4013a Experimental OFX parser (#1600)
* Experimental OFX parser

* Release notes

* Enable enableExperimentalOfxParser in tests

* Move experimental ofx parser to ofx2json

* Enable experimental ofx parser by default

* Address PR comments
2023-09-03 10:33:06 -07:00
Matiss Janis Aboltins
a460bc25d6 ♻️ convert budget component from class to hook component (#1566) 2023-09-03 17:43:10 +01:00
Jakob Aarup Skov
bde303ec45 Add GoCardless bank integration for Spar Nord SPARNORD_SPNODK22 (#257) 2023-09-03 17:42:41 +01:00
James Hackett
6512c465f0 Make file size uploads configurable via env vars (#245) 2023-09-03 17:42:28 +01:00
Joel Jeremy Marquez
59de6b0035 Replace format with useFormat (#1630)
* Replace format with useFormat

* [chore] Release notes
2023-09-03 09:34:24 -07:00
Joel Jeremy Marquez
3931625133 Rename CategorySelect file to CategoryAutocomplete (#1614)
* Rename CategorySelect file to CategoryAutocomplete

* Release notes
2023-09-03 09:32:53 -07:00
Oleh
6a0b7d6b7d Make reports more responsive (#1592) 2023-09-03 17:28:13 +01:00
Matiss Janis Aboltins
6817c45ddc ⬆️ upgrade absurd-sql and remove patch-package (#1632) 2023-09-03 17:26:01 +01:00
Matiss Janis Aboltins
6f216cc1aa 🔖 (23.9.0) mobile transaction entry, privacy mode (#259) 2023-09-03 16:22:20 +01:00
Matiss Janis Aboltins
ad4c383adf 🔖 (23.9.0) mobile transaction entry, privacy mode (#1635) 2023-09-03 15:54:28 +01:00
Matiss Janis Aboltins
8864e79db1 Add github sponsors button to the repository (#1636) 2023-09-02 21:56:36 +01:00
Matiss Janis Aboltins
dd7a7fa796 🐛 (imports) ability to toggle on/off OFX import fallback payee (#1631) 2023-09-02 18:03:38 +01:00
Trevor Farlow
d4422f89aa 🐛 Mobile: Account ledger jumps on first selection (#1625) 2023-09-01 10:58:26 -06:00
Trevor Farlow
cdff98b109 🐛 Mobile: fix Accounts page theme color (#1604)
* Make all mobile view themes respect Actual color themes
2023-09-01 10:58:01 -06:00
Matiss Janis Aboltins
835e16e54d releasing privacy mode feature (#1623) 2023-09-01 08:18:45 +01:00
Matiss Janis Aboltins
d46afab6dd 🐛 fix filtering in transaction table (#1622) 2023-09-01 08:04:44 +01:00
Joel Jeremy Marquez
05e582793d Close modals on route change (#1613)
* Close modals on route change

* Release notes

* Fix import error
2023-08-31 07:55:43 -07:00
shall0pass
fc62d85c23 [Bug] Mobile: Account picker text color (#1607)
* commit

* release note
2023-08-30 13:13:26 -05:00
Matiss Janis Aboltins
940af6d367 (vrt) increased strictness, added datepicker test (#1605) 2023-08-30 18:13:29 +01:00
Joshua Krebs
c19717e84c Refactor budget/MobileTable to tsx (#1602) 2023-08-29 21:28:56 +01:00
Matiss Janis Aboltins
080951fb34 🔧 mark PRs as stale and auto-close (#1591) 2023-08-29 21:07:29 +01:00
Joel Jeremy Marquez
245c59e942 Open transaction date picker when clicked while it's focused (#1583)
* Open transaction date picker when clicked while it's focused

* Release notes
2023-08-29 07:13:34 -07:00
youngcw
99dc87d715 Goals: fix percent goals in the same priority level not compounding (#1579)
* fix percent goals in the same priority level not compounding but overwritting

* release note
2023-08-28 12:26:19 -05:00
Joel Jeremy Marquez
e48924d987 Schedule privacy (#1580)
* Schedule privacy

* Release notes

* Fix schedule amount shifting
2023-08-28 08:15:00 -07:00
Joel Jeremy Marquez
2b06a42ac5 Create transfer using child transaction instead of parent (#1581)
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-08-28 07:06:36 -07:00
Matiss Janis Aboltins
d8c99221ff 🐛 (vrt) fix vrt - use static date (#1590) 2023-08-28 06:52:11 +01:00
adamkelly86
7c48e53329 Update screenshot (#1477) 2023-08-25 20:41:20 +01:00
Matiss Janis Aboltins
a0290609f9 👷 visual regression tests (#1553) 2023-08-25 17:34:10 +01:00
Trevor Farlow
821fa724e8 🐛 Schedule editor: Linked transactions table collapses (#1571) 2023-08-23 18:03:59 -06:00
Johannes Löthberg
5adab1885b Show all payees by default for child transactions (#1573)
Previously we would default to only show transfer payees in the payee
selection dropdown for child transactions.  This is confusing and there
doesn't seem to be any obvious reason for this, so this commit removes
that behavior.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-23 08:50:01 -07:00
Khanh Nguyen
240dc46a23 Fix bug - Manually entered split transactions are not cleared on import #200 (#1465)
* Added clear transactions on import option

* Added release note

* Added cleared column to csv export

* fixed Manually entered split transactions are not cleared on import

* Revert "Added cleared column to csv export"

This reverts commit 2952bc3e7d.

* added release note

* Copied same code to Gocardless

* Updated var name

* Updated to only query  changed transactions instead of all
2023-08-23 08:26:33 -05:00
Jarek Samic
3d621c68cb Sync on visibility change (#1549) 2023-08-23 07:53:26 +01:00
Matiss Janis Aboltins
dd47b6c6ad 🐛 reset reconciliation status when switching accounts (#1547)
Closes #1327
2023-08-22 20:34:51 +01:00
Johannes Löthberg
37cec4c46f Don't update transaction date when syncing from GoCardless. (#1559)
We should not override the date in case the user has manually corrected
it.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-22 19:12:13 +01:00
Joshua Krebs
108c0a6176 Month count selector ts refactor (#1565) 2023-08-22 19:10:52 +01:00
Trevor Farlow
ec24d0eaae 🐛 Link Schedules modal list of schedules grows too long (#1563) 2023-08-22 09:52:53 -06:00
Johannes Löthberg
6912c082b1 Fetch GoCardless transactions from the last 90 days or since first transaction (#1484)
Most banks allow up to 90 days of transactions, and so we try to fetch
up to 90 days of transactions or transactions since the first
transaction in the Actual account, whichever is shortest.  This lets
users get a clean start based on their selected starting balances date.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-21 20:53:35 +01:00
Matiss Janis Aboltins
8a6c54c4d5 🎨 improving category spending side-nav style (#1548) 2023-08-21 18:53:32 +01:00
Matiss Janis Aboltins
85f21550cb 🐛 (mobile) hide sync button if sync is not active (#1546) 2023-08-21 07:18:38 +01:00
Matiss Janis Aboltins
fe8ed4e346 🐛 (darkmode) fix more issues - transaction table and csv imports (#1541) 2023-08-21 07:18:25 +01:00
Trevor Farlow
2d0464c097 🐛 Mobile entry will enter positive value instead of negative (#1551)
Ensure our FocusableAmountInput used in MobileTransaction conditionally
applies negation logic the same way onChange as it does onBlur.
2023-08-20 21:15:59 -06:00
Matiss Janis Aboltins
6dfc43abf1 (mobile) allow creating transactions via the footer (#1545) 2023-08-20 20:19:15 +01:00
Ziga Macele
c52900e713 [Bug]: Mobile Header (#1550) 2023-08-20 17:23:55 +01:00
Ziga Macele
4378489d80 [Bug]: darkmode regression - fatal error message is ugly (#1552) 2023-08-20 17:17:26 +01:00
Trevor Farlow
ca5977db75 🐛 Schedule table in Link Schedule modal is collapsed (#1501)
Co-authored-by: kyrias <johannes@kyriasis.com>
2023-08-19 21:45:47 -06:00
Pol Eyschen
639720b6fd Allow schedules to skip weekends (#1505)
* allow schedules to skip weekends

* wording

* release note

* skip weekend in upcoming dates as well

* Clean UI

* Move switch to the date selection modal
2023-08-19 12:55:47 -07:00
Joel Jeremy Marquez
79f4d02350 Port App and FatalError components to TS and functional components (#1535)
* Port app to functional component and tsx

* FatalError functional component + tsx

* Release notes

* Exports cleanup

* App cleanup

* Address PR comments
2023-08-19 12:53:34 -07:00
Matiss Janis Aboltins
f8afb396ed 🐛 (darkmode) fix colors used for schedules in transaction table (#1533) 2023-08-19 19:42:31 +01:00
Matiss Janis Aboltins
884ab8c783 (e2e) adding mobile e2e tests (#1521) 2023-08-19 19:42:04 +01:00
shall0pass
ac055dc2e0 Mobile: To Budget inconsistency (#1540)
* rearrangement

* release note
2023-08-18 15:39:22 -05:00
shall0pass
32cc86ec99 Mobile: Don't show hidden categories (#1539)
* don't show hidden categories on mobile

* release note
2023-08-18 09:25:29 -05:00
Joel Jeremy Marquez
6fae79560e Some typescript migration (#1532)
* Typescript migration

* Release notes

* Update error boundary

* Breakup sidebar components

* Account and Sidebar props

* Remove button in Item component + exports cleanup

* Put accountNameStyle to Account

* Revert component ports (separated to another PR)

* Export cleanup

* Remove ErrorBoundary (separated to another PR)

* Sidebar budgetName as ReactNode
2023-08-17 13:21:29 -07:00
Matiss Janis Aboltins
f8ce38f11e ♻️ extract rules components to individual files + TS (#1517) 2023-08-17 20:29:03 +01:00
Matiss Janis Aboltins
b114a8f8fc (export) adding error handling & improving dev-exp for electron (#1468) 2023-08-17 08:28:43 +01:00
Constantin Mihai
ad65fcdffc Fix config file not being loaded from the project root by default (#249) 2023-08-16 20:03:58 +01:00
Matiss Janis Aboltins
0228072c6f 🐛 (darkmode) fix transaction list hover effects (#1531) 2023-08-16 20:02:43 +01:00
Dylan Myers
87747a83b9 Disable Express x-powered-by Header (#248) 2023-08-16 18:36:33 +01:00
Matiss Janis Aboltins
efec507bf8 🐛 (darkmode) fixing lightmode regressions in transaction table (#1530) 2023-08-16 17:45:21 +01:00
Matiss Janis Aboltins
1d65184241 🐛 (importer) fix nYNAB importer when decimal budgets used (#1529) 2023-08-16 17:45:06 +01:00
Ludvig Hozman
0501deac2d Add DANSKEBANK_DABANO22 integration (#244) 2023-08-15 19:07:17 +01:00
Johannes Löthberg
d3f9a9c3a0 Rely on date determined by server for GoCardless transactions (#1499)
Because different banks use the date fields in vastly different ways we
now let the server's bank integrations decide which date we should use.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-15 08:33:10 +01:00
Johannes Löthberg
95c7d5bc2c Decide on transaction date during GoCardless transaction normalization (#243) 2023-08-15 08:29:38 +01:00
Joel Jeremy Marquez
91217b6d5e #1454 - Show projected balance when adding new transaction (#1455)
* 1454 - Show projected balance when adding new transaction

* Release note

* Rename 1455.md to 1454.md

* Update release notes category
2023-08-14 13:30:59 -07:00
Johannes Löthberg
af875ab035 Correctly fix schedule transaction payee (#1526) 2023-08-14 21:03:07 +01:00
Matiss Janis Aboltins
8ada28775e 🔧 (eslint) add 'plugin:react/recommended' (#1492)
* 🔧 (eslint) add 'plugin:react/recommended'

* Release notes
2023-08-13 15:23:14 +01:00
Martin French
6ebcbc8738 🐛 (reports) fix incorrect cashflow balance (#1518)
* 🐛 (reports) fix incorrect cashflow balance

Fixing a small typo here where multiple transfers across different payees on the same day fail to be summed up resulting in significant balance errors.

* release notes

* Update 1518.md
2023-08-12 22:21:17 -07:00
biohzrddd
42af73cdff Bugfix row render (#1402)
* Fix re-rendering all rows on hover

* release note

* Removing isHover logic in place of css :hover

---------

Co-authored-by: biohzrddd <10577752+biohzrddd@users.noreply.github.com>
2023-08-12 22:16:02 -07:00
Johannes Löthberg
71f885b899 Import category notes from YNAB4 exports (#1515)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-12 13:32:20 +01:00
Matiss Janis Aboltins
b325bd9b18 ♻️ (typescript) migrating hooks to TypeScript (#1479) 2023-08-12 10:02:02 +01:00
Matiss Janis Aboltins
a0ecd65e70 (reports) add loading indicators (#1491)
*  (reports) add loading indicators

* Release notes
2023-08-12 09:10:45 +01:00
Matiss Janis Aboltins
2ef0fc9415 🐛 show all available transaction icons (#1508) 2023-08-11 21:13:02 +01:00
Johannes Löthberg
ba6eb26e6e Show correct payee for scheduled transactions on budgeted accounts page (#1379)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-10 19:52:12 +01:00
CharlieMK
09380db661 Add FINTRO_BE_GEBABEBB GoCardless integration (Include additionalInformation in notes) (#242) 2023-08-09 21:20:50 +01:00
Neil
b208294185 DarkTheme Accounts files (#1480) 2023-08-09 19:16:46 +01:00
Johannes Löthberg
52c1676005 Add NORWEGIAN_SE_NORWNOK1 bank (#237)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-09 17:54:36 +01:00
Johannes Löthberg
448c4546f2 Stop setting endDate when fetching GoCardless transactions (#1493)
This breaks fetching transactions where the valueDate is in the future.
While the GoCardless documentation says this should never happen, it's
what happens with at least Bank Norwegian due to them using the interest
date as valueDate.  (C.f. #1392)

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-09 08:57:15 +01:00
Johannes Löthberg
9c9f6645d3 Add GoCardless bank integration for American Express AESUDEF1 (#239) 2023-08-09 08:27:47 +01:00
Johannes Löthberg
9102d974a5 Make endDate optional when downloading GoCardless transactions (#241) 2023-08-09 08:22:57 +01:00
Jarek Samic
b2738db441 Fix transactions button background color (#1494) 2023-08-08 20:55:11 -06:00
Jed Fox
c667118f10 Remove page-based modals in favor of existing state-based modal logic (#1270)
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
2023-08-08 20:35:22 -06:00
shall0pass
218a4a761a Goals: Ignore hidden categories when running goal templates (#1481)
* ignore hidden categories

* release note
2023-08-08 05:14:51 -05:00
Neil
e1dc58d456 add dev theme to list (#1469) 2023-08-08 07:39:52 +01:00
Jarek Samic
e9137fccc7 Initial port of react native edit transaction view (#1340)
* Set `role="button"` on downshift autocomplete items
This avoids content observation behavior in WebKit on touch devices that delays the onClick event (and therefore reaction to user input).
* Disable split transaction editing for now
2023-08-07 21:40:01 -06:00
Jarek Samic
facc3acf31 Fix mobile account view (#1486) 2023-08-07 21:37:57 -06:00
Neil
c2d5d475b9 eslint rule for capturing colors/themes (#1482)
This is to prevent any further color changes added to PRs. This will
help prevent the darkTheme getting any addition work loaded onto it.
2023-08-07 21:13:02 +01:00
Johannes Löthberg
e17d90ce5f Add category spending report (#1382) 2023-08-07 19:04:56 +01:00
Neil
9fed15f88b Dark mode filters/rules/transactions (#1436) 2023-08-07 19:04:33 +01:00
Matiss Janis Aboltins
7cef3fe24b 🔖 (23.8.1) fix nYNAB import, mobile colors and other smaller fixes (#240)
- web: https://github.com/actualbudget/actual/pull/1475
- server: https://github.com/actualbudget/actual-server/pull/240
- docs: https://github.com/actualbudget/docs/pull/260
2023-08-07 18:58:41 +01:00
Matiss Janis Aboltins
4a9b30d4d5 🔖 (23.8.1) fix nYNAB import, mobile colors and other smaller fixes (#1475)
- web: https://github.com/actualbudget/actual/pull/1475
- server: https://github.com/actualbudget/actual-server/pull/240
- docs: https://github.com/actualbudget/docs/pull/260
2023-08-07 18:53:22 +01:00
shall0pass
40d94141c4 [Bug] Goals: Monthly schedule can cause error (#1478)
The 'interval' value from the schedules is not set if the schedule is
monthly. This change will check for a valid number for the interval
value and if it does not exist will default to 1 (monthly).
2023-08-07 05:26:52 -05:00
shall0pass
023badc39c [Bug]Goals: Applying templates would zero non-templated categories (#1464)
Using the Apply Template or Overwrite option would result in
non-templated categories being overwritten. First reported :
https://discord.com/channels/937901803608096828/1137329898999001140/1137329898999001140
2023-08-06 13:41:32 -05:00
Matiss Janis Aboltins
e78430db62 🐛 (schedules) fix showing balance of approximate transactions (#1473)
Closes #1328

Closes #1471
2023-08-06 19:30:16 +01:00
Matiss Janis Aboltins
8ee4768f58 ♻️ (crdt) adding more strict typings (#1461)
Making the `crdt` package fully TypeScript-strict.
2023-08-05 21:02:14 +01:00
shall0pass
c581a8016c Goals: Schedule multi month forecasting (#1452)
References discord discussion starting here:
https://discord.com/channels/937901803608096828/940290142579605514/1133523705063030824

Currently the schedule keyword won't fill any future budget cells if the
category balance already satisfies the schedule. This PR is an attempt
to improve the behavior by allowing budget fills regardless of the
category balance.

This is a drastic rewrite of the schedule keyword. Though I've tried not
to have any regressions, it is possible because of how different the
logic is. I've tested compounding using a simple template, so a small
change in the 'by' keyword was also made.
2023-08-05 14:26:27 -05:00
Neil
293692d5c5 Fix titlebar transparent background (#1460)
Not much to this. Turns title bar from transparent to coincide with new
theme coloring.
2023-08-05 20:17:15 +01:00
Matiss Janis Aboltins
7b7e6e4db0 🐛 (import) fix YNAB (and other) importers (#1462) 2023-08-05 13:42:43 +01:00
Sean Tsai
cd54a2093e Fix the mobile footer color (#1456)
fix #1445
2023-08-05 12:40:48 +01:00
Matiss Janis Aboltins
92099dc763 🐛 (schedules) fix creating schedules with the same name (#1463)
Closes #1375
2023-08-05 12:40:17 +01:00
Jed Fox
9d27379b25 Move big input component into Input.js, port some of the manager app to TS (#1431) 2023-08-04 19:03:16 +01:00
Sean Tsai
b84546826f Bugfix: remove select component inner scrollbar (#1458)
In some situations the text in the Select component will be too big,
which will make the inner vertical scrollbar appear. This PR is to hide
the vertical scrollbar.

![截圖 2023-08-04 下午3 06
38](https://github.com/actualbudget/actual/assets/67775387/be6c066d-de44-4944-b02e-5d265c84bc61)
2023-08-04 07:49:20 -06:00
Matiss Janis Aboltins
421aa65e6d ⬆️ (crdt) upgrade murmurhash (#1438)
Upgrading murmurhash. The new version has TS types.

Apart from that, it looks pretty much the same.

Diff: https://www.diffchecker.com/CEpBedX1
2023-08-04 08:06:44 +01:00
Matiss Janis Aboltins
fac3af6360 ♻️ (crdt) adding more strict typings (#1437)
This PR has no functional changes. Only types are changing and getting
improved (more stricter).

A follow-up PR will come next that does a few functional changes to make
this package fully strict.
2023-08-04 08:06:32 +01:00
Khanh Nguyen
a9d34dfcc8 Add options on Import transactions screen to mark transactions as cleared/uncleared (#1451) 2023-08-04 08:05:27 +01:00
Joel Jeremy Marquez
9bfbf229db Reports privacy filter (#1447)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->

Addresses
https://github.com/actualbudget/actual/issues/1360#issuecomment-1646600087
2023-08-03 14:14:23 -07:00
Joel Jeremy Marquez
2d11c0f61e Sentence case in menus (#1446)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->

Updating other menus to sentence case so that it is consistent with the
other menus throughout the app
2023-08-03 14:14:08 -07:00
shall0pass
fe033d68cf Goals: Allow up to to consider spent values (#1448)
Resolves https://github.com/actualbudget/actual/issues/1443
2023-08-03 10:13:14 -05:00
shall0pass
64ad07b9db Release note README link update (#1449)
The current link in the README directs to a github page that has a link
to the documentation page on how to write release notes. I've updated
the link here to just go straight to the documenation page on how to
write good release notes.
2023-08-03 05:53:14 -05:00
Neil
e7f8288244 fix eye coloring (#1450)
Eye.js is currently set to a static color (black). This PR allows you to
change the color of the icon with the style element - mimicing all other
icons in Actual.
2023-08-03 08:13:08 +01:00
Matiss Janis Aboltins
496d60c3a7 🔖 (23.8.0) stability improvements and new experimental features (#238)
- web: https://github.com/actualbudget/actual/pull/1444
- server: https://github.com/actualbudget/actual-server/pull/238
- docs: https://github.com/actualbudget/docs/pull/257

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-08-02 21:01:54 +01:00
Matiss Janis Aboltins
5f92920195 🔖 (23.8.0) stability improvements and new experimental features (#1444)
- web: https://github.com/actualbudget/actual/pull/1444
- server: https://github.com/actualbudget/actual-server/pull/238
- docs: https://github.com/actualbudget/docs/pull/257
2023-08-02 20:33:20 +01:00
Jed Fox
907571bd83 Update to the latest version of the size compare action (#1435)
Includes a few typographical improvements I PR’d.

(since the workflow is a `pull_request_target` one, the changes won’t
show up in the comments till this PR is merged)
2023-07-31 18:02:03 +01:00
Matiss Janis Aboltins
5bc37379fc 🔥 remove unused budgetMonth (#1432)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-07-31 17:59:20 +01:00
Matiss Janis Aboltins
0d943516a3 🐛 fix incorrect state slice usage (#1433)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-07-31 17:59:12 +01:00
Matiss Janis Aboltins
5f76067190 🐛 (crdt) export Clock as a type to fix warning (#1434) 2023-07-31 17:58:57 +01:00
Jed Fox
81446fb4ef Remove no-op applyFilter call (#1430)
`applyFilter` exits early if the filter is unchanged, so this call
doesn’t do anything.
2023-07-31 08:08:52 +01:00
Johannes Löthberg
edf2e32c98 Include the schedule name when filtering schedules (#1429) 2023-07-30 16:31:27 -07:00
Neil
46af4556a9 Search Bar Changes (#1408)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-30 14:38:29 -07:00
Matiss Janis Aboltins
d349354c9d 🐛 fix number formatter not listening to state changes (#1423)
Closes #1415

Fix number formatter not listening to state changes. This is not a fully
comprehensive solution. We will need to run a migration campaign to port
over from direct usage of `format` util to `useFormat`, but this is a
first step that solves the most glaring issue.
2023-07-30 20:57:05 +01:00
Matiss Janis Aboltins
a3c59f1ec3 🐛 fix side-nav collapse/pin icon color (#1421)
Closes #1416

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-30 18:03:10 +01:00
Matiss Janis Aboltins
73289148df ♻️ (common) migrating to specific common component import paths pt4 (#1422)
Part 4 of the migration. Final moves.

Previous PR: https://github.com/actualbudget/actual/pull/1420
2023-07-30 16:28:33 +01:00
Matiss Janis Aboltins
abd7cf090a ♻️ (common) migrating to specific common component import paths pt3 (#1420)
Part 3 of the migration.

Part 2 here: https://github.com/actualbudget/actual/pull/1419
2023-07-30 16:13:17 +01:00
Matiss Janis Aboltins
30d035f8c6 ♻️ (common) migrating to specific common component import paths pt2 (#1419)
Part 2 of the path migration. No functional changes.

Part 1: https://github.com/actualbudget/actual/pull/1418

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-30 15:37:03 +01:00
Jed Fox
e8b3419933 Port the settings components to TS (#1405) 2023-07-30 07:24:55 -07:00
Jed Fox
fd5ace58b4 Move YNAB4/5 import code into loot-core (#1208) 2023-07-30 07:21:57 -07:00
Matiss Janis Aboltins
60e5f1ae85 ♻️ (common) migrating to specific common component import paths (#1418)
Just moving away from the barrel `common` export to a bit more specific
imports.

Part 1 of the migration (other imports to follow in other PRs).
2023-07-30 13:22:13 +01:00
Matiss Janis Aboltins
61d707482a 🐛 (electron) always show titlebar (#1417) 2023-07-29 21:19:10 +01:00
Tom French
26d0bda8b2 chore: add more concrete types to loot-core (#1186) 2023-07-29 13:07:49 -07:00
Matiss Janis Aboltins
ce8d53a513 🔥 (nordigen) removing env var/config file support (#235)
Removing env var/config file support for Nordigen secrets. These have
been migrated to the new `secrets` db table a while ago. We can now
clean up the legacy implementation for these secrets.
2023-07-29 19:59:31 +01:00
Jed Fox
a99e88b46c Update node-fetch in the API to fix connection drop issue (#1397) 2023-07-29 05:24:51 -07:00
Matiss Janis Aboltins
9fd4e6c8f7 ♻️ moving P, useStableCallback, AnchorLink common components (#1413)
Moving the code to separate files. Functionally should be no
differences.
2023-07-29 13:09:01 +01:00
Sid Vishnoi
410dbbc8b1 Add Indian numbering format (#1412) 2023-07-29 04:54:58 -07:00
youngcw
9273a0abcf Goals: add flag to percent goals to use previous month income instead of this months (#1403)
This is a more elegant way of implementing a month ahead version of the
percent goals. To use it add the `previous` flag to the percent goal, ex
`#template 10% of previous Paycheck`.
2023-07-28 19:11:19 -05:00
youngcw
f68cb4ae13 Goals: fix remaining funds calculation (#1410)
Fixes #1409. This makes the template processing not include previously
budgeted funds in the return value.
2023-07-28 19:10:44 -05:00
Jed Fox
e7d8fdf590 Fix typo in handle-feature-requests.js (#1411) 2023-07-28 17:00:27 -07:00
Jed Fox
9ef5fd12e0 More typing improvements for Redux-related code (#1404) 2023-07-28 13:49:34 -07:00
Neil
2c69af2149 Fix Sorting/Balance interactions (#1406) 2023-07-28 09:48:31 -07:00
youngcw
5dd59c0053 Goals: fix leftover 1 cent in remainder goal (#1400) 2023-07-27 18:35:00 -07:00
shall0pass
ebc943bd70 Add per-category button to fill budget cells, including Goal template support (#1350) 2023-07-27 14:01:50 -07:00
Jed Fox
ee3d995117 Refactor buttons a bit, enable dark mode (#1395) 2023-07-26 15:53:39 -04:00
Jed Fox
9c527e3fce Improve messaging when the API fails to download a file (#1396) 2023-07-24 15:48:30 -04:00
Matiss Janis Aboltins
20c2f1950b ♻️ rename nordigen to gocardless (#231)
Just renaming things from Nordigen to Gocardless.
2023-07-24 19:41:25 +01:00
Jed Fox
b8c90aa8d5 Adapt the top level components to dark mode (#1391)
Co-authored-by: biohzrddd <10577752+biohzrddd@users.noreply.github.com>
2023-07-24 13:02:42 -04:00
Jed Fox
f6c5769d47 Exclude “isbetween” op from the filter UI (#1389) 2023-07-23 16:18:26 -04:00
Jed Fox
c06b1badc4 Consistency improvements for <AnimatedLoading> (#1390) 2023-07-23 16:15:53 -04:00
Sean Tsai
94a6b53f4a Delete table navigator from rules page (#1342) 2023-07-23 17:36:42 +01:00
Sean Tsai
1d60635e3b Remove double scrollbar as the screen is big enough (#1385) 2023-07-23 17:12:22 +01:00
Jed Fox
a84f009ad9 Correct the width of StatusCell (#1380) 2023-07-22 06:31:51 -04:00
Jed Fox
c6e480e89c Move saveScrollWidth call to layout effect (#1366) 2023-07-21 13:14:59 -04:00
Jed Fox
af53f06eac Add support for importing the first row of a CSV file without a header row (#1373) 2023-07-21 13:14:30 -04:00
Jed Fox
93a6df362c Update coloring of newly added icons (#1378) 2023-07-21 13:04:00 -04:00
Jack
9a80a006ce Storing start month in user prefs (#1237) 2023-07-20 15:32:13 -04:00
Neil
a3e9971379 Add "not" checkbox for string filters (#1287) 2023-07-20 12:36:37 -04:00
Jed Fox
ac0d17e57e Begin integrating support for themes (#1367) 2023-07-20 12:34:17 -04:00
Jed Fox
b9f0b0d1d7 Update the text of the comment posted when closing feature requests (#1374)
The change isn’t so new anymore so I’ve updated the comment to recognize
that.
2023-07-20 17:12:33 +01:00
Joel Jeremy Marquez
7340b48b70 Include scheduled transactions for the month in Account's running balance (#1354) 2023-07-20 08:21:12 -04:00
Jed Fox
6146d659cc Add support for parsing TSV files using the CSV logic (#1372) 2023-07-20 06:19:18 -04:00
Jed Fox
d757ffd641 Improve clarity of informational message in “merge unused payees” modal (#1371) 2023-07-20 06:19:05 -04:00
Jed Fox
5cd6b6b7c5 Update to the latest SVGR version & re-generate all icons (#1368)
Co-authored-by: biohzrddd <10577752+biohzrddd@users.noreply.github.com>
2023-07-19 18:57:50 -04:00
Joel Jeremy Marquez
ec42dad728 Fix onExpose is not a function error (#1362) 2023-07-19 17:54:27 -04:00
Jed Fox
a97b36ebdd Further reduce bundle size by code splitting out pages that are only used on desktop/mobile (#1240) 2023-07-19 17:47:50 -04:00
dependabot[bot]
723d9cd62c build(deps): bump word-wrap from 1.2.3 to 1.2.4 (#230)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3
to 1.2.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jonschlinkert/word-wrap/releases">word-wrap's
releases</a>.</em></p>
<blockquote>
<h2>1.2.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Remove default indent by <a
href="https://github.com/mohd-akram"><code>@​mohd-akram</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/24">jonschlinkert/word-wrap#24</a></li>
<li>🔒fix: CVE 2023 26115 (2) by <a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/41">jonschlinkert/word-wrap#41</a></li>
<li>🔒 fix: CVE-2023-26115 by <a
href="https://github.com/aashutoshrathi"><code>@​aashutoshrathi</code></a>
in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/33">jonschlinkert/word-wrap#33</a></li>
<li>chore: publish workflow by <a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/42">jonschlinkert/word-wrap#42</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mohd-akram"><code>@​mohd-akram</code></a> made
their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/24">jonschlinkert/word-wrap#24</a></li>
<li><a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> made
their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/41">jonschlinkert/word-wrap#41</a></li>
<li><a
href="https://github.com/aashutoshrathi"><code>@​aashutoshrathi</code></a>
made their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/33">jonschlinkert/word-wrap#33</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4">https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f64b188c72"><code>f64b188</code></a>
run verb to generate README</li>
<li><a
href="03ea08256b"><code>03ea082</code></a>
Merge pull request <a
href="https://redirect.github.com/jonschlinkert/word-wrap/issues/42">#42</a>
from jonschlinkert/chore/publish-workflow</li>
<li><a
href="420dce9a24"><code>420dce9</code></a>
Merge pull request <a
href="https://redirect.github.com/jonschlinkert/word-wrap/issues/41">#41</a>
from jonschlinkert/fix/CVE-2023-26115-2</li>
<li><a
href="bfa694edf5"><code>bfa694e</code></a>
Update .github/workflows/publish.yml</li>
<li><a
href="ace0b3c78f"><code>ace0b3c</code></a>
chore: bump version to 1.2.4</li>
<li><a
href="6fd7275946"><code>6fd7275</code></a>
chore: add publish workflow</li>
<li><a
href="30d6daf60f"><code>30d6daf</code></a>
chore: fix test</li>
<li><a
href="655929cabe"><code>655929c</code></a>
chore: remove package-lock</li>
<li><a
href="49e08bbc32"><code>49e08bb</code></a>
chore: added an additional testcase</li>
<li><a
href="9f626935f3"><code>9f62693</code></a>
fix: cve 2023-26115</li>
<li>Additional commits viewable in <a
href="https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=word-wrap&package-manager=npm_and_yarn&previous-version=1.2.3&new-version=1.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/actualbudget/actual-server/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-19 17:08:34 +01:00
shall0pass
717de22f58 Goals: Implement goals in Report Budget (#1329) 2023-07-19 09:12:41 -04:00
Michael Gillett
d91d062c96 spelling error in FixSplit.js (#1363) 2023-07-19 08:42:14 +01:00
Matiss Janis Aboltins
63d48032c5 ♻️ (Nordigen) rename to GoCardless (#1361)
Renaming all occurrences of Nordigen to GoCardless
2023-07-18 22:27:45 +01:00
Jed Fox
f329fe21af Add clear typings to the modals (#1359) 2023-07-18 15:55:14 -04:00
Joel Jeremy Marquez
ba2de7ece5 Privacy mode (#1272) 2023-07-18 20:40:14 +01:00
Neil
77ef86413d Sort Transactions on Accounts Page (#1232) 2023-07-18 20:21:44 +01:00
Jed Fox
2860837741 Add typings to most of the Redux logic (#1269) 2023-07-18 15:02:40 -04:00
Sean Tsai
e6acf52638 Fix clicking enter will create empty transaction (#1316)
fix #1301

After the change, upper components will not detect the press enter event
before the datepicker is closed.
2023-07-18 19:23:10 +01:00
Shazib Hussain
4c9dbcb96d Remove author from electron package.json (#1281)
I _think_ this no longer applies?
2023-07-18 19:20:48 +01:00
Matiss Janis Aboltins
1de788ea68 ⬆️ (nordigen-node) upgrade to v1.2.6 (#229)
1. upgrade `nordigen-node` to 1.2.6 (which uses the new gocardless
domain)
2. allow accessing `nordigen` functionality via `/gocardless` to unblock
using the new API path in actual-web
2023-07-18 18:31:54 +01:00
Jed Fox
617892eb93 Remove bottom border radius from the payee table (#1334) 2023-07-18 09:15:10 -04:00
Jed Fox
986dc6c1c0 Rename <CustomSelect> to <Select> (#1348) 2023-07-17 18:24:51 -04:00
shall0pass
a7e7ff61ef Goals: Fix calculated fill when using multiple 'up to' statements in different priority levels (#1312) 2023-07-17 17:36:15 -04:00
Jed Fox
1031bbbce7 Add a few more ESLint rules (#1355) 2023-07-17 17:32:22 -04:00
Jed Fox
9d31120f1a Hide the “Show unused payees” button when not needed (#1335) 2023-07-17 17:30:05 -04:00
Jed Fox
4bceaf8a25 Stop the demo build bar from shrinking on mobile/small sizes (#1353) 2023-07-17 17:21:21 -04:00
Sean Tsai
185daf470d Sort saved filters by alphabetical order (#1298)
fix #1284
2023-07-17 21:45:53 +01:00
Sean Tsai
723cbcf99c Fix a bug in confirm category delete (#1351) 2023-07-16 10:55:48 -04:00
Jarek Samic
c2ebfc72ef Fix importing transactions in Safari (#1349) 2023-07-16 10:52:16 -04:00
Sean Tsai
92ddaa568a Remove legacy Select and NativeCategorySelect Component (#1343) 2023-07-15 19:53:36 -04:00
shall0pass
1845ec8469 Use setZero function within goal templates for speed improvement (#1344) 2023-07-15 18:14:12 -04:00
Jack
9bccacea47 Month picker rework (#1235)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-11 16:19:24 -04:00
Sean Tsai
b06d87d2ee Fix the CashFlow report crash because of the new CustomSelect (#1325) 2023-07-11 15:44:14 -04:00
Neil
fc6eb4be33 Add transfers to CashFlow Report (#1311) 2023-07-11 15:19:50 -04:00
shall0pass
a3e3c78c5c Goals: Improve remainder calculation when combined with other keywords (#1288) 2023-07-11 15:17:05 -04:00
Sean Tsai
927c859456 Remove some usages of the Select component (#1277) 2023-07-09 15:19:21 -04:00
Matiss Janis Aboltins
354152dbb5 🔖 (23.7.2) more patches (not so critical, but still annoying) (#225)
- web: https://github.com/actualbudget/actual/pull/1322
- server: https://github.com/actualbudget/actual-server/pull/225
- docs: https://github.com/actualbudget/docs/pull/230
2023-07-09 17:03:55 +01:00
Matiss Janis Aboltins
954309d034 🔖 (23.7.2) more patches (not so critical, but still annoying) (#1322)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-07-09 16:41:11 +01:00
Matiss Janis Aboltins
91474f1f0c 🐛 fix sync: add back 'accounts.type' column (#1317)
Closes #1296

After this is merged I'll do an API release which will also solve
https://github.com/actualbudget/actual/issues/1303
2023-07-09 16:13:30 +01:00
Jed Fox
d6cb8674f7 Fix ID for transaction_filters migration (#1309)
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-07-08 13:27:08 -04:00
Sean Tsai
2a627ef988 Fix Custom Select unnecessary disabled scrollbar (#1314) 2023-07-08 17:32:02 +01:00
Jed Fox
c76f39c0fa Fix migration check script (#1307) 2023-07-07 14:56:32 -04:00
Matiss Janis Aboltins
cc497b29ab 🐛 changing pages while adding a transaction (#1305) 2023-07-07 19:17:45 +01:00
Matiss Janis Aboltins
8d112d2e93 Revert "Fix drag and drop on touch devices (#1194)" (#1306)
Reverts actualbudget/actual#1204

Closes https://github.com/actualbudget/actual/issues/1293

This is way more complicated than originally anticipated. Reverting the
change to fix the prod build. Someone can work on re-introducing this in
a later build, but we need to be sure it doesn't break once more.
2023-07-07 19:15:25 +01:00
Matiss Janis Aboltins
e9f6d6ba4d 🐛 fix zero budget values (#1308)
Closes #1299

<img width="324" alt="Screenshot 2023-07-07 at 18 56 38"
src="https://github.com/actualbudget/actual/assets/886567/1a4dbd65-52af-44d9-8205-94a4c6c745e5">
2023-07-07 19:14:50 +01:00
Sean Tsai
88452ea519 Fix page not found error in README (#1297)
The "community documentation" link below Code Structure headline in
`README` will direct user to page not found error
2023-07-07 18:27:47 +01:00
Matiss Janis Aboltins
ff7be0d637 🔊 improving 'invalid-schema' error logs (#1302)
The logs for `invalid-schema` were not logging the used query or the
metadata. So fixing this.

It would make debugging issues such as
https://github.com/actualbudget/actual/issues/1296 easier.
2023-07-07 18:06:25 +01:00
Matiss Janis Aboltins
c2ee92878c 🔖 (23.7.1) critical sync fixes (#224)
- web: https://github.com/actualbudget/actual/pull/1295
- server: https://github.com/actualbudget/actual-server/pull/224
- docs: https://github.com/actualbudget/docs/pull/225
2023-07-05 21:51:03 +01:00
Matiss Janis Aboltins
02b1e03611 🔖 (23.7.1) critical sync fixes (#1295) 2023-07-05 21:38:05 +01:00
Matiss Janis Aboltins
6e0c84ccad 🐛 fix new budget files not syncing (#1291)
Fix a small regression introduced in
https://github.com/actualbudget/actual/pull/1076

Tested locally and this seems to have solved the problem
2023-07-05 21:13:46 +01:00
Matiss Janis Aboltins
bd125d2915 🐛 custom select width and scrollbars (#1294)
Closes #1286, closes #1283

Scrollbar fix by @aleetsaiya
2023-07-05 21:13:37 +01:00
Matiss Janis Aboltins
2cc40cbff9 🐛 fix nordigen sync bug (#1289) 2023-07-05 20:14:09 +01:00
Matiss Janis Aboltins
8237eb56ab 🔖 (23.7.0) Nordigen release, stability improvements (#222)
- web: https://github.com/actualbudget/actual/pull/1280
 - server: https://github.com/actualbudget/actual-server/pull/222
 - docs: https://github.com/actualbudget/docs/pull/223

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-07-04 22:08:39 +01:00
Matiss Janis Aboltins
20825d66fe 🔖 (23.7.0) Nordigen release, stability improvements (#1280)
- web: https://github.com/actualbudget/actual/pull/1280
 - server: https://github.com/actualbudget/actual-server/pull/222
 - docs: https://github.com/actualbudget/docs/pull/223
2023-07-04 21:47:36 +01:00
Matiss Janis Aboltins
28db6fb32e 🔖 (crdt) v2.0.0 (#1279) 2023-07-04 21:47:19 +01:00
Shazib Hussain
583eb10b83 Fallback to memo in ofx if payee is not found (#1268) 2023-07-04 15:29:15 -04:00
youngcw
c1b99958f4 Goals: Add option to percent goal to use available funds (#1254) 2023-07-04 09:35:23 -04:00
Neil
050f48ac2a Reorganize Accounts Folder (#1258)
There's no new code here, just a reorg. Had to change some import calls
in some files to make it all work properly.

Having just done a lot of work in the accounts directory I figured it
could do with some organization. I've broken out all the Header
functions into a different file in order to cut down on the size of the
account.js file.

I also moved the transactions files into a new directory since they are
used by other pages. Also makes them easier to find with this structure.
2023-07-04 08:40:58 -04:00
Tom French
e4ec5b3eb1 chore: add types to crdt package (#1076)
This PR adds types to the `crdt` directory to make the structure of the
merkle tree (really a merkle radix trie) clearer.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-07-04 08:38:52 -04:00
Jed Fox
953ff45085 Fix layout of the management app with the demo bar in place (#1267)
The banner in #1229 pushes the bottom bar items (including version &
“change server URL” button) out of view on Netlify builds.
2023-07-03 22:06:22 -04:00
Matiss Janis Aboltins
2ebea847c1 ♻️ (select) removing 2x usages of the Select component (#1259) 2023-07-03 18:52:04 +01:00
Jed Fox
4e89a95e35 Fix transaction list scrolling behavior (#1260) 2023-07-03 12:04:44 -04:00
Matiss Janis Aboltins
ede51872e2 🐛 fix link-schedule option in transaction table (#1250)
Closes #1236

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-03 16:24:59 +01:00
Neil
d36569d258 cleared/uncleared background update (#1265)
Adding background update to cleared/uncleared boxes on accounts page.
This is needed due to Accounts page background change in previous PR
(#1122)
2023-07-03 16:23:19 +01:00
Jed Fox
70f00b6bb4 Fix calculation of how many table rows to render (#1262) 2023-07-03 08:05:33 -04:00
Matiss Janis Aboltins
f5617aca1c ♻️ moving more components out of common.tsx (#1257)
Moving some more components out of `common.tsx` into their own files.

There are no functional changes. This is a direct copy&paste into new
files.
2023-07-02 17:41:02 +01:00
Matiss Janis Aboltins
bdaa78b919 ♻️ moving some components from common.tsx to separate files (#1248)
This is direct copy & paste with no changes. Just moving things a bit to
reduce the size of the massive common.tsx file
2023-07-02 15:51:54 +01:00
Matiss Janis Aboltins
32ecd52f2b 🐛 fix toggling of balances in all-accounts view (#1252)
Closes #1249

Also removing some unused code
2023-07-02 15:51:18 +01:00
Matiss Janis Aboltins
f1c21be4a0 🐛 (mobile) reduce the size of account cards (#1247)
Closes #1163
2023-07-02 15:51:10 +01:00
Shazib Hussain
7a5bf2ffc4 Fix electron export issue (#1242) 2023-07-02 08:32:55 -04:00
Neil
f5ea9d0fda Saved Filters Page (#1122) 2023-07-02 07:00:23 -04:00
Matiss Janis Aboltins
168b38fc4b 🔧 cancel previous CI runs if a new push is made (#1251)
Cancel previous CI runs if a new push is made. Thus saving a bit of CI
resources.
2023-07-01 21:26:02 +01:00
Shazib Hussain
de41301a44 .gitattributes Check line endings for tsx files (#1246) 2023-07-01 19:00:05 +01:00
Jed Fox
7c0c440df2 Fix importing transfers from YNAB4/5 (#1224) 2023-07-01 06:28:27 -04:00
Jed Fox
0d636aa04c Auto-close the local/nordigen picker modal after creating an account (#1219) 2023-07-01 06:28:10 -04:00
Jed Fox
f4940dceb1 Run “Handle completed feature requests” in pull_request_target (#1243) 2023-07-01 06:21:21 -04:00
Shazib Hussain
28e0d712ab Update comments in docker-compose.yml (#221) 2023-06-30 21:16:35 -04:00
Shazib Hussain
447f7d6459 Add electron options to bug-report.yml (#1239) 2023-06-30 19:20:31 -04:00
Joel Jeremy Marquez
d325e6b060 Add onClick handlers to the schedule and transaction icons in the transaction list (#1228)
For #547 

In addition to the arrow icon, I have also updated the
recurring/calendar icon to open the edit schedule page.
2023-06-30 17:32:48 -04:00
Jed Fox
0286fa4ed0 Remove usage of Formik (#1212) 2023-06-30 17:01:43 -04:00
shall0pass
df74e6ddd1 Goals: Add recurring schedule support (#1193)
Add recurring schedule support.

To test: use the schedule keyword with a daily or weekly recurring
schedule.
2023-06-30 17:00:51 -04:00
Jed Fox
3b3770d6b9 Restore undo-url-saving behavior (#1234) 2023-06-30 16:57:57 -04:00
Jed Fox
e6d931729c Extract the reports page into a separate JS file (#1210) 2023-06-30 12:24:28 -04:00
Shazib Hussain
7165a2159d Lint tweaks (#1223) 2023-06-30 10:20:18 -04:00
Matiss Janis Aboltins
9e03a5f7bd 🔧 improved dev-server - enable asset cache (#1230)
Bringing back asset caching. This means we won't need to do a full
re-build for every change.

I had previously disabled caching because the backend changes (kcab)
were not picked up properly. But now that should be fixed too.
2023-06-30 14:37:42 +01:00
Matiss Janis Aboltins
1bc988d9d1 🔧 fix the build - ignore missing moment (#1231) 2023-06-30 07:52:16 -04:00
Matiss Janis Aboltins
dafbfb4198 add netlify development banner (#1229) 2023-06-29 22:20:51 +01:00
Matiss Janis Aboltins
e07ff45ae6 🔥 remove pikaday monkeypatch (#1203)
AFAIK with the build-script upgrades we have done - this monkeypatch is
no longer necessary. The build size still seems to be the same.
2023-06-29 19:50:10 +01:00
Matiss Janis Aboltins
f41763b0b9 🔥 remove unused scripts; simplify version script (#1227)
1. Removed some more unused scripts
2. Simplified the way we build `version` in to the source
2023-06-29 19:25:54 +01:00
Shazib Hussain
59a1c38d34 Move netlify-wait-for-build into github/actions folder (#1222)
This script is only used for the github e2e tests so doesn't need to be
inside /bin
2023-06-28 17:10:10 -04:00
Shazib Hussain
09d624c24b Tidy up electron (#1221)
Bumping package version to match actual/web, and deleting two scripts
i'm pretty sure are legacy/unused.
2023-06-28 17:09:28 -04:00
Joel Jeremy Marquez
81afe28901 Fix drag and drop on touch devices (#1204)
For #1194
2023-06-28 15:53:34 -04:00
Jed Fox
c88038e95e Clean up the public/ folder (#1187)
- Remove unused CSS files
- Set up the `.wasm` files to be automatically copied in
- `sql-wasm-debug.wasm` is removed entirely since we never use the
debug/dev build of sql.js. This reduces the app download size by 1MB on
the server side. It may be worth enabling the debug build automatically
in the future?
2023-06-28 15:41:26 -04:00
Matiss Janis Aboltins
962ebc9ef0 Update .eslintignore (#1218)
The real migration files exist in `loot-core`. These are just copies.
2023-06-28 17:27:32 +01:00
Jed Fox
1733179bfb Remove redundant UUID wrapper module, update uuid package to 9.x (#1216)
I noticed that:

- The web and electron versions of our `uuid` module both looked exactly
the same…
- …and deferred to the `uuid` package…
- …and the async version just called the sync API.

So now we will just use the `uuid` package directly everywhere.
2023-06-28 12:24:24 -04:00
Jed Fox
2108712f2d Fix size comparison workflow on fork PRs (#1214)
This PR moves the size comparison action back to a separate workflow
which now uses the `pull_request_target` event. This event is triggered
at all the same times as the `pull_request` action, except that the
workflow file content comes from the target branch of the PR, and it is
run in the context of the repo owning the target branch. Practically,
this means that it will still have access to post a comment even if the
PR comes from a fork.

We don’t want the build actions to be run in a `pull_request_target`
workflow because they would get access to the secrets and be able to
perform arbitrary actions on the repository, even from fork PRs.

See the current version failing here:
https://github.com/actualbudget/actual/actions/runs/5395184895/jobs/9797388016?pr=1122
2023-06-28 12:04:15 -04:00
Jed Fox
982d57c9ae Move the rest of the syncing protobuf code to the CRDT package (#1217) 2023-06-28 07:03:52 -04:00
Jed Fox
38b8000d2a Bundle only the variable font version of Inter (#1213) 2023-06-28 07:02:59 -04:00
Jed Fox
d5387c5d46 Improve some of the typings in loot-core (#1180)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-06-27 13:02:58 -04:00
Jed Fox
081c9d068f Display bundle size changes in comments on opened PRs (#1205) 2023-06-27 12:46:27 -04:00
Jed Fox
aa503d6a74 Consistently use ExternalLink (#1184)
This cleans up all of the usage of `<a>` in the codebase. Now all
external links get the appropriate attributes added.
2023-06-27 08:46:38 -04:00
Jed Fox
ed50e2b392 Run ESLint at the top level once (#1202)
This significantly speeds up `yarn lint` for me. It also ensures we’re
listing all source files in the project, including the `.eslintrc` files
and any other files that may be present.
2023-06-26 15:32:56 -04:00
Jed Fox
ea4a68e06c Add public/data to .eslintignore in desktop-client (#1199)
This fixes an error that you’ll see about an unused export if you build
before linting.
2023-06-26 15:19:38 -04:00
Jed Fox
45247e6d59 Remove unused deps from desktop-client (#1200)
This will reduce install/lockfile size but won’t affect the built bundle
size. Still nice, hopefully!
2023-06-26 15:15:47 -04:00
Jed Fox
6fd2ad21ec Add release note 2023-06-26 14:59:19 -04:00
Matiss Janis Aboltins
b7d5602cce ⬆️ upgrade hotkeys-js from v3.8.2 to v3.10.3, remove monkeypatch (#1195) 2023-06-26 17:19:11 +01:00
Jed Fox
53df1a03a3 Fix navigating to the per-category per-month page (#1182)
I checked through the other references to `navigate` and none of them
appeared to be affected.
2023-06-26 09:13:20 -04:00
Matiss Janis Aboltins
0f81d877ef ⬆️ upgrade react-dnd and remove monkeypatch (#1192)
Another monkeypatch bites the dust.

AFAIK there is no regression in functionality. But please test
yourselves too to double check.
2023-06-26 07:03:04 +01:00
Matiss Janis Aboltins
a3ca5a26ae ⬆️ upgrade @reach/listbox and remove monkeypatch (#1190)
It me it seems the monkey patch is no longer necessary.. At least I'm
not able to reproduce any `escape` key related issues. But LMK what you
think.

The `@reach/listbox` component is used for the custom select component
(for example: for filters).
2023-06-25 22:09:31 +01:00
Matiss Janis Aboltins
dacaef6fa4 🔥 remove beta code and some unused scripts (#1189)
Just removing some unused/unnecessary scripts and `IS_BETA` env variable
+ the associated code (we don't use this in the OS version of Actual).
2023-06-25 21:47:23 +01:00
shall0pass
78e7468715 Goals: Use shared 'months' functions for time (#1082)
Based on Tom's comment
(https://github.com/actualbudget/actual/pull/1058#issuecomment-1568030881)
I've eliminated all direct use of date-fns and only use the functions in
months.ts.

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-06-25 16:45:49 -04:00
Jed Fox
d48add55b6 Fix completed feature request handling (#1183) 2023-06-25 12:55:27 -04:00
Jed Fox
bb3ed4cea4 Fix “delete file” modal layout (#1170) 2023-06-25 12:55:08 -04:00
Tom French
fddcdec81f chore: enforce proper types in sync/index (#1077)
I've updated the return values in `sync/index` to sensible values based
on how they're being called.

I've updated the type of `msg.value` to be `string | number | null` to
match the values expected by `serializeValue`
2023-06-25 17:33:57 +01:00
Jed Fox
0e7de456f6 Fix transaction list page being blank on mobile (#1171)
Also remove the need to unmount & remount when switching between
accounts. Fixes #1169
2023-06-24 17:39:55 -04:00
Joel Jeremy Marquez
64408495ee Automatic category selection for new category transactions (#1176)
For #1152
2023-06-24 17:01:06 -04:00
Shazib Hussain
228cff3cfd New linter rule import/no-unused-modules & fixing import on typescript (#1173)
- New linter rules are now added
- Perhaps the `createPayee` method i've tagged with a disable should be
deleted.
- I have ignored unused methods in Plaid/Mobile as this stuff is still
WIP/experimental?
2023-06-24 11:58:40 -04:00
Trevor Farlow
f3f2c8485a React Router 6 fixes (#1178)
* Provide `match` prop to class components that still rely on it.
* Fixes #1169
* Fixes an unrelated crash on Payees
2023-06-24 07:40:17 -06:00
Shazib Hussain
83459b4c78 Remove remaining tutorial code (#1174)
Looks like this got missed in the last PR!
2023-06-23 19:52:20 -04:00
Trevor Farlow
9d041aaa7a react-router 6 upgrade (#1066)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-23 14:40:59 -04:00
Shazib Hussain
0c0f9e6ccf Deleting all unused files, deleting unused functions from loot-core (#1158)
Last one before I add the actual linter rules!
2023-06-23 14:38:57 -04:00
Jed Fox
d6ed860bc3 Log more details when migrations are out of sync (#1161) 2023-06-23 06:40:25 -04:00
Jed Fox
c6443f24b2 Remove upgrade notifications code (#1156)
None of this code is relevant to people who have used the open source
app. I initially wanted to leave it in so it could be used for major new
features in the future, but as it falls further and further out of date
I think it’s best to just delete it in a clean PR that can be referenced
later if desired.
2023-06-21 15:16:37 -04:00
Matiss Janis Aboltins
2b64a49359 🔥 removing needs-triage github label (#1157) 2023-06-21 20:08:42 +01:00
Shazib Hussain
287fb9b9d6 Tidy up exports in loot-core (#1147)
Following on from #1146 this PR removes all unused exports from
`loot-core/`
2023-06-20 20:57:19 +01:00
Matiss Janis Aboltins
c286f1c5f3 🐛 remove 'we have been notified' copy (#1155)
Closes #1069

I've not actually tested this change. Which is why I'm not changing it
to direct links (as they might not work).

Instead I'm just applying a very quick patch so the message would not be
misleading anymore.
2023-06-20 20:56:23 +01:00
Jed Fox
977e0c9008 Updates to the server button at the top right (#1141)
It now always shows a menu, so the user doesn’t unexpectedly perform an
action.
2023-06-20 14:57:23 -04:00
Joel Jeremy Marquez
497a3104f0 Expand / collapse all categories (#1143)
This PR is for the first item listed in #559: `Expand All / Collapse All
Categories`

For the expand / collapse all categories functionality, I was choosing
between having a single `Expand / collapse all categories` button or one
for each: `Expand all categories` and `Collapse all categories` buttons.

For the initial implementation, I have opted with the latter. Please let
me know which one is the right way to go or if there are other
suggestions and I'll just accordingly.


![image](https://github.com/actualbudget/actual/assets/20313680/64d0e498-1139-4dd0-9b7f-4d478ab947aa)
2023-06-20 14:35:01 -04:00
Matiss Janis Aboltins
adc5e324a7 (nordigen) release the feature (#1135) 2023-06-20 19:21:30 +01:00
Jed Fox
2c6cca6bf6 Improve error logging in the API (#1121) 2023-06-19 06:41:49 -04:00
Matiss Janis Aboltins
debb33a63d ♻️ (crdt) use actual-app/crdt package instead of api (#218)
Using the new CRDT package instead of API.
2023-06-19 08:07:21 +01:00
Jed Fox
5252f45073 Add a health check script (#214)
This allows running a health check from inside the container. Usage:
`npm run health-check`. That may not work inside of Alpine containers,
so you can do `node src/scripts/health-check.js` directly instead. Fixes
#213.
2023-06-18 22:36:16 -04:00
Matiss Janis Aboltins
610c42a1ae ♻️ (crdt) moved re-used utils in actual-server to separate package (#1150)
actual-server does not need to import the full actual-app/api package.
It can import only the CRDT stuff.. so I'm extracting it into a new
package to reduce the size of actual-server and make the link between
things more transparent.
2023-06-18 20:16:50 +01:00
Shazib Hussain
fcb1bba7fa Removing Tutorial code (#1146) 2023-06-17 19:49:48 -04:00
Shazib Hussain
764a20a36b Removing unused functions (#1145)
Continuing on from #1139 this PR deletes all function that are not used
anywhere.

The next PR will include all the entire files that are unused & deleted.
2023-06-16 21:37:30 -04:00
Jed Fox
b8dbec46bb Revert “Make number parsing agnostic to decimal and thousands separators” (#1144)
This reverts #1029. As raised in #1097, the formatting chosen doesn’t
work well when doing math. There may be a way to balance compatibility
with multiple format styles with handling non-currency amounts
correctly, but it will require some more careful consideration. Re-opens
#894.
2023-06-16 15:30:27 -04:00
Jed Fox
a86fd9cf06 Strip a trailing slash off of server URLs (#1140)
URLs with the trailing slash don’t work well — requests end up being
made to `https://example.com//sync/sync` and such which can 404

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-06-16 13:54:13 -04:00
Jed Fox
8f16e0167c Update CONTRIBUTING.md to point to the website (#1138) 2023-06-16 13:38:28 -04:00
Jed Fox
60a8f72be8 Updates to the account creation/linking flow (#1137) 2023-06-16 13:38:16 -04:00
Shazib Hussain
61a5b1a337 Remove 'export' keyword where not needed. (#1139)
As discussed in #1126 creating separate PRs.

The linter rule isn't actually part of this first PR and will likely be
in the final PR as otherwise it will just fail because all the issues
aren't resolved.

The code is 'ready' though so as soon as this is merged I will open next
one(s)
2023-06-15 18:11:45 -04:00
Matiss Janis Aboltins
f8dfa5a6e0 🐛 disable 'all payees' checkbox while schedules are loading (#1136)
Closes #1125

Disables (hides) the "all payees" checkbox when schedules are loading.

Reproduction:
1. open `/schedule/discover`
2. while the data is still loading - click on the checkbox in the table
header
3. after loading finishes - the page crashes with an error
2023-06-15 20:45:04 +01:00
Jed Fox
9aea091f53 Update links to point to new domain (#1129)
Depends on https://github.com/actualbudget/docs/pull/202.
2023-06-15 06:46:04 +01:00
Rich Howell
4bee4584dc Contributing link update (#1134)
Replaced contributing link

<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-06-14 20:08:25 +01:00
Rich Howell
5954141c15 Contributing readme link update (#217)
Replaced contributing link

<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-06-14 20:07:50 +01:00
Matiss Janis Aboltins
05754d3e42 🐛 (nordigen) expired bank-links (#1133)
Further Nordigen fixes for expired bank-links. With the recent changes
to the router, we had broken this functionality.

<img width="488" alt="Screenshot 2023-06-14 at 09 00 21"
src="https://github.com/actualbudget/actual/assets/886567/8e7516e0-121a-46e0-9e52-24748b161173">
<img width="437" alt="Screenshot 2023-06-14 at 09 00 30"
src="https://github.com/actualbudget/actual/assets/886567/88b36549-1073-4269-b42f-1553c164316f">
2023-06-14 18:13:57 +01:00
Matiss Janis Aboltins
4f5fd6c463 🐛 (nordigen) linking an account via account page (#1128)
Fix linking via the account page. Previously it was not fully working if
the user had not set up the credentials before.



https://github.com/actualbudget/actual/assets/886567/588dc437-b53d-4616-8612-a2ef07445dc8

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-14 07:38:46 +01:00
Jed Fox
ca27949989 Update “how it works” link (#216)
- https://github.com/actualbudget/docs/pull/202
2023-06-14 07:33:52 +01:00
Matiss Janis Aboltins
06b2a8757e 🐛 (nordigen) perform status check only if server is online (#1127)
Small bugfix for nordigen.

Do not perform the server status check if the user is actually offline.
2023-06-13 20:47:59 +01:00
Rich Howell
8ac74ed397 Update README.md (#215)
Remove the bulk in favour of links to our core docs.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-13 14:05:59 -04:00
Jed Fox
0e2b317eb8 Fix sync-related errors that show up in the console when not using a server (#984)
Previously, the frontend would attempt to make real requests to
`https://not-configured/`, which of course failed. I’ve changed the
internal structure to have the lack of a server expressed as a `null`
server. A new `did-bootstrap` browser-level setting has been added to
track if the user clicked “Don’t use a server.”

Finally, I updated the auth logic for methods that call out to the
server to make them consistent and use the early return style which
reduces indentation.
2023-06-11 13:57:32 -04:00
Jed Fox
15bc3c45a0 Partition GitHub Actions cache based on Node version (#1118)
This should fix the test failures on `master` — currently tests are
failing because the cache was created with an old version of Node.
2023-06-11 13:37:20 -04:00
youngcw
ded6ee8a65 Goals: Check template action (#1108)
This adds an option to the month drop down to check all the template
lines. If there are errors the offending line is shown with its
category.

I also modified the wording on the regular template return to be more
accurate. Fixes #1100
2023-06-11 10:14:46 -04:00
Jed Fox
c1af40ff5c Update recommended version to Node.js 18 (#1117)
After #1115, new Node.js versions will be able to be used for
development of the frontend. This PR changes the recommended Node.js
version to 18 (the current LTS version). I have also tested with 16 and
20 and it works.

I also took the opportunity to:

- move the build script that was at the project root to the `bin/`
folder
- update the `browserslist` to target Electron 24 (which is the version
we currently build against). This results in a slightly smaller bundle
due to no longer having to transpile optional chaining.
2023-06-10 13:12:42 -04:00
Jed Fox
f06edd723d Update loot-core to webpack 5 (#1115)
~based on #1114~

This brings its build process up to date with the rest of the project.
We can now use Node 20 to build successfully.

Closes #918
2023-06-10 12:59:51 -04:00
Jed Fox
02f1fe48c6 Stop mixing platform-specific code (#1114)
Bundle sizes are unchanged but now we no longer pull in the
Electron-specific FS code on the web version
2023-06-09 16:06:18 -04:00
Davis Silverman
87d269ba5c Remove 'new' OFX parser as it is too buggy (#1111)
Draft because it is untested, maybe tonight I will test it! Just wanted
to get some code out cause i had a spare 5 minutes.

The new parser isn't immediately good enough to replace the old parser,
and I sadly lost the time to contribute more! Sorry! If someone else
wants to take maintenance burden of this code, we can not merge this.
Otherwise, it should go the way of the Dodo it seems.

Thanks!

Closes #1044
2023-06-08 14:52:34 -04:00
Jed Fox
6e6d765699 Fix migration ID for “remove account type” migration (#1109)
Good catch @Jackenmen in
https://github.com/actualbudget/actual/pull/948#issuecomment-1580501909
— I’ve also added a CI check to ensure bad migrations aren’t introduced
in the future.

I think if you have a budget that has managed to have this migration
applied successfully, you’ll need to manually patch
`getAppliedMigrations` in
`packages/loot-core/src/server/migrate/migrations.ts` and inject a query
to remove the old migration ID and insert the new one.
2023-06-08 14:52:13 -04:00
Jed Fox
a25327d370 Remove account types (#948)
Closes #944, closes #532. ~WIP because something is causing the test
budget to fail to create because it’s using INSERT instead of UPDATE sql
queries. (Or not? I have no idea)~
2023-06-06 16:41:46 -04:00
youngcw
ed285e9ac5 Goals: Remainder option (#1101)
Added the option to add a remainder goal template. This will use the
remaining available funds and dump them into the respective category.
There is optional weighting. The remainder templates will be forced to
the lowest priority as to run after all other templates.

Usage: `#template remainder <weight>` Add the template line to any
categories you want to catch any remaining funds such as savings. The
amount added to the category will equal
`remaining_budget/total_of_weights*weight`. The default weight is 1.
2023-06-06 16:41:09 -04:00
SudoCerb
c42d17897c BUGFIX Unused Payees: Corrected an issue where the filter control was not being referenced (#1107) 2023-06-05 08:34:48 +01:00
Shazib Hussain
be81091698 More Electron fixes (#1099)
- Fix socket connection issues when reloading
- Fix external url clicking & middle clicking internal links
- Remove broken menu option. Easier for now than refactoring the
settings panel it now lives in. We can add it back later if needed?
2023-06-04 21:21:15 +01:00
Matiss Janis Aboltins
3cba838412 🔧 (cross-env) add missing dep and upgrade all to same version (#1106)
1. Upgrade all `cross-env` versions to be the same
2. Added `cross-env` to `desktop-electron` - it was used there, but was
missing as a dep
2023-06-04 21:11:09 +01:00
Jed Fox
38357f7efa Fix error in console when hideFraction pref is missing (#1105) 2023-06-04 14:35:08 -04:00
Jed Fox
2c7b814d37 Disable “Reset sync” button when sync is disabled (#1104)
Extracted from #984
2023-06-04 14:22:32 -04:00
Jed Fox
e1f7262f2a Add clear error to API when no budget is open (#1073)
Previously, this would fail with a confusing “cannot read property of
`undefined`” error.
2023-06-04 13:57:29 -04:00
shall0pass
400078dce5 Goals: Cleanup script error (#1095)
There was one more location where the cleanup script could generate an
error. This should fully resolve the error, along with
https://github.com/actualbudget/actual/pull/1084.
2023-06-03 12:02:39 -04:00
Jed Fox
6de6ad661d Sync more often when using the API (#1075) 2023-06-02 15:34:42 -04:00
Matiss Janis Aboltins
7c8e9bb5ec 🔖 (23.6.0) category hiding and filters for reports (#207)
Web: https://github.com/actualbudget/actual/pull/1087
Server: https://github.com/actualbudget/actual-server/pull/207
Docs: https://github.com/actualbudget/docs/pull/179

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-01 21:13:18 +01:00
Jed Fox
d1ff06840e Migrate to combined release notes action from main repo (#208) 2023-06-01 16:07:42 -04:00
Matiss Janis Aboltins
a0dfb8afbd 🔖 (23.6.0) category hiding and filters for reports (#1087)
Web: https://github.com/actualbudget/actual/pull/1087
Server: https://github.com/actualbudget/actual-server/pull/207
Docs: https://github.com/actualbudget/docs/pull/179

---------

Co-authored-by: Jed Fox <git@jedfox.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-01 20:58:42 +01:00
shall0pass
1d301ac78d Bug: Cleanup script (#1084) 2023-06-01 10:25:00 -04:00
youngcw
8875f6d487 fix parser bug where by goals couldn't repeat on months/years >9 (#1083) 2023-06-01 08:26:28 -04:00
Tom French
66bfef28c0 chore: migrate some JS to TS (#1078) 2023-06-01 08:25:19 -04:00
Tom French
f03b8a3a14 chore: remove loot-design reference from readme.md (#1079) 2023-06-01 08:24:26 -04:00
Matiss Janis Aboltins
62ebd0627d 🐛 (budget) link from budget to transactions not working (#1067) 2023-06-01 07:11:28 +01:00
shall0pass
bb1a4747f5 Goals: Schedule include spent value in calculation (#1049)
This adds back the functionality, which was inadvertantly removed, that
includes the already spent column in the calculation when the template
is run.

Some transactions may be posted to the account prior to running the
templates and would result incorrect budgeted amounts.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-05-30 15:24:21 -04:00
shall0pass
d640859940 End of month cleanup script (#1016)
~This is really just a proof of concept. I have no delusions that this
might get included. I'm sure others might have a much cleaner
implementation.~
I'm now delusional.

Resolves https://github.com/actualbudget/actual/issues/508

Taking @youngcw 's advice, I changed the keyword to #cleanup for the end
of month script to keep it separated.

This screen video shows two categories that are sources of funds. At the
end of the month, any excess in these funds can be redistributed to your
highest priorities. Three categories are set as sinks, or recipients, of
excess funds.

#cleanup source   -> Move 'extra' funds to To Budget
#cleanup sink -> Fund category with To Budget funds, default weight = 1
#cleanup sink 2       -> Fund category with To Budget funds, weight = 2

Steps of the script:
1. Return funds from any category marked 'source'
2. Fund overspent categories fully if negative carryover is not allowed.
3. Fund each 'sink' category by the desired weight.

I run through the script twice. Once to show that if there is a debt
category that has a rolling negative balance, it will skip funding that
category first and once to show how if a rolling negative balance isn't
allowed, it will fund it before applying the weighted remainder. The
example shown uses weights of 60, 20, and 20; therefore, the Debt
category will receive 60% of the To Budget funds while General and Bills
receive 20% each. The weights could have been changed to 6, 2, and 2 or
3 for the Debt category with no additional value for General and Bills
to achieve the same result.


![cleanup_button](https://github.com/actualbudget/actual/assets/20625555/56ae2b29-9be6-4e85-b532-1b05cff7c4c7)
2023-05-30 15:24:03 -04:00
Jed Fox
e660e1e727 More import-related ESLint rules (#1070)
- Enforce that imports from the same package are merged into a single
import
- In `loot-core`, require that imports of other `loot-core` files use a
relative import (like the vast majority of such imports) rather than
specifiers starting with `loot-core/` (probably a result of moving files
out of other packages into `loot-core`)
2023-05-29 13:31:01 -04:00
Jed Fox
ad89aea45c Integrate useMemo into useLiveQuery (#1064) 2023-05-28 07:38:37 -04:00
Jack
c73416bdb8 [Feature] Hide category (#1060) 2023-05-27 15:15:09 +01:00
Jed Fox
6253aaa015 Use the useLiveQuery hook in a couple more places (#1061) 2023-05-25 16:50:55 -04:00
youngcw
0d2d861896 Goals: fix broken parser (#1059) 2023-05-25 07:06:35 -04:00
shall0pass
0baf4a094a Goals: Add timezone offset to date calculations (#1058) 2023-05-24 16:17:59 -04:00
Matiss Janis Aboltins
353474dacd 🔖 (6.0.1) api (#1057)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-05-24 18:44:14 +01:00
youngcw
5f38b579fe Template: Apply schedule template only on needed month (#1052)
Add option to schedule templates to budget the full amount only in the
needed month. Default behavior stays the same of spreading the expense
out over the available range.

To use the option, use a template like `#template schedule full
SCHEDULE_NAME`


Also some minor cleanup.
2023-05-24 10:57:25 -04:00
Eike Siewertsen
1e2bc29a60 change copy-migrations shebang to bash (#1056) 2023-05-24 10:26:03 -04:00
Jed Fox
fafd162db0 Export api/methods.js at the top level again (#1054)
This allows using the API as documented. In #877, I think this was
unintentionally converted to be a named export.
2023-05-22 18:20:09 -04:00
Jack
ec5e98b934 Fixed a bug where it was possible to make a transfer to the same account as the one making the transfer. (#1038)
The payee autocomplete was always using cached accounts. Added a check
to see if accounts was already passed in as a parameter - only using
cached if it wasnt.
2023-05-21 18:42:05 +01:00
Trevor Farlow
18e3a16299 Update to React Router v5.1 conventions (#1045) 2023-05-20 16:01:10 -06:00
Jed Fox
efe4194f9c A few fixes for Electron (#1048) 2023-05-20 09:46:10 -04:00
chylex
4249a0beb1 Make number parsing agnostic to decimal and thousands separators (#894) (#1029) 2023-05-20 08:27:17 -04:00
Shazib Hussain
461132b95e Fix electron app (#1003)
Updates to the latest version of electron and moves the backend-frontend
communication from node-ipc to websockets. This resolves the previous
roadblock regarding `nodeIntegration` .

Done

- Remove node-ipc in favour of websockets. 
- Move file copying out of `preload.js` to avoid importing module `fs`
there
- Bump all electron pacakge versions to the latest
- Added new package for finding open ports as node-ipc is gone
- Tweaked webpack config for above changes


Partially fixes #468

Questions/ Pending:
- Literally every single test fails for me, presumably some issue with
my setup/environment.
- The websocket communication is not using TLS. I'm not sure how to
enable this, or if we even need to as its all local.
- Still need to create the CI for building/deploying but I'm not sure
where start in this regard as i have no exp with it. Presumably we will
need to point the electron auto-updater to the github releases url's. If
people are happy with this PR I will look at adding the CI before its
merged.
- In dev mode only, I have disabled TLS security becuase my docker
container's cert is not signed. I _assume_ this will be true for other
people who spin up the server on thier own hardware. Perhaps I just need
to change my cert to one from letsencrypt or something...

Notes.
I have not touched javascript in eons so my apologies if the commit
trail is a bit fragmented. I tried to keep them fairly contained and
then there is a slightly gnarly final commit fixing all the linter
issues... Please let me know if you want me to squash some commits etc.

I initially tried to move this to web workers the same way the web app
does it but this was unsuccessful. I have found no way to spin up a
worker in one place (frontend/backend) and then pass this worker to the
other. The electron ipc channels don't allow you to directly pass
objects such as workers, everything is cloned/serialised. Passing a port
number so the other end can spin up its own socket works fine.

---------

Co-authored-by: Shazib Hussain <contact@shazib.com>
Co-authored-by: Jed Fox <git@jedfox.com>
2023-05-18 19:56:48 -04:00
Jed Fox
19af0b36a2 Upgrade react-spring, remove wobble (#1043)
Now we just have one spring animation library
2023-05-17 20:04:07 -04:00
Jed Fox
6fc4fc294a Update Yarn (#1042) 2023-05-17 18:54:06 -04:00
Alberto Gasparin
a6b6295426 Convert client to TS part 2 (#1037)
Another batch of components in `desktop-client` converted to TS
2023-05-18 07:42:53 +10:00
Trevor Farlow
029dfd4688 Responsive context (#964)
Introduces a **ResponsiveProvider** as the sole location that tracks
window size and makes that info available to the entire app. This can be
used for media queries and size-based component switching.
---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-05-16 21:02:07 -06:00
Jed Fox
2587350d1e Remove messaging around where to find schedules in the future (#1033) 2023-05-16 18:37:51 -04:00
Jed Fox
d400ebfda0 Fix the API (again) (#1002) 2023-05-16 14:56:24 -04:00
Jed Fox
34c8a73ee5 Remove @reactions/component dependency (#1036)
We can use hooks now!
2023-05-16 14:41:36 -04:00
Jack
4ecb58cd5c Updated account ordering in the account autocomplete popup (#1034) 2023-05-15 18:55:17 -04:00
Jed Fox
c2c8c1719e Authenticate request for artifacts (#204)
Previously, the latest artifact list was requested unauthenticated using
`ADD "https://api.github.com/..." /tmp/artifacts.json`. While this works
locally, on GitHub’s servers it seems that the per-IP rate limit was
exceeded. There isn’t a way to get Docker to pass the `Authorization`
header that I know of, so this work has been moved to an external shell
script that pulls down the relevant data.
2023-05-15 17:47:10 -04:00
SudoCerb
1305335f0a Add “Show unused payees” button (#1011)
# Add ability to filter the Manage Payees screen to show orphaned payees
only.

I aimed to modify as little code as possible - we now have a button on
the Manage Payees screen that will filter the table to show orphaned
payees only.
2023-05-15 16:18:14 -04:00
Jonas De Kegel
15b51921b2 Add .devcontainer (#1032)
Adds support for [devcontainers](https://containers.dev/), this should
make onboarding easier and should allow (especially simpler)
contributions entirely online via Github Codespaces 🚀
2023-05-15 11:04:28 -04:00
youngcw
54f9b712e4 Fix infinite loop in repeat goal (#1019)
I believe I found the infinite loop problem in the repeat goal.  

This doesn't mess things up if you are budgeting the same month that the
goal starts, that's probably why we didn't see it before.

Side note: The logic always starts at the start date in the template,
then increments until falling in the right month window. If this
template gets used for, say, a few years, it will start to bog down the
processing. If someone has a good quick fix I can add that.
2023-05-13 08:36:00 -04:00
shall0pass
5afd76fb45 Goals: Compounding changes for By and Schedules (#1028) 2023-05-13 08:23:59 -04:00
jonezy35
54c8d5b7b8 Added Dev Container (#1023) 2023-05-11 09:55:53 -04:00
Jed Fox
e4e9267c08 Pull shiftKey state directly from the initiating event (#1022)
Fixes #1021
2023-05-10 18:45:34 -04:00
TheTrueCaligari
655b677961 bugfix: wrong regex in the space-dot format (#1017)
The regex for the "space-dot" format was incorrect.

When entering the amount on a schedule, the number was incorrectly read
(12.34 became 1234.00)
Strangely, it was not an issue with transactions...
2023-05-10 10:54:33 -04:00
TheTrueCaligari
8faa7bd68d Fix for issue #319 (#1008) 2023-05-09 10:11:04 -04:00
Alberto Gasparin
f618055aab Migrate top common components to TS (#979) 2023-05-09 20:31:22 +10:00
Jed Fox
54fa4bccf6 Enable 'curly' rule (#1015)
Multi-line `if`/`for` statements in JS can be confusing since there
aren’t braces to indicate which code is enclosed in the statement. I set
the configuration to `multi-line` to enforce usage of braces for
multi-line statement bodies, but still allow things like `if (foo)
return;`. I additionally added the `consistent` option to require braces
for all elements of an if/else chain if one element has it. As you can
see, this set of options pretty closely matches the existing code style.

I was going to comment in #1008 about this stylistic change but realized
that it’s (IMO) a little impolite to ask for code style changes unless
they can be automatically enforced.

Note that `if (foo) { \n return; \n }` is still valid and won’t be
collapsed. I tried to automatically collapse all such cases but it was a
lot of files and I didn’t want to pick out the useful from the useless
differences.
2023-05-08 22:54:17 -04:00
Matiss Janis Aboltins
24d4070667 🐛 (TransactionTable) fix split-transaction focus field (#999)
Closes #996
2023-05-08 12:06:30 -06:00
youngcw
7b1c3665d5 Add feature request link to README (#1012) 2023-05-07 18:45:29 -04:00
youngcw
7d80c3eda6 Goal Templates: add option to prevent removing funds when using "up to" in goal (#1004) 2023-05-07 09:35:04 -04:00
Davis Silverman
f7aa313aea Detect more errors in JS OFX importer. (#1005) 2023-05-07 06:38:41 -04:00
Jed Fox
c9576d98e4 Remove “needs votes” label from feature requests that have been implemented (#1001) 2023-05-06 18:06:05 -04:00
Jed Fox
5d36ecbbbb Update README (#201) 2023-05-05 19:34:02 -04:00
Matiss Janis Aboltins
bcc2abf472 🐛 (reports) 1y date range should be 12 months not 13 months (#1000)
Closes #375
2023-05-05 21:51:30 +01:00
Matiss Janis Aboltins
933ca3ecca (reports) ability to fine-tune reports with filters (#994) 2023-05-05 19:54:23 +01:00
TheTrueCaligari
acaff825c1 Add a new number format (space-dot) (#995) 2023-05-05 10:26:35 -04:00
Matiss Janis Aboltins
9169bfabad 🔖 (23.5.0) various improvements (#200) 2023-05-04 18:51:03 +01:00
Matiss Janis Aboltins
f913d99c9f 🔖 (23.5.0) various improvements (#993) 2023-05-04 18:23:08 +01:00
Matiss Janis Aboltins
539cb0e5cf 🐛 (transactions) create transaction when clicking enter (#992)
Closes #943

Creates the transaction when clicking "enter". Irrelevant of which field
is currently active.
2023-05-04 18:05:44 +01:00
Jed Fox
d2185909c3 Add support for credit card OFX files (#987) 2023-05-02 17:48:01 -04:00
Jed Fox
646d0d90a4 Remove unused payee rules feature (#985)
Fixes #615. I would appreciate double-checking that I didn’t
accidentally delete anything that is important.

Since I’m removing the related API methods, this is technically a
breaking change (even if people would have no reason to remove this
stuff), so we should probably do a major release of the API package.
2023-05-02 14:08:05 -04:00
Matiss Janis Aboltins
fb6dc5e8f1 🐛 (nordigen) return JSON response for the secrets API (#197)
A small fix: returning JSON response instead of plain-text.

The frontend always expects a JSON response. So a tiny fix here..
2023-05-02 19:06:14 +01:00
shall0pass
66f7336be8 Priorities for goals (#961)
This attempts to add priorities for goal templates and addresses most of
https://github.com/actualbudget/actual/issues/959.

I couldn't find a good way to preserve both "Apply" and "Overwrite"
operations, so this PR does away with the current "Apply" action
behavior. Every box with a budgeted value will be overwritten if a
template goal is present.

The added syntax to define priorities is as follows:
#template    -- priority 0, highest priority
#template-1  --priority 1, 2nd highest priority
#template-2 --priority 2, 3rd highest priority
#template-N --priority N, as many as you'd like.

~~Leaving as a draft as this may not be the preferred implementation but
I wanted others to be able to try it with netlify.~~

---------

Co-authored-by: Caleb Young <cwy@rincon.com>
2023-05-02 13:53:09 -04:00
Matiss Janis Aboltins
4cebdb537c (nordigen): ability to set secrets via the UI (#968) 2023-05-01 21:04:19 +01:00
Matiss Janis Aboltins
3d4b0c0e25 👷 run feature-request management action once (#982)
Run the feature-request github action only once for the "feature" label.

Demo: https://github.com/MatissJanis/actual/issues/8


Also fixed the link to issue list.
2023-05-01 20:37:54 +01:00
Matiss Janis Aboltins
99cf51c159 👷 run feature-request action on labeled action (#980)
Run the feature request management action when adding "feature" label.

This will allow us to..
1. remove "feature" label
2. add back "feature" label

Thus execute the workflow on the existing issues.
2023-05-01 20:26:04 +01:00
Matiss Janis Aboltins
e6b5782c64 👷 auto-close feature requests (#954) 2023-05-01 19:53:35 +01:00
Matiss Janis Aboltins
977296361c 🐛 (nordigen) bank-list error handling (#969)
Improving error handling for Nordigen.

Before: if loading banks failed - a loading indicator would be shown
forever.

After: is loading banks fails - an error message is shown.
2023-05-01 18:32:48 +01:00
Matiss Janis Aboltins
2d26cf3ad1 📝 add back rich, add alberto (#978)
Updating active contributor list
2023-05-01 10:47:46 +01:00
Matiss Janis Aboltins
759a018346 🔧 make start:browser the default cmd instead of start:desktop (#977) 2023-05-01 10:47:36 +01:00
Matiss Janis Aboltins
4aab3dec0c 🔥 remove unused prop-types dependency (#976)
Removing unused `prop-types` dependency.
2023-05-01 10:47:27 +01:00
Trevor Farlow
bd14b51e1c @typescript-eslint/no-unused-vars (#974)
Switch to TS version of `no-unused-vars` rule.
2023-04-30 17:20:55 -06:00
Alberto Gasparin
2d7e0c3f7a Migrate core to TS p4 (#957)
This is the last PR with lots of renaming for `loot-core`!
2023-04-30 09:25:45 +10:00
Matiss Janis Aboltins
c4d3a1ce76 🐛 position notification banners always at bottom (#972)
Closes #956
2023-04-29 18:58:39 +01:00
Matiss Janis Aboltins
db65e83722 🐛 (Text) single-line text (#967) 2023-04-29 17:26:34 +01:00
Matiss Janis Aboltins
71908b6fb9 🐛 (transaction-table) show checkbox on hover (#966)
Closes #965
2023-04-28 23:32:26 +01:00
Matiss Janis Aboltins
851fa8c7f5 refactor(typescript): move some common components to TS (#962) 2023-04-28 23:13:37 +01:00
Matiss Janis Aboltins
30684a47d7 🐛 (mobile) correct topbar color on settings page (#960)
Closes #935

Before: we render all the pages (even the inactive ones in some cases)

After: we render only the visible pages. Thus the topbar color is set
only 1x.. thus the settings page topbar has the correct color.
2023-04-26 22:23:48 +01:00
Henrik Maaland
d60bb6a19e App secret service (#194)
Co-authored-by: Henrik Maaland <henrikm@netpower.no>
2023-04-26 08:41:07 -04:00
Jed Fox
996f238648 Remove the unused migrations folder (#195) 2023-04-25 16:18:41 -04:00
Matiss Janis Aboltins
4b712699a8 🐛 (schedules) make transfers appear in both accounts (#955)
Closes #551

Make scheduled transfers appear in both accounts.
2023-04-25 20:24:32 +01:00
Matiss Janis Aboltins
abc4552a78 🐛 (nordigen) fallback button to re-init bank-sync for popover blockers (#950) 2023-04-24 09:27:57 +01:00
Matiss Janis Aboltins
a69d858328 ♻️ re-arrange schedule operation options to be more logical (#953) 2023-04-24 09:27:17 +01:00
biohzrddd
9695043206 Add setting to change first day of the week: Issue #844 (#910)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->

Resolves issue #844 .

---------

Co-authored-by: biohzrddd <>
2023-04-23 15:43:34 -04:00
Aaron Eiche
e036397614 Fixes issue #846 by eliminating empty lines during import. (#951) 2023-04-23 20:38:32 +01:00
Henrik Maaland
43cd6b6347 Show pending transactions from Nordigen in transactions table (#919) 2023-04-23 18:15:39 +01:00
Matiss Janis Aboltins
9ee93f74fe 🐛 (autocomplete) touch event support (#949)
Closes #927
2023-04-23 17:41:57 +01:00
Matiss Janis Aboltins
89c065e401 🐛 (autocomplete) fix multi-select (#947) 2023-04-23 17:31:07 +01:00
Jed Fox
6325a36847 Don’t reset checked transactions when creating a schedule (#946) 2023-04-23 12:18:02 -04:00
Matiss Janis Aboltins
76c69a6e70 ⬆️ (autocomplete) upgrade Downshift dependency (#945)
Upgrading `Downshift` dependency
2023-04-23 16:57:15 +01:00
Jed Fox
c7f6ca4302 Fix j/k shortcuts to move between transactions on account pages (#939) 2023-04-23 08:15:36 -04:00
Matiss Janis Aboltins
36b2d7d090 🎨 (autocomplete) set min-width for the tooltip (#933) 2023-04-23 07:16:42 +01:00
Matiss Janis Aboltins
7c80a200d7 ♻️ (autocomplete) cleaning up state updates (#931) 2023-04-23 07:16:29 +01:00
Alberto Gasparin
e8a62f89a1 Migrate core to TS p3 (#896)
Another batch of `loot-core` migrated.
2023-04-22 20:43:47 -04:00
Davis Silverman
b0c5a9389c Use Peggy instead of deprecated Peg.js (#934)
Hi there, `Peg.js` is unmaintained, so I figure you all would appreciate
if I replaced it with the drop-in replacement of Peggy. This is work I
am breaking out of #918.

Peggy adds new features like source map support that we could use,
although I do not include that in this change-set. It may be useful for
debugging changes to the .pegjs file we have.e
2023-04-22 20:16:07 -04:00
Davis Silverman
a1d321d65e Add experimental new OFX importer (#921)
Hi there, 

I try to tackle #798 here. It was suggested to throw this behind a
feature flag, so here it is!

this does its best to import the problem file in #767. 

I am working on this because it would make my work on #918 easier :)

Feel free to set the feature flag to true and try the new importer. The
date parser is not as sophisticated as the one in `node-libofx`, but I
tried 3 different OFX files, one from my bank, one from the mocks, and
one from #767. They all seem to work well enough on that front, but this
is definitely the weak point of the new implementation.

Let me know what you think!
2023-04-22 12:36:12 -04:00
Jakub Kuczys
7c744f0e3d Add a field with all transactions to /nordigen/transactions endpoint (#190)
Helps with actualbudget/actual#919 by adding the `all` field wit both
pending and booked transactions to the output of
`getTransactionsWithBalance()` and, by extension, the
`/nordigen/transactions` endpoint.

I could alter the `getTransactions()` to return the `all` field as well
but I figured that keeping it such that it returns the output from
Nordigen API 1:1 might be better so I left it as is. If you don't agree,
let me know and I'll update this.
2023-04-22 16:44:43 +01:00
shall0pass
3ceb2d92ad [Feature] Initial concept for adding percentage based goals (#858)
This is an initial concept for adding percent based goal targets.

This version works by using a string in the form of: 
#template 10% of Income <- Income is an income category name. Only
income category names will work here currently.
or
#template 10% of all income<- 'all income' is a keyword in this context
and will base the calculation on the total income for the month.

Some of the nicer touches like Jed's polite notification that the syntax
isn't correct is not implemented here yet.
2023-04-22 11:44:07 -04:00
shall0pass
0bcf6ea6f9 Change method of calculating 'by' matches to use averaging (#879)
I've changed the method of calculating the budgeted amount. There may be
a more efficient way of writing the loop, so I'm looking forward to the
review.

This change implements the mathematics of
(Target1+Target2+TargetN-Last_months_category_balance) / (MonthsRemaing1
+ MonthsRemaining2 + MonthsRemaingN) * N. This is an averaged approach
for multiple templates in the same category. It will appear to
overbudget or underbudget some months compared to multiple single
targets in different categories, yet there should always be enough saved
in the category to satisfy the target due.

Setting a target, it's assumed that money will be spent in the
appropriate month, When a target reaches maturity, the money in the
category associated with that target should be spent or moved so the
remaining targets continue to be funded. I don't see an easy way of
fixing that, but I hope this change will be of some help.

Current method:
Notice how the Bills (flexible) category reduces each month, resulting
in larger budgeted amounts later in the goal cycle.


![Templates-now](https://user-images.githubusercontent.com/20625555/230964939-d20ca72b-1055-471a-9044-7cd640f19875.gif)

Proposed method:
**Note: The fact that the initial fill in this example equals the
expected fill is a coincidence based on the template values I chose. The
initial fills can be different from expected fill.


![Templates-proposed](https://user-images.githubusercontent.com/20625555/230965265-669f996c-3112-437b-ab83-9715ea5dfc7f.gif)
2023-04-22 11:43:34 -04:00
Matiss Janis Aboltins
f8b73355ab (e2e) improving stability - reducing flakiness (#932)
Small changes to the e2e tests to improve the stability.
2023-04-22 16:41:40 +01:00
Matiss Janis Aboltins
2f54a948be 🔖 (23.4.2) revert back to old autocomplete & keyboard shortcut fix (#192)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-22 15:43:51 +01:00
Jed Fox
652d75a939 Add a handler for AxiosError errors (#189) 2023-04-17 15:54:36 -04:00
Jed Fox
104c9803f7 Add a password set/reset script (#186)
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-04-16 15:08:06 -04:00
Matiss Janis Aboltins
bc93604576 🔖 (23.4.1) fix rule creation from transaction list (#188) 2023-04-16 18:11:43 +01:00
Jed Fox
a1af1ff3d2 Add express-rate-limit (#187)
CodeQL keeps yelling at us about this… I’m not sure if the filter is
smart enough to use this rate limit middleware to remove the warnings,
but at least we will be setting a reasonable bound on attempts to crack
the server password.
2023-04-12 16:38:43 -04:00
Alberto Gasparin
47d77a3198 Use babel preset-typescript (#185)
Seems like we already added `tsc` to build the project, but we use the
wrong babel preset (Flow) instead of the specific TS one. This is only
used in testing to make Jest work (from what I can tell).
2023-04-08 23:21:14 -04:00
intiplink
82b4643c78 github action workflow: revert old way to build images (#184) 2023-04-08 12:13:25 -04:00
Jed Fox
0096907368 Add workflow_dispatch to edge image action so it can be manually run 2023-04-08 07:47:42 -04:00
Jed Fox
1504127979 Blank commit to trigger image build 2023-04-08 07:46:29 -04:00
Jed Fox
6f7306cd37 Don’t check for release notes on release/* branches (#181) 2023-04-07 16:26:29 -04:00
intiplink
063d468836 Add support for armv6l (alpine based images) (#182)
GitHub CI log:
```
[linux/arm/v6 base 6/8] RUN yarn workspaces focus --all --production
204.6 ➤ YN0007: │ bcrypt@npm:5.1.0 must be built because it never has been before or the last one failed
204.6 ➤ YN0007: │ better-sqlite3@npm:8.2.0 must be built because it never has been before or the last one failed
...
[linux/arm/v7 base 6/8] RUN yarn workspaces focus --all --production
203.8 ➤ YN0007: │ bcrypt@npm:5.1.0 must be built because it never has been before or the last one failed
203.8 ➤ YN0007: │ better-sqlite3@npm:8.2.0 must be built because it never has been before or the last one failed
```

It seems that both armv6 and armv7 have the same issues with `bcrypt`
and `better-sqlite3` not being built. These packages are required to
build from source, luckily QEMU use armv7l for compiling.

Tested and working on RPi Zero W.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-04-07 14:37:10 -04:00
Matiss Janis Aboltins
7e88de182e 🔖 (23.4.0) (#180) 2023-04-06 22:16:15 +01:00
Jed Fox
bf4319d978 Add some basic debug logging (#178)
This will help people sort out configuration issues. Will open a PR to
the docs as well to guide people to troubleshoot using this!
2023-04-06 13:24:46 -04:00
Trevor Farlow
c3d89b6509 New Docker Hub org in CI and README (#175)
Update all Docker Hub references to new `actualbudget` organization from
`jlongster` personal account.
We're officially an org now!

A bit of markdown/yaml auto-formatting snuck in, too.

Closes https://github.com/actualbudget/actual/issues/364
Corresponding update for the docs site in
https://github.com/actualbudget/docs/pull/144

Simultaneous to merging, we need to update our `DOCKER_HUB_*` GitHub
secrets in this repo.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-31 14:07:15 -06:00
James Mortensen
cb731099e6 Add linux/arm/v7 to the list of platforms for the Docker image (#141)
Users in #99 report that Actual in Docker runs on armv7 platforms,
although a bit sluggish. I confirmed that the base images for Debian and
Alpine support the linux/arm/v7 target and have added them to the
platform list in the GitHub Actions workflow.

At least one user confirms it works with the bullseye default
`Dockerfile`, but before merging it would be great if someone can
confirm it works with the Dockerfile.alpine image:

```
git clone https://github.com/jamesmortensen/actual-server.git
cd actual-server
git checkout armv7-image
docker build -t actual-server -f Dockerfile.alpine .
docker run -p 5006:5006 actual-server
```

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-30 18:52:45 -05:00
Jed Fox
b6073f7e6f Update docker-compose.yml (#150) 2023-03-29 18:31:06 -05:00
Jakub Kuczys
9b2d74c3ad Stream file without loading to memory in /download-user-file (#172) 2023-03-28 21:05:31 +01:00
Jakub Kuczys
7713848067 Include *.test.js files in test run (#171)
When working on something else, I noticed that `.test.js` files were not
running due to `jest.config.json` not including them. I went ahead and
re-enabled these tests to make sure that unit tests are actually being
run.
2023-03-27 08:55:32 -05:00
Jakub Kuczys
c8a901d3ff (nordigen) Include hashed IBAN in get-accounts and transactions endpoints (#166)
Exposes IBAN in the API which is required for
https://github.com/actualbudget/actual/pull/766 to work reliably.
2023-03-24 21:59:12 +00:00
Jakub Kuczys
d02e1b3640 Report parse issues for config.json in default location (#167)
This changes the behavior of configuration loading when
ACTUAL_CONFIG_PATH env var is not specified. With this change, syntax
errors in config.json will now be reported if ACTUAL_CONFIG_PATH env var
is not specified and the app will not proceed. When the config.json file
is not present or cannot be read, the behavior remains the same.
2023-03-21 17:47:11 +00:00
Matiss Janis Aboltins
19dbf815e6 (bank-sync) expose demo bank in the get-banks endpoint (#168)
Exposing the demo bank again in the get-banks endpoint.

Frontend implementation of the `showDemo` will come next. The demo bank
will only be available for DEV and PREVIEW builds.
2023-03-19 19:55:51 +00:00
Jed Fox
df70a791fd Add support for automatically generating release notes (#165) 2023-03-16 23:53:47 -04:00
Matiss Janis Aboltins
a84036e0c6 🔖 (23.3.2) nordigen fixes (#164) 2023-03-13 19:00:44 +00:00
Matiss Janis Aboltins
973070f22b Remove year from the LICENSE (#140) 2023-03-13 10:06:25 -04:00
Matiss Janis Aboltins
5f0df5ed53 🐛 (nordigen) add currency to account name (#163)
Sometimes accounts have the same names and the same IBAN, but different
currencies (Paypal).

This should make the account names a bit more unique.. thus easier to
distinguish.


https://github.com/actualbudget/actual/issues/724#issuecomment-1464902166

Obviously the user can choose to use different names in `Actual`. They
are not forced to use this name.
2023-03-12 17:30:50 +00:00
Matiss Janis Aboltins
80be279e11 (nordigen) add status endpoint for checking status (#162)
Add a small endpoint that will be used to check the configuration status
of Nordigen. If it is not configured - we should not allow people to
proceed in the account-link flow.
2023-03-12 16:17:16 +00:00
Surya
1aaafbf435 Update README.md (#161)
Add text to show how to open the app
2023-03-11 21:53:10 +00:00
Matiss Janis Aboltins
1dd1283d56 🐛 (nordigen) close window when opening /nordigen/link path (#160)
When Nordigen accounts are linked 2x windows get opened: 1x (initial
tab) is polling for the status; the other window is for authenticating
with bank. Once the auth is done - customer is redirected back to app:
`/nordigen/link` page. At this point we can just close the tab.


https://github.com/actualbudget/actual/issues/724#issuecomment-1462853590
2023-03-11 21:13:09 +00:00
Jed Fox
184ec5f1c0 Don’t make Dockerfile a symlink (#157)
People have been having issues with this. I copied it from
`docker/stable-ubuntu.Dockerfile`. We should follow up on this to remove
the duplication at some point but this will help fix the problems people
are having now.
2023-03-11 15:52:35 -05:00
Filip Stybel
56e5c33c3e Re-generate nordigen token (#156)
This PR fixes the regeneration Nordigen token when it expires.

https://github.com/actualbudget/actual/issues/724
2023-03-10 18:43:21 +00:00
Matiss Janis Aboltins
37c5278abf 🔖 (23.3.1) fix nordigen usage in fly.io (#155)
This _slightly_ changes the interface for configuring Nordigen, but IMO
it's safe to do because

1. the nordigen support is still experimental and subject to breaking
changes
2. we released 23.3.0 only an hour ago
2023-03-09 21:37:29 +00:00
Jed Fox
d1482e38fe Remove extraneous $ 2023-03-09 15:56:20 -05:00
Matiss Janis Aboltins
1cce6137a0 🔖 (23.3.0) experimental bank-sync, maintenance, fixes (#154)
Docs: https://github.com/actualbudget/docs/pull/119
2023-03-09 19:44:45 +00:00
Jed Fox
27ea0ddd98 Fix Docker actions failing on PRs from forks (#153) 2023-03-09 07:37:17 -05:00
Matiss Janis Aboltins
bd7992a45a 🚨 adding trailing commas everywhere (#148)
Two changes in this PR:

1. fail CI jobs if there are lint warnings
2. add trailing comas everywhere (this aligns `actual-server` with
`actual`)
2023-03-07 19:45:51 +00:00
Jed Fox
95a0769eaa Fix edge image tagging (#149) 2023-03-07 14:25:18 -05:00
Matiss Janis Aboltins
af9713d5b1 (bank-sync) meaningful default balance calculation (#144)
Set a default balance calculation logic. This will allow us to integrate
with the majority of the Nordigen supported banks without needing to
manually implement each individual bank.

Frontend change: https://github.com/actualbudget/actual/pull/727

**Important**: some banks might break.. sadly I cannot test all of the
banks. But we should successfully cover ~80-90% of the supported banks
with these defaults. And if people notice that some specific bank is
broken - they can alwys report it to us and we can try and implement a
custom bank class for them.
2023-03-07 18:44:55 +00:00
Jed Fox
ab9f771829 Improve edge image build times (#147) 2023-03-07 13:35:29 -05:00
Matiss Janis Aboltins
fa0c91b22c ⬆️ upgrade yarn to v3.4.1 and add interactive-tools plugin (#146)
Upgraded yarn and added interactive-tools plugin.

This is to align yarn version with the other `actual` repositories.
2023-03-06 17:51:05 +00:00
Matiss Janis Aboltins
2e5f5b48fa (bank-sync) expose available banks via an endpoint (#145)
Related to: https://github.com/actualbudget/actual/pull/727

Exposing the available banks via an endpoint. Currently only the "fully"
supported banks are exposed, but very soon the plan is to expose all of
the bank by default (as part of
https://github.com/actualbudget/actual-server/pull/144)
2023-03-06 17:49:15 +00:00
Jed Fox
a52ae2dba1 Update the :edge images to use the very latest web UI version (#121)
- The `:edge` and `:edge-alpine` containers will now download the latest
commit of the frontend repo and build it when they are built.
- The backend dependency install process now uses the local copy of Yarn
(from #56) to install dependencies
- Extraneous files are no longer copied into the production image. This
is mostly a win for local builds (where the `.yarn` cache folder used to
get copied in) but it’s also a small win for CI-built containers which
will no longer have the README/configuration files/Yarn source code
lying around
- The dockerfiles now say `EXPOSE 5006`. This doesn’t have an effect on
anything by default as far as I can tell but it does mean that tools
know we will be listening on that port and can help users set up their
container accordingly (for example, Docker Desktop)
- Remove some extraneous dependencies from the containers (including
openssl)

---------

Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
2023-03-05 22:19:10 -05:00
Filip Stybel
19cd163b30 Backend integration with Nordigen - account sync (#74)
* Add nordigen integration

* Move normalizatoin of accounts to the backend side

* Remove .idea from git

* Move normalization of transactions to the backend side

* Fix some edgecases

* Move nordigen to separate directory

* Partial refactor of nordigen and e2e test

* WIP refactor

* Refactoring

* Refactoring

* Add more tests

* Update get accounts path

* Rm not needed import

* Fix after merge

* Fix AnimatedLoading

* Fix coverage, jest config, linter

* Code review changes

* Upgrade to ESM nordigen

* Upgrade to ESM nordigen

* Remove e2e tests and cleanup packages

* Move env vars to config

* Rollback prettierrc config

* Move nordigen app behind to src

* Revert supertest lib

* Fixing specs

* fixes linter

* Fix build errors

* Fix linter

* Update nordigen-node lib

* remove snapshot

* remove babel

* Fix spec

* fix linter

* Revert "remove babel"

This reverts commit 07ce9fc46043a425f6e83b0b5ce15789fd07e12e.

* Fix coverage

* Add supertest

* Add sortByBookingDate as default sort option for integration bank

* Add comment with explanation of client const

---------

Co-authored-by: Filip Stybel <filip.stybel@ynd.co>
2023-03-03 19:40:49 -05:00
Jed Fox
06b687e899 Auto-configure the client’s server URL (#135)
* Respond to the /client-bootstrap route

* Move the bootstrap route to /account/needs-bootstrap

* needs-bootstrap is not authenticated

* we don’t need isActual
2023-02-22 10:17:55 -05:00
Jed Fox
fa42c2202e Replace require with import (#133) 2023-02-11 21:26:04 -05:00
Matiss Janis Aboltins
0537544de2 🔖 (23.2.9) ability to ignore SharedArrayBuffer error (#132) 2023-02-09 20:34:55 +00:00
Jed Fox
be1c119799 Upgrade to ESM, update to latest dependencies (#128)
* Port to ESM

* + @types packages

* s/rmdir/rm/

* bump uuid

* Fix reading in eslintrc

* Add /build to eslintignore

* Update linting/types packages

* Stronger error checking

* - DOM globals

* update better-sqlite3

* Create .node-version

* Revert "update better-sqlite3"

This reverts commit 6b8003804fc09ade6c81324f591e5ad853517dfa.
2023-02-09 13:57:39 -05:00
Jed Fox
76f398dd16 Move source code to an src/ directory (#131)
* Move code to src/

* Add back missing app.js

* Delete async.js
2023-02-07 15:42:07 -05:00
Matiss Janis Aboltins
064d3e5dbb 🔖 (23.2.6) improved HTTPs configurability (#129) 2023-02-06 21:20:36 +00:00
Jed Fox
c6c3243234 Replace '\n' in key/cert text with literal newlines (#127) 2023-02-06 10:46:22 -05:00
Jed Fox
60b183b094 Fix / route returning the wrong MIME type (#125) 2023-02-06 07:39:47 +00:00
Jed Fox
9b5fb43ad3 Improve the server config (#120)
* Add a `webRoot` property to the config file to override the web UI used

* Allow all config options to be set via env variables

* Fix TS

* Fix test file paths

* Move “Listening on” message to after we’re actually listening

* Fix codeql warning

* Fix bug when config.https is null but HTTPS_* env vars are defined

* Allow passing raw key/cert into `https.key`/`https.cert`

* Allow passing config file as ACTUAL_CONFIG_PATH

* Forgot to handle userConfig not being specified
2023-02-05 16:32:50 -05:00
Matiss Janis Aboltins
7c58261b72 🔖 (23.2.5) security focused release (#122) 2023-02-05 17:26:45 +00:00
Matiss Janis Aboltins
712ca71656 ⬆️ upgrade express*, bcrypt and body-parser (#119) 2023-02-03 19:53:17 +00:00
Jed Fox
c8ad8a693b Add support for HTTPS (#115)
* Add support for starting an HTTPS instead of HTTP server

* Add HTTPS-related file extensions to gitignore
2023-02-03 14:39:50 -05:00
Matiss Janis Aboltins
1be74096f6 ⬆️ upgrade @actual-app/api to 4.1.6: node-fetch v2 support (#118)
* ⬆️  upgrade @actual-app/api to 4.1.6: node-fetch v2 support

* Pin api version
2023-02-02 22:00:50 +00:00
dependabot[bot]
92b4eec36a build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 (#117)
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-02 18:13:02 +00:00
Matiss Janis Aboltins
44038fbdce 🔥 remove unused code (plaid, sync-full) (#116) 2023-02-02 18:05:58 +00:00
dependabot[bot]
b4c7996d1a build(deps): bump minimatch from 3.0.4 to 3.1.2 (#111)
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 21:57:04 +00:00
dependabot[bot]
39fd8a5457 build(deps): bump moment from 2.29.3 to 2.29.4 (#112)
Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.3...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 21:01:40 +00:00
dependabot[bot]
24da9b7b5a build(deps): bump node-fetch from 2.2.0 to 2.6.7 (#110)
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.2.0 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.2.0...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 21:00:41 +00:00
Felix Heilmeyer
3edb8db94b fix: listen also listen on ipv6 addresses (#109)
listening on '::' will make node listen on ipv4 as well as ipv6 addresses
2023-01-31 20:54:09 +00:00
Urjeet Patel
909b4b1c0b fix: 🔒 Password change now invalidates old token (#102) 2023-01-31 19:32:39 +00:00
nfaucher8
38f2ab252e Allow config.json to contain a partial config (#89) 2023-01-28 18:34:02 +00:00
Matiss Janis Aboltins
f0772b147f (adding jest for unit/integration tests) (#91) 2023-01-28 17:56:37 +00:00
Tom French
9fc9d5c642 Migrate to yarn v3.2.1 (#56)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-01-27 16:56:58 -05:00
Matiss Janis Aboltins
73db82042c Merge pull request #103 from actualbudget/matiss/release
🔖 (23.1.12) responsive mobile version and sidebar improvements
2023-01-12 21:58:48 +00:00
Matiss Janis Aboltins
a14f558258 🔖 (23.1.12) responsive mobile version and sidebar improvements 2023-01-12 20:54:48 +00:00
James Long
97081d46c4 Fix reference to Timestamp; version 22.12.09 2022-12-08 17:38:26 -05:00
James Long
60f83b334e 22.12.08 2022-12-08 16:00:20 -05:00
James Long
340ac869ce Bump API to working version 2022-12-08 16:00:01 -05:00
Trevor Farlow
b2b6ba4921 Docker workflow: Drop major.minor tagging 2022-12-08 14:53:48 -05:00
James Long
3274a06e34 Bump to 22.12.03 2022-12-08 12:11:21 -05:00
James Long
e9850bfc56 Bump @actual-app/web and @actual-app/api 2022-12-08 11:30:07 -05:00
James Long
529c42cccf Version 22.10.25 of actual-server 2022-10-25 12:19:40 -04:00
Rich In SQL
2a00227486 Update Actual to 22.10.25 2022-10-25 11:28:16 -04:00
Trevor Farlow
5252edbf70 Merge pull request #82 from trevdor/patch-1
Build docker image on push to master or tag
2022-10-19 21:32:16 -06:00
Trevor Farlow
74c15b4f42 fixup! Build docker image on push to master or tag 2022-10-13 00:19:59 -06:00
Trevor Farlow
d482b9baf6 Build docker image on push to master or tag 2022-10-13 00:17:12 -06:00
James Long
cde216523e Store user files as blobs instead of unzipping them 2022-10-05 21:47:14 -04:00
James Long
8aeb815b5a Respect configuration for user-files 2022-09-15 10:19:22 -04:00
James Long
3c602268e3 Log sync method in response 2022-09-14 23:43:12 -04:00
James Long
9177fb4d77 Fix lint 2022-09-14 23:43:12 -04:00
James Long
e3f1fafad9 Switch syncing to simple sync method 2022-09-14 23:43:12 -04:00
Arthur E. Jones
32bf923c1a build: add node GC argument to fly template
Fly deployments on the free tier have ~256mb of memory available. Users
with large transaction histories were encountering out of memory errors
when attempting to export their data. This commit adds a node argument
to (more or less) run the garbage collector at a smaller memory usage,
helping keep users on flyio within their available limit.
2022-08-31 23:51:05 -04:00
Arthur E. Jones
d3a0e8067e build: add tini subreaper arg to fly template
Fly deployments with the previous template setting are running without
tini's subreaper capabilities. This change enables tini as a subreaper
in that environment.
2022-08-31 23:50:26 -04:00
Arthur E. Jones
105d5007cf fix: zip only necessary files in budget download
While investigating #54 it was noted that the previous implementation
zips the entire budget folder in the download endpoint. Once received on
the client side, only the most recent db and metadata are actually used.
This means up to 10 backups are being zipped in memory and transferred
to the client (in addition to the two necessary files) despite none of
that data being used. While this inefficiency isn't a major concern in
some environments, it may be problematic in memory constrained
environments.

This change transfers only the files that are actually utilized.

issue #54
2022-08-31 23:49:52 -04:00
Tom French
bafa486668 style: ignore unused variables which begin with an underscore 2022-08-29 23:11:51 -04:00
Tom French
80a2b34d43 style: apply prettier fixes 2022-08-29 23:11:51 -04:00
Tom French
a5e1e38e74 fix: activate prettier rules 2022-08-29 23:11:51 -04:00
Tom French
0486e9e37b ci: check that the server builds correctly on PRs/master 2022-08-29 23:11:02 -04:00
Tom French
09722d8678 ci: rename github workflow file from build to docker 2022-08-29 23:11:02 -04:00
Rich In SQL
cd22e38660 Express version update
Update: Updated express version, this resolves #69
2022-08-09 10:41:29 -04:00
James Long
f83fe76280 1.0.1 2022-06-26 17:33:32 -04:00
James Long
b9e1e6030f Remove changes to messages transform 2022-06-26 17:31:55 -04:00
brend
4874b53c7c move messages generation into sync-full.js 2022-06-26 17:31:55 -04:00
brend
b1a48f4f27 fix 'Out of sync' error 2022-06-26 17:31:55 -04:00
Jared Gharib
3fee9cbb42 fix: error handling middleware signature
Error handling middleware functions must have four arguments to
identify it as such.

Fixes #40
2022-05-28 23:16:46 -04:00
James Long
a2a460a883 Fix CORS issues 2022-05-28 23:15:14 -04:00
James Long
6bcd67a906 Bump Actual to 4.1.0 2022-05-28 23:14:36 -04:00
Arthur E. Jones
9e2d253fb6 fix: correct tsconfig for node.js
- specify module type, resolution, and interop. this package runs under
  nodejs, not a browser environment, and needs ts to be configured
  accordingly.
2022-05-20 13:58:48 -04:00
Arthur E. Jones
a7efc82944 fix: suppress missing module error
- code as written expects the file may be absent and has a fallback
  implemented, so the error can be safely ignored. There may be a better
  strategy for dealing with this, however.
2022-05-20 13:58:48 -04:00
Arthur E. Jones
25f4bb5557 fix: remove unused variable in fn call
- the WrappedDatabase.all() function only has two arguments
2022-05-20 13:58:48 -04:00
Arthur E. Jones
74d6b7edc5 build: add ts build script 2022-05-20 13:58:48 -04:00
Arthur E. Jones
1204b5b1a6 chore: add build dir to gitignore 2022-05-20 13:58:48 -04:00
Arthur E. Jones
59ddc965ec build: skip typechecking app-plaid.js
Doesn't appear to be used; there isn't any plaid depedency in the
package file.
2022-05-20 13:58:48 -04:00
Arthur E. Jones
9cc4ffaf33 build: add typecheck script 2022-05-20 13:58:48 -04:00
Arthur E. Jones
11ba63d086 chore: add better-sqlite3 type definitions 2022-05-20 13:58:48 -04:00
Arthur E. Jones
06d2aba57c chore: add node type definitions 2022-05-20 13:58:48 -04:00
Tom French
7ecaad529f ci: rename linting workflow 2022-05-20 12:19:22 -04:00
Tom French
5ef3aa4153 ci: check linting in CI 2022-05-20 12:19:22 -04:00
Tom French
5e83e14637 style: silence error for old-style require statements
This will be removed once we migrate to typescript
2022-05-20 09:24:19 -04:00
Tom French
8dbc10efd7 style: silence warning for empty function 2022-05-20 09:24:19 -04:00
Tom French
592f0540f9 style: fix linting errors 2022-05-20 09:24:19 -04:00
Tom French
0e28f77a1f build: add prettier plugin 2022-05-20 09:24:19 -04:00
Tom French
618609dbfa build: migrate to use typescript compatible linter setup 2022-05-20 09:24:19 -04:00
James Long
c86f1f5546 Add pikapods under one-click hosted (closes #20) 2022-05-19 22:52:32 -04:00
Manu
a09a028dc9 Move to deployment options 2 2022-05-19 22:51:42 -04:00
Manu
44da71bcdd Move to deployment options 2022-05-19 22:51:38 -04:00
Manu
343ea0c306 Add one-click hosting option. 2022-05-19 22:50:40 -04:00
James Long
a60f22ef5c Update README.md 2022-05-19 12:43:55 -04:00
Kovah
d614070f44 Update readme with details about the Docker images 2022-05-19 08:16:40 -04:00
Kovah
fd5d81e399 Adjust Docker hub image name 2022-05-19 08:16:40 -04:00
Kovah
841d3ac115 Fix tag handling for standard and alpine image 2022-05-19 08:16:40 -04:00
Kovah
3df101a91d Update build process with requested changes
- push to both Docker Hub and Github registry
- use git tags for versioning
- update Docker tags to reflect the git tags and commit SHA
2022-05-19 08:16:40 -04:00
Kovah
3124c29052 Add additional build step for the Alpine image 2022-05-19 08:16:40 -04:00
Kovah
a4a4eda0eb Fix typo 2022-05-19 08:16:40 -04:00
Kovah
7d418b91b4 Update checkout action to v3 2022-05-19 08:16:40 -04:00
Kovah
9ef7771adc Add Github Actions workflow to automatically build a Docker image on pushes to master 2022-05-19 08:16:40 -04:00
Chris
d0a8b678d3 Correct fly template port
Deployments to fly.io were failing with error:
> Failed due to unhealthy allocations
Fixes #16
2022-05-19 07:25:50 -04:00
Kk-ships
6d52cc7c73 Update docker-compose.yml
Co-authored-by: Nathan Isaac <nathanjisaac@users.noreply.github.com>
2022-05-19 07:19:33 -04:00
Kaustubh Shirpurkar
2acc034fc1 added a basic docker-compose file 2022-05-19 07:19:33 -04:00
James Long
51a2cb91f2 Update README.md 2022-05-05 14:25:03 -04:00
James Long
44d045f546 Bump fly.io grace_period 2022-05-03 09:36:28 -04:00
brtwrst
6be206ff28 Move alpine build to Dockerfile.alpine; add tini to debian Dockerfile 2022-05-03 08:38:27 -04:00
James Long
c4badb9daf Revert "Revert "Rebase docker image on top of alpine linux""
This reverts commit f8ad766695.
2022-05-03 08:38:14 -04:00
James Long
f8ad766695 Revert "Rebase docker image on top of alpine linux"
This reverts commit 42bc4c8acb.
2022-05-03 08:35:38 -04:00
Mark Lopez
a55d4634b1 Added health check endpoint. 2022-05-02 23:06:43 -04:00
Luis López
42bc4c8acb Rebase docker image on top of alpine linux 2022-05-02 22:49:07 -04:00
Alex Richards
efd273bfa5 Instructions for running via Docker 2022-04-30 12:14:04 -04:00
Kovah
3fb71b74cd Adjust file handling in Docker build process 2022-04-30 12:12:45 -04:00
Kovah
2bb3e3ea48 Adjust Dockerfile to use multi-stage builds 2022-04-30 12:12:45 -04:00
Wout Mertens
59ec877ddd add: tsconfig.json
This configures TS to look at JS files as well, so that IDEs like VSCode
can provide better edit-time checks
2022-04-30 12:11:17 -04:00
James Long
31e9025df3 Merge pull request #6 from UnexomWid/master-hostname-binding
Add hostname binding
2022-04-29 17:56:34 -04:00
James Long
1b42bc0e75 Merge pull request #1 from Kovah/master
Adjust Dockerfile to build successfully
2022-04-29 17:55:49 -04:00
UnexomWid
0ad3f12686 modify: default hostname 2022-04-30 00:33:59 +03:00
UnexomWid
6de775a1bf add: hostname binding support 2022-04-30 00:30:30 +03:00
James Long
1d74b9d782 Minor cleanup 2022-04-29 16:21:09 -04:00
Kovah
933a5f5e7c Adjust Dockerfile to build successfully 2022-04-29 18:37:53 +02:00
James Long
cd280802de Improve how data dirs are treated 2022-04-29 11:10:20 -04:00
James Long
b53a4e5bf8 Path fix 2022-04-29 10:51:06 -04:00
James Long
c20648c33a Improve bootstrap process 2022-04-29 10:48:58 -04:00
James Long
fa32948508 Log which file dir it uses 2022-04-29 10:42:04 -04:00
James Long
9ec349e733 license 2022-04-29 10:39:57 -04:00
James Long
4fa2bf1b29 Remove fly.toml from git 2022-04-29 10:35:25 -04:00
James Long
3d01a76296 Updates 2022-04-29 10:35:13 -04:00
James Long
f9c0539d68 Bump actual 2022-04-29 10:10:47 -04:00
James Long
dde1495854 Allow user files directory to be configured via env vars 2022-04-29 09:52:35 -04:00
James Long
065f87c2e8 links 2022-04-29 01:22:32 -04:00
James Long
c049cf440f README 2022-04-28 22:40:58 -04:00
James Long
1149730962 Fixes 2022-04-28 22:40:13 -04:00
James Long
16de8cb91b Remove source-map-support 2022-04-28 22:29:45 -04:00
James Long
caec05df14 cleanup 2022-04-28 22:21:18 -04:00
James Long
e387f4ca1c readme 2022-04-28 22:19:23 -04:00
James Long
6d7ffe6a25 Add actual deps, fly config, and more 2022-04-28 22:09:40 -04:00
James Long
ad0c0f6865 Cleanup 2022-03-31 13:24:52 -04:00
James Long
dd541e5f70 initial (open-source) 2022-03-31 13:19:08 -04:00
3707 changed files with 179086 additions and 407101 deletions

View File

@@ -0,0 +1,14 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose
{
"name": "Actual development",
"dockerComposeFile": [
"../docker-compose.yml",
"docker-compose.yml"
],
// Alternatively:
// "image": "mcr.microsoft.com/devcontainers/typescript-node:0-16",
"service": "actual-development",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"postCreateCommand": "yarn install"
}

View File

@@ -0,0 +1,6 @@
version: '3.8'
services:
actual-development:
volumes:
- ..:/workspaces:cached
command: /bin/sh -c "while sleep 1000; do :; done"

View File

@@ -1,79 +0,0 @@
const path = require('path');
const rulesDirPlugin = require('eslint-plugin-rulesdir');
rulesDirPlugin.RULES_DIR = path.join(
__dirname,
'packages',
'eslint-plugin-actual',
'lib',
'rules',
);
module.exports = {
plugins: ['prettier', 'import', 'rulesdir', '@typescript-eslint'],
extends: ['react-app', 'plugin:@typescript-eslint/recommended'],
reportUnusedDisableDirectives: true,
rules: {
'prettier/prettier': 'error',
'no-unused-vars': [
'error',
{
args: 'none',
varsIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
'no-restricted-globals': ['error'].concat(
require('confusing-browser-globals').filter(g => g !== 'self'),
),
'react/jsx-no-useless-fragment': 'error',
'rulesdir/typography': 'error',
// https://github.com/eslint/eslint/issues/16954
// https://github.com/eslint/eslint/issues/16953
'no-loop-func': 'off',
// TODO: re-enable these rules
'react-hooks/exhaustive-deps': 'off',
'import/no-useless-path-segments': 'error',
'import/order': [
'error',
{
alphabetize: {
caseInsensitive: true,
order: 'asc',
},
groups: [
'builtin', // Built-in types are first
'external',
'parent',
'sibling',
'index', // Then the index file
],
'newlines-between': 'always',
pathGroups: [
// Enforce that React (and react-related packages) is the first import
{ group: 'builtin', pattern: 'react?(-*)', position: 'before' },
// Separate imports from Actual from "real" external imports
{
group: 'external',
pattern: 'loot-{core,design}/**/*',
position: 'after',
},
],
pathGroupsExcludedImportTypes: ['react'],
},
],
// Rules disable during TS migration
'@typescript-eslint/no-var-requires': 'off',
'prefer-const': 'off',
'prefer-spread': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-unused-vars': 'off',
},
};

6
.gitattributes vendored
View File

@@ -8,8 +8,12 @@
# Declare files that will always have LF line endings on checkout.
*.js text eol=lf
*.ts text eol=lf
*.sh text eol=lf
*.tsx text eol=lf
yarn.lock text eol=lf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.jpg binary

3
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
# Funding policies: https://actualbudget.org/docs/contributing/leadership/funding
open_collective: actual
github: actualbudget

View File

@@ -1,13 +1,20 @@
name: Bug Report
description: File a bug report also known as an issue or problem.
title: '[Bug]: '
labels: ['bug', 'needs triage']
labels: ['bug']
body:
- type: markdown
id: intro-md
attributes:
value: |
Thanks for taking the time to fill out this bug report! Please ensure you provide as much information as possible to better assist in confirming and identifying a fix for the bug.
- type: markdown
id: intro-md
attributes:
value: |
**IMPORTANT:** we use GitHub Issues only for BUG REPORTS and FEATURE REQUESTS. If you are looking for help/support - please reach out to the [community on Discord](https://discord.gg/pRYNYr4W5A). All non-bug and non-feature-request issues will be closed.
**Bank-sync problems (SimpleFin / GoCardless)?** Reach out via the [community Discord](https://discord.gg/pRYNYr4W5A) first and open an issue only if the community deems the issue to be a legitimate bug in Actual.
- type: checkboxes
id: existing-issue
attributes:
@@ -28,12 +35,13 @@ body:
validations:
required: true
- type: textarea
id: errors-received
id: reproduction
attributes:
label: 'What error did you receive?'
description: 'If you received an error or a message on the screen, please provide that here.'
label: How can we reproduce the issue?
description: Please give step-by-step instructions on how to reproduce the issue. In most cases this might also require uploading a sample budget/import file.
value: 'How can we reproduce the issue?'
validations:
required: false
required: true
- type: markdown
id: env-info
attributes:
@@ -47,7 +55,9 @@ body:
- Locally via Yarn
- Docker
- Fly.io
- Pikapods
- NAS
- Desktop App (Electron)
- Other
validations:
required: false
@@ -61,6 +71,7 @@ body:
- Chrome
- Safari
- Microsoft Edge
- Desktop App (Electron)
- Other
- type: dropdown
id: operating-system

View File

@@ -1 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Bank-sync issues
url: https://discord.gg/pRYNYr4W5A
about: Is bank-sync not working? Returning too much or too few information? Reach out to the community on Discord.
- name: Support
url: https://discord.gg/pRYNYr4W5A
about: Need help with something? Having troubles setting up? Or perhaps issues using the API? Reach out to the community on Discord.
- name: Translations
url: https://hosted.weblate.org/projects/actualbudget/actual/
about: Found a string that needs a better translation? Add your suggestion or upvote an existing one in Weblate.

View File

@@ -1,7 +1,7 @@
name: Feature request
description: Request a missing feature
title: '[Feature] '
labels: ['feature', 'needs triage']
labels: ['feature']
body:
- type: markdown
id: intro-md

26
.github/actions/bump-package-versions vendored Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
set -euo pipefail
version="${1#v}"
files_to_bump=(
packages/api/package.json
packages/desktop-client/package.json
packages/desktop-electron/package.json
)
for file in "${files_to_bump[@]}"; do
if [ -z "$version" ]; then
# version format: YY.MM.patch
# logic: if before the 25th, bump patch, else set minor/major to next month
version="$(jq -r .version "$file" | perl -e '($y,$m,$p)=split/\./,<>;$d=(localtime)[3];$d>25?($p=0,++$m,$m>12&&($m=1,++$y)):$p++;print"$y.$m.$p\n"')"
if [ -z "$version" ]; then
echo "Error: Failed to calculate new version" >&2
exit 1
fi
fi
echo "Bumping $file to version $version"
jq '.version = "'"$version"'"' "$file" > "$file.tmp"
mv "$file.tmp" "$file"
done

60
.github/actions/check-migrations.js vendored Normal file
View File

@@ -0,0 +1,60 @@
#!/usr/bin/env node
// overview:
// 1. Identify the migrations in packages/loot-core/migrations/* on `master` and HEAD
// 2. Make sure that any new migrations on HEAD are dated after the latest migration on `master`.
const fs = require('fs');
const path = require('path');
const { spawnSync } = require('child_process');
const migrationsDir = path.join(
__dirname,
'..',
'..',
'packages',
'loot-core',
'migrations',
);
function readMigrations(ref) {
const { stdout } = spawnSync('git', [
'ls-tree',
'--name-only',
ref,
migrationsDir + '/',
]);
const files = stdout.toString().split('\n').filter(Boolean);
console.log(`Found ${files.length} migrations on ${ref}.`);
return files
.map(file => path.basename(file))
.filter(file => !file.startsWith('.'))
.map(name => ({
date: parseInt(name.split('_')[0]),
name: name.match(/^\d+_(.+?)(\.sql)?$/)?.[1] ?? '***' + name,
}));
}
spawnSync('git', ['fetch', 'origin', 'master']);
let masterMigrations = readMigrations('origin/master');
let headMigrations = readMigrations('HEAD');
let latestMasterMigration = masterMigrations[masterMigrations.length - 1].date;
let newMigrations = headMigrations.filter(
migration => !masterMigrations.find(m => m.name === migration.name),
);
let badMigrations = newMigrations.filter(
migration => migration.date <= latestMasterMigration,
);
if (badMigrations.length) {
console.error(
`The following migrations are dated before the latest migration on master:`,
);
badMigrations.forEach(migration => {
console.error(` ${migration.name}`);
});
process.exit(1);
} else {
console.log(`All migrations are dated after the latest migration on master.`);
}

View File

@@ -0,0 +1,184 @@
#!/usr/bin/env node
// overview:
// 1. Fetch the issues that are linked to the PR
// 2. Filter out the issues that are not feature requests
// 3. For each feature request:
// 1. Remove the 'help wanted' & 'needs votes' labels
// 3. Find the automated comment, hide the comment as 'outdated'
// 5. Post a new comment saying that the feature request has been implemented, and will be released in the next version. Link to the PR.
async function makeAPIRequest(query, variables) {
const res = await fetch('https://api.github.com/graphql', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({ query, variables }),
});
return res.json();
}
function group(name, body) {
console.log(`::group::${name}`);
const result = body();
if (result instanceof Promise) {
return result.finally(() => console.log(`::endgroup::`));
}
console.log(`::endgroup::`);
return result;
}
async function main() {
const featureRequests = await group('Pull Request API Response', async () => {
const res = await makeAPIRequest(
/* GraphQL */ `
query FetchLinkedIssues($pr: Int!) {
repository(owner: "actualbudget", name: "actual") {
pullRequest(number: $pr) {
closingIssuesReferences(first: 10) {
nodes {
id
number
labels(first: 10) {
nodes {
id
name
}
}
}
}
}
}
}
`,
{ pr: parseInt(process.env.PR_NUMBER) },
);
console.log(JSON.stringify(res, null, 2));
return res.data.repository.pullRequest.closingIssuesReferences.nodes.filter(
issue => issue.labels.nodes.some(label => label.name === 'feature'),
);
});
if (featureRequests.length === 0) {
console.log('No linked feature requests found');
return;
}
for (const { id, number, labels } of featureRequests) {
await group(`Issue #${number}: Remove labels`, async () => {
const toRemove = labels.nodes
.filter(
label =>
label.name === 'help wanted' ||
label.name === 'needs votes' ||
label.name === 'good first issue',
)
.map(label => label.id);
const res = await makeAPIRequest(
/* GraphQL */ `
mutation RemoveLabels($issue: ID!, $labels: [ID!]!) {
removeLabelsFromLabelable(
input: {
clientMutationId: "1"
labelIds: $labels
labelableId: $issue
}
) {
clientMutationId
}
}
`,
{
issue: id,
labels: toRemove,
},
);
console.log(JSON.stringify(res, null, 2));
});
await group(`Issue #${number}: Collapse automatic comment`, async () => {
const commentRes = await makeAPIRequest(
/* GraphQL */ `
query FetchComments($issue: Int!) {
repository(owner: "actualbudget", name: "actual") {
issue(number: $issue) {
comments(first: 100) {
nodes {
id
body
author {
login
}
}
}
}
}
}
`,
{ issue: number },
);
console.log(JSON.stringify(commentRes, null, 2));
const comments = commentRes.data.repository.issue.comments.nodes.filter(
comment => comment.author.login === 'github-actions',
);
const commentToCollapse =
comments.find(comment =>
comment.body.includes('<!-- feature-auto-close-comment -->'),
) ||
comments.find(comment =>
comment.body.includes(
':sparkles: Thanks for sharing your idea! :sparkles:',
),
);
if (!commentToCollapse) {
console.log('No comment to collapse found');
process.exit(1);
}
const res = await makeAPIRequest(
/* GraphQL */ `
mutation CollapseComment($comment: ID!) {
minimizeComment(
input: { classifier: OUTDATED, subjectId: $comment }
) {
clientMutationId
}
}
`,
{ comment: commentToCollapse.id },
);
console.log(JSON.stringify(res, null, 2));
});
await group(`Issue #${number}: Post comment`, async () => {
const res = await makeAPIRequest(
/* GraphQL */ `
mutation PostComment($issue: ID!, $body: String!) {
addComment(
input: { subjectId: $issue, body: $body, clientMutationId: "1" }
) {
clientMutationId
}
}
`,
{
issue: id,
body: `:tada: This feature has been implemented in #${process.env.PR_NUMBER} and will be released in the next version. Thanks for sharing your idea! :tada:\n\n<!-- feature-implemented-comment -->`,
},
);
console.log(JSON.stringify(res, null, 2));
});
}
}
main().catch(err => {
console.error(err);
process.exit(1);
});

View File

@@ -9,8 +9,8 @@ function get_status() {
curl --header "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/actualbudget/actual/commits/$COMMIT_SHA/statuses" > /tmp/status.json
cat /tmp/status.json
echo "::endgroup::"
netlify=$(jq '[.[] | select(.context == "netlify/actualbudget/deploy-preview")][0]' /tmp/status.json)
state=$(jq -r '.state' <<< "$netlify")
netlify=$(yarn jq '[.[] | select(.context == "netlify/actualbudget/deploy-preview")][0]' /tmp/status.json)
state=$(yarn jq -r '.state' <<< "$netlify")
echo "::group::Netlify Status"
echo "$netlify"
echo "::endgroup::"
@@ -32,7 +32,7 @@ done
if [ "$state" == "success" ]; then
echo -e "\033[0;32mNetlify build succeeded!\033[0m"
jq -r '"url=" + .target_url' <<< "$netlify" > $GITHUB_OUTPUT
yarn jq -r '"url=" + .target_url' <<< "$netlify" > $GITHUB_OUTPUT
exit 0
else
echo -e "\033[0;31mNetlify build failed. Cancelling end-to-end tests.\033[0m"

View File

@@ -1,19 +1,44 @@
name: Setup
inputs:
working-directory:
description: 'Working directory to run in, default .'
required: false
default: '.'
download-translations:
description: 'Whether to download translations as part of setup, default true'
required: false
default: 'true'
runs:
using: composite
steps:
- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 16.15.0
node-version: 18.16.0
- name: Install yarn
run: npm install -g yarn
shell: bash
if: ${{ env.ACT }}
- name: Cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache
with:
path: '**/node_modules'
key: yarn-v1-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
path: ${{ format('{0}/**/node_modules', inputs.working-directory) }}
key: yarn-v1-${{ runner.os }}-${{ hashFiles(format('{0}/.nvmrc', inputs.working-directory)) }}-${{ hashFiles(format('{0}/**/yarn.lock', inputs.working-directory)) }}
- name: Install
working-directory: ${{ inputs.working-directory }}
run: yarn --immutable
shell: bash
if: steps.cache.outputs.cache-hit != 'true'
- name: Download translations
uses: actions/checkout@v4
with:
repository: actualbudget/translations
path: ${{ inputs.working-directory }}/packages/desktop-client/locale
if: ${{ inputs.download-translations == 'true' }}
- name: Remove untranslated languages
run: packages/desktop-client/bin/remove-untranslated-languages
shell: bash
if: ${{ inputs.download-translations == 'true' }}

View File

@@ -12,46 +12,73 @@ on:
branches:
- master
pull_request:
branches: '*'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Build API
run: cd packages/api && yarn build
- name: Create package tgz
run: cd packages/api && yarn pack && mv package.tgz actual-api.tgz
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: actual-api
path: packages/api/actual-api.tgz
crdt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Build CRDT
run: cd packages/crdt && yarn build
- name: Create package tgz
run: cd packages/crdt && yarn pack && mv package.tgz actual-crdt.tgz
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: actual-crdt
path: packages/crdt/actual-crdt.tgz
web:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Web
run: ./bin/package-browser
- name: Upload Build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: actual-web
path: packages/desktop-client/build
- name: Upload Build Stats
uses: actions/upload-artifact@v4
with:
name: build-stats
path: packages/desktop-client/build-stats
# TODO: re-enable after solving https://github.com/actualbudget/actual/issues/468
# electron:
# # As electron builds take longer, we only run them in master.
# if: github.event_name != 'pull_request'
# strategy:
# matrix:
# os:
# - ubuntu-latest
# - windows-latest
# - macos-latest
# runs-on: ${{ matrix.os }}
# steps:
# - uses: actions/checkout@v3
# - name: Set up environment
# uses: ./.github/actions/setup
# - name: Build Electron
# run: ./bin/package
server:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Server
run: cd packages/sync-server && yarn build
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: sync-server
path: packages/sync-server/build

View File

@@ -1,16 +0,0 @@
name: Check release notes
on:
pull_request:
branches:
- '*'
- '!release/*'
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Check release notes
uses: actualbudget/actions/release-notes/check@main

48
.github/workflows/check.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Test
on:
push:
branches:
- master
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Lint
run: yarn lint
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Typecheck
run: yarn typecheck
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Test
run: yarn test
migrations:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '19'
- name: Check migrations
run: node ./.github/actions/check-migrations.js

View File

@@ -4,10 +4,13 @@ on:
push:
branches: [master]
pull_request:
branches: [master]
schedule:
- cron: '23 11 * * 6'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
analyze:
name: Analyze
@@ -19,14 +22,14 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: javascript
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
with:
category: '/language:javascript'

88
.github/workflows/docker-edge.yml vendored Normal file
View File

@@ -0,0 +1,88 @@
name: Build Edge Docker Image
# Edge Docker images are built for every commit, and daily
on:
push:
branches:
- master
paths:
- 'packages/sync-server/**'
pull_request:
branches:
- master
paths:
- 'packages/sync-server/**'
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
contents: read
packages: write
env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
# Creates the following tags:
# - actual-server:edge
TAGS: |
type=edge,value=edge
type=sha
jobs:
build:
name: Build Docker image
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu, alpine]
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
# Push to both Docker Hub and Github Container Registry
images: ${{ env.IMAGES }}
flavor: ${{ matrix.os != 'ubuntu' && format('suffix=-{0}', matrix.os) || '' }}
tags: ${{ env.TAGS }}
- name: Login to Docker Hub
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Download artifacts
run: ./packages/sync-server/docker/download-artifacts.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push image
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: packages/sync-server/docker/edge-${{ matrix.os }}.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7${{ matrix.os == 'alpine' && ',linux/arm/v6' || '' }}
tags: ${{ steps.meta.outputs.tags }}
build-args: |
GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}

88
.github/workflows/docker-release.yml vendored Normal file
View File

@@ -0,0 +1,88 @@
name: Build Stable Docker Image
# Stable Docker images are built for every new tag
on:
push:
tags:
- 'v*.*.*'
paths-ignore:
- README.md
- LICENSE.txt
env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
# Creates the following tags:
# - actual-server:latest (see docker/metadata-action flavor inputs, below)
# - actual-server:1.3
# - actual-server:1.3.7
# - actual-server:sha-90dd603
TAGS: |
type=semver,pattern={{version}}
jobs:
build:
name: Build Docker image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
# Push to both Docker Hub and Github Container Registry
images: ${{ env.IMAGES }}
# Automatically update :latest
flavor: latest=true
tags: ${{ env.TAGS }}
- name: Docker meta for Alpine image
id: alpine-meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGES }}
# Automatically update :latest
flavor: |
latest=true
suffix=-alpine,onlatest=true
tags: ${{ env.TAGS }}
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push ubuntu image
uses: docker/build-push-action@v5
with:
context: .
push: true
file: packages/sync-server/docker/stable-ubuntu.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ${{ steps.meta.outputs.tags }}
- name: Build and push alpine image
uses: docker/build-push-action@v5
with:
context: .
push: true
file: packages/sync-server/docker/stable-alpine.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
tags: ${{ steps.alpine-meta.outputs.tags }}

View File

@@ -1,33 +1,71 @@
name: E2E Tests
on: [pull_request]
on:
pull_request:
env:
GITHUB_PR_NUMBER: ${{github.event.pull_request.number}}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
name: Run end-to-end tests on Netlify PR preview
netlify:
name: Wait for Netlify build to finish
runs-on: ubuntu-latest
outputs:
netlify_url: ${{ steps.netlify.outputs.url }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Setup Playwright
run: npx playwright install chromium --with-deps
- name: Wait for Netlify build to finish
id: netlify
env:
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./bin/netlify-wait-for-build
run: ./.github/actions/netlify-wait-for-build
functional:
name: Functional
needs: netlify
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Run E2E Tests on Netlify URL
run: yarn e2e
env:
E2E_START_URL: ${{ steps.netlify.outputs.url }}
- uses: actions/upload-artifact@v3
E2E_START_URL: ${{ needs.netlify.outputs.netlify_url }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: desktop-client-test-results
path: packages/desktop-client/test-results/
retention-days: 30
overwrite: true
vrt:
name: Visual regression
needs: netlify
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Run VRT Tests on Netlify URL
run: yarn vrt
env:
E2E_START_URL: ${{ needs.netlify.outputs.netlify_url }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: desktop-client-test-results
path: packages/desktop-client/test-results/
retention-days: 30
overwrite: true

89
.github/workflows/electron-master.yml vendored Normal file
View File

@@ -0,0 +1,89 @@
name: Electron Master
defaults:
run:
shell: bash
env:
CI: true
on:
push:
tags:
- v**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
build:
# this is so the assets can be added to the release
permissions:
contents: write
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
run: |
mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install setuptools
- if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
sudo apt-get update
sudo apt-get install flatpak -y
sudo apt-get install flatpak-builder -y
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install org.freedesktop.Sdk/x86_64/23.08 -y
sudo flatpak install org.freedesktop.Platform/x86_64/23.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp/x86_64/23.08 -y
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Electron for Mac
if: ${{ startsWith(matrix.os, 'macos') }}
run: ./bin/package-electron
env:
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.CSC_LINK }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
- name: Build Electron
if: ${{ ! startsWith(matrix.os, 'macos') }}
run: ./bin/package-electron
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: actual-electron-${{ matrix.os }}
path: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
!packages/desktop-electron/dist/Actual-windows.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak
- name: Upload Windows Store Build
if: ${{ startsWith(matrix.os, 'windows') }}
uses: actions/upload-artifact@v4
with:
name: actual-electron-${{ matrix.os }}-appx
path: |
packages/desktop-electron/dist/*.appx
- name: Add to Release
uses: softprops/action-gh-release@v2
with:
draft: true
files: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
!packages/desktop-electron/dist/Actual-windows.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak

65
.github/workflows/electron-pr.yml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: Electron
defaults:
run:
shell: bash
env:
CI: true
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
run: |
mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install setuptools
- if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
sudo apt-get update
sudo apt-get install flatpak -y
sudo apt-get install flatpak-builder -y
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install org.freedesktop.Sdk/x86_64/23.08 -y
sudo flatpak install org.freedesktop.Platform/x86_64/23.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp/x86_64/23.08 -y
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Electron
run: ./bin/package-electron
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: actual-electron-${{ matrix.os }}
path: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
!packages/desktop-electron/dist/Actual-windows.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak
- name: Upload Windows Store Build
if: ${{ startsWith(matrix.os, 'windows') }}
uses: actions/upload-artifact@v4
with:
name: actual-electron-${{ matrix.os }}-appx
path: |
packages/desktop-electron/dist/*.appx

View File

@@ -1,17 +0,0 @@
name: Generate Release Notes
on:
push:
branches:
- release/*
jobs:
generate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Generate release notes
uses: actualbudget/actions/release-notes/generate@main
with:
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,35 @@
name: Generate release PR
on:
workflow_dispatch:
inputs:
ref:
description: 'Commit or branch to release'
required: true
default: 'master'
version:
description: 'Version number for the release (optional)'
required: false
default: ''
jobs:
generate-release-pr:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.ref }}
- name: Bump package versions
id: bump_package_versions
shell: bash
run: |
.github/actions/bump-package-versions ${{ github.event.inputs.version }}
echo "version=$(jq -r .version packages/desktop-client/package.json)" > $GITHUB_OUTPUT
- name: Create PR
uses: peter-evans/create-pull-request@v7
with:
commit-message: '🔖 (${{ steps.bump_package_versions.outputs.version }})'
title: '🔖 (${{ steps.bump_package_versions.outputs.version }})'
body: 'Generated by [generate-release-pr.yml](../tree/master/.github/workflows/generate-release-pr.yml)'
branch: 'release/v${{ steps.bump_package_versions.outputs.version }}'

View File

@@ -0,0 +1,87 @@
name: Extract and upload i18n strings
on:
schedule:
# 4am UTC
- cron: "0 4 * * *"
workflow_dispatch:
jobs:
extract-and-upload-i18n-strings:
runs-on: ubuntu-latest
if: github.repository == 'actualbudget/actual'
steps:
- name: Check out main repository
uses: actions/checkout@v4
with:
path: actual
- name: Set up environment
uses: ./actual/.github/actions/setup
with:
working-directory: actual
download-translations: false # As we'll manually clone instead
- name: Configure Git config
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Configure i18n client
run: |
pip install wlc
- name: Lock translations
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
lock \
actualbudget/actual
- name: Update VCS with latest translations
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
push \
actualbudget/actual
- name: Check out updated translations
uses: actions/checkout@v4
with:
ssh-key: ${{ secrets.STRING_IMPORT_DEPLOY_KEY }}
repository: actualbudget/translations
path: translations
- name: Generate i18n strings
working-directory: actual
run: |
mkdir -p packages/desktop-client/locale/
cp ../translations/en.json packages/desktop-client/locale/
yarn generate:i18n
if [[ ! -f packages/desktop-client/locale/en.json ]]; then
echo "File packages/desktop-client/locale/en.json not found. Ensure the file was generated correctly."
exit 1
fi
- name: Check in new i18n strings
working-directory: translations
run: |
cp ../actual/packages/desktop-client/locale/en.json .
git add .
if git commit -m "Update source strings"; then
git push
else
echo "No changes to commit"
fi
- name: Update Weblate with latest translations
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
pull \
actualbudget/actual
- name: Unlock translations
if: always() # Clean up even on failure
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
unlock \
actualbudget/actual

View File

@@ -0,0 +1,37 @@
name: Close feature requests with automated message
on:
issues:
types: [labeled]
jobs:
needs-votes:
if: ${{ github.event.label.name == 'feature' }}
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: needs votes
- name: Add reactions
uses: aidan-mundy/react-to-issue@v1.1.1
with:
issue-number: ${{ github.event.issue.number }}
reactions: '+1'
- name: Create comment
uses: peter-evans/create-or-update-comment@v3
with:
issue-number: ${{ github.event.issue.number }}
body: |
:sparkles: Thanks for sharing your idea! :sparkles:
This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesnt mean we dont accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).
The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+
Dont forget to upvote the top comment with 👍!
<!-- feature-auto-close-comment -->
- name: Close Issue
run: gh issue close "https://github.com/actualbudget/actual/issues/${{ github.event.issue.number }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,35 @@
name: Handle completed feature requests
##########################################################################################
# WARNING! This workflow uses the 'pull_request_target' event. That mans that it will #
# always run in the context of the main actualbudget/actual repo, even if the PR is from #
# a fork. This is necessary to get access to a GitHub token that can post a comment on #
# the PR. Be VERY CAREFUL about adding things to this workflow, since forks can inject #
# arbitrary code into their branch, and can pollute the artifacts we download. Arbitrary #
# code execution in this workflow could lead to a compromise of the main repo. #
##########################################################################################
# See: https://securitylab.github.com/research/github-actions-preventing-pwn-requests #
##########################################################################################
on:
pull_request_target:
types: [closed]
permissions:
issues: write
jobs:
handle-feature-requests:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
# This is not a security concern because we have approved & merged the PR
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '19'
- name: Handle feature requests
run: node .github/actions/handle-feature-requests.js
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,14 @@
name: Remove 'help wanted' label from closed issues
on:
issues:
types: [closed]
jobs:
remove-help-wanted:
if: ${{ !contains(github.event.issue.labels.*.name, 'feature') && contains(github.event.issue.labels.*.name, 'help wanted') }}
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: help wanted

View File

@@ -1,18 +0,0 @@
name: Linter
on:
push:
branches:
- master
pull_request:
branches: '*'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up environment
uses: ./.github/actions/setup
- name: Lint
run: yarn lint

43
.github/workflows/netlify-release.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Deploy Netlify Release
defaults:
run:
shell: bash
env:
CI: true
on:
push:
tags:
- v**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Repository Checkout
uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Install Netlify
run: npm install netlify-cli@17.10.1 -g
- name: Build Actual
run: ./bin/package-browser
- name: Deploy to Netlify
id: netlify_deploy
run: |
netlify deploy \
--dir packages/desktop-client/build \
--site ${{ secrets.NETLIFY_SITE_ID }} \
--auth ${{ secrets.NETLIFY_API_TOKEN }} \
--filter @actual-app/web \
--prod

View File

@@ -1,14 +0,0 @@
name: Mark new issue for triage
on:
issues:
types: [opened]
jobs:
needs-triage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: needs triage

21
.github/workflows/release-notes.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Release notes
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
release-notes:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check release notes
if: startsWith(github.head_ref, 'release/') == false
uses: actualbudget/actions/release-notes/check@main
- name: Generate release notes
if: startsWith(github.head_ref, 'release/') == true
uses: actualbudget/actions/release-notes/generate@main

89
.github/workflows/size-compare.yml vendored Normal file
View File

@@ -0,0 +1,89 @@
name: Compare Sizes
##########################################################################################
# WARNING! This workflow uses the 'pull_request_target' event. That mans that it will #
# always run in the context of the main actualbudget/actual repo, even if the PR is from #
# a fork. This is necessary to get access to a GitHub token that can post a comment on #
# the PR. Be VERY CAREFUL about adding things to this workflow, since forks can inject #
# arbitrary code into their branch, and can pollute the artifacts we download. Arbitrary #
# code execution in this workflow could lead to a compromise of the main repo. #
##########################################################################################
# See: https://securitylab.github.com/research/github-actions-preventing-pwn-requests #
##########################################################################################
on:
pull_request_target:
paths:
- 'packages/**'
- '!packages/sync-server/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
compare:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Wait for ${{github.base_ref}} build to succeed
uses: fountainhead/action-wait-for-check@v1.2.0
id: master-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: web
ref: ${{github.base_ref}}
- name: Wait for PR build to succeed
uses: fountainhead/action-wait-for-check@v1.2.0
id: wait-for-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: web
ref: ${{github.event.pull_request.head.sha}}
- name: Report build failure
if: steps.wait-for-build.outputs.conclusion == 'failure'
run: |
echo "Build failed on PR branch or ${{github.base_ref}}"
exit 1
- name: Download build artifact from ${{github.base_ref}}
uses: dawidd6/action-download-artifact@v6
id: pr-build
with:
branch: ${{github.base_ref}}
workflow: build.yml
name: build-stats
path: base
- name: Download build artifact from PR
uses: dawidd6/action-download-artifact@v6
with:
pr: ${{github.event.pull_request.number}}
workflow: build.yml
name: build-stats
path: head
allow_forks: true
- name: Strip content hashes from stats files
run: |
sed -i -E 's/index\.[0-9a-zA-Z_-]{8,}\./index./g' ./head/web-stats.json
sed -i -E 's/\.[0-9a-zA-Z_-]{8,}\.chunk\././g' ./head/web-stats.json
sed -i -E 's/\.[0-9a-f]{8,}\././g' ./head/*.json
sed -i -E 's/index\.[0-9a-zA-Z_-]{8,}\./index./g' ./base/web-stats.json
sed -i -E 's/\.[0-9a-zA-Z_-]{8,}\.chunk\././g' ./base/web-stats.json
sed -i -E 's/\.[0-9a-f]{8,}\././g' ./base/*.json
- uses: twk3/rollup-size-compare-action@v1.1.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
current-stats-json-path: ./head/web-stats.json
base-stats-json-path: ./base/web-stats.json
title: desktop-client
- uses: github/webpack-bundlesize-compare-action@v2.1.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
current-stats-json-path: ./head/loot-core-stats.json
base-stats-json-path: ./base/loot-core-stats.json
title: loot-core

View File

@@ -1,20 +1,26 @@
name: Close inactive issues
name: 'Close stale PRs'
on:
schedule:
- cron: "30 1 * * *"
- cron: '30 1 * * *'
jobs:
close-issues:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v7
- uses: actions/stale@v9
with:
days-before-issue-stale: 90
days-before-issue-close: -1
stale-issue-label: "stale"
stale-issue-message: "🚧🚨 This issue is being marked as stale due to 90 days of inactivity. 🚧🚨"
only-labels: 'needs triage'
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
close-pr-message: 'This PR was closed because it has been stalled for 5 days with no activity.'
days-before-stale: 30
days-before-close: 5
days-before-issue-stale: -1
stale-wip:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-pr-message: ':wave: Hi! It looks like this PR has not had any changes for a week now. Would you like someone to review this PR? If so - please remove the "[WIP]" prefix from the PR title. That will let the community know that this PR is open for a review.'
days-before-stale: 7
any-of-labels: ':construction: WIP'
days-before-close: -1
days-before-issue-stale: -1

View File

@@ -1,18 +0,0 @@
name: Test
on:
push:
branches:
- master
pull_request:
branches: '*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up environment
uses: ./.github/actions/setup
- name: Test
run: yarn test

View File

@@ -1,18 +0,0 @@
name: Typecheck
on:
push:
branches:
- master
pull_request:
branches: '*'
jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up environment
uses: ./.github/actions/setup
- name: Typecheck
run: yarn typecheck

115
.github/workflows/update-vrt.yml vendored Normal file
View File

@@ -0,0 +1,115 @@
name: /update-vrt
on:
issue_comment:
types: [ created ]
permissions:
pull-requests: read
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number }}-${{ contains(github.event.comment.body, '/update-vrt') }}
cancel-in-progress: true
jobs:
update-vrt:
name: Update VRT
runs-on: ubuntu-latest
if: |
github.event.issue.pull_request &&
contains(github.event.comment.body, '/update-vrt')
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
steps:
- name: Get PR branch
# Until https://github.com/xt0rted/pull-request-comment-branch/issues/322 is resolved we use the forked version
uses: gotson/pull-request-comment-branch@head-repo-owner-dist
id: comment-branch
- uses: actions/checkout@v4
with:
repository: ${{ steps.comment-branch.outputs.head_owner }}/${{ steps.comment-branch.outputs.head_repo }}
ref: ${{ steps.comment-branch.outputs.head_ref }}
- name: Set up environment
uses: ./.github/actions/setup
- name: Wait for Netlify build to finish
id: netlify
env:
COMMIT_SHA: ${{ steps.comment-branch.outputs.head_sha }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/actions/netlify-wait-for-build
- name: Run VRT Tests on Netlify URL
run: yarn vrt --update-snapshots
env:
E2E_START_URL: ${{ steps.netlify.outputs.url }}
- name: Create patch
run: |
git config --system --add safe.directory "*"
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git reset
git add "**/*.png"
if git diff --staged --quiet; then
echo "No changes to commit"
exit 0
fi
git commit -m "Update VRT"
git format-patch -1 HEAD --stdout > Update-VRT.patch
- uses: actions/upload-artifact@v4
with:
name: patch
path: Update-VRT.patch
push-patch:
runs-on: ubuntu-latest
needs: update-vrt
permissions:
contents: write
pull-requests: write
steps:
- name: Get PR branch
# Until https://github.com/xt0rted/pull-request-comment-branch/issues/322 is resolved we use the forked version
uses: gotson/pull-request-comment-branch@head-repo-owner-dist
id: comment-branch
- uses: actions/checkout@v4
with:
repository: ${{ steps.comment-branch.outputs.head_owner }}/${{ steps.comment-branch.outputs.head_repo }}
ref: ${{ steps.comment-branch.outputs.head_ref }}
- uses: actions/download-artifact@v4
continue-on-error: true
with:
name: patch
- name: Apply patch and push
env:
BRANCH_NAME: ${{ steps.comment-branch.outputs.head_ref }}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git apply Update-VRT.patch
git add "**/*.png"
if git diff --staged --quiet; then
echo "No changes to commit"
exit 0
fi
git commit -m "Update VRT"
git push origin HEAD:${BRANCH_NAME}
- name: Add finished reaction
uses: dkershner6/reaction-action@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
commentId: ${{ github.event.comment.id }}
reaction: "rocket"
add-starting-reaction:
runs-on: ubuntu-latest
if: |
github.event.issue.pull_request &&
contains(github.event.comment.body, '/update-vrt')
permissions:
pull-requests: write
steps:
- name: React to comment
uses: dkershner6/reaction-action@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
commentId: ${{ github.event.comment.id }}
reaction: "+1"

45
.gitignore vendored
View File

@@ -1,26 +1,34 @@
# Sample Data
/data/*
!data/.gitkeep
/data2
Actual-*
**/xcuserdata/*
export-2020-01-10.csv
# Secrets
.secret-tokens
# MacOS
.DS_Store
# Logs
**/*.log
# JavaScript
node_modules
packages/api/dist
packages/api/@types
packages/crdt/dist
packages/desktop-electron/client-build
packages/desktop-electron/build
packages/desktop-electron/.electron-symbols
packages/desktop-electron/dist
packages/desktop-electron/loot-core
node_modules
.DS_Store
lerna-debug.log
Actual-*
.#*
**/xcuserdata/*
.secret-tokens
bundle.desktop.js
bundle.desktop.js.map
bundle.mobile.js
bundle.mobile.js.map
export-2020-01-10.csv
.idea
**/*.log
# Yarn
.pnp.*
@@ -30,3 +38,18 @@ export-2020-01-10.csv
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# VSCode
.vscode
# IntelliJ IDEA
.idea
# Misc
.#*
# Local Netlify folder
.netlify
# build output
package.tgz

1
.husky/pre-commit Normal file
View File

@@ -0,0 +1 @@
yarn lint-staged

2
.nvmrc
View File

@@ -1 +1 @@
v16.15.0
v18.16.0

1
.prettierignore Normal file
View File

@@ -0,0 +1 @@
sync_pb.*

2
.secret-tokens.example Normal file
View File

@@ -0,0 +1,2 @@
export APPLE_ID=example@email.com
export APPLE_APP_SPECIFIC_PASSWORD=password

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

894
.yarn/releases/yarn-4.3.1.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,9 @@
compressionLevel: mixed
enableGlobalCache: false
enableTransparentWorkspaces: false
nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
yarnPath: .yarn/releases/yarn-3.4.1.cjs
yarnPath: .yarn/releases/yarn-4.3.1.cjs

View File

@@ -1,38 +1 @@
## Expectations
For smaller improvements or features - feel free to submit a PR or an issue if you don't have the necessary skills to build it yourself. For larger features we would recommend first opening an issue to discuss it with the team.
We aren't going to take every single little change. Don't be offended if we close your PR. In order for the project to stay healthy, we need to guard our bandwidth and also only take changes that align with Actual.
Here are some initial guidelines for how contributions will be treated:
- The mental health of the maintainers will be prioritized above all else. If this means some things get lost and PRs are unreviewed because maintainers are spending time with family or on themselves, we celebrate that.
- Multiple maintainers are key to this being a healthy project. Currently a few people have maintainer rights (see list below). We are actively looking for more people to come on as maintainers. If nobody steps up, expect less activity on this project.
- An open PR does not automatically deserve time for a full review and acceptance. It's up to the PR author to convince the maintainers that the change is good and worth reviewing. This involves a clear description for why the the change is being made, detailing the tradeoffs.
- We especially welcome improvements in automation: creating github actions to automatically generate builds, making the release process easier, etc.
## Main contributors
(sorted alphabetically)
- @j-f1
- @jlongster
- @MatissJanis
- @trevdor
## Alumni
(sorted alphabetically)
- @rich-howell
## Project ideas
We welcome all contributions from the community. If you have an idea for a feature you want to build - please go ahead and submit a PR with the implementation or if it's a larger feature - open a new issue so we can discuss it.
If you do not have ideas what to build: the issue list is always a good starting point. Look for issues labeled with "[help wanted](https://github.com/actualbudget/actual/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)".
For first time contributions you can also filter the issues labeled with "[good first issue](https://github.com/actualbudget/actual/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)".
Please review the contributing documentation on our website: https://actualbudget.org/docs/contributing/

11
Dockerfile Normal file
View File

@@ -0,0 +1,11 @@
###################################################
# This Dockerfile is used by the docker-compose.yml
# file to build the development container.
# Do not make any changes here unless you know what
# you are doing.
###################################################
FROM node:18-bullseye as dev
RUN apt-get update -y && apt-get upgrade -y && apt-get install -y openssl
WORKDIR /app
CMD ["sh", "./bin/docker-start"]

View File

@@ -6,42 +6,74 @@
Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting.
If you are interested in contributing, or want to know how development works, see [CONTRIBUTING.md](https://github.com/actualbudget/actual/blob/master/CONTRIBUTING.md) we would love to have you.
If you are interested in contributing, or want to know how development works, see our [contributing](https://actualbudget.org/docs/contributing/) document we would love to have you.
Want to say thanks? Click the ⭐ at the top of the page.
## Key Links
- Actual [discord](https://discord.gg/pRYNYr4W5A) community.
- Actual [Community Documentation](https://actualbudget.github.io/docs)
- Actual [Community Documentation](https://actualbudget.org/docs)
- [Frequently asked questions](https://actualbudget.org/docs/faq)
## Installation
If you are only interested in running the latest version and not contributing to the source code, you don't need to clone this repo. You can get the latest version through npm.
There are four ways to deploy Actual:
### The easy way: using a server (recommended)
1. One-click deployment [via PikaPods](https://www.pikapods.com/pods?run=actual) (~1.40 $/month) - recommended for non-technical users
1. Managed hosting [via Fly.io](https://actualbudget.org/docs/install/fly) (~1.50 $/month)
1. Self-hosted by using [a Docker image](https://actualbudget.org/docs/install/docker)
1. Local-only apps - [downloadable Windows, Mac and Linux apps](https://actualbudget.org/download/) you can run on your device
The easiest way to get Actual running is to use the [actual-server](https://github.com/actualbudget/actual-server) project. That is the server for syncing changes across devices, and it comes with the latest version of Actual. The server will provide both the web project and a server for syncing.
Learn more in the [installation instructions docs](https://actualbudget.org/docs/install/).
You can get up and running quickly and easily by following our [Running Actual Locally Guide](https://actualbudget.github.io/docs/Installing/Local/your-own-machine)
## Ready to Start Budgeting?
Read about [Envelope budgeting](https://actualbudget.org/docs/getting-started/envelope-budgeting) to know more about the idea behind Actual Budget.
### Are you new to budgeting or want to start fresh?
Check out the community's [Starting Fresh](https://actualbudget.org/docs/getting-started/starting-fresh) guide so you can quickly get up and running!
### Are you migrating from other budgeting apps?
Check out the community's [Migration](https://actualbudget.org/docs/migration/) guide to start jumping on the Actual Budget train!
## Documentation
We have a wide range of documentation on how to use Actual, this is all available in our [Community Documentation](https://actualbudget.github.io/docs), this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
We have a wide range of documentation on how to use Actual, this is all available in our [Community Documentation](https://actualbudget.org/docs), this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
## Code structure
## Contributing
Actual is a community driven product. Learn more about [contributing to Actual](https://actualbudget.org/docs/contributing/).
### Code structure
The Actual app is split up into a few packages:
- loot-core - The core application that runs on any platform
- loot-design - The generic design components that make up the UI
- desktop-client - The desktop UI
- desktop-electron - The desktop app
More information on the project structure is available in our [community documentation](https://actualbudget.github.io/docs/Developers/project-layout).
More information on the project structure is available in our [community documentation](https://actualbudget.org/docs/contributing/project-details).
### Feature Requests
Current feature requests can be seen [here](https://github.com/actualbudget/actual/issues?q=is%3Aissue+label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc).
Vote for your favorite requests by reacting :+1: to the top comment of the request.
To add new feature requests, open a new Issue of the "Feature Request" type.
### Translation
Make Actual Budget accessible to more people by helping with the [Internationalization](https://actualbudget.org/docs/contributing/i18n/) of Actual. We are using a crowd sourcing tool to manage the translations, see our [Weblate Project](https://hosted.weblate.org/projects/actualbudget/). Weblate proudly supports open-source software projects through their [Libre plan](https://weblate.org/en/hosting/#libre).
## Repo Activity
![Alt](https://repobeats.axiom.co/api/embed/e20537dd8b74956f86736726ccfbc6f0565bec22.svg 'Repobeats analytics image')
## Sponsors
Thanks to our wonderful sponsors who make Actual budget possible!
Thanks to our wonderful sponsors who make Actual Budget possible!
<a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-accent.svg" alt="Deploys by Netlify" /> </a>

13
bin/docker-start Normal file
View File

@@ -0,0 +1,13 @@
#!/bin/sh
#####################################################
# This startup script is used by the docker container
# to check if the node_modules folder is empty and
# if so, run yarn to install the dependencies.
#####################################################
if [ ! -d "node_modules" ] || [ "$(ls -A node_modules)" = "" ]; then
yarn
fi
BROWSER=0 yarn start:browser

View File

@@ -1,11 +0,0 @@
#!/bin/sh
FILES=$(git diff --cached --name-only --diff-filter=ACMR "*.js" "*.jsx" | sed 's| |\\ |g')
[ -z "$FILES" ] && exit 0
# Prettify all selected files
echo "$FILES" | xargs ./node_modules/.bin/prettier --write
# Add back the modified/prettified files to staging
echo "$FILES" | xargs git add
exit 0

View File

@@ -1,27 +0,0 @@
#!/bin/sh -e
ROOT=$(cd "`dirname $0`"; pwd)
NPM_NAME="$1"
NAME="$2"
PACKAGE_DIR="`dirname "$ROOT"`/packages/$NAME"
if [ -z "$NAME" ] || [ -z "$NPM_NAME" ]; then
echo "Usage: `basename $0` <npm-name> <local-name>"
exit 1
fi
if [ -d "$PACKAGE_DIR" ]; then
read -p "Package exists, remove $PACKAGE_DIR? [y/N] " -r
if [ -z "$REPLY" ] || [ "$REPLY" != "y" ]; then
exit 2
fi
fi
rm -rf "$PACKAGE_DIR"
URL="`npm view "$NPM_NAME" dist.tarball`"
TMPDIR="`mktemp -d`"
cd "$TMPDIR"
wget -O tar.tgz "$URL"
tar xvzf tar.tgz
mv package "$PACKAGE_DIR"

View File

@@ -1,50 +0,0 @@
#!/bin/bash -e
VERSION=""
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
--version)
VERSION="$2"
shift
shift
;;
*)
POSITIONAL+=("$1")
shift
;;
esac
done
set -- "${POSITIONAL[@]}"
NOTES="$@"
if [ -z "$VERSION" ]; then
echo "--version is required";
exit 1
fi
echo "Version: $VERSION"
echo "Notes: $NOTES"
read -p "Make release? [y/N] " -r
if [ -z "$REPLY" ] || [ "$REPLY" != "y" ]; then
exit 2
fi
source ./.secret-tokens
# Tag and push to make windows and linux versions
git push origin master
git tag -a "$VERSION" -m "$NOTES"
git push origin "$VERSION"
# Make a macOS version
./bin/package --release --version "$VERSION"
# TODO: browser version
# Finally, update github issues
curl -X POST -H "x-release-token: $RELEASE_TOKEN" https://actual-automoto.fly.dev/release/"$VERSION"

View File

@@ -1,111 +0,0 @@
#!/bin/bash -e
ROOT=`dirname $0`
VERSION=""
BETA=""
RELEASE=""
RELEASE_NOTES=""
CI=${CI:-false}
cd "$ROOT/.."
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
--version)
VERSION="$2"
shift
shift
;;
--beta)
RELEASE="beta"
shift
;;
--release)
RELEASE="production"
shift
;;
*)
POSITIONAL+=("$1")
shift
;;
esac
done
set -- "${POSITIONAL[@]}"
if [ -z "$VERSION" ] && [ -n "$RELEASE" ]; then
echo "Version is required if making a release"
exit 1
fi
if [ -n "$RELEASE" ]; then
if [ -z "$CIRCLE_TAG" ]; then
read -p "Make release: $RELEASE v$VERSION? [y/N] " -r
if [ -z "$REPLY" ] || [ "$REPLY" != "y" ]; then
exit 2
fi
fi
if [ "$RELEASE" == "production" ]; then
if [ -z "$CIRCLE_TAG" ]; then
RELEASE_NOTES=`git tag -l --format="%(contents:subject)" "$VERSION"`
else
RELEASE_NOTES=`git tag -l --format="%(contents:subject)" "$CIRCLE_TAG"`
fi
fi
PACKAGE_VERSION=`node -p -e "require('./packages/desktop-electron/package.json').version"`
if [ "$VERSION" != "$PACKAGE_VERSION" ]; then
echo "Version in desktop-electron/package.json does not match given version! ($PACKAGE_VERSION)"
exit 4
fi
fi
if [ "$OSTYPE" == "msys" ]; then
if [ $CI != true ]; then
read -s -p "Windows certificate password: " -r CSC_KEY_PASSWORD
export CSC_KEY_PASSWORD
elif [ -n "$CIRCLE_TAG" ]; then
# We only want to run this on CircleCI as Github doesn't have the CSC_KEY_PASSWORD secret set.
certutil -f -p ${CSC_KEY_PASSWORD} -importPfx ~/windows-shift-reset-llc.p12
fi
fi
# We only need to run linting once (and this doesn't seem to work on
# Windows for some reason)
if [[ $CI != true && "$OSTYPE" == "darwin"* ]]; then
yarn lint
fi
yarn patch-package
yarn workspace loot-core build:node
yarn workspace @actual-app/web build
yarn workspace Actual update-client
(
cd packages/desktop-electron;
yarn clean;
export npm_config_better_sqlite3_binary_host="https://static.actualbudget.com/prebuild/better-sqlite3"
if [ "$RELEASE" == "production" ]; then
if [ -f ../../.secret-tokens ]; then
source ../../.secret-tokens
fi
yarn build --publish always -c.releaseInfo.releaseNotes="$RELEASE_NOTES" --arm64 --x64
echo "\nCreated release $VERSION with release notes \"$RELEASE_NOTES\""
elif [ "$RELEASE" == "beta" ]; then
yarn build --publish never --arm64 --x64
echo "\nCreated beta release $VERSION"
else
SKIP_NOTARIZATION=true yarn build --publish never --x64
fi
)

View File

@@ -1,63 +1,19 @@
#!/bin/bash -e
ROOT=`dirname $0`
VERSION=""
RELEASE=""
CI=${CI:-false}
cd "$ROOT/.."
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
--version)
VERSION="$2"
shift
shift
;;
--beta)
RELEASE="beta"
shift
;;
--release)
RELEASE="production"
shift
;;
*)
POSITIONAL+=("$1")
shift
;;
esac
done
set -- "${POSITIONAL[@]}"
if [ -z "$VERSION" ] && [ -n "$RELEASE" ]; then
echo "Version is required if making a release"
exit 1
echo "Updating translations..."
if ! [ -d packages/desktop-client/locale ]; then
git clone https://github.com/actualbudget/translations packages/desktop-client/locale
fi
pushd packages/desktop-client/locale > /dev/null
git pull
popd > /dev/null
packages/desktop-client/bin/remove-untranslated-languages
if [ -n "$RELEASE" ]; then
read -p "Deploy release for browser: $RELEASE v$VERSION? [y/N] " -r
if [ -z "$REPLY" ] || [ "$REPLY" != "y" ]; then
exit 2
fi
PACKAGE_VERSION=`node -p -e "require('./packages/desktop-electron/package.json').version"`
if [ "$VERSION" != "$PACKAGE_VERSION" ] && [ "$VERSION-next" != "$PACKAGE_VERSION" ]; then
echo "Version in desktop-electron/package.json does not match given version! ($PACKAGE_VERSION)"
exit 4
fi
fi
# There's no need to check linting in CI as it'll be done in a different step.
if [ $CI != true ]; then
yarn lint
fi
ACTUAL_RELEASE_TYPE=$RELEASE yarn workspace loot-core build:browser
REACT_APP_RELEASE_TYPE=$RELEASE yarn workspace @actual-app/web build:browser
yarn workspace loot-core build:browser
yarn workspace @actual-app/web build:browser
echo "packages/desktop-client/build"

67
bin/package-electron Executable file
View File

@@ -0,0 +1,67 @@
#!/bin/bash -e
ROOT=`dirname $0`
RELEASE=""
CI=${CI:-false}
cd "$ROOT/.."
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
--release)
RELEASE="production"
shift
;;
*)
POSITIONAL+=("$1")
shift
;;
esac
done
set -- "${POSITIONAL[@]}"
if [ "$OSTYPE" == "msys" ]; then
if [ $CI != true ]; then
read -s -p "Windows certificate password: " -r CSC_KEY_PASSWORD
export CSC_KEY_PASSWORD
elif [ -n "$CIRCLE_TAG" ]; then
# We only want to run this on CircleCI as Github doesn't have the CSC_KEY_PASSWORD secret set.
certutil -f -p ${CSC_KEY_PASSWORD} -importPfx ~/windows-shift-reset-llc.p12
fi
fi
yarn workspace loot-core build:node
# Get translations
echo "Updating translations..."
if ! [ -d packages/desktop-client/locale ]; then
git clone https://github.com/actualbudget/translations packages/desktop-client/locale
fi
pushd packages/desktop-client/locale > /dev/null
git pull
popd > /dev/null
packages/desktop-client/bin/remove-untranslated-languages
yarn workspace @actual-app/web build --mode=desktop # electron specific build
yarn workspace desktop-electron update-client
(
cd packages/desktop-electron;
yarn clean;
if [ "$RELEASE" == "production" ]; then
if [ -f ../../.secret-tokens ]; then
source ../../.secret-tokens
fi
yarn build
echo "\nCreated release"
else
SKIP_NOTARIZATION=true yarn build
fi
)

32
bin/run-vrt Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/sh
# See here for more information: https://github.com/actualbudget/actual/tree/master/packages/desktop-client#visual-regression
if [ ! -d "node_modules" ] || [ "$(ls -A node_modules)" = "" ]; then
yarn
fi
E2E_START_URL="${E2E_START_URL:-https://localhost:3001}"
VRT_ARGS=""
# Loop through all arguments
while [ $# -gt 0 ]; do
key="$1"
case $key in
--e2e-start-url)
E2E_START_URL="$2"
shift
;;
*)
VRT_ARGS="$VRT_ARGS $1"
;;
esac
shift
done
echo "Running VRT tests with the following parameters:"
echo "E2E_START_URL: $E2E_START_URL"
echo "VRT_ARGS: $VRT_ARGS"
MSYS_NO_PATHCONV=1 docker run --rm --network host -v "$(pwd)":/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.41.1-jammy /bin/bash \
-c "E2E_START_URL=$E2E_START_URL yarn vrt $VRT_ARGS"

BIN
demo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 107 KiB

18
docker-compose.yml Normal file
View File

@@ -0,0 +1,18 @@
###################################################
# This creates and stands up the development
# docker container. Depends on the Dockerfile and
# docker-start.sh files.
###################################################
services:
actual-development:
build: .
image: actual-development
environment:
- HTTPS
ports:
- '3001:3001'
volumes:
- '.:/app'
restart: 'no'

841
eslint.config.mjs Normal file
View File

@@ -0,0 +1,841 @@
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import globals from 'globals';
import pluginImport from 'eslint-plugin-import';
import pluginJSXA11y from 'eslint-plugin-jsx-a11y';
import pluginPrettier from 'eslint-plugin-prettier/recommended';
import pluginReact from 'eslint-plugin-react';
import pluginReactHooks from 'eslint-plugin-react-hooks';
import pluginRulesDir from 'eslint-plugin-rulesdir';
import pluginTypescript from 'typescript-eslint';
import tsParser from '@typescript-eslint/parser';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
pluginRulesDir.RULES_DIR = path.join(
__dirname,
'packages',
'eslint-plugin-actual',
'lib',
'rules',
);
const confusingBrowserGlobals = [
// https://github.com/facebook/create-react-app/tree/main/packages/confusing-browser-globals
'addEventListener',
'blur',
'close',
'closed',
'confirm',
'defaultStatus',
'defaultstatus',
'event',
'external',
'find',
'focus',
'frameElement',
'frames',
'history',
'innerHeight',
'innerWidth',
'length',
'location',
'locationbar',
'menubar',
'moveBy',
'moveTo',
'name',
'onblur',
'onerror',
'onfocus',
'onload',
'onresize',
'onunload',
'open',
'opener',
'opera',
'outerHeight',
'outerWidth',
'pageXOffset',
'pageYOffset',
'parent',
'print',
'removeEventListener',
'resizeBy',
'resizeTo',
'screen',
'screenLeft',
'screenTop',
'screenX',
'screenY',
'scroll',
'scrollbars',
'scrollBy',
'scrollTo',
'scrollX',
'scrollY',
'status',
'statusbar',
'stop',
'toolbar',
'top',
];
/** @type {import('eslint').Linter.Config[]} */
export default [
{
ignores: [
'packages/api/app/bundle.api.js',
'packages/api/dist',
'packages/api/@types',
'packages/api/migrations',
'packages/crdt/dist',
'packages/desktop-client/bundle.browser.js',
'packages/desktop-client/build/',
'packages/desktop-client/build-electron/',
'packages/desktop-client/build-stats/',
'packages/desktop-client/public/kcab/',
'packages/desktop-client/public/data/',
'packages/desktop-client/**/node_modules/*',
'packages/desktop-client/node_modules/',
'packages/desktop-client/src/icons/**/*',
'packages/desktop-client/test-results/',
'packages/desktop-client/playwright-report/',
'packages/desktop-electron/client-build/',
'packages/desktop-electron/build/',
'packages/desktop-electron/dist/',
'packages/import-ynab4/**/node_modules/*',
'packages/import-ynab5/**/node_modules/*',
'packages/loot-core/**/node_modules/*',
'packages/loot-core/**/lib-dist/*',
'packages/loot-core/**/proto/*',
'.yarn/*',
'.github/*',
],
},
{
linterOptions: {
reportUnusedDisableDirectives: true,
},
languageOptions: {
globals: {
...globals.browser,
...globals.commonjs,
...globals.jest,
...globals.node,
globalThis: false,
vi: true,
},
},
settings: {
react: {
version: 'detect',
},
'import/resolver': {
typescript: {
alwaysTryTypes: true,
},
},
},
},
pluginReact.configs.flat.recommended,
pluginReact.configs.flat['jsx-runtime'],
pluginPrettier,
...pluginTypescript.configs.recommended,
pluginImport.flatConfigs.recommended,
{
plugins: {
'react-hooks': pluginReactHooks,
'jsx-a11y': pluginJSXA11y,
rulesdir: pluginRulesDir,
},
},
{
files: ['**/*.{js,ts,jsx,tsx}'],
rules: {
// http://eslint.org/docs/rules/
'array-callback-return': 'warn',
'default-case': [
'warn',
{
commentPattern: '^no default$',
},
],
curly: ['warn', 'multi-line', 'consistent'],
'dot-location': ['warn', 'property'],
eqeqeq: ['warn', 'smart'],
'new-parens': 'warn',
'no-array-constructor': 'warn',
'no-caller': 'warn',
'no-cond-assign': ['warn', 'except-parens'],
'no-const-assign': 'warn',
'no-control-regex': 'warn',
'no-delete-var': 'warn',
'no-dupe-args': 'warn',
'no-dupe-class-members': 'warn',
'no-dupe-keys': 'warn',
'no-duplicate-case': 'warn',
'no-empty-character-class': 'warn',
'no-empty-pattern': 'warn',
'no-eval': 'warn',
'no-ex-assign': 'warn',
'no-extend-native': 'warn',
'no-extra-bind': 'warn',
'no-extra-label': 'warn',
'no-fallthrough': 'warn',
'no-func-assign': 'warn',
'no-implied-eval': 'warn',
'no-invalid-regexp': 'warn',
'no-iterator': 'warn',
'no-label-var': 'warn',
'no-labels': [
'warn',
{
allowLoop: true,
allowSwitch: false,
},
],
'no-lone-blocks': 'warn',
'no-mixed-operators': [
'warn',
{
groups: [
['&', '|', '^', '~', '<<', '>>', '>>>'],
['==', '!=', '===', '!==', '>', '>=', '<', '<='],
['&&', '||'],
['in', 'instanceof'],
],
allowSamePrecedence: false,
},
],
'no-multi-str': 'warn',
'no-global-assign': 'warn',
'no-unsafe-negation': 'warn',
'no-new-func': 'warn',
'no-new-object': 'warn',
'no-new-symbol': 'warn',
'no-new-wrappers': 'warn',
'no-obj-calls': 'warn',
'no-octal': 'warn',
'no-octal-escape': 'warn',
'no-redeclare': 'warn',
'no-regex-spaces': 'warn',
'no-script-url': 'warn',
'no-self-assign': 'warn',
'no-self-compare': 'warn',
'no-sequences': 'warn',
'no-shadow-restricted-names': 'warn',
'no-sparse-arrays': 'warn',
'no-template-curly-in-string': 'warn',
'no-this-before-super': 'warn',
'no-throw-literal': 'warn',
'no-undef': 'error',
'no-unreachable': 'warn',
'no-unused-expressions': [
'error',
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true,
},
],
'no-unused-labels': 'warn',
'no-use-before-define': [
'warn',
{
functions: false,
classes: false,
variables: false,
},
],
'no-useless-computed-key': 'warn',
'no-useless-concat': 'warn',
'no-useless-constructor': 'warn',
'no-useless-escape': 'warn',
'no-useless-rename': [
'warn',
{
ignoreDestructuring: false,
ignoreImport: false,
ignoreExport: false,
},
],
'no-with': 'warn',
'no-whitespace-before-property': 'warn',
'require-yield': 'warn',
'rest-spread-spacing': ['warn', 'never'],
strict: ['warn', 'never'],
'unicode-bom': ['warn', 'never'],
'use-isnan': 'warn',
'valid-typeof': 'warn',
'no-restricted-properties': [
'error',
{
object: 'require',
property: 'ensure',
message:
'Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting',
},
{
object: 'System',
property: 'import',
message:
'Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting',
},
],
'getter-return': 'warn',
// https://github.com/benmosher/eslint-plugin-import/tree/master/docs/rules
'import/first': 'error',
'import/no-amd': 'error',
'import/no-anonymous-default-export': 'warn',
'import/no-webpack-loader-syntax': 'error',
'import/extensions': [
'warn',
'never',
{
json: 'always',
},
],
'import/no-useless-path-segments': 'warn',
'import/no-duplicates': [
'warn',
{
'prefer-inline': true,
},
],
'import/order': [
'warn',
{
alphabetize: {
caseInsensitive: true,
order: 'asc',
},
groups: ['builtin', 'external', 'parent', 'sibling', 'index'],
'newlines-between': 'always',
pathGroups: [
{
// Enforce that React (and react-related packages) is the first import
group: 'builtin',
pattern: 'react?(-*)',
position: 'before',
},
{
// Separate imports from Actual from "real" external imports
group: 'external',
pattern: 'loot-{core,design}/**/*',
position: 'after',
},
],
pathGroupsExcludedImportTypes: ['react'],
},
],
// https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules
'react/forbid-foreign-prop-types': [
'warn',
{
allowInPropTypes: true,
},
],
'react/jsx-no-comment-textnodes': 'warn',
'react/jsx-no-duplicate-props': 'warn',
'react/jsx-no-target-blank': 'warn',
'react/jsx-no-undef': 'error',
'react/jsx-pascal-case': [
'warn',
{
allowAllCaps: true,
ignore: [],
},
],
'react/no-danger-with-children': 'warn',
// Disabled because of undesirable warnings
// See https://github.com/facebook/create-react-app/issues/5204 for
// blockers until its re-enabled
// 'react/no-deprecated': 'warn',
'react/no-direct-mutation-state': 'warn',
'react/no-is-mounted': 'warn',
'react/no-typos': 'error',
'react/require-render-return': 'error',
'react/style-prop-object': 'warn',
'react/jsx-no-useless-fragment': 'warn',
'react/self-closing-comp': 'warn',
'react/jsx-filename-extension': [
'warn',
{
extensions: ['.jsx', '.tsx'],
allow: 'as-needed',
},
],
'react/no-unstable-nested-components': [
'warn',
{
allowAsProps: true,
customValidators: ['formatter'],
},
],
// Don't need this as we're using TypeScript
'react/prop-types': 'off',
// https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules
'jsx-a11y/alt-text': 'warn',
'jsx-a11y/anchor-has-content': 'warn',
'jsx-a11y/anchor-is-valid': [
'warn',
{
aspects: ['noHref', 'invalidHref'],
},
],
'jsx-a11y/aria-activedescendant-has-tabindex': 'warn',
'jsx-a11y/aria-props': 'warn',
'jsx-a11y/aria-proptypes': 'warn',
'jsx-a11y/aria-role': [
'warn',
{
ignoreNonDOM: true,
},
],
'jsx-a11y/aria-unsupported-elements': 'warn',
'jsx-a11y/heading-has-content': 'warn',
'jsx-a11y/iframe-has-title': 'warn',
'jsx-a11y/img-redundant-alt': 'warn',
'jsx-a11y/no-access-key': 'warn',
'jsx-a11y/no-distracting-elements': 'warn',
'jsx-a11y/no-redundant-roles': 'warn',
'jsx-a11y/role-has-required-aria-props': 'warn',
'jsx-a11y/role-supports-aria-props': 'warn',
'jsx-a11y/scope': 'warn',
// https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': [
'warn',
{
additionalHooks: '(useQuery)',
},
],
'rulesdir/typography': 'warn',
'rulesdir/prefer-if-statement': 'warn',
// Note: base rule explicitly disabled in favor of the TS one
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'warn',
{
varsIgnorePattern: '^(_|React)',
ignoreRestSiblings: true,
caughtErrors: 'none',
},
],
'no-restricted-globals': ['warn', ...confusingBrowserGlobals],
// https://github.com/eslint/eslint/issues/16954
// https://github.com/eslint/eslint/issues/16953
'no-loop-func': 'off',
// TODO: re-enable these rules
'react/react-in-jsx-scope': 'off',
'no-var': 'warn',
'react/jsx-curly-brace-presence': 'warn',
'object-shorthand': ['warn', 'properties'],
'no-restricted-syntax': [
'warn',
{
// forbid React.* as they are legacy https://twitter.com/dan_abramov/status/1308739731551858689
selector:
":matches(MemberExpression[object.name='React'], TSQualifiedName[left.name='React'])",
message:
'Using default React import is discouraged, please use named exports directly instead.',
},
{
// forbid <a> in favor of <Link>
selector: 'JSXOpeningElement[name.name="a"]',
message: 'Using <a> is discouraged, please use <Link> instead.',
},
],
'no-restricted-imports': [
'warn',
{
patterns: [
{
group: ['*.api', '*.web', '*.electron'],
message: "Don't directly reference imports from other platforms",
},
{
group: ['uuid'],
importNames: ['*'],
message: "Use `import { v4 as uuidv4 } from 'uuid'` instead",
},
{
group: ['**/style', '**/colors'],
importNames: ['colors'],
message: 'Please use themes instead of colors',
},
],
},
],
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-ignore': 'allow-with-description',
},
],
// Rules disabled during TS migration
'@typescript-eslint/no-var-requires': 'off',
'prefer-const': 'warn',
'prefer-spread': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-require-imports': 'off',
'import/no-default-export': 'warn',
},
},
{
files: ['**/*.ts?(x)'],
languageOptions: {
parser: tsParser,
ecmaVersion: 2018,
sourceType: 'module',
parserOptions: {
project: [path.join(__dirname, './tsconfig.json')],
ecmaFeatures: {
jsx: true,
},
// typescript-eslint specific options
warnOnUnsupportedTypeScriptVersion: true,
},
},
// If adding a typescript-eslint version of an existing ESLint rule,
// make sure to disable the ESLint rule here.
rules: {
// TypeScript's `noFallthroughCasesInSwitch` option is more robust (#6906)
'default-case': 'off',
// 'tsc' already handles this (https://github.com/typescript-eslint/typescript-eslint/issues/291)
'no-dupe-class-members': 'off',
// 'tsc' already handles this (https://github.com/typescript-eslint/typescript-eslint/issues/477)
'no-undef': 'off',
// Add TypeScript specific rules (and turn off ESLint equivalents)
'@typescript-eslint/consistent-type-assertions': 'warn',
'no-array-constructor': 'off',
'@typescript-eslint/no-array-constructor': 'warn',
'no-redeclare': 'off',
'@typescript-eslint/no-redeclare': 'warn',
'no-use-before-define': 'off',
'@typescript-eslint/no-use-before-define': [
'warn',
{
functions: false,
classes: false,
variables: false,
typedefs: false,
},
],
'no-unused-expressions': 'off',
'@typescript-eslint/no-unused-expressions': [
'error',
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true,
},
],
'no-useless-constructor': 'off',
'@typescript-eslint/no-useless-constructor': 'warn',
},
},
{
files: [
'packages/desktop-client/**/*.{ts,tsx}',
'packages/loot-core/src/client/**/*.{ts,tsx}',
],
rules: {
// enforce import type
'@typescript-eslint/consistent-type-imports': [
'warn',
{
prefer: 'type-imports',
fixStyle: 'inline-type-imports',
},
],
'@typescript-eslint/no-restricted-types': [
'warn',
{
types: {
// forbid FC as superflous
FunctionComponent: {
message:
'Type the props argument and let TS infer or use ComponentType for a component prop',
},
FC: {
message:
'Type the props argument and let TS infer or use ComponentType for a component prop',
},
},
},
],
},
},
{
files: ['packages/desktop-client/**/*'],
ignores: ['packages/desktop-client/src/hooks/useNavigate.{ts,tsx}'],
rules: {
'no-restricted-imports': [
'warn',
{
paths: [
{
name: 'react-router-dom',
importNames: ['useNavigate'],
message:
"Please import Actual's useNavigate() hook from `src/hooks` instead.",
},
],
},
],
},
},
{
files: ['packages/desktop-client/**/*', 'packages/loot-core/**/*'],
ignores: ['packages/desktop-client/src/redux/index.{ts,tsx}'],
rules: {
'no-restricted-imports': [
'warn',
{
paths: [
{
name: 'react-redux',
importNames: ['useDispatch'],
message:
"Please import Actual's useDispatch() hook from `src/redux` instead.",
},
{
name: 'react-redux',
importNames: ['useSelector'],
message:
"Please import Actual's useSelector() hook from `src/redux` instead.",
},
{
name: 'react-redux',
importNames: ['useStore'],
message:
"Please import Actual's useStore() hook from `src/redux` instead.",
},
],
},
],
},
},
{
files: ['packages/loot-core/src/**/*'],
rules: {
'no-restricted-imports': [
'warn',
{
patterns: [
{
group: ['*.api', '*.web', '*.electron'],
message: "Don't directly reference imports from other platforms",
},
{
group: ['uuid'],
importNames: ['*'],
message: "Use `import { v4 as uuidv4 } from 'uuid'` instead",
},
{
group: ['loot-core/**'],
message:
'Please use relative imports in loot-core instead of importing from `loot-core/*`',
},
{
group: ['@actual-app/web/*'],
message: 'Please do not import `@actual-app/web` in `loot-core`',
},
],
},
],
},
},
{
files: [
'packages/loot-core/src/types/**/*',
'packages/loot-core/src/client/state-types/**/*',
'**/icons/**/*',
'**/{mocks,__mocks__}/**/*',
// can't correctly resolve usages
'**/*.{testing,electron,browser,web,api}.ts',
],
rules: {
'import/no-unused-modules': 'off',
},
},
{
files: [
'packages/desktop-client/src/style/index.*',
'packages/desktop-client/src/style/palette.*',
],
rules: {
'no-restricted-imports': [
'off',
{
patterns: [
{
group: ['**/style', '**/colors'],
importNames: ['colors'],
message: 'Please use themes instead of colors',
},
],
},
],
},
},
{
files: ['packages/api/migrations/*', 'packages/loot-core/migrations/*'],
rules: {
'import/no-default-export': 'off',
},
},
{
files: ['packages/api/index.ts'],
rules: {
'import/no-unresolved': 'off',
},
},
{},
{
// TODO: fix the issues in these files
files: [
'packages/desktop-client/src/components/accounts/Account.jsx',
'packages/desktop-client/src/components/accounts/MobileAccount.jsx',
'packages/desktop-client/src/components/accounts/MobileAccounts.jsx',
'packages/desktop-client/src/components/budget/BudgetCategories.jsx',
'packages/desktop-client/src/components/budget/BudgetSummaries.tsx',
'packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx',
'packages/desktop-client/src/components/budget/index.tsx',
'packages/desktop-client/src/components/budget/MobileBudget.tsx',
'packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx',
'packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx',
'packages/component-library/src/Menu.tsx',
'packages/desktop-client/src/components/FinancesApp.tsx',
'packages/desktop-client/src/components/GlobalKeys.ts',
'packages/desktop-client/src/components/LoggedInUser.tsx',
'packages/desktop-client/src/components/manager/ManagementApp.jsx',
'packages/desktop-client/src/components/manager/subscribe/common.tsx',
'packages/desktop-client/src/components/ManageRules.tsx',
'packages/desktop-client/src/components/mobile/MobileAmountInput.jsx',
'packages/desktop-client/src/components/mobile/MobileNavTabs.tsx',
'packages/desktop-client/src/components/Modals.tsx',
'packages/desktop-client/src/components/modals/EditRule.jsx',
'packages/desktop-client/src/components/modals/ImportTransactions.jsx',
'packages/desktop-client/src/components/modals/MergeUnusedPayees.jsx',
'packages/desktop-client/src/components/Notifications.tsx',
'packages/desktop-client/src/components/payees/ManagePayees.jsx',
'packages/desktop-client/src/components/payees/ManagePayeesWithData.jsx',
'packages/desktop-client/src/components/payees/PayeeTable.tsx',
'packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx',
'packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx',
'packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx',
'packages/desktop-client/src/components/reports/reports/CustomReport.jsx',
'packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx',
'packages/desktop-client/src/components/reports/SaveReportName.tsx',
'packages/desktop-client/src/components/reports/useReport.ts',
'packages/desktop-client/src/components/schedules/ScheduleDetails.jsx',
'packages/desktop-client/src/components/schedules/SchedulesTable.tsx',
'packages/desktop-client/src/components/select/DateSelect.tsx',
'packages/desktop-client/src/components/sidebar/Tools.tsx',
'packages/desktop-client/src/components/sort.tsx',
'packages/desktop-client/src/components/spreadsheet/useSheetValue.ts',
],
rules: {
'react-hooks/exhaustive-deps': 'off',
},
},
{
files: [
'eslint.config.mjs',
'**/*.test.js',
'**/*.test.ts',
'**/*.test.jsx',
'**/*.test.tsx',
'**/*.spec.js',
],
rules: {
'rulesdir/typography': 'off',
},
},
{
files: [
'packages/desktop-client/**/*.{ts,tsx}',
'packages/loot-core/src/client/**/*.{ts,tsx}',
],
ignores: ['**/**/globals.d.ts'],
rules: {
// enforce type over interface
'@typescript-eslint/consistent-type-definitions': ['warn', 'type'],
},
},
{
files: ['packages/sync-server/**/*'],
// TODO: fix the issues in these files
rules: {
'import/extensions': 'off',
'rulesdir/typography': 'off',
},
},
{
files: ['packages/sync-server/src/app-gocardless/banks/*.js'],
rules: {
'import/no-anonymous-default-export': 'off',
'import/no-default-export': 'off',
// can be re-enabled after https://github.com/actualbudget/actual/pull/4253
'@typescript-eslint/no-unused-vars': 'off',
},
},
];

View File

@@ -18,42 +18,71 @@
]
},
"scripts": {
"start": "npm-run-all --parallel 'start:desktop-*'",
"start": "yarn start:browser",
"start:server": "yarn workspace @actual-app/sync-server start",
"start:server-monitor": "yarn workspace @actual-app/sync-server start-monitor",
"start:server-dev": "NODE_ENV=development BROWSER_OPEN=localhost:5006 yarn npm-run-all --parallel 'start:server-monitor' 'start'",
"start:desktop": "yarn rebuild-electron && npm-run-all --parallel 'start:desktop-*'",
"start:desktop-node": "yarn workspace loot-core watch:node",
"start:desktop-client": "yarn workspace @actual-app/web watch",
"start:desktop-electron": "yarn workspace Actual watch",
"start:desktop-electron": "yarn workspace desktop-electron watch",
"start:electron": "yarn start:desktop",
"start:browser": "npm-run-all --parallel 'start:browser-*'",
"start:browser-backend": "yarn workspace loot-core watch:browser",
"start:browser-frontend": "yarn workspace @actual-app/web start:browser",
"build:browser": "./bin/package-browser",
"test": "yarn workspaces foreach --parallel --verbose run test",
"test:debug": "yarn workspaces foreach --verbose run test",
"e2e": "yarn workspaces foreach --parallel --verbose run e2e",
"build:desktop": "./bin/package-electron",
"build:api": "yarn workspace @actual-app/api build",
"generate:i18n": "yarn workspace @actual-app/web generate:i18n",
"test": "yarn workspaces foreach --all --parallel --verbose run test",
"test:debug": "yarn workspaces foreach --all --verbose run test",
"e2e": "yarn workspaces foreach --all --parallel --verbose run e2e",
"vrt": "yarn workspaces foreach --all --parallel --verbose run vrt",
"vrt:docker": "./bin/run-vrt",
"rebuild-electron": "./node_modules/.bin/electron-rebuild -f -m ./packages/loot-core",
"rebuild-node": "yarn workspace loot-core rebuild",
"lint": "cross-env NODE_ENV=development yarn workspaces foreach --verbose run lint --max-warnings 0",
"typecheck": "yarn tsc",
"postinstall": "patch-package"
"lint": "eslint . --max-warnings 0",
"lint:verbose": "DEBUG=eslint:cli-engine eslint . --max-warnings 0",
"install:server": "yarn workspaces focus @actual-app/sync-server --production",
"typecheck": "yarn tsc && tsc-strict",
"jq": "./node_modules/node-jq/bin/jq",
"prepare": "husky"
},
"devDependencies": {
"cross-env": "^5.1.5",
"eslint": "^8.37.0",
"eslint-config-react-app": "7.0.1",
"eslint-plugin-prettier": "4.2.1",
"@typescript-eslint/parser": "^8.18.1",
"cross-env": "^7.0.3",
"eslint": "^9.17.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-typescript": "^3.7.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "5.2.1",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-rulesdir": "^0.2.2",
"npm-run-all": "^4.1.3",
"patch-package": "^6.1.2",
"prettier": "2.8.2",
"react-refresh": "^0.14.0",
"globals": "^15.13.0",
"husky": "^9.0.11",
"lint-staged": "^15.2.9",
"node-jq": "^4.0.1",
"npm-run-all": "^4.1.5",
"prettier": "^3.4.2",
"source-map-support": "^0.5.21",
"typescript": "^5.0.2"
"typescript": "^5.5.4",
"typescript-eslint": "^8.18.1",
"typescript-strict-plugin": "^2.4.4"
},
"resolutions": {
"react-error-overlay": "6.0.9"
"rollup": "4.9.4"
},
"packageManager": "yarn@3.4.1",
"engines": {
"node": ">=18.0.0"
},
"lint-staged": {
"*.{js,jsx,ts,tsx,md,json}": "prettier --write"
},
"packageManager": "yarn@4.3.1",
"browserslist": [
"electron 12.0",
"electron 24.0",
"defaults"
]
}

View File

@@ -1,2 +0,0 @@
app/bundle.api.js
dist

View File

@@ -1,3 +1,5 @@
app/bundle.api.js*
app/stats.json
migrations
default-db.sqlite
mocks/budgets/**/*

View File

@@ -2,4 +2,4 @@
npm install @actual-app/api
```
View docs here: https://actualbudget.github.io/docs/Developers/using-the-API
View docs here: https://actualbudget.org/docs/api/

View File

@@ -0,0 +1,21 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`API setup and teardown successfully loads budget 1`] = `
Array [
"2016-10",
"2016-11",
"2016-12",
"2017-01",
"2017-02",
"2017-03",
"2017-04",
"2017-05",
"2017-06",
"2017-07",
"2017-08",
"2017-09",
"2017-10",
"2017-11",
"2017-12",
]
`;

View File

@@ -23,7 +23,7 @@ class Query {
}
unfilter(exprs) {
let exprSet = new Set(exprs);
const exprSet = new Set(exprs);
return new Query({
...this.state,
filterExpressions: this.state.filterExpressions.filter(
@@ -37,13 +37,13 @@ class Query {
exprs = [exprs];
}
let query = new Query({ ...this.state, selectExpressions: exprs });
const query = new Query({ ...this.state, selectExpressions: exprs });
query.state.calculation = false;
return query;
}
calculate(expr) {
let query = this.select({ result: expr });
const query = this.select({ result: expr });
query.state.calculation = true;
return query;
}
@@ -99,6 +99,6 @@ class Query {
}
}
export default function q(table) {
export function q(table) {
return new Query({ table });
}

View File

@@ -1,31 +0,0 @@
import fetch from 'node-fetch';
import * as bundle from './app/bundle.api';
import * as injected from './injected';
let actualApp;
export const internal = bundle.lib;
export * as methods from './methods';
export * as utils from './utils';
export async function init(config = {}) {
if (actualApp) {
return;
}
global.fetch = fetch;
await bundle.init(config);
actualApp = bundle.lib;
injected.override(bundle.lib.send);
return bundle.lib;
}
export async function shutdown() {
if (actualApp) {
await actualApp.send('close-budget');
actualApp = null;
}
}

49
packages/api/index.ts Normal file
View File

@@ -0,0 +1,49 @@
import type {
RequestInfo as FetchInfo,
RequestInit as FetchInit,
} from 'node-fetch';
// loot-core types
import type { InitConfig } from 'loot-core/server/main';
// @ts-ignore: bundle not available until we build it
// eslint-disable-next-line import/extensions
import * as bundle from './app/bundle.api.js';
import * as injected from './injected';
import { validateNodeVersion } from './validateNodeVersion';
let actualApp: null | typeof bundle.lib;
export const internal = bundle.lib;
export * from './methods';
export * as utils from './utils';
export async function init(config: InitConfig = {}) {
if (actualApp) {
return;
}
validateNodeVersion();
if (!globalThis.fetch) {
globalThis.fetch = (url: URL | RequestInfo, init?: RequestInit) => {
return import('node-fetch').then(({ default: fetch }) =>
fetch(url as unknown as FetchInfo, init as unknown as FetchInit),
) as unknown as Promise<Response>;
};
}
await bundle.init(config);
actualApp = bundle.lib;
injected.override(bundle.lib.send);
return bundle.lib;
}
export async function shutdown() {
if (actualApp) {
await actualApp.send('sync');
await actualApp.send('close-budget');
actualApp = null;
}
}

View File

@@ -0,0 +1,24 @@
module.exports = {
moduleFileExtensions: [
'testing.js',
'testing.ts',
'api.js',
'api.ts',
'api.tsx',
'electron.js',
'electron.ts',
'mjs',
'js',
'ts',
'tsx',
'json',
],
testEnvironment: 'node',
testPathIgnorePatterns: ['/node_modules/'],
watchPathIgnorePatterns: ['<rootDir>/mocks/budgets/'],
setupFilesAfterEnv: ['<rootDir>/../loot-core/src/mocks/setup.ts'],
transformIgnorePatterns: ['/node_modules/'],
transform: {
'^.+\\.(t|j)sx?$': '@swc/jest',
},
};

View File

@@ -1,167 +0,0 @@
import * as injected from './injected';
export { default as q } from './app/query';
function send(name, args) {
return injected.send(name, args);
}
export async function runImport(name, func) {
await send('api/start-import', { budgetName: name });
try {
await func();
} catch (e) {
await send('api/abort-import');
throw e;
}
await send('api/finish-import');
}
export async function loadBudget(budgetId) {
return send('api/load-budget', { id: budgetId });
}
export async function downloadBudget(syncId, { password } = {}) {
return send('api/download-budget', { syncId, password });
}
export async function batchBudgetUpdates(func) {
await send('api/batch-budget-start');
try {
await func();
} finally {
await send('api/batch-budget-end');
}
}
export function runQuery(query) {
return send('api/query', { query: query.serialize() });
}
export function getBudgetMonths() {
return send('api/budget-months');
}
export function getBudgetMonth(month) {
return send('api/budget-month', { month });
}
export function setBudgetAmount(month, categoryId, value) {
return send('api/budget-set-amount', { month, categoryId, amount: value });
}
export function setBudgetCarryover(month, categoryId, flag) {
return send('api/budget-set-carryover', { month, categoryId, flag });
}
export function addTransactions(accountId, transactions) {
return send('api/transactions-add', { accountId, transactions });
}
export function importTransactions(accountId, transactions) {
return send('api/transactions-import', { accountId, transactions });
}
export function getTransactions(accountId, startDate, endDate) {
return send('api/transactions-get', { accountId, startDate, endDate });
}
export function filterTransactions(accountId, text) {
return send('api/transactions-filter', { accountId, text });
}
export function updateTransaction(id, fields) {
return send('api/transaction-update', { id, fields });
}
export function deleteTransaction(id) {
return send('api/transaction-delete', { id });
}
export function getAccounts() {
return send('api/accounts-get');
}
export function createAccount(account, initialBalance) {
return send('api/account-create', { account, initialBalance });
}
export function updateAccount(id, fields) {
return send('api/account-update', { id, fields });
}
export function closeAccount(id, transferAccountId, transferCategoryId) {
return send('api/account-close', {
id,
transferAccountId,
transferCategoryId,
});
}
export function reopenAccount(id) {
return send('api/account-reopen', { id });
}
export function deleteAccount(id) {
return send('api/account-delete', { id });
}
export function createCategoryGroup(group) {
return send('api/category-group-create', { group });
}
export function updateCategoryGroup(id, fields) {
return send('api/category-group-update', { id, fields });
}
export function deleteCategoryGroup(id, transferCategoryId) {
return send('api/category-group-delete', { id, transferCategoryId });
}
export function getCategories() {
return send('api/categories-get', { grouped: false });
}
export function createCategory(category) {
return send('api/category-create', { category });
}
export function updateCategory(id, fields) {
return send('api/category-update', { id, fields });
}
export function deleteCategory(id, transferCategoryId) {
return send('api/category-delete', { id, transferCategoryId });
}
export function getPayees() {
return send('api/payees-get');
}
export function createPayee(payee) {
return send('api/payee-create', { payee });
}
export function updatePayee(id, fields) {
return send('api/payee-update', { id, fields });
}
export function deletePayee(id) {
return send('api/payee-delete', { id });
}
export function getPayeeRules(payeeId) {
return send('api/payee-rules-get', { payeeId });
}
export function createPayeeRule(payeeId, rule) {
return send('api/payee-rule-create', { payee_id: payeeId, rule });
}
export function updatePayeeRule(id, fields) {
return send('api/payee-rule-update', { id, fields });
}
export function deletePayeeRule(id) {
return send('api/payee-rule-delete', { id });
}

View File

@@ -0,0 +1,657 @@
// @ts-strict-ignore
import * as fs from 'fs/promises';
import * as path from 'path';
import * as api from './index';
const budgetName = 'test-budget';
beforeEach(async () => {
// we need real datetime if we are going to mix new timestamps with our mock data
global.restoreDateNow();
const budgetPath = path.join(__dirname, '/mocks/budgets/', budgetName);
await fs.rm(budgetPath, { force: true, recursive: true });
await createTestBudget('default-budget-template', budgetName);
await api.init({
dataDir: path.join(__dirname, '/mocks/budgets/'),
});
});
afterEach(async () => {
global.currentMonth = null;
await api.shutdown();
});
async function createTestBudget(templateName: string, name: string) {
const templatePath = path.join(
__dirname,
'/../loot-core/src/mocks/files',
templateName,
);
const budgetPath = path.join(__dirname, '/mocks/budgets/', name);
await fs.mkdir(budgetPath);
await fs.copyFile(
path.join(templatePath, 'metadata.json'),
path.join(budgetPath, 'metadata.json'),
);
await fs.copyFile(
path.join(templatePath, 'db.sqlite'),
path.join(budgetPath, 'db.sqlite'),
);
}
describe('API setup and teardown', () => {
// apis: loadBudget, getBudgetMonths
test('successfully loads budget', async () => {
await expect(api.loadBudget(budgetName)).resolves.toBeUndefined();
await expect(api.getBudgetMonths()).resolves.toMatchSnapshot();
});
});
describe('API CRUD operations', () => {
beforeEach(async () => {
// load test budget
await api.loadBudget(budgetName);
});
// api: getBudgets
test('getBudgets', async () => {
const budgets = await api.getBudgets();
expect(budgets).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: 'test-budget',
name: 'Default Test Db',
}),
]),
);
});
// apis: getCategoryGroups, createCategoryGroup, updateCategoryGroup, deleteCategoryGroup
test('CategoryGroups: successfully update category groups', async () => {
const month = '2023-10';
global.currentMonth = month;
// get existing category groups
const groups = await api.getCategoryGroups();
expect(groups).toEqual(
expect.arrayContaining([
expect.objectContaining({
hidden: false,
id: 'fc3825fd-b982-4b72-b768-5b30844cf832',
is_income: false,
name: 'Usual Expenses',
}),
expect.objectContaining({
hidden: false,
id: 'a137772f-cf2f-4089-9432-822d2ddc1466',
is_income: false,
name: 'Investments and Savings',
}),
expect.objectContaining({
hidden: false,
id: '2E1F5BDB-209B-43F9-AF2C-3CE28E380C00',
is_income: true,
name: 'Income',
}),
]),
);
// create our test category group
const mainGroupId = await api.createCategoryGroup({
name: 'test-group',
});
let budgetMonth = await api.getBudgetMonth(month);
expect(budgetMonth.categoryGroups).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: mainGroupId,
}),
]),
);
// update group
await api.updateCategoryGroup(mainGroupId, {
name: 'update-tests',
});
budgetMonth = await api.getBudgetMonth(month);
expect(budgetMonth.categoryGroups).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: mainGroupId,
}),
]),
);
// delete group
await api.deleteCategoryGroup(mainGroupId);
budgetMonth = await api.getBudgetMonth(month);
expect(budgetMonth.categoryGroups).toEqual(
expect.arrayContaining([
expect.not.objectContaining({
id: mainGroupId,
}),
]),
);
});
// apis: createCategory, getCategories, updateCategory, deleteCategory
test('Categories: successfully update categories', async () => {
const month = '2023-10';
global.currentMonth = month;
// create our test category group
const mainGroupId = await api.createCategoryGroup({
name: 'test-group',
});
const secondaryGroupId = await api.createCategoryGroup({
name: 'test-secondary-group',
});
const categoryId = await api.createCategory({
name: 'test-budget',
group_id: mainGroupId,
});
const categoryIdHidden = await api.createCategory({
name: 'test-budget-hidden',
group_id: mainGroupId,
hidden: true,
});
let categories = await api.getCategories();
expect(categories).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: categoryId,
name: 'test-budget',
hidden: false,
group_id: mainGroupId,
}),
expect.objectContaining({
id: categoryIdHidden,
name: 'test-budget-hidden',
hidden: true,
group_id: mainGroupId,
}),
]),
);
// update/move category
await api.updateCategory(categoryId, {
name: 'updated-budget',
group_id: secondaryGroupId,
});
await api.updateCategory(categoryIdHidden, {
name: 'updated-budget-hidden',
group_id: secondaryGroupId,
hidden: false,
});
categories = await api.getCategories();
expect(categories).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: categoryId,
name: 'updated-budget',
hidden: false,
group_id: secondaryGroupId,
}),
expect.objectContaining({
id: categoryIdHidden,
name: 'updated-budget-hidden',
hidden: false,
group_id: secondaryGroupId,
}),
]),
);
// delete categories
await api.deleteCategory(categoryId);
expect(categories).toEqual(
expect.arrayContaining([
expect.not.objectContaining({
id: categoryId,
}),
]),
);
});
// apis: setBudgetAmount, setBudgetCarryover, getBudgetMonth
test('Budgets: successfully update budgets', async () => {
const month = '2023-10';
global.currentMonth = month;
// create some new categories to test with
const groupId = await api.createCategoryGroup({
name: 'tests',
});
const categoryId = await api.createCategory({
name: 'test-budget',
group_id: groupId,
});
await api.setBudgetAmount(month, categoryId, 100);
await api.setBudgetCarryover(month, categoryId, true);
const budgetMonth = await api.getBudgetMonth(month);
expect(budgetMonth.categoryGroups).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: groupId,
categories: expect.arrayContaining([
expect.objectContaining({
id: categoryId,
budgeted: 100,
carryover: true,
}),
]),
}),
]),
);
});
//apis: createAccount, getAccounts, updateAccount, closeAccount, deleteAccount, reopenAccount, getAccountBalance
test('Accounts: successfully complete account operators', async () => {
const accountId1 = await api.createAccount(
{ name: 'test-account1', offbudget: true },
1000,
);
const accountId2 = await api.createAccount({ name: 'test-account2' }, 0);
let accounts = await api.getAccounts();
// accounts successfully created
expect(accounts).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: accountId1,
name: 'test-account1',
offbudget: true,
}),
expect.objectContaining({ id: accountId2, name: 'test-account2' }),
]),
);
expect(await api.getAccountBalance(accountId1)).toEqual(1000);
expect(await api.getAccountBalance(accountId2)).toEqual(0);
await api.updateAccount(accountId1, { offbudget: false });
await api.closeAccount(accountId1, accountId2, null);
await api.deleteAccount(accountId2);
// accounts successfully updated, and one of them deleted
accounts = await api.getAccounts();
expect(accounts).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: accountId1,
name: 'test-account1',
closed: true,
offbudget: false,
}),
expect.not.objectContaining({ id: accountId2 }),
]),
);
await api.reopenAccount(accountId1);
// the non-deleted account is reopened
accounts = await api.getAccounts();
expect(accounts).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: accountId1,
name: 'test-account1',
closed: false,
}),
]),
);
});
// apis: createPayee, getPayees, updatePayee, deletePayee
test('Payees: successfully update payees', async () => {
const payeeId1 = await api.createPayee({ name: 'test-payee1' });
const payeeId2 = await api.createPayee({ name: 'test-payee2' });
let payees = await api.getPayees();
// payees successfully created
expect(payees).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: payeeId1,
name: 'test-payee1',
}),
expect.objectContaining({
id: payeeId2,
name: 'test-payee2',
}),
]),
);
await api.updatePayee(payeeId1, { name: 'test-updated-payee' });
await api.deletePayee(payeeId2);
// confirm update and delete were successful
payees = await api.getPayees();
expect(payees).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: payeeId1,
name: 'test-updated-payee',
}),
expect.not.objectContaining({
name: 'test-payee1',
}),
expect.not.objectContaining({
id: payeeId2,
}),
]),
);
});
// apis: getRules, getPayeeRules, createRule, updateRule, deleteRule
test('Rules: successfully update rules', async () => {
await api.createPayee({ name: 'test-payee' });
await api.createPayee({ name: 'test-payee2' });
// create our test rules
const rule = await api.createRule({
stage: 'pre',
conditionsOp: 'and',
conditions: [
{
field: 'payee',
op: 'is',
value: 'test-payee',
},
],
actions: [
{
op: 'set',
field: 'category',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
},
],
});
const rule2 = await api.createRule({
stage: 'pre',
conditionsOp: 'and',
conditions: [
{
field: 'payee',
op: 'is',
value: 'test-payee2',
},
],
actions: [
{
op: 'set',
field: 'category',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
},
],
});
// get existing rules
const rules = await api.getRules();
expect(rules).toEqual(
expect.arrayContaining([
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee2',
}),
]),
conditionsOp: 'and',
id: rule2.id,
stage: 'pre',
}),
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee',
}),
]),
conditionsOp: 'and',
id: rule.id,
stage: 'pre',
}),
]),
);
// get by payee
expect(await api.getPayeeRules('test-payee')).toEqual(
expect.arrayContaining([
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee',
}),
]),
conditionsOp: 'and',
id: rule.id,
stage: 'pre',
}),
]),
);
expect(await api.getPayeeRules('test-payee2')).toEqual(
expect.arrayContaining([
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee2',
}),
]),
conditionsOp: 'and',
id: rule2.id,
stage: 'pre',
}),
]),
);
// update one rule
const updatedRule = {
...rule,
stage: 'post',
conditionsOp: 'or',
};
expect(await api.updateRule(updatedRule)).toEqual(updatedRule);
expect(await api.getRules()).toEqual(
expect.arrayContaining([
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee',
}),
]),
conditionsOp: 'or',
id: rule.id,
stage: 'post',
}),
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee2',
}),
]),
conditionsOp: 'and',
id: rule2.id,
stage: 'pre',
}),
]),
);
// delete rules
await api.deleteRule(rules[1].id);
expect(await api.getRules()).toHaveLength(1);
await api.deleteRule(rules[0].id);
expect(await api.getRules()).toHaveLength(0);
});
// apis: addTransactions, getTransactions, importTransactions, updateTransaction, deleteTransaction
test('Transactions: successfully update transactions', async () => {
const accountId = await api.createAccount({ name: 'test-account' }, 0);
let newTransaction = [
{ date: '2023-11-03', imported_id: '11', amount: 100, notes: 'notes' },
{ date: '2023-11-03', imported_id: '12', amount: 100, notes: '' },
];
const addResult = await api.addTransactions(accountId, newTransaction, {
learnCategories: true,
runTransfers: true,
});
expect(addResult).toBe('ok');
expect(await api.getAccountBalance(accountId)).toEqual(200);
expect(
await api.getAccountBalance(accountId, new Date(2023, 10, 2)),
).toEqual(0);
// confirm added transactions exist
let transactions = await api.getTransactions(
accountId,
'2023-11-01',
'2023-11-30',
);
expect(transactions).toEqual(
expect.arrayContaining(
newTransaction.map(trans => expect.objectContaining(trans)),
),
);
expect(transactions).toHaveLength(2);
newTransaction = [
{ date: '2023-12-03', imported_id: '11', amount: 100, notes: 'notes' },
{ date: '2023-12-03', imported_id: '12', amount: 100, notes: 'notes' },
{ date: '2023-12-03', imported_id: '22', amount: 200, notes: '' },
];
const reconciled = await api.importTransactions(accountId, newTransaction);
// Expect it to reconcile and to have updated one of the previous transactions
expect(reconciled.added).toHaveLength(1);
expect(reconciled.updated).toHaveLength(1);
// confirm imported transactions exist
transactions = await api.getTransactions(
accountId,
'2023-12-01',
'2023-12-31',
);
expect(transactions).toEqual(
expect.arrayContaining([
expect.objectContaining({ imported_id: '22', amount: 200 }),
]),
);
expect(transactions).toHaveLength(1);
// confirm imported transactions update perfomed
transactions = await api.getTransactions(
accountId,
'2023-11-01',
'2023-11-30',
);
expect(transactions).toEqual(
expect.arrayContaining([
expect.objectContaining({ notes: 'notes', amount: 100 }),
]),
);
expect(transactions).toHaveLength(2);
const idToUpdate = reconciled.added[0];
const idToDelete = reconciled.updated[0];
await api.updateTransaction(idToUpdate, { amount: 500 });
await api.deleteTransaction(idToDelete);
// confirm updates and deletions work
transactions = await api.getTransactions(
accountId,
'2023-12-01',
'2023-12-31',
);
expect(transactions).toEqual(
expect.arrayContaining([
expect.objectContaining({ id: idToUpdate, amount: 500 }),
expect.not.objectContaining({ id: idToDelete }),
]),
);
expect(transactions).toHaveLength(1);
});
});

232
packages/api/methods.ts Normal file
View File

@@ -0,0 +1,232 @@
// @ts-strict-ignore
import type { Handlers } from 'loot-core/types/handlers';
import * as injected from './injected';
export { q } from './app/query';
function send<K extends keyof Handlers, T extends Handlers[K]>(
name: K,
args?: Parameters<T>[0],
): Promise<Awaited<ReturnType<T>>> {
return injected.send(name, args);
}
export async function runImport(name, func) {
await send('api/start-import', { budgetName: name });
try {
await func();
} catch (e) {
await send('api/abort-import');
throw e;
}
await send('api/finish-import');
}
export async function loadBudget(budgetId) {
return send('api/load-budget', { id: budgetId });
}
export async function downloadBudget(syncId, { password }: { password? } = {}) {
return send('api/download-budget', { syncId, password });
}
export async function getBudgets() {
return send('api/get-budgets');
}
export async function sync() {
return send('api/sync');
}
export async function runBankSync(args?: { accountId: string }) {
return send('api/bank-sync', args);
}
export async function batchBudgetUpdates(func) {
await send('api/batch-budget-start');
try {
await func();
} finally {
await send('api/batch-budget-end');
}
}
export function runQuery(query) {
return send('api/query', { query: query.serialize() });
}
export function getBudgetMonths() {
return send('api/budget-months');
}
export function getBudgetMonth(month) {
return send('api/budget-month', { month });
}
export function setBudgetAmount(month, categoryId, value) {
return send('api/budget-set-amount', { month, categoryId, amount: value });
}
export function setBudgetCarryover(month, categoryId, flag) {
return send('api/budget-set-carryover', { month, categoryId, flag });
}
export function addTransactions(
accountId,
transactions,
{ learnCategories = false, runTransfers = false } = {},
) {
return send('api/transactions-add', {
accountId,
transactions,
learnCategories,
runTransfers,
});
}
export interface ImportTransactionsOpts {
defaultCleared?: boolean;
}
export function importTransactions(
accountId,
transactions,
opts: ImportTransactionsOpts = {
defaultCleared: true,
},
) {
return send('api/transactions-import', {
accountId,
transactions,
opts,
});
}
export function getTransactions(accountId, startDate, endDate) {
return send('api/transactions-get', { accountId, startDate, endDate });
}
export function updateTransaction(id, fields) {
return send('api/transaction-update', { id, fields });
}
export function deleteTransaction(id) {
return send('api/transaction-delete', { id });
}
export function getAccounts() {
return send('api/accounts-get');
}
export function createAccount(account, initialBalance?) {
return send('api/account-create', { account, initialBalance });
}
export function updateAccount(id, fields) {
return send('api/account-update', { id, fields });
}
export function closeAccount(id, transferAccountId?, transferCategoryId?) {
return send('api/account-close', {
id,
transferAccountId,
transferCategoryId,
});
}
export function reopenAccount(id) {
return send('api/account-reopen', { id });
}
export function deleteAccount(id) {
return send('api/account-delete', { id });
}
export function getAccountBalance(id, cutoff?) {
return send('api/account-balance', { id, cutoff });
}
export function getCategoryGroups() {
return send('api/category-groups-get');
}
export function createCategoryGroup(group) {
return send('api/category-group-create', { group });
}
export function updateCategoryGroup(id, fields) {
return send('api/category-group-update', { id, fields });
}
export function deleteCategoryGroup(id, transferCategoryId?) {
return send('api/category-group-delete', { id, transferCategoryId });
}
export function getCategories() {
return send('api/categories-get', { grouped: false });
}
export function createCategory(category) {
return send('api/category-create', { category });
}
export function updateCategory(id, fields) {
return send('api/category-update', { id, fields });
}
export function deleteCategory(id, transferCategoryId?) {
return send('api/category-delete', { id, transferCategoryId });
}
export function getCommonPayees() {
return send('api/common-payees-get');
}
export function getPayees() {
return send('api/payees-get');
}
export function createPayee(payee) {
return send('api/payee-create', { payee });
}
export function updatePayee(id, fields) {
return send('api/payee-update', { id, fields });
}
export function deletePayee(id) {
return send('api/payee-delete', { id });
}
export function mergePayees(targetId, mergeIds) {
return send('api/payees-merge', { targetId, mergeIds });
}
export function getRules() {
return send('api/rules-get');
}
export function getPayeeRules(id) {
return send('api/payee-rules-get', { id });
}
export function createRule(rule) {
return send('api/rule-create', { rule });
}
export function updateRule(rule) {
return send('api/rule-update', { rule });
}
export function deleteRule(id: string) {
return send('api/rule-delete', id);
}
export function holdBudgetForNextMonth(month, amount) {
return send('api/budget-hold-for-next-month', { month, amount });
}
export function resetBudgetHold(month) {
return send('api/budget-reset-hold', { month });
}

View File

View File

@@ -1,27 +1,40 @@
{
"name": "@actual-app/api",
"version": "5.1.2",
"version": "25.2.1",
"license": "MIT",
"description": "An API for Actual",
"engines": {
"node": ">=18.12.0"
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"types": "@types/index.d.ts",
"files": [
"dist",
"default-db.sqlite",
"migrations"
"@types"
],
"scripts": {
"lint": "eslint .",
"build:app": "yarn workspace loot-core build:api",
"build:node": "tsc --p tsconfig.dist.json",
"build": "yarn run build:app && yarn run build:node"
"build:node": "tsc --p tsconfig.dist.json && tsc-alias -p tsconfig.dist.json",
"build:migrations": "cp migrations/*.sql dist/migrations",
"build:default-db": "cp default-db.sqlite dist/",
"build": "yarn run clean && yarn run build:app && yarn run build:node && yarn run build:migrations && yarn run build:default-db",
"test": "yarn run build:app && jest -c jest.config.js",
"clean": "rm -rf dist @types"
},
"dependencies": {
"better-sqlite3": "^8.2.0",
"node-fetch": "^2.6.9",
"uuid": "3.3.2"
"@actual-app/crdt": "workspace:^",
"better-sqlite3": "^11.7.0",
"compare-versions": "^6.1.0",
"node-fetch": "^3.3.2",
"uuid": "^9.0.1"
},
"devDependencies": {
"typescript": "^5.0.2"
"@swc/core": "^1.5.3",
"@swc/jest": "^0.2.36",
"@types/jest": "^27.5.2",
"@types/uuid": "^9.0.2",
"jest": "^27.5.1",
"tsc-alias": "^1.8.8",
"typescript": "^5.5.4"
}
}

View File

@@ -1,8 +0,0 @@
import * as api from './index';
async function run() {
let app = await api.init({ config: { dataDir: '/tmp' } });
await app.send('create-budget', { testMode: true });
}
run();

View File

@@ -1,11 +1,19 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"target": "es5",
// Using ES2021 because thats the newest version where
// the latest Node 16.x release supports all of the features
"target": "ES2021",
"module": "CommonJS",
"moduleResolution": "node10",
"noEmit": false,
"declaration": true,
"outDir": "dist"
"outDir": "dist",
"declarationDir": "@types",
"paths": {
"loot-core/*": ["./@types/loot-core/*"]
}
},
"include": ["."]
"include": ["."],
"exclude": ["**/node_modules/*", "dist", "@types"]
}

View File

@@ -0,0 +1,16 @@
import { satisfies } from 'compare-versions';
import * as packageJson from './package.json';
export function validateNodeVersion() {
if (process?.versions?.node) {
const nodeVersion = process?.versions?.node;
const minimumNodeVersion = packageJson.engines.node;
if (!satisfies(nodeVersion, minimumNodeVersion)) {
throw new Error(
`@actual-app/api requires a node version ${minimumNodeVersion}. Found that you are using: ${nodeVersion}. Please upgrade to a higher version`,
);
}
}
}

View File

@@ -0,0 +1,40 @@
{
"name": "@actual-app/components",
"version": "0.0.1",
"license": "MIT",
"peerDependencies": {
"react": ">=18.2"
},
"dependencies": {
"@emotion/css": "^11.13.4",
"react-aria-components": "^1.4.1"
},
"devDependencies": {
"@types/react": "^18.2.0",
"react": "18.2.0"
},
"exports": {
"./icons/*": "./src/icons/*.tsx",
"./aligned-text": "./src/AlignedText.tsx",
"./block": "./src/Block.tsx",
"./button": "./src/Button.tsx",
"./card": "./src/Card.tsx",
"./form-error": "./src/FormError.tsx",
"./initial-focus": "./src/InitialFocus.ts",
"./inline-field": "./src/InlineField.tsx",
"./label": "./src/Label.tsx",
"./menu": "./src/Menu.tsx",
"./paragraph": "./src/Paragraph.tsx",
"./popover": "./src/Popover.tsx",
"./space-between": "./src/SpaceBetween.tsx",
"./stack": "./src/Stack.tsx",
"./styles": "./src/styles.ts",
"./text": "./src/Text.tsx",
"./text-one-line": "./src/TextOneLine.tsx",
"./theme": "./src/theme.ts",
"./tokens": "./src/tokens.ts",
"./toggle": "./src/Toggle.tsx",
"./tooltip": "./src/Tooltip.tsx",
"./view": "./src/View.tsx"
}
}

View File

@@ -0,0 +1,55 @@
import { type ComponentProps, type ReactNode, type CSSProperties } from 'react';
import { Block } from './Block';
import { View } from './View';
type AlignedTextProps = ComponentProps<typeof View> & {
left: ReactNode;
right: ReactNode;
style?: CSSProperties;
leftStyle?: CSSProperties;
rightStyle?: CSSProperties;
truncate?: 'left' | 'right';
};
export function AlignedText({
left,
right,
style,
leftStyle,
rightStyle,
truncate = 'left',
...nativeProps
}: AlignedTextProps) {
const truncateStyle: CSSProperties = {
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
overflow: 'hidden',
};
return (
<View
style={{ flexDirection: 'row', alignItems: 'center', ...style }}
{...nativeProps}
>
<Block
style={{
marginRight: 10,
...(truncate === 'left' && truncateStyle),
...leftStyle,
}}
>
{left}
</Block>
<Block
style={{
flex: 1,
textAlign: 'right',
...(truncate === 'right' && truncateStyle),
...rightStyle,
}}
>
{right}
</Block>
</View>
);
}

View File

@@ -0,0 +1,17 @@
import { type HTMLProps, type Ref } from 'react';
import { css, cx } from '@emotion/css';
import { type CSSProperties } from './styles';
type BlockProps = HTMLProps<HTMLDivElement> & {
innerRef?: Ref<HTMLDivElement>;
style?: CSSProperties;
};
export function Block(props: BlockProps) {
const { className = '', style, innerRef, ...restProps } = props;
return (
<div {...restProps} ref={innerRef} className={cx(className, css(style))} />
);
}

View File

@@ -0,0 +1,238 @@
import React, {
forwardRef,
useMemo,
type ComponentPropsWithoutRef,
type ReactNode,
type CSSProperties,
} from 'react';
import { Button as ReactAriaButton } from 'react-aria-components';
import { css } from '@emotion/css';
import { AnimatedLoading } from './icons/AnimatedLoading';
import { styles } from './styles';
import { theme } from './theme';
import { View } from './View';
const backgroundColor: {
[key in ButtonVariant | `${ButtonVariant}Disabled`]?: string;
} = {
normal: theme.buttonNormalBackground,
normalDisabled: theme.buttonNormalDisabledBackground,
primary: theme.buttonPrimaryBackground,
primaryDisabled: theme.buttonPrimaryDisabledBackground,
bare: theme.buttonBareBackground,
bareDisabled: theme.buttonBareDisabledBackground,
menu: theme.buttonMenuBackground,
menuSelected: theme.buttonMenuSelectedBackground,
};
const backgroundColorHover: Record<
ButtonVariant | `${ButtonVariant}Disabled`,
CSSProperties['backgroundColor']
> = {
normal: theme.buttonNormalBackgroundHover,
primary: theme.buttonPrimaryBackgroundHover,
bare: theme.buttonBareBackgroundHover,
menu: theme.buttonMenuBackgroundHover,
menuSelected: theme.buttonMenuSelectedBackgroundHover,
normalDisabled: 'transparent',
primaryDisabled: 'transparent',
bareDisabled: 'transparent',
menuDisabled: 'transparent',
menuSelectedDisabled: 'transparent',
};
const borderColor: {
[key in
| ButtonVariant
| `${ButtonVariant}Disabled`]?: CSSProperties['borderColor'];
} = {
normal: theme.buttonNormalBorder,
normalDisabled: theme.buttonNormalDisabledBorder,
primary: theme.buttonPrimaryBorder,
primaryDisabled: theme.buttonPrimaryDisabledBorder,
menu: theme.buttonMenuBorder,
menuSelected: theme.buttonMenuSelectedBorder,
};
const textColor: {
[key in ButtonVariant | `${ButtonVariant}Disabled`]?: CSSProperties['color'];
} = {
normal: theme.buttonNormalText,
normalDisabled: theme.buttonNormalDisabledText,
primary: theme.buttonPrimaryText,
primaryDisabled: theme.buttonPrimaryDisabledText,
bare: theme.buttonBareText,
bareDisabled: theme.buttonBareDisabledText,
menu: theme.buttonMenuText,
menuSelected: theme.buttonMenuSelectedText,
};
const textColorHover: {
[key in ButtonVariant]?: string;
} = {
normal: theme.buttonNormalTextHover,
primary: theme.buttonPrimaryTextHover,
bare: theme.buttonBareTextHover,
menu: theme.buttonMenuTextHover,
menuSelected: theme.buttonMenuSelectedTextHover,
};
const _getBorder = (
variant: ButtonVariant,
variantWithDisabled: keyof typeof borderColor,
): string => {
switch (variant) {
case 'bare':
return 'none';
default:
return '1px solid ' + borderColor[variantWithDisabled];
}
};
const _getPadding = (variant: ButtonVariant): string => {
switch (variant) {
case 'bare':
return '5px';
default:
return '5px 10px';
}
};
const _getHoveredStyles = (variant: ButtonVariant): CSSProperties => ({
...(variant !== 'bare' && styles.shadow),
backgroundColor: backgroundColorHover[variant],
color: textColorHover[variant],
cursor: 'pointer',
});
const _getActiveStyles = (
variant: ButtonVariant,
bounce: boolean,
): CSSProperties => {
switch (variant) {
case 'bare':
return { backgroundColor: theme.buttonBareBackgroundActive };
default:
return {
transform: bounce ? 'translateY(1px)' : undefined,
boxShadow: `0 1px 4px 0 ${
variant === 'primary'
? theme.buttonPrimaryShadow
: theme.buttonNormalShadow
}`,
transition: 'none',
};
}
};
type ButtonProps = ComponentPropsWithoutRef<typeof ReactAriaButton> & {
variant?: ButtonVariant;
bounce?: boolean;
children?: ReactNode;
};
type ButtonVariant = 'normal' | 'primary' | 'bare' | 'menu' | 'menuSelected';
export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
(props, ref) => {
const { children, variant = 'normal', bounce = true, ...restProps } = props;
const variantWithDisabled: ButtonVariant | `${ButtonVariant}Disabled` =
props.isDisabled ? `${variant}Disabled` : variant;
const defaultButtonClassName: string = useMemo(
() =>
String(
css({
alignItems: 'center',
justifyContent: 'center',
flexShrink: 0,
padding: _getPadding(variant),
margin: 0,
overflow: 'hidden',
display: 'flex',
borderRadius: 4,
backgroundColor: backgroundColor[variantWithDisabled],
border: _getBorder(variant, variantWithDisabled),
color: textColor[variantWithDisabled],
transition: 'box-shadow .25s',
WebkitAppRegion: 'no-drag',
...styles.smallText,
'&[data-hovered]': _getHoveredStyles(variant),
'&[data-pressed]': _getActiveStyles(variant, bounce),
}),
),
[bounce, variant, variantWithDisabled],
);
const className = restProps.className;
return (
<ReactAriaButton
ref={ref}
{...restProps}
className={
typeof className === 'function'
? renderProps =>
`${defaultButtonClassName} ${className(renderProps)}`
: `${defaultButtonClassName} ${className || ''}`
}
>
{children}
</ReactAriaButton>
);
},
);
Button.displayName = 'Button';
type ButtonWithLoadingProps = ButtonProps & {
isLoading?: boolean;
};
export const ButtonWithLoading = forwardRef<
HTMLButtonElement,
ButtonWithLoadingProps
>((props, ref) => {
const { isLoading, children, style, ...buttonProps } = props;
return (
<Button
{...buttonProps}
ref={ref}
style={buttonRenderProps => ({
position: 'relative',
...(typeof style === 'function' ? style(buttonRenderProps) : style),
})}
>
{isLoading && (
<View
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
alignItems: 'center',
justifyContent: 'center',
}}
>
<AnimatedLoading style={{ width: 20, height: 20 }} />
</View>
)}
<View
style={{
opacity: isLoading ? 0 : 1,
flexDirection: 'row',
alignItems: 'center',
}}
>
{children}
</View>
</Button>
);
});
ButtonWithLoading.displayName = 'ButtonWithLoading';

View File

@@ -0,0 +1,38 @@
import { type ComponentProps, forwardRef } from 'react';
import { theme } from './theme';
import { View } from './View';
type CardProps = ComponentProps<typeof View>;
export const Card = forwardRef<HTMLDivElement, CardProps>(
({ children, ...props }, ref) => {
return (
<View
{...props}
ref={ref}
style={{
marginTop: 15,
marginLeft: 5,
marginRight: 5,
borderRadius: 6,
backgroundColor: theme.cardBackground,
borderColor: theme.cardBorder,
boxShadow: '0 1px 2px #9594A8',
...props.style,
}}
>
<View
style={{
borderRadius: 6,
overflow: 'hidden',
}}
>
{children}
</View>
</View>
);
},
);
Card.displayName = 'Card';

View File

@@ -0,0 +1,14 @@
import { type ReactNode, type CSSProperties } from 'react';
import { View } from './View';
type FormErrorProps = {
style?: CSSProperties;
children?: ReactNode;
};
export function FormError({ style, children }: FormErrorProps) {
return (
<View style={{ color: 'red', fontSize: 13, ...style }}>{children}</View>
);
}

View File

@@ -0,0 +1,36 @@
import {
type ReactElement,
type Ref,
cloneElement,
useEffect,
useRef,
} from 'react';
type InitialFocusProps = {
children:
| ReactElement<{ inputRef: Ref<HTMLInputElement> }>
| ((node: Ref<HTMLInputElement>) => ReactElement);
};
export function InitialFocus({ children }: InitialFocusProps) {
const node = useRef<HTMLInputElement>(null);
useEffect(() => {
if (node.current) {
// This is needed to avoid a strange interaction with
// `ScopeTab`, which doesn't allow it to be focused at first for
// some reason. Need to look into it.
setTimeout(() => {
if (node.current) {
node.current.focus();
node.current.setSelectionRange(0, 10000);
}
}, 0);
}
}, []);
if (typeof children === 'function') {
return children(node);
}
return cloneElement(children, { inputRef: node });
}

View File

@@ -0,0 +1,47 @@
import { type ReactNode } from 'react';
import { css } from '@emotion/css';
import { type CSSProperties } from './styles';
type InlineFieldProps = {
label: ReactNode;
labelWidth?: number;
children?: ReactNode;
width: number | string;
style?: CSSProperties;
};
export function InlineField({
label,
labelWidth,
children,
width,
style,
}: InlineFieldProps) {
return (
<label
className={css([
{
display: 'flex',
flexDirection: 'row',
alignItems: 'center',
margin: '7px 0',
width,
},
style,
])}
>
<div
style={{
width: labelWidth || 75,
textAlign: 'right',
paddingRight: 10,
}}
>
{label}:
</div>
{children}
</label>
);
}

View File

@@ -0,0 +1,32 @@
import { forwardRef, type ReactNode, type CSSProperties } from 'react';
import { styles } from './styles';
import { Text } from './Text';
import { theme } from './theme';
type LabelProps = {
title: ReactNode;
style?: CSSProperties;
};
export const Label = forwardRef<HTMLSpanElement, LabelProps>(
({ title, style }: LabelProps, ref) => {
return (
<Text
ref={ref}
style={{
...styles.text,
color: theme.tableRowHeaderText,
textAlign: 'right',
fontSize: 14,
marginBottom: 2,
...style,
}}
>
{title}
</Text>
);
},
);
Label.displayName = 'Label';

View File

@@ -0,0 +1,241 @@
import {
type ReactNode,
useEffect,
useRef,
useState,
type ComponentType,
type SVGProps,
type CSSProperties,
} from 'react';
import { Text } from './Text';
import { theme } from './theme';
import { Toggle } from './Toggle';
import { View } from './View';
const MenuLine: unique symbol = Symbol('menu-line');
const MenuLabel: unique symbol = Symbol('menu-label');
Menu.line = MenuLine;
Menu.label = MenuLabel;
type KeybindingProps = {
keyName: ReactNode;
};
function Keybinding({ keyName }: KeybindingProps) {
return (
<Text style={{ fontSize: 10, color: theme.menuKeybindingText }}>
{keyName}
</Text>
);
}
export type MenuItemObject<NameType, Type extends string | symbol = string> = {
type?: Type;
name: NameType;
disabled?: boolean;
icon?: ComponentType<SVGProps<SVGSVGElement>>;
iconSize?: number;
text: string;
key?: string;
toggle?: boolean;
tooltip?: string;
};
export type MenuItem<NameType = string> =
| MenuItemObject<NameType>
| MenuItemObject<string, typeof Menu.label>
| typeof Menu.line;
function isLabel<T>(
item: MenuItemObject<T> | MenuItemObject<string, typeof Menu.label>,
): item is MenuItemObject<string, typeof Menu.label> {
return item.type === Menu.label;
}
type MenuProps<NameType> = {
header?: ReactNode;
footer?: ReactNode;
items: Array<MenuItem<NameType>>;
onMenuSelect?: (itemName: NameType) => void;
style?: CSSProperties;
className?: string;
getItemStyle?: (item: MenuItemObject<NameType>) => CSSProperties;
};
export function Menu<const NameType = string>({
header,
footer,
items: allItems,
onMenuSelect,
style,
className,
getItemStyle,
}: MenuProps<NameType>) {
const elRef = useRef<HTMLDivElement>(null);
const items = allItems.filter(x => x);
const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);
useEffect(() => {
const el = elRef.current;
el?.focus();
const onKeyDown = (e: KeyboardEvent) => {
const filteredItems = items.filter(
item => item && item !== Menu.line && item.type !== Menu.label,
);
const currentIndex = filteredItems.indexOf(items[hoveredIndex || 0]);
const transformIndex = (idx: number) => items.indexOf(filteredItems[idx]);
switch (e.key) {
case 'ArrowUp':
e.preventDefault();
setHoveredIndex(
hoveredIndex === null
? 0
: transformIndex(Math.max(currentIndex - 1, 0)),
);
break;
case 'ArrowDown':
e.preventDefault();
setHoveredIndex(
hoveredIndex === null
? 0
: transformIndex(
Math.min(currentIndex + 1, filteredItems.length - 1),
),
);
break;
case 'Enter':
e.preventDefault();
const item = items[hoveredIndex || 0];
if (hoveredIndex !== null && item !== Menu.line && !isLabel(item)) {
onMenuSelect?.(item.name);
}
break;
default:
}
};
el?.addEventListener('keydown', onKeyDown);
return () => {
el?.removeEventListener('keydown', onKeyDown);
};
}, [hoveredIndex]);
return (
<View
className={className}
style={{ outline: 'none', borderRadius: 4, overflow: 'hidden', ...style }}
tabIndex={1}
innerRef={elRef}
>
{header}
{items.map((item, idx) => {
if (item === Menu.line) {
return (
<View key={idx} style={{ margin: '3px 0px' }}>
<View style={{ borderTop: '1px solid ' + theme.menuBorder }} />
</View>
);
} else if (isLabel(item)) {
return (
<Text
key={idx}
style={{
color: theme.menuItemTextHeader,
fontSize: 11,
lineHeight: '1em',
textTransform: 'uppercase',
margin: '3px 9px',
marginTop: 5,
}}
>
{item.name}
</Text>
);
}
const Icon = item.icon;
return (
<View
role="button"
key={String(item.name)}
style={{
cursor: 'default',
padding: 10,
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
color: theme.menuItemText,
...(item.disabled && { color: theme.buttonBareDisabledText }),
...(!item.disabled &&
hoveredIndex === idx && {
backgroundColor: theme.menuItemBackgroundHover,
color: theme.menuItemTextHover,
}),
...(!isLabel(item) && getItemStyle?.(item)),
}}
onPointerEnter={() => setHoveredIndex(idx)}
onPointerLeave={() => setHoveredIndex(null)}
onPointerUp={e => {
e.stopPropagation();
if (
!item.disabled &&
item.toggle === undefined &&
!isLabel(item)
) {
onMenuSelect?.(item.name);
}
}}
>
{/* Force it to line up evenly */}
{item.toggle === undefined ? (
<>
{Icon && (
<Icon
width={item.iconSize || 10}
height={item.iconSize || 10}
style={{ marginRight: 7, width: item.iconSize || 10 }}
/>
)}
<Text title={item.tooltip}>{item.text}</Text>
<View style={{ flex: 1 }} />
</>
) : (
<View
style={{
flexDirection: 'row',
flex: 1,
justifyContent: 'space-between',
alignItems: 'center',
}}
>
<label htmlFor={String(item.name)} title={item.tooltip}>
{item.text}
</label>
<Toggle
id={String(item.name)}
isOn={item.toggle}
style={{ marginLeft: 5 }}
onToggle={() =>
!item.disabled &&
!isLabel(item) &&
item.toggle !== undefined &&
onMenuSelect?.(item.name)
}
/>
</View>
)}
{item.key && <Keybinding keyName={item.key} />}
</View>
);
})}
{footer}
</View>
);
}

View File

@@ -0,0 +1,32 @@
import { type HTMLProps } from 'react';
import { css } from '@emotion/css';
import { type CSSProperties } from './styles';
type ParagraphProps = HTMLProps<HTMLDivElement> & {
style?: CSSProperties;
isLast?: boolean;
};
export function Paragraph({
style,
isLast,
children,
...props
}: ParagraphProps) {
return (
<div
{...props}
className={css([
!isLast && { marginBottom: 15 },
style,
{
lineHeight: '1.5em',
},
])}
>
{children}
</div>
);
}

View File

@@ -0,0 +1,57 @@
import { type ComponentProps, useCallback, useEffect, useRef } from 'react';
import { Popover as ReactAriaPopover } from 'react-aria-components';
import { css } from '@emotion/css';
import { styles } from './styles';
type PopoverProps = ComponentProps<typeof ReactAriaPopover>;
export const Popover = ({
style = {},
shouldCloseOnInteractOutside,
...props
}: PopoverProps) => {
const ref = useRef<HTMLElement>(null);
const handleFocus = useCallback(
(e: FocusEvent) => {
if (!ref.current?.contains(e.relatedTarget as Node)) {
props.onOpenChange?.(false);
}
},
[props],
);
useEffect(() => {
if (!props.isNonModal) return;
if (props.isOpen) {
ref.current?.addEventListener('focusout', handleFocus);
} else {
ref.current?.removeEventListener('focusout', handleFocus);
}
}, [handleFocus, props.isNonModal, props.isOpen]);
return (
<ReactAriaPopover
ref={ref}
placement="bottom end"
offset={1}
className={css({
...styles.tooltip,
...styles.lightScrollbar,
padding: 0,
userSelect: 'none',
...style,
})}
shouldCloseOnInteractOutside={element => {
if (shouldCloseOnInteractOutside) {
return shouldCloseOnInteractOutside(element);
}
return true;
}}
{...props}
/>
);
};

View File

@@ -0,0 +1,31 @@
import React, { type CSSProperties, type ReactNode } from 'react';
import { View } from './View';
type SpaceBetweenProps = {
direction?: 'horizontal' | 'vertical';
gap?: number;
style?: CSSProperties;
children: ReactNode;
};
export const SpaceBetween = ({
direction = 'horizontal',
gap = 15,
style,
children,
}: SpaceBetweenProps) => {
return (
<View
style={{
flexWrap: 'wrap',
flexDirection: direction === 'horizontal' ? 'row' : 'column',
alignItems: 'center',
gap,
...style,
}}
>
{children}
</View>
);
};

View File

@@ -0,0 +1,98 @@
// @ts-strict-ignore
import React, {
Children,
type ComponentProps,
Fragment,
cloneElement,
forwardRef,
type ReactNode,
type CSSProperties,
} from 'react';
import { Text } from './Text';
import { View } from './View';
function getChildren(key, children) {
return Children.toArray(children).reduce(
(list, child) => {
if (child) {
if (
typeof child === 'object' &&
'type' in child &&
child.type === Fragment
) {
return list.concat(getChildren(child.key, child.props.children));
}
list.push({ key: key + child['key'], child });
return list;
}
return list;
},
[] as Array<{ key: string; child: ReactNode }>,
);
}
type StackProps = ComponentProps<typeof View> & {
direction?: CSSProperties['flexDirection'];
align?: string;
justify?: string;
spacing?: number;
debug?: boolean;
};
export const Stack = forwardRef<HTMLDivElement, StackProps>(
(
{
direction = 'column',
align,
justify,
spacing = 3,
children,
debug,
style,
...props
},
ref,
) => {
const isReversed = direction.endsWith('reverse');
const isHorizontal = direction.startsWith('row');
const validChildren = getChildren('', children);
return (
<View
style={{
flexDirection: direction,
alignItems: align,
justifyContent: justify,
...style,
}}
innerRef={ref}
{...props}
>
{validChildren.map(({ key, child }, index) => {
const isLastChild = validChildren.length === index + 1;
let marginProp;
if (isHorizontal) {
marginProp = isReversed ? 'marginLeft' : 'marginRight';
} else {
marginProp = isReversed ? 'marginTop' : 'marginBottom';
}
return cloneElement(
typeof child === 'string' ? <Text>{child}</Text> : child,
{
key,
style: {
...(debug && { borderWidth: 1, borderColor: 'red' }),
...(isLastChild ? null : { [marginProp]: spacing * 5 }),
...(child.props ? child.props.style : null),
},
},
);
})}
</View>
);
},
);
Stack.displayName = 'Stack';

View File

@@ -0,0 +1,30 @@
import React, {
type HTMLProps,
type Ref,
type ReactNode,
forwardRef,
} from 'react';
import { css, cx } from '@emotion/css';
import { type CSSProperties } from './styles';
type TextProps = HTMLProps<HTMLSpanElement> & {
innerRef?: Ref<HTMLSpanElement>;
className?: string;
children?: ReactNode;
style?: CSSProperties;
};
export const Text = forwardRef<HTMLSpanElement, TextProps>((props, ref) => {
const { className = '', style, innerRef, ...restProps } = props;
return (
<span
{...restProps}
ref={innerRef ?? ref}
className={cx(className, css(style))}
/>
);
});
Text.displayName = 'Text';

View File

@@ -0,0 +1,22 @@
import { type ComponentProps } from 'react';
import { Text } from './Text';
type TextOneLineProps = ComponentProps<typeof Text>;
export function TextOneLine({ children, ...props }: TextOneLineProps) {
return (
<Text
{...props}
style={{
...props.style,
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
display: 'block',
}}
>
{children}
</Text>
);
}

View File

@@ -0,0 +1,88 @@
import React, { type CSSProperties } from 'react';
import { css } from '@emotion/css';
import { theme } from './theme';
import { View } from './View';
type ToggleProps = {
id: string;
isOn: boolean;
isDisabled?: boolean;
onToggle?: (isOn: boolean) => void;
className?: string;
style?: CSSProperties;
};
export const Toggle = ({
id,
isOn,
isDisabled = false,
onToggle,
className,
style,
}: ToggleProps) => {
return (
<View style={style} className={className}>
<input
id={id}
checked={isOn}
disabled={isDisabled}
onChange={e => onToggle?.(e.target.checked)}
className={css({
height: 0,
width: 0,
visibility: 'hidden',
})}
type="checkbox"
/>
<label
data-toggle-container
data-on={isOn}
className={String(
css({
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
cursor: 'pointer',
width: '32px',
height: '16px',
borderRadius: '100px',
position: 'relative',
transition: 'background-color .2s',
backgroundColor: isOn
? theme.checkboxToggleBackgroundSelected
: theme.checkboxToggleBackground,
}),
)}
htmlFor={id}
>
<span
data-toggle
data-on={isOn}
className={css(
{
// eslint-disable-next-line rulesdir/typography
content: '" "',
position: 'absolute',
top: '2px',
left: '2px',
width: '12px',
height: '12px',
borderRadius: '100px',
transition: '0.2s',
boxShadow: '0 0 2px 0 rgba(10, 10, 10, 0.29)',
backgroundColor: isDisabled
? theme.checkboxToggleDisabled
: '#fff',
},
isOn && {
left: 'calc(100% - 2px)',
transform: 'translateX(-100%)',
},
)}
/>
</label>
</View>
);
};

View File

@@ -0,0 +1,71 @@
import React, {
useCallback,
useEffect,
useRef,
useState,
type ComponentProps,
type ReactNode,
} from 'react';
import { Tooltip as AriaTooltip, TooltipTrigger } from 'react-aria-components';
import { styles } from './styles';
import { View } from './View';
type TooltipProps = Partial<ComponentProps<typeof AriaTooltip>> & {
children: ReactNode;
content: ReactNode;
triggerProps?: Partial<ComponentProps<typeof TooltipTrigger>>;
};
export const Tooltip = ({
children,
content,
triggerProps = {},
...props
}: TooltipProps) => {
const triggerRef = useRef(null);
const [isHovered, setIsHover] = useState(false);
const hoverTimeoutRef = useRef<ReturnType<typeof setTimeout>>();
const handlePointerEnter = useCallback(() => {
const timeout = setTimeout(() => {
setIsHover(true);
}, triggerProps.delay ?? 300);
hoverTimeoutRef.current = timeout;
}, [triggerProps.delay]);
const handlePointerLeave = useCallback(() => {
if (hoverTimeoutRef.current) {
clearTimeout(hoverTimeoutRef.current);
}
setIsHover(false);
}, []);
// Force closing the tooltip whenever the disablement state changes
useEffect(() => {
setIsHover(false);
}, [triggerProps.isDisabled]);
return (
<View
style={{ minHeight: 'auto', flexShrink: 0, maxWidth: '100%' }}
ref={triggerRef}
onMouseEnter={handlePointerEnter}
onMouseLeave={handlePointerLeave}
>
<TooltipTrigger
isOpen={isHovered && !triggerProps.isDisabled}
{...triggerProps}
>
{children}
<AriaTooltip triggerRef={triggerRef} style={styles.tooltip} {...props}>
{content}
</AriaTooltip>
</TooltipTrigger>
</View>
);
};

View File

@@ -0,0 +1,31 @@
import React, { forwardRef, type HTMLProps, type Ref } from 'react';
import { css, cx } from '@emotion/css';
import { type CSSProperties } from './styles';
type ViewProps = HTMLProps<HTMLDivElement> & {
className?: string;
style?: CSSProperties;
nativeStyle?: CSSProperties;
innerRef?: Ref<HTMLDivElement>;
};
export const View = forwardRef<HTMLDivElement, ViewProps>((props, ref) => {
// The default styles are special-cased and pulled out into static
// styles, and hardcode the class name here. View is used almost
// everywhere and we can avoid any perf penalty that glamor would
// incur.
const { className = '', style, nativeStyle, innerRef, ...restProps } = props;
return (
<div
{...restProps}
ref={innerRef ?? ref}
style={nativeStyle}
className={cx('view', className, css(style))}
/>
);
});
View.displayName = 'View';

View File

@@ -0,0 +1,26 @@
import React, { type SVGProps } from 'react';
import { css, keyframes } from '@emotion/css';
import { SvgLoading } from './Loading';
const rotation = keyframes({
'0%': { transform: 'rotate(-90deg)' },
'100%': { transform: 'rotate(666deg)' },
});
export function AnimatedLoading(props: SVGProps<SVGSVGElement>) {
return (
<span
className={css({
animationName: rotation,
animationDuration: '1.6s',
animationTimingFunction: 'cubic-bezier(0.17, 0.67, 0.83, 0.67)',
animationIterationCount: 'infinite',
lineHeight: 0,
})}
>
<SvgLoading {...props} />
</span>
);
}

View File

@@ -0,0 +1,33 @@
import React, { type SVGProps, useState } from 'react';
export const SvgLoading = (props: SVGProps<SVGSVGElement>) => {
const { color = 'currentColor' } = props;
const [gradientId] = useState('gradient-' + Math.random());
return (
<svg {...props} viewBox="0 0 38 38" style={{ ...props.style }}>
<defs>
<linearGradient
x1="8.042%"
y1="0%"
x2="65.682%"
y2="23.865%"
id={gradientId}
>
<stop stopColor={color} stopOpacity={0} offset="0%" />
<stop stopColor={color} stopOpacity={0.631} offset="63.146%" />
<stop stopColor={color} offset="100%" />
</linearGradient>
</defs>
<g transform="translate(1 2)" fill="none" fillRule="evenodd">
<path
d="M36 18c0-9.94-8.06-18-18-18"
stroke={'url(#' + gradientId + ')'}
strokeWidth={2}
fill="none"
/>
<circle fill={color} cx={36} cy={18} r={1} />
</g>
</svg>
);
};

View File

@@ -0,0 +1,157 @@
import { keyframes } from '@emotion/css';
import { theme } from './theme';
import { tokens } from './tokens';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type CSSProperties = Record<string, any>;
const MOBILE_MIN_HEIGHT = 40;
const shadowLarge = {
boxShadow: '0 15px 30px 0 rgba(0,0,0,0.11), 0 5px 15px 0 rgba(0,0,0,0.08)',
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const styles: Record<string, any> = {
incomeHeaderHeight: 70,
cardShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',
monthRightPadding: 5,
menuBorderRadius: 4,
mobileMinHeight: MOBILE_MIN_HEIGHT,
mobileMenuItem: {
fontSize: 17,
fontWeight: 400,
paddingTop: 8,
paddingBottom: 8,
height: MOBILE_MIN_HEIGHT,
minHeight: MOBILE_MIN_HEIGHT,
},
mobileEditingPadding: 12,
altMenuMaxHeight: 250,
altMenuText: {
fontSize: 13,
},
altMenuHeaderText: {
fontSize: 13,
fontWeight: 700,
},
veryLargeText: {
fontSize: 30,
fontWeight: 600,
},
largeText: {
fontSize: 20,
fontWeight: 700,
letterSpacing: 0.5,
},
mediumText: {
fontSize: 15,
fontWeight: 500,
},
smallText: {
fontSize: 13,
},
verySmallText: {
fontSize: 12,
},
tinyText: {
fontSize: 10,
},
page: {
flex: 1,
'@media (max-height: 550px)': {
minHeight: 700, // ensure we can scroll on small screens
},
paddingTop: 8, // height of the titlebar
[`@media (min-width: ${tokens.breakpoint_small})`]: {
paddingTop: 36,
},
},
pageContent: {
paddingLeft: 2,
paddingRight: 2,
[`@media (min-width: ${tokens.breakpoint_small})`]: {
paddingLeft: 20,
paddingRight: 20,
},
},
settingsPageContent: {
padding: 20,
[`@media (min-width: ${tokens.breakpoint_small})`]: {
padding: 'inherit',
},
},
staticText: {
cursor: 'default',
userSelect: 'none',
},
shadow: {
boxShadow: '0 2px 4px 0 rgba(0,0,0,0.1)',
},
shadowLarge,
tnum: {
// eslint-disable-next-line rulesdir/typography
fontFeatureSettings: '"tnum"',
},
notFixed: { fontFeatureSettings: '' },
text: {
fontSize: 16,
// lineHeight: 22.4 // TODO: This seems like trouble, but what's the right value?
},
delayedFadeIn: {
animationName: keyframes({
'0%': { opacity: 0 },
'100%': { opacity: 1 },
}),
animationDuration: '1s',
animationFillMode: 'both',
animationDelay: '0.5s',
},
underlinedText: {
borderBottom: `2px solid`,
},
noTapHighlight: {
WebkitTapHighlightColor: 'transparent',
':focus': {
outline: 'none',
},
},
lineClamp: (lines: number) => {
return {
display: '-webkit-box',
WebkitLineClamp: lines,
WebkitBoxOrient: 'vertical',
overflow: 'hidden',
textOverflow: 'ellipsis',
wordBreak: 'break-word',
};
},
tooltip: {
padding: 5,
...shadowLarge,
borderWidth: 2,
borderRadius: 4,
borderStyle: 'solid',
borderColor: theme.tooltipBorder,
backgroundColor: theme.tooltipBackground,
color: theme.tooltipText,
overflow: 'auto',
},
popover: {
border: 'none',
backgroundColor: theme.menuBackground,
color: theme.menuItemText,
},
// Dynamically set
horizontalScrollbar: null as CSSProperties | null,
lightScrollbar: null as CSSProperties | null,
darkScrollbar: null as CSSProperties | null,
scrollbarWidth: null as number | null,
editorPill: {
color: theme.pillText,
backgroundColor: theme.pillBackground,
borderRadius: 4,
padding: '3px 5px',
},
};

Some files were not shown because too many files have changed in this diff Show More