Commit Graph

1199 Commits

Author SHA1 Message Date
Matiss Janis Aboltins
666b0b80b6 Fix lint violations (#6299) 2025-12-04 23:17:31 +00:00
Mirko Reimbold
7e56c6e620 Exclude transfers from summary cards (#6263)
* fix(reports): exclude transfers from dashboard summary cards

The income and expense summary cards were incorrectly including transfer transactions, which inflated the displayed values.

Added 'payee.transfer_acct': null filter to the AQL queries to exclude transfers.

Fixes #6258

* Add release notes for PR #6263

* Revert "fix(reports): exclude transfers from dashboard summary cards"

This reverts commit ba9baa5c6d.

* fix(reports): exclude transfers from summary cards in the default dashboard

* Update release notes for PR #6263
2025-12-04 22:20:03 +00:00
Matiss Janis Aboltins
b7fa1df20c Add mobile schedules pages (#6158)
* Add mobile schedules pages and fix routing issues

- Add MobileSchedulesPage with list view and search functionality
- Add MobileScheduleEditPage for creating/editing schedules
- Add supporting components: SchedulesList, SchedulesListItem, AddScheduleButton
- Fix MobileNavTabs routing to include /schedules route
- Fix wide view routing: wrap schedule edit route with WideNotSupported
- Update MobileNavTabs to enable schedules navigation
- Add responsive exports for mobile schedules components

* Refactor MobileScheduleEditPage and SchedulesListItem for improved layout and navigation

- Remove modal dispatch for editing rules, replacing it with direct navigation to the rule edit page.
- Update SchedulesListItem to streamline the display of payee and account information using SpaceBetween for better alignment.
- Enhance ScheduleEditForm with responsive design adjustments for narrow widths, ensuring a more flexible layout.
- Replace Account and Payee autocomplete components with a more generic input approach for better reusability.

* Enhance MobileScheduleEditPage and ScheduleEditForm with improved footer and optional callbacks

- Add a footer to MobileScheduleEditPage with a Save button for better user interaction.
- Update ScheduleEditForm to make onSave and onCancel props optional, allowing for more flexible usage.
- Adjust layout and styling for better responsiveness and user experience.

* Improve error message styling in ScheduleEditForm by adding margin for better visibility

* Refactor ScheduleEditForm and MobileScheduleEditPage for improved layout and functionality

- Simplify the structure of ScheduleEditForm by removing unnecessary wrapper elements and enhancing responsiveness.
- Update MobileScheduleEditPage to include padding adjustments for better visual consistency.
- Introduce a footer with Save and Cancel buttons in ScheduleEditModal for improved user interaction.
- Ensure optional callbacks for onSave and onCancel in ScheduleEditForm for greater flexibility.

* Add aria-label for accessibility in PayeeAutocomplete component

- Introduced translation support for the 'Payee' label using useTranslation.
- Enhanced accessibility by adding an aria-label to the input field in PayeeAutocomplete.

* [autofix.ci] apply automated fixes

* Refactor MobileScheduleEditPage and related components for improved functionality and structure

- Simplified the MobileScheduleEditPage by removing unnecessary imports and restructuring state management with the new useScheduleEdit hook.
- Extracted updateScheduleConditions logic into a separate utility file for better reusability and clarity.
- Enhanced ScheduleEditModal to utilize the new form dispatch mechanism, improving state management and error handling.
- Updated ScheduleEditForm to streamline field management and improve overall responsiveness.

* Enhance AccountAutocomplete component with accessibility improvements

- Added aria-label for the input field in AccountAutocomplete using translation support for better accessibility.

* Refactor imports in MobileScheduleEditPage, ScheduleEditModal, and useScheduleEdit for consistency

- Reintroduced the ScheduleEditForm import in MobileScheduleEditPage and ScheduleEditModal for clarity.
- Moved the updateScheduleConditions import in useScheduleEdit to maintain a consistent import structure across components.

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6158

* Refactor MobileScheduleEditPage and useScheduleEdit for improved loading state management

- Removed local loading state from MobileScheduleEditPage and integrated it into the useScheduleEdit hook for better state handling.
- Enhanced error handling by displaying a "Schedule not found" message when the schedule is null.
- Streamlined the loading state check in the component to improve user experience.

* Remove unused import of 't' from ScheduleEditModal.tsx

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6158

* Refactor schedule edit dispatch handling in MobileScheduleEditPage and ScheduleEditModal

- Replace formDispatch with a unified dispatch in MobileScheduleEditPage and ScheduleEditModal for handling form errors and transaction switches.
- Update useScheduleEdit hook to remove the formDispatch wrapper, simplifying the dispatch mechanism.
- Change the type of the date field in DiscoverScheduleEntity from ScheduleEntity['_date'] to RecurConfig for better type accuracy.

* Refactor ScheduleEditModal and useScheduleEdit for improved schedule initialization

- Utilize useMemo in ScheduleEditModal to streamline initial schedule creation based on transaction data.
- Introduce useEffectEvent in useScheduleEdit to enhance schedule loading logic on component mount.
- Simplify the handling of initial schedule conditions and actions, improving code readability and maintainability.

* Add mobile schedules functionality with comprehensive tests

- Introduced Mobile Schedules page and navigation integration.
- Created end-to-end tests for various functionalities including visual checks, empty state handling, schedule creation, editing, and search/filter capabilities.
- Added necessary page model classes to support the new features.
- Updated existing components to accommodate new mobile schedules functionality and ensure proper layout and user experience.
- Included visual regression test snapshots for the new features.

* Refactor navigation method in MobileNavigation class for improved readability

- Simplified the goToSchedulesPage method by removing unnecessary await, enhancing code clarity.

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6158

* Remove deprecated test for schedule creation and associated visual regression test snapshots

* Add Schedules Page Menu Modal and enhance Mobile Schedules Page

- Introduced SchedulesPageMenuModal to the modals system.
- Updated MobileSchedulesPage to include a button that opens the new Schedules Page Menu.
- Refactored schedule filtering logic to incorporate a local preference for showing completed schedules.
- Added local preference for 'schedules.showCompleted' to manage completed schedule visibility.
- Updated SchedulesTable to utilize the new local preference for completed schedules.

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6158

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 21:47:35 +00:00
Matiss Janis Aboltins
43970c14b1 fix: Handle unicode minus in number parsing (#6247)
* fix(core): handle unicode minus in number parsing

Fixes #6206. Added support for Unicode minus (U+2212) in looselyParseAmount, currencyToAmount, and stringToInteger. Added unit tests.

* Refactor: Improve currency parsing logic

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

* Refactor: Simplify currency parsing logic

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

* [autofix.ci] apply automated fixes

* fix: Handle Unicode minus inside parentheses correctly

Fixed bug where amounts with both parentheses and Unicode minus (e.g.,
(−3.45)) were parsed as null instead of negative numbers. The Unicode minus
is now removed from within parentheses before the parentheses-to-minus
conversion, preventing double minus signs that caused parseFloat to return NaN.

Added test cases for parenthesized amounts containing Unicode minus.

* Add release notes for PR #6247

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 21:42:37 +00:00
Matt Fiddaman
baacf0900f prevent GoCardless sync failure when invalid account information is received (#6296)
* make gocardless sync safer

* note
2025-12-04 20:00:49 +00:00
espege
4bd0303b1a add "last month" mode date filter to reports (#6222)
* feat: add "last month" mode to reports

* [autofix.ci] apply automated fixes

* chore: fix release note

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6222

* chore: UseCallBack instead of useEffect

* chore: respect call convention

* chore: simplified case and leverage useCallback

* chore: fix linter warning

* [autofix.ci] apply automated fixes

* chore: adding brace wrapping in case

* chore: clearer comment

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2025-12-04 19:56:59 +00:00
Matiss Janis Aboltins
879fd1b054 chore: replace Prettier with oxfmt and add oxlint (#6259)
* chore: replace Prettier with oxfmt and add oxlint

- Replace Prettier with oxfmt (Prettier-compatible formatter from OXC project)
- Add oxlint for fast linting alongside ESLint
- Add eslint-plugin-oxlint to disable ESLint rules covered by oxlint
- Update lint scripts to run oxfmt, oxlint, then eslint
- Update lint-staged configuration for pre-commit hooks
- Create .oxfmtrc.json and .oxlintrc.json configuration files
- Remove .prettierrc.json and .prettierignore
- Reformat codebase with oxfmt

* chore: update dependencies in yarn.lock

* chore: update oxlint configuration to disable additional rules

* chore: update oxfmt and oxlint configurations, enhance test readability
2025-12-04 19:55:10 +00:00
gopstr
e0afbcfd96 Add Belarusian Ruble currency (#6252)
* Add Belarusian Ruble currency

* Fix upcoming release notes filename

---------

Co-authored-by: pstribuk <pstribuk@ibagroup.eu>
2025-11-26 13:54:31 +00:00
Matiss Janis Aboltins
4081a6f5e5 Fix typechecker - update mismatched type in DiscoverScheduleEntity (#6227)
* Fix typechecker - update mismatched type in DiscoverScheduleEntity

* Add merge_group to GitHub Actions workflows for better concurrency management
2025-11-22 16:20:11 +00:00
Matiss Janis Aboltins
6f17ee17ca API: add missing TypeScript types (#6109) 2025-11-22 09:18:01 +00:00
Matiss Janis Aboltins
38145975ec Fix rule edit page crashing (#6175) 2025-11-19 18:03:51 +00:00
sys044
98174089c9 fix: balance rule action template variable (#6198)
* fix: balance rule action template variable for transactions without category

* added release notes

---------

Co-authored-by: Tom Griffin <tom.griffin@citypantry.com>
Co-authored-by: Tom Griffin <tomgriffin@Toms-MBP.communityfibre.co.uk>
2025-11-18 14:48:27 -07:00
James
be65d295d0 feat(currency): Add Malaysian Ringgit (MYR) currency (#6195) 2025-11-18 10:58:29 -07:00
Michael Süssemilch
9870e93c87 feat(currency): add idr currency (#6173)
* feat(currency): add IDR

* add release notes

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6173

* fix: Rp. to Rp

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6173

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6173

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-18 00:17:11 +00:00
Matt Fiddaman
2819ebb52d fix schedules page crash (#6169)
* handle null schedule conditions

* note
2025-11-17 16:27:32 +00:00
Matt Fiddaman
1ce2280a49 ⬆️ mid month dependency bump (#6159)
* bump various dependencies

* note

* fix types

* [autofix.ci] apply automated fixes

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6159

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-16 17:04:34 +00:00
Georg Hartmann
ed77caf947 Add COP (Colombian Peso) to Currencies (#6115)
* Add COP

* Create 6115.md

---------

Co-authored-by: G <g@Mac.fritz.box>
2025-11-13 07:27:58 -07:00
Matiss Janis Aboltins
f23bcaa9d5 TypeScript: make vite config files strict TS compliant (#6121) 2025-11-12 19:32:44 +00:00
Matiss Janis Aboltins
f41386b753 Convert FiltersMenu to TypeScript (#6091) 2025-11-10 21:40:05 +00:00
Matiss Janis Aboltins
da3f4c3091 Add force reload button to settings (#6090) 2025-11-10 18:01:19 +00:00
Michael Süssemilch
47c09ffcfa feat(currency): add currency support to templates and goals (#5955)
* feat(currency): add currency support to templates and goals

* fix: linting

* fix: add weekly guard as per coderabbit suggestion

* fix: add decimalPlaces to removeFraction

* test: add tests for JPY

* simplify currency usage in template
2025-11-08 10:19:33 -07:00
Jonathan Bramley
2e7e0b520b Sync cleared error (#6082) 2025-11-08 00:21:04 +00:00
Carlos Simon
b7841d0313 Added Guatemalan quetzal (GTQ) and Danish krone (DKK) (#6084)
* chore: initialize add-gtq-dkk branch

* feat: add gtq and dkk currencies

* chore: add release-note
2025-11-07 19:20:19 +00:00
scojo
b80c2d002b Add Crossover Report (#5554)
* Add Crossover Report

* Fix lint and typecheck

* Use useFormat hook for formatting, make spreadsheet always return cents

* Change defaults to all categories and accounts. Return 0 when no categories selected

* Change error handling to use addNotification

* Detect if crossover has already happened before projecting

* [autofix.ci] apply automated fixes

* lint:fix. Only get first crossoverIdx

* Annualize historical return via compounding, not multiplication
Use effective monthly rate from annual return
Guard against undefined starting balance

* Optional guard in median helper for future-proofing
Use consistent rounding when checking the projected crossover
Avoid O(n^2) lookups when aggregating balances by month

* Add Crossover Report Feature Flag

* Add option to show hidden categories

* Remove estimated return placeholder text since the formatting was unclear

* Initialize defaults when widget meta is absent

* Hidden categories remain in expense totals

* [autofix.ci] apply automated fixes

* Update packages/loot-core/src/types/prefs.ts

Fix merge conflict semi-colon

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

* Update prefs.ts

Try again to fix merge conflict.

* Fix percentage inputs showing trailing zeros for some numbers

* Fix projection not happening if crossover happens historically but then reverts

* some tweaks for consideration.  Remove if undesired

* go back to original math

* Fix change in percentage formatting for CrossoverCard

* Optimize date range calculation and add cleanup to CrossoverCard
Use format utility for years to retire
Replaced hardcoded color with theme token

* [autofix.ci] apply automated fixes

* Try again to standardize display and storage of percentages without repeating decimals

* Add tooltips with descriptions to crossover chart inputs

* Refactor Crossover component to use translation for 'N/A' strings and simplify estimatedReturn assignment

* Refactor Crossover components to improve date range calculations and ensure proper handling of the latest month

* Fix typo in Crossover component: corrected "retirment" to "retirement" in user instructions

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-07 08:33:22 -07:00
Joel Jeremy Marquez
0043577695 Allow entering amount when covering overspent/overbudgeted (#5988)
* Allow entering amount when covering overspent/overbudgeted

* Remove space

* [autofix.ci] apply automated fixes

* Fix typecheck error

* Positive amounts on cover amount

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-06 09:14:00 -08:00
Matt Fiddaman
f8b793069d ⬆️ vitest v4 (#6060)
* vitest 4

* config changes

* remove unused v8 coverage dependency

* note
2025-11-05 23:55:47 +00:00
Stephen Brown II
f8514556c5 Add option to trim lines from CSV imports (#5879) 2025-11-05 22:31:38 +00:00
Matiss Janis Aboltins
1a845583ef Fix scheduled transfers not linking when payee account is imported first (#6025) 2025-11-05 22:15:11 +00:00
Matiss Janis Aboltins
0cac66b203 Remove isGlobal preference functionality (#6049) 2025-11-01 14:18:08 +00:00
Matiss Janis Aboltins
45a4f0a40d Add sort_by field to custom reports (#6005) 2025-10-27 19:59:53 +00:00
Matt Fiddaman
80aee4ee71 ⬆️ bump dependencies before 25.11 (#5983)
* bump dependencies

* note

* recharts differences
2025-10-22 17:28:11 +01:00
lelemm
002f74a8fa Feature: Formula card and Formula for rules (#5939)
* Formula card and Formula rules

* [autofix.ci] apply automated fixes

* File move fix

* [autofix.ci] apply automated fixes

* Update packages/desktop-client/src/components/formula/codeMirror-excelLanguage.tsx

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

* code rabbit wrong commit suggestion fix

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-10-21 21:57:56 -03:00
guiza
b6f80c26e6 fix split transaction sort order when duplicating (#5911)
* Fixes #5715

* Release notes

* [autofix.ci] apply automated fixes

* Fix release notes PR number

* Shorten release notes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-22 01:32:00 +01:00
dependabot[bot]
1737674b9e Bump vite from 7.1.9 to 7.1.11 (#5972) 2025-10-21 17:24:56 +01:00
Matiss Janis Aboltins
57d01467ca Refactor test execution to use lage task runner (#5964) 2025-10-21 08:58:26 +02:00
Matiss Janis Aboltins
ddbefc790e Fix date validation bug causing crashes with old dates (#5970) 2025-10-20 22:04:32 +01:00
Matt Fiddaman
155558ee62 drop support for node 20 (#5937)
* node 24

* node types

* dockerfiles

* readme

* note
2025-10-18 23:58:27 +01:00
Stephen Brown II
94332016e8 Adds balance variable to rule templates (#5925)
* Adds balance variable to rule templates

Enables access to the account balance within rule templates. This allows for more complex rule creation based on the current account balance.

Calculates the account balance up to the transaction being processed, including transactions on the same date with lower sort order.

Handles cases where the balance is undefined gracefully, defaulting to 0 to prevent errors.

## AI disclaimer
This PR contains code that was partially or fully generated by AI and may contain errors. All suggestions for improvement are welcome.

* Add release notes

* indexed sql params not supported

* [autofix.ci] apply automated fixes

* Skip parent transactions of splits

* Uses aql for account balance

Updates transaction rule preparation to use aql instead of  sql calculating it from past transactions.

The balance is defaulted to 0 if no account is set.

Refactor account balance calculation to build a proper query with date and sort_order filters

* Add block scoping to switch cases and ensure correct fallthrough handling in Action type conversions

* Corrects transaction rule sorting order

Reverses the sort order comparison in transaction rules
to ensure correct identification of prior transactions with the same date.

This ensures that the correct balance is used when
calculating balance-based rule conditions.

fixup! Corrects transaction rule sorting order

* Improves transaction rule balance calculation

Uses a more efficient query for calculating the account balance
up to a transaction when applying rules, improving performance.
This change reduces the complexity of the balance calculation.

* Apply coderabbit lessons learned

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-18 08:22:55 -07:00
Matiss Janis Aboltins
0af2c6c2fb Update default dashboard (#5924) 2025-10-18 16:34:41 +02:00
Matiss Janis Aboltins
7a3794295f Enhance mobile rules with undo notifications for save and delete actions (#5906) 2025-10-13 19:02:46 +02:00
lelemm
edad7ce0e3 New Rule delete transaction action (#4603)
* Delete transaction rule action

* md

* removed debugger

* fix rule execution on csv preview

* Update 4603.md

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-10 21:41:43 -03:00
Matt Fiddaman
248b1034d7 fix api failing to import (#5896) 2025-10-09 22:55:48 +01:00
Matt Fiddaman
87d54251cd ⬆️ bump loot-core dependencies (#5888)
* csv-stringify 6.6.0

* lru-cache 11.2.2

* ua-parser-js 2.0.5

* @reduxjs/toolkit 2.9.0

* jest-diff 30.2.0

* csv-parse 6.1.0

* yargs 18.0.0

* slash 5.1.0

* drop memfs

* peggy 5.0.6

* fast-check 4.3.0

* fake-indexeddb 6.2.2

* note
2025-10-08 21:16:34 +01:00
Matiss Janis Aboltins
f7b40fca64 Add swipe to delete to mobile rules (#5871) 2025-10-07 20:33:46 +02:00
Stephen Brown II
dc811552be feat(currency): Currency-influenced initial number formats (#5797) 2025-10-07 19:05:16 +01:00
Michael Süssemilch
99ca34458e feat(currency): add currency display to rules (#5639)
* feat(currency): add to rules

* doc: release notes

* feat: remove keydown from Input

* doc: release notes

* fix: make onEnter optional

* fix: ai remark

* refactor: remove onKeyDown from Input.tsx

* fix: handle Amount (inflow) and Amount (outflow) properly

* [autofix.ci] apply automated fixes

* fix: update AmountInput to sign and on outflow set +

* refactor: onSubmit handling of input value

* coderabbit suggestions

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-07 10:44:21 -07:00
lelemm
0c280d60f6 Frontend plugins Support [3/10]: System-Wide Feature Flag System + Frontend plugins feature flag (#5785)
Support for global feature flag and minimum custom theme prefs for plugins
2025-10-07 13:13:31 -03:00
Roque Alejandro Sosa
148ca92584 Added ARS currency (#5869)
* Added ARS currency

* Added correct release number

---------

Co-authored-by: Ras <git.boasting733@passinbox.com>
2025-10-07 08:28:38 -07:00
Ilyos Khurozov
90e848ebe8 Added support for Uzbek Soum (UZS) (#5876) 2025-10-07 08:16:43 -07:00
Matt Fiddaman
3b0db2bed7 ♻️ bump various build dependencies (#5864)
* vite 7.1.9

* typescript 5.9.3

* @types/node 22.18.8

* linting

* emscripten types

* note
2025-10-06 17:32:42 +01:00