Compare commits

...

379 Commits

Author SHA1 Message Date
Joel Jeremy Marquez
58b57aefe1 arial-labels 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
e25683f130 Fix typecheck error 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
496c76c7f9 vrt 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
b7d4964539 Add pillBackgroundHover 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
7479df359a Fix OpButton hover 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
b1b14d0813 VRT 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
b710b9675e Remove title 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
f8fb4a9ba7 Release notes 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
9f738956d7 React Aria Button on autocomplete and filters 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
dc9ce974a5 VRT 2024-07-15 12:56:47 -07:00
Joel Jeremy Marquez
27974c63fd VRT 2024-07-15 12:56:46 -07: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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2901b5e5d0 :electron: Update Electron to latest stable version (#2763) 2024-05-16 20:18:50 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Matiss Janis Aboltins
b700aee87d ♻️ (typescript) move some files to strict mode (#2403) 2024-03-03 17:50:13 +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
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
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
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
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
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
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
820 changed files with 35887 additions and 24805 deletions

View File

@@ -38,6 +38,7 @@ module.exports = {
extends: [
'react-app',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:import/typescript',
@@ -57,7 +58,7 @@ module.exports = {
'@typescript-eslint/no-unused-vars': [
'warn',
{
varsIgnorePattern: '^_',
varsIgnorePattern: '^(_|React)',
ignoreRestSiblings: true,
},
],
@@ -90,15 +91,7 @@ module.exports = {
'react/prop-types': 'off',
// TODO: re-enable these rules
'react-hooks/exhaustive-deps': 'off',
'react/display-name': 'off',
'react/react-in-jsx-scope': 'off',
// 'react-hooks/exhaustive-deps': [
// 'warn',
// {
// additionalHooks: 'useLiveQuery',
// },
// ],
'no-var': 'warn',
'react/jsx-curly-brace-presence': 'warn',
@@ -153,10 +146,9 @@ module.exports = {
'Using default React import is discouraged, please use named exports directly instead.',
},
{
// forbid <a> in favor of <LinkButton> or <ExternalLink>
// forbid <a> in favor of <Link>
selector: 'JSXOpeningElement[name.name="a"]',
message:
'Using <a> is discouraged, please use <LinkButton> or <ExternalLink> instead.',
message: 'Using <a> is discouraged, please use <Link> instead.',
},
],
'no-restricted-imports': [
@@ -277,6 +269,69 @@ module.exports = {
'import/no-default-export': '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/App.tsx',
'./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/rollover/HoldMenu.tsx',
'./packages/desktop-client/src/components/budget/rollover/TransferMenu.tsx',
'./packages/desktop-client/src/components/common/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',
'./packages/desktop-client/src/components/table.tsx',
'./packages/desktop-client/src/components/Titlebar.tsx',
'./packages/desktop-client/src/components/transactions/MobileTransaction.jsx',
'./packages/desktop-client/src/components/transactions/SelectedTransactions.jsx',
'./packages/desktop-client/src/components/transactions/SimpleTransactionsTable.jsx',
'./packages/desktop-client/src/components/transactions/TransactionList.jsx',
'./packages/desktop-client/src/components/transactions/TransactionsTable.jsx',
'./packages/desktop-client/src/components/transactions/TransactionsTable.test.jsx',
'./packages/desktop-client/src/hooks/useAccounts.ts',
'./packages/desktop-client/src/hooks/useCategories.ts',
'./packages/desktop-client/src/hooks/usePayees.ts',
'./packages/desktop-client/src/hooks/useProperFocus.tsx',
'./packages/desktop-client/src/hooks/useSelected.tsx',
'./packages/loot-core/src/client/query-hooks.tsx',
],
rules: {
'react-hooks/exhaustive-deps': 'off',
},
},
],
settings: {
'import/resolver': {

View File

@@ -8,6 +8,13 @@ body:
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:
@@ -16,20 +23,10 @@ body:
options:
- label: 'I have searched and found no existing issue'
required: true
- label: 'I will be providing steps how to reproduce the bug (in most cases this will also mean uploading a demo budget file)'
required: true
validations:
required: true
- type: checkboxes
id: bank-sync-issue
attributes:
label: 'Is this related to GoCardless, Simplefin or another bank-sync provider?'
description: 'Most issues with bank-sync providers are due to a lack of a custom bank-mapper (i.e. payee or other fields not coming through). In such cases you can create a custom bank mapper in [actual-server](https://github.com/actualbudget/actual-server/blob/master/src/app-gocardless/README.md) repository. Other likely issue is misconfigured server - in which case please reach out via the [community Discord](https://discord.gg/pRYNYr4W5A) to get support.'
options:
- label: 'I have checked my server logs and could not see any errors there'
- label: 'I will be attaching my server logs to this issue'
- label: 'I will be attaching my client-side (browser) logs to this issue'
- label: 'I understand that this issue will be automatically closed if insufficient information is provided'
validations:
required: false
- type: textarea
id: what-happened
attributes:
@@ -39,13 +36,6 @@ body:
value: 'A bug happened!'
validations:
required: true
- type: textarea
id: errors-received
attributes:
label: 'What error did you receive?'
description: 'If you received an error or a message on the screen, please provide that here.'
validations:
required: false
- type: markdown
id: env-info
attributes:
@@ -59,6 +49,7 @@ body:
- Locally via Yarn
- Docker
- Fly.io
- Pikapods
- NAS
- Desktop App (Electron)
- Other

View File

@@ -1,5 +1,8 @@
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? Perhaps having issues setting up bank-sync with GoCardless or SimpleFin? Reach out to the community on Discord.
about: Need help with something? Having troubles setting up? Or perhaps issues using the API? Reach out to the community on Discord.

View File

@@ -4,11 +4,11 @@ runs:
using: composite
steps:
- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 18.16.0
- name: Cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache
with:
path: '**/node_modules'

View File

@@ -21,7 +21,7 @@ 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
@@ -29,7 +29,7 @@ jobs:
- name: Create package tgz
run: cd packages/api && yarn pack && mv package.tgz actual-api.tgz
- name: Upload Build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: actual-api
path: packages/api/actual-api.tgz
@@ -37,7 +37,7 @@ jobs:
crdt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Build CRDT
@@ -45,7 +45,7 @@ jobs:
- name: Create package tgz
run: cd packages/crdt && yarn pack && mv package.tgz actual-crdt.tgz
- name: Upload Build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: actual-crdt
path: packages/crdt/actual-crdt.tgz
@@ -53,18 +53,18 @@ jobs:
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@v3
uses: actions/upload-artifact@v4
with:
name: build-stats
path: packages/desktop-client/build-stats

View File

@@ -14,7 +14,7 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Lint
@@ -22,7 +22,7 @@ jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Typecheck
@@ -30,7 +30,7 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Test
@@ -40,8 +40,8 @@ jobs:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '19'
- name: Check migrations

View File

@@ -22,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'

View File

@@ -16,7 +16,7 @@ jobs:
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: Wait for Netlify build to finish
@@ -33,19 +33,20 @@ jobs:
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
steps:
- uses: actions/checkout@v3
- 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: ${{ needs.netlify.outputs.netlify_url }}
- uses: actions/upload-artifact@v3
- 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
@@ -53,16 +54,17 @@ jobs:
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
steps:
- uses: actions/checkout@v3
- 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@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: desktop-client-test-results
path: packages/desktop-client/test-results/
retention-days: 30
overwrite: true

View File

@@ -1,4 +1,4 @@
name: Electron
name: Electron Master
defaults:
run:
@@ -9,8 +9,8 @@ env:
on:
push:
branches:
- master
tags:
- v**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -18,6 +18,9 @@ concurrency:
jobs:
build:
# this is so the assets can be added to the release
permissions:
contents: write
strategy:
matrix:
os:
@@ -26,25 +29,46 @@ jobs:
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
run: python3 -m pip install setuptools
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 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
env:
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.CSC_LINK }}
# 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: Upload Build
uses: actions/upload-artifact@v3
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/*.AppImage
packages/desktop-electron/dist/*.flatpak
- name: Add to Release
uses: softprops/action-gh-release@v2
with:
files: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak

View File

@@ -24,20 +24,33 @@ jobs:
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
run: python3 -m pip install setuptools
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 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@v3
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/*.AppImage
packages/desktop-electron/dist/*.flatpak

View File

@@ -24,8 +24,8 @@ jobs:
runs-on: ubuntu-latest
steps:
# This is not a security concern because we have approved & merged the PR
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '19'
- name: Handle feature requests

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

@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Check release notes
if: startsWith(github.head_ref, 'release/') == false
uses: actualbudget/actions/release-notes/check@main

View File

@@ -46,7 +46,7 @@ jobs:
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@v2
uses: dawidd6/action-download-artifact@v3
id: pr-build
with:
branch: ${{github.base_ref}}
@@ -55,7 +55,7 @@ jobs:
path: base
- name: Download build artifact from PR
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v3
with:
pr: ${{github.event.pull_request.number}}
workflow: build.yml

38
.gitignore vendored
View File

@@ -1,29 +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
.vscode
**/*.log
# Yarn
.pnp.*
@@ -36,3 +41,12 @@ export-2020-01-10.csv
# VSCode
.vscode
# IntelliJ IDEA
.idea
# Misc
.#*
# Local Netlify folder
.netlify

File diff suppressed because one or more lines are too long

View File

@@ -4,4 +4,4 @@ enableGlobalCache: false
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.0.1.cjs
yarnPath: .yarn/releases/yarn-4.0.2.cjs

View File

@@ -10,4 +10,4 @@ if [ ! -d "node_modules" ] || [ "$(ls -A node_modules)" = "" ]; then
yarn
fi
yarn start:browser
BROWSER=0 yarn start:browser

View File

@@ -38,7 +38,7 @@ yarn rebuild-electron
yarn workspace loot-core build:node
yarn workspace @actual-app/web build
yarn workspace @actual-app/web build --mode=desktop
yarn workspace desktop-electron update-client

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"
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"

View File

@@ -8,6 +8,8 @@ services:
actual-development:
build: .
image: actual-development
environment:
- HTTPS
ports:
- '3001:3001'
volumes:

View File

@@ -34,6 +34,7 @@
"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": "eslint . --max-warnings 0 --ext .js,.jsx,.ts,.tsx",
@@ -52,17 +53,19 @@
"eslint-plugin-react": "7.32.2",
"eslint-plugin-rulesdir": "^0.2.2",
"node-jq": "^4.0.1",
"npm-run-all": "^4.1.3",
"npm-run-all": "^4.1.5",
"prettier": "3.2.4",
"react-refresh": "^0.14.0",
"source-map-support": "^0.5.21",
"typescript": "^5.0.2",
"typescript-strict-plugin": "^2.2.2-beta.2"
},
"resolutions": {
"rollup": "4.9.4"
},
"engines": {
"node": ">=18.0.0"
},
"packageManager": "yarn@4.0.1",
"packageManager": "yarn@4.0.2",
"browserslist": [
"electron 24.0",
"defaults"

View File

@@ -58,11 +58,55 @@ describe('API CRUD operations', () => {
await api.loadBudget(budgetName);
});
// apis: createCategoryGroup, updateCategoryGroup, deleteCategoryGroup
// 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: 0,
id: 'fc3825fd-b982-4b72-b768-5b30844cf832',
is_income: 0,
name: 'Usual Expenses',
sort_order: 16384,
tombstone: 0,
}),
expect.objectContaining({
hidden: 0,
id: 'a137772f-cf2f-4089-9432-822d2ddc1466',
is_income: 0,
name: 'Investments and Savings',
sort_order: 32768,
tombstone: 0,
}),
expect.objectContaining({
hidden: 0,
id: '2E1F5BDB-209B-43F9-AF2C-3CE28E380C00',
is_income: 1,
name: 'Income',
sort_order: 32768,
tombstone: 0,
}),
]),
);
// create our test category group
const mainGroupId = await api.createCategoryGroup({
name: 'test-group',
@@ -220,7 +264,7 @@ describe('API CRUD operations', () => {
);
});
//apis: createAccount, getAccounts, updateAccount, closeAccount, deleteAccount, reopenAccount
//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 },
@@ -241,6 +285,9 @@ describe('API CRUD operations', () => {
]),
);
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);
@@ -315,13 +362,221 @@ describe('API CRUD operations', () => {
);
});
// 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]);
expect(await api.getRules()).toHaveLength(1);
await api.deleteRule(rules[0]);
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 },
{ date: '2023-11-03', imported_id: '11', amount: 100 },
{ 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, {
@@ -330,6 +585,11 @@ describe('API CRUD operations', () => {
});
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,
@@ -344,8 +604,9 @@ describe('API CRUD operations', () => {
expect(transactions).toHaveLength(2);
newTransaction = [
{ date: '2023-12-03', imported_id: '11', amount: 100 },
{ date: '2023-12-03', imported_id: '22', amount: 200 },
{ 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);
@@ -361,9 +622,22 @@ describe('API CRUD operations', () => {
'2023-12-31',
);
expect(transactions).toEqual(
expect.arrayContaining(
newTransaction.map(trans => expect.objectContaining(trans)),
),
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);

View File

@@ -31,10 +31,18 @@ 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 {
@@ -121,6 +129,14 @@ 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 });
}
@@ -164,3 +180,27 @@ export function updatePayee(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) {
return send('api/rule-delete', { id });
}

View File

@@ -1,6 +1,6 @@
{
"name": "@actual-app/api",
"version": "6.4.0",
"version": "6.8.2",
"license": "MIT",
"description": "An API for Actual",
"engines": {
@@ -9,7 +9,8 @@
"main": "dist/index.js",
"types": "@types/index.d.ts",
"files": [
"dist"
"dist",
"@types"
],
"scripts": {
"build:app": "yarn workspace loot-core build:api",
@@ -21,17 +22,18 @@
"clean": "rm -rf dist @types"
},
"dependencies": {
"better-sqlite3": "^9.2.2",
"@actual-app/crdt": "workspace:^",
"better-sqlite3": "^9.6.0",
"compare-versions": "^6.1.0",
"node-fetch": "^3.3.2",
"uuid": "^9.0.0"
"uuid": "^9.0.1"
},
"devDependencies": {
"@swc/core": "^1.3.105",
"@swc/jest": "^0.2.31",
"@types/jest": "^27.5.0",
"@swc/core": "^1.5.3",
"@swc/jest": "^0.2.36",
"@types/jest": "^27.5.2",
"@types/uuid": "^9.0.2",
"jest": "^27.0.0",
"jest": "^27.5.1",
"tsc-alias": "^1.8.8",
"typescript": "^5.0.2"
}

View File

@@ -10,6 +10,7 @@
"outDir": "dist",
"declarationDir": "@types",
"paths": {
"loot-core/src/*": ["./loot-core/*"],
"loot-core/*": ["./@types/loot-core/*"],
}
},

View File

@@ -17,14 +17,14 @@
"dependencies": {
"google-protobuf": "^3.12.0-rc.1",
"murmurhash": "^2.0.1",
"uuid": "^9.0.0"
"uuid": "^9.0.1"
},
"devDependencies": {
"@swc/core": "^1.3.105",
"@swc/jest": "^0.2.31",
"@types/jest": "^27.5.0",
"@swc/core": "^1.5.3",
"@swc/jest": "^0.2.36",
"@types/jest": "^27.5.2",
"@types/uuid": "^9.0.2",
"jest": "^27.0.0",
"jest": "^27.5.1",
"ts-protoc-gen": "^0.15.0",
"typescript": "^5.0.2"
}

View File

@@ -37,9 +37,30 @@ First start a dev instance:
```sh
HTTPS=true yarn start
```
or using the dev container:
```
HTTPS=true docker compose up --build
```
Note the network IP address and port the dev instance is listening on.
Next, navigate to the root of your project folder, run the standartised docker container, and launch the visual regression tests from within it.
Next, navigate to the root of your project folder, run the standardized docker container, and launch the visual regression tests from within it.
Run via yarn:
```sh
# By default, this connects to https://localhost:3001
yarn vrt:docker
# To use a different ip and port:
yarn vrt:docker --e2e-start-url https://ip:port
# To update snapshots, use the following command:
yarn vrt:docker --e2e-start-url https://ip:port --update-snapshots
```
Run manually:
```sh
# Run docker container
@@ -48,7 +69,8 @@ docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/
# If you receive an error such as "docker: invalid reference format", please instead use the following command:
docker run --rm --network host -v ${pwd}:/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.41.1-jammy /bin/bash
# Run the VRT tests: important - they MUST be ran against a HTTPS server. Use the ip and port noted earlier
# Once inside the docker container, run the VRT tests: important - they MUST be ran against a HTTPS server.
# Use the ip and port noted earlier
E2E_START_URL=https://ip:port yarn vrt
# To update snapshots, use the following command:
@@ -59,6 +81,15 @@ E2E_START_URL=https://ip:port yarn vrt
You can also run the tests against a remote server by passing the URL:
Run in standardized docker container:
```sh
E2E_START_URL=https://my-remote-server.com yarn vrt:docker
# Or pass in server URL as argument
yarn vrt:docker --e2e-start-url https://my-remote-server.com
```
Run locally:
```sh
E2E_START_URL=https://my-remote-server.com yarn vrt
```

View File

@@ -7,6 +7,7 @@ test.describe('Accounts', () => {
let page;
let navigation;
let configurationPage;
let accountPage;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
@@ -22,7 +23,7 @@ test.describe('Accounts', () => {
});
test('creates a new account and views the initial balance transaction', async () => {
const accountPage = await navigation.createAccount({
accountPage = await navigation.createAccount({
name: 'New Account',
offBudget: false,
balance: 100,
@@ -38,7 +39,7 @@ test.describe('Accounts', () => {
});
test('closes an account', async () => {
const accountPage = await navigation.goToAccountPage('Roth IRA');
accountPage = await navigation.goToAccountPage('Roth IRA');
await expect(accountPage.accountName).toHaveText('Roth IRA');
@@ -50,4 +51,52 @@ test.describe('Accounts', () => {
await expect(accountPage.accountName).toHaveText('Closed: Roth IRA');
await expect(page).toMatchThemeScreenshots();
});
test.describe('Budgeted Accounts', () => {
// Reset filters
test.afterEach(async () => {
await accountPage.removeFilter(0);
});
test('creates a transfer from two existing transactions', async () => {
accountPage = await navigation.goToAccountPage('For budget');
await expect(accountPage.accountName).toHaveText('Budgeted Accounts');
await accountPage.filterByNote('Test Acc Transfer');
await accountPage.createSingleTransaction({
account: 'Ally Savings',
payee: '',
notes: 'Test Acc Transfer',
category: 'Food',
debit: '34.56',
});
await accountPage.createSingleTransaction({
account: 'HSBC',
payee: '',
notes: 'Test Acc Transfer',
category: 'Food',
credit: '34.56',
});
await page.waitForTimeout(100); // Give time for the previous transaction to be rendered
await accountPage.selectNthTransaction(0);
await accountPage.selectNthTransaction(1);
await accountPage.clickSelectAction('Make transfer');
let transaction = accountPage.getNthTransaction(0);
await expect(transaction.payee).toHaveText('Ally Savings');
await expect(transaction.category).toHaveText('Transfer');
await expect(transaction.credit).toHaveText('34.56');
await expect(transaction.account).toHaveText('HSBC');
transaction = accountPage.getNthTransaction(1);
await expect(transaction.payee).toHaveText('HSBC');
await expect(transaction.category).toHaveText('Transfer');
await expect(transaction.debit).toHaveText('34.56');
await expect(transaction.account).toHaveText('Ally Savings');
});
});
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -59,12 +59,9 @@ test.describe('Budget', () => {
});
test('clicking on spent amounts opens a transaction page', async () => {
const categoryName = await budgetPage.getCategoryNameForRow(1);
const accountPage = await budgetPage.clickOnSpentAmountForRow(1);
expect(page.url()).toContain('/accounts');
expect(await accountPage.accountName.textContent()).toMatch(
new RegExp(String.raw`${categoryName} \(\w+ \d+\)`),
);
expect(await accountPage.accountName.textContent()).toMatch('All Accounts');
await page.getByRole('button', { name: 'Back' }).click();
});
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -102,10 +102,22 @@
"name": "Store",
"transfer_account_id": null,
"deleted": false
},
{
"id": "620e85b1-2ae7-45b1-bb3e-b875ea5c553a",
"name": "Work",
"transfer_account_id": null,
"deleted": false
}
],
"payee_locations": [],
"category_groups": [
{
"id": "a5c355c2-3b77-4a7f-b8b3-c832b10cfec8",
"name": "Income",
"hidden": false,
"deleted": false
},
{
"id": "d5c355c2-3b77-4a7f-b8b3-c832b10cfec9",
"name": "Internal Master Category",
@@ -611,6 +623,30 @@
"goal_overall_funded": null,
"goal_overall_left": null,
"deleted": false
},
{
"id": "1429f287-50aa-49d8-a89c-752cbd167d6c",
"category_group_id": "a5c355c2-3b77-4a7f-b8b3-c832b10cfec8",
"name": "Income",
"hidden": false,
"original_category_group_id": null,
"note": null,
"budgeted": 0,
"activity": 0,
"balance": 0,
"goal_type": "NEED",
"goal_day": null,
"goal_cadence": 1,
"goal_cadence_frequency": 1,
"goal_creation_month": null,
"goal_target": 0,
"goal_target_month": null,
"goal_percentage_complete": null,
"goal_months_to_budget": null,
"goal_under_funded": null,
"goal_overall_funded": null,
"goal_overall_left": null,
"deleted": false
}
],
"months": [
@@ -1597,7 +1633,7 @@
"date": "2023-08-04",
"amount": 0,
"memo": "getting paid",
"cleared": "cleared",
"cleared": "reconciled",
"approved": true,
"flag_color": null,
"account_id": "bc1d862f-bab0-41c3-bd1e-6cee8c688e32",
@@ -1657,7 +1693,7 @@
"date": "2023-08-04",
"amount": 1000000,
"memo": "",
"cleared": "cleared",
"cleared": "reconciled",
"approved": true,
"flag_color": null,
"account_id": "bc1d862f-bab0-41c3-bd1e-6cee8c688e32",
@@ -1704,8 +1740,28 @@
"payee_id": "",
"category_id": null,
"transfer_account_id": "bc1d862f-bab0-41c3-bd1e-6cee8c688e32",
"transfer_transaction_id": "213526fc-ba49-4790-8a96-cc2a50182728",
"matched_transaction_id": "",
"transfer_transaction_id": null,
"matched_transaction_id": null,
"import_id": null,
"import_payee_name": null,
"import_payee_name_original": null,
"debt_transaction_type": null,
"deleted": false
},
{
"id": "9a22f287-f1e0-4667-9fc0-91e4a4262193",
"date": "2024-02-02",
"amount": 2000000,
"memo": "Paycheck",
"cleared": "cleared",
"approved": true,
"flag_color": null,
"account_id": "bc1d862f-bab0-41c3-bd1e-6cee8c688e32",
"payee_id": "620e85b1-2ae7-45b1-bb3e-b875ea5c553a",
"category_id": "1429f287-50aa-49d8-a89c-752cbd167d6c",
"transfer_account_id": null,
"transfer_transaction_id": null,
"matched_transaction_id": null,
"import_id": null,
"import_payee_name": null,
"import_payee_name_original": null,
@@ -1729,7 +1785,7 @@
"transaction_id": "213526fc-ba49-4790-8a96-cc2a50182728",
"amount": -50000,
"memo": "split part b",
"payee_id": "2a20470a-634f-4efa-a7f6-f1c0b0bdda41",
"payee_id": "8d3017e0-2aa6-4fe2-b011-c53c9f147eb6",
"category_id": null,
"transfer_account_id": "125f339b-2a63-481e-84c0-f04d898905d2",
"deleted": false

View File

@@ -42,6 +42,9 @@ test.describe('Mobile', () => {
'Mortgage',
'Water',
'Power',
'Starting Balances',
'Misc',
'Income',
]);
await expect(page).toMatchThemeScreenshots();
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -59,7 +59,7 @@ test.describe('Onboarding', () => {
await expect(budgetPage.budgetTable).toBeVisible({ timeout: 30000 });
const accountPage = await navigation.goToAccountPage('Checking');
await expect(accountPage.accountBalance).toHaveText('600.00');
await expect(accountPage.accountBalance).toHaveText('2,600.00');
await navigation.goToAccountPage('Saving');
await expect(accountPage.accountBalance).toHaveText('250.00');

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 KiB

After

Width:  |  Height:  |  Size: 560 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 KiB

After

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 KiB

View File

@@ -25,6 +25,9 @@ export class AccountPage {
this.filterButton = this.page.getByRole('button', { name: 'Filter' });
this.filterSelectTooltip = this.page.getByTestId('filters-select-tooltip');
this.selectButton = this.page.getByTestId('transactions-select-button');
this.selectTooltip = this.page.getByTestId('transactions-select-tooltip');
}
/**
@@ -68,14 +71,21 @@ export class AccountPage {
await this.cancelTransactionButton.click();
}
async selectNthTransaction(index) {
const row = this.transactionTableRow.nth(index);
await row.getByTestId('select').click();
}
/**
* Retrieve the data for the nth-transaction.
* 0-based index
*/
getNthTransaction(index) {
const row = this.transactionTableRow.nth(index);
const account = row.getByTestId('account');
return {
...(account ? { account } : {}),
payee: row.getByTestId('payee'),
notes: row.getByTestId('notes'),
category: row.getByTestId('category'),
@@ -84,6 +94,11 @@ export class AccountPage {
};
}
async clickSelectAction(action) {
await this.selectButton.click();
await this.selectTooltip.getByRole('button', { name: action }).click();
}
/**
* Open the modal for closing the account.
*/
@@ -106,6 +121,15 @@ export class AccountPage {
return new FilterTooltip(this.page.getByTestId('filters-menu-tooltip'));
}
/**
* Filter to a specific note
*/
async filterByNote(note) {
const filterTooltip = await this.filterBy('Note');
await this.page.keyboard.type(note);
await filterTooltip.applyButton.click();
}
/**
* Remove the nth filter
*/
@@ -117,6 +141,24 @@ export class AccountPage {
}
async _fillTransactionFields(transactionRow, transaction) {
if (transaction.debit) {
await transactionRow.getByTestId('debit').click();
await this.page.keyboard.type(transaction.debit);
await this.page.keyboard.press('Tab');
}
if (transaction.credit) {
await transactionRow.getByTestId('credit').click();
await this.page.keyboard.type(transaction.credit);
await this.page.keyboard.press('Tab');
}
if (transaction.account) {
await transactionRow.getByTestId('account').click();
await this.page.keyboard.type(transaction.account);
await this.page.keyboard.press('Tab');
}
if (transaction.payee) {
await transactionRow.getByTestId('payee').click();
await this.page.keyboard.type(transaction.payee);
@@ -139,18 +181,6 @@ export class AccountPage {
await this.page.keyboard.press('Tab');
}
}
if (transaction.debit) {
await transactionRow.getByTestId('debit').click();
await this.page.keyboard.type(transaction.debit);
await this.page.keyboard.press('Tab');
}
if (transaction.credit) {
await transactionRow.getByTestId('credit').click();
await this.page.keyboard.type(transaction.credit);
await this.page.keyboard.press('Tab');
}
}
}

View File

@@ -5,7 +5,7 @@ export class MobileAccountPage {
this.page = page;
this.heading = page.getByRole('heading');
this.balance = page.getByTestId('account-balance');
this.balance = page.getByTestId('transactions-balance');
this.noTransactionsFoundError = page.getByText('No transactions');
this.searchBox = page.getByPlaceholder(/^Search/);
this.transactionList = page.getByLabel('transaction list');

View File

@@ -44,7 +44,7 @@ export class RulesPage {
.first()
.click();
await this.page
.getByRole('option', { exact: true, name: data.conditionsOp })
.getByRole('button', { exact: true, name: data.conditionsOp })
.click();
}
@@ -61,6 +61,27 @@ export class RulesPage {
this.page.getByTestId('action-list'),
);
}
if (data.splits) {
if (data.splits.beforeSplitActions) {
await this._fillEditorFields(
data.splits.beforeSplitActions,
this.page.getByTestId('action-list'),
);
}
if (data.splits.splitActions) {
let idx = data.splits?.beforeSplitActions.length ?? 0;
for (const splitActions of data.splits.splitActions) {
await this.page.getByTestId('add-split-transactions').click();
await this._fillEditorFields(
splitActions,
this.page.getByTestId('action-list').nth(idx),
);
idx++;
}
}
}
}
async _fillEditorFields(data, rootElement) {
@@ -76,13 +97,13 @@ export class RulesPage {
if (field) {
await row.getByRole('button').first().click();
await this.page
.getByRole('option', { exact: true, name: field })
.getByRole('button', { exact: true, name: field })
.click();
}
if (op) {
await row.getByRole('button', { name: 'is' }).click();
await this.page.getByRole('option', { name: op, exact: true }).click();
await this.page.getByRole('button', { name: op, exact: true }).click();
}
if (value) {

View File

@@ -84,6 +84,10 @@ export class SchedulesPage {
if (data.amount) {
await this.page.getByLabel('Amount').fill(String(data.amount));
// For some readon, the input field does not trigger the change event on tests
// but it works on the browser. We can revisit this once migration to
// react aria components is complete.
await this.page.keyboard.press('Enter');
}
}
}

View File

@@ -6,4 +6,10 @@ export class SettingsPage {
async exportData() {
await this.page.getByRole('button', { name: 'Export data' }).click();
}
async enableExperimentalFeature(featureName) {
await this.page.getByTestId('advanced-settings').click();
await this.page.getByTestId('experimental-settings').click();
await this.page.getByLabel(featureName).check();
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -67,4 +67,73 @@ test.describe('Rules', () => {
await expect(transaction.debit).toHaveText('12.34');
await expect(page).toMatchThemeScreenshots();
});
test('creates a split transaction rule and makes sure it is applied when creating a transaction', async () => {
rulesPage = await navigation.goToRulesPage();
await rulesPage.createRule({
conditions: [
{
field: 'payee',
op: 'is',
value: 'Ikea',
},
],
splits: {
beforeSplitActions: [
{
field: 'notes',
value: 'food / entertainment',
},
],
splitActions: [
[
{
field: 'a fixed percent of the remainder',
value: '90',
},
{
field: 'category',
value: 'Entertainment',
},
],
[
{
field: 'an equal portion of the remainder',
},
{
field: 'category',
value: 'Food',
},
],
],
},
});
const accountPage = await navigation.goToAccountPage(
'Capital One Checking',
);
await accountPage.createSingleTransaction({
debit: '100.00',
payee: 'Ikea',
});
const transaction = accountPage.getNthTransaction(0);
await expect(transaction.payee).toHaveText('Split');
await expect(transaction.notes).toHaveText('food / entertainment');
await expect(transaction.category).toHaveText('Split');
await expect(transaction.debit).toHaveText('100.00');
await expect(page).toMatchThemeScreenshots();
const firstSplitTransaction = accountPage.getNthTransaction(1);
await expect(firstSplitTransaction.payee).toHaveText('Ikea');
await expect(firstSplitTransaction.debit).toHaveText('90.00');
await expect(firstSplitTransaction.category).toHaveText('Entertainment');
const secondSplitTransaction = accountPage.getNthTransaction(2);
await expect(secondSplitTransaction.payee).toHaveText('Ikea');
await expect(secondSplitTransaction.debit).toHaveText('10.00');
await expect(secondSplitTransaction.category).toHaveText('Food');
});
});

Some files were not shown because too many files have changed in this diff Show More