Compare commits

..

2757 Commits

Author SHA1 Message Date
github-actions[bot]
102f80eecd Remove used release notes 2025-11-27 10:08:24 +00:00
Matt Fiddaman
3b91151388 Merge branch 'master' into prerelease 2025-11-27 10:07:35 +00:00
dependabot[bot]
33610fee78 Bump node-forge from 1.3.1 to 1.3.2 (#6260)
* Bump node-forge from 1.3.1 to 1.3.2

Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.1 to 1.3.2.
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-version: 1.3.2
  dependency-type: indirect
...

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-27 09:44:18 +00:00
Juulz
9d94e1268c Update Spending.tsx - add left margin to separator between Average and Filter - Fixes #6003 (#6261)
* Update Spending.tsx - add margin to avg button

* Add left margin to separator after Average button in Spending report.
2025-11-27 07:45:56 +00:00
Juulz
52d013cb86 Update Reconciliation document to current UI - follows #6220 (#6225)
* Revise reconciliation instructions for clarity

Updated the reconciliation documentation to clarify the process and improve readability.

* Update button text for reconciling action

Changes wording of 'Done reconciling' button to 'Exit reconciling'.

* Modify button text for reconciliation process

Updates button wording based on reconciliation status.

* Update button wording in release notes

* Refine language in reconciliation documentation

Updated wording for clarity and consistency throughout the reconciliation documentation.

* Add files via upload

* Update reconciliation screenshots

* Update reconciliation images for 2025

* Add files via upload

* Clarify exit option in reconciliation process

Added a note about exiting reconciliation without locking transactions.

* Fix cleared transactions total in reconciliation guide

Corrected the cleared transactions total from 324.82 to -82.60 in the reconciliation instructions.

* Update reconciliation.md

* Update reconciliation.md to resolve conflicts

* Add files via upload

* Update reconciliation.md unlocking transactions

* Update 6220.md

* Update 6220.md
2025-11-26 19:54:56 +00:00
github-actions[bot]
21da11df12 Remove used release notes 2025-11-26 14:12:54 +00:00
gopstr
31509d3629 Add Belarusian Ruble currency (#6252)
* Add Belarusian Ruble currency

* Fix upcoming release notes filename

---------

Co-authored-by: pstribuk <pstribuk@ibagroup.eu>
2025-11-26 14:12:54 +00:00
Matt Fiddaman
ab3d5bc92a add prerelease notes 2025-11-26 14:12:54 +00:00
github-actions[bot]
ae91d7fb55 Remove used release notes 2025-11-26 14:01:45 +00:00
Matt Fiddaman
d1510cb91a generate release notes 2025-11-26 13:57:45 +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
Michael Clark
9ceb74cf6e :electron: Make it easier to download the desktop app installers (#6246)
* make it easier to download the desktop app artifacts

* release notes

* naming the artifacts *.zip becuase zips are mandatory

* Revert "naming the artifacts *.zip becuase zips are mandatory"

This reverts commit 02f9fcaa69.
2025-11-25 20:30:23 +00:00
youngcw
ba00a25c85 🐛 fix the running balance on mobile for large accounts (#6241)
* fix the running balance on mobile for large accounts

* typecheck

* don't calculate if not needed
2025-11-25 17:59:46 +00:00
Michael Clark
3df3b5e145 :electron: Add workflow for nightly signed desktop app (#6242)
* add workflow for nightly signed desktop app build

* release ntoes
2025-11-24 22:22:36 +00:00
Juulz
c17fa45692 Add PWA install instructions and links to Pikapods doc - fixes #6191 (#6215)
* Update pikapods.md

* Update pikapods.md

Added info and links to PWA installation

* Update pikapods.md

* Update pikapods.md

A couple of formatting changes

* Update pikapods.md

* Update notification method for PikaPods

* Update packages/docs/docs/install/pikapods.md

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

* Update pikapods.md

* Update pikapods.md

* Update expect.txt - add 'taskbar'

* Update expect.txt

* Update pikapods.md

* Update packages/docs/docs/install/pikapods.md

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

* Update pikapods.md

* Update pikapods.md

* Update pikapods.md

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-24 13:39:40 +00:00
Yaroslav Halchenko
7613de013e Two typos codespell found (#6237) 2025-11-24 11:15:12 +00:00
Michael Clark
f3cd0f2091 📜 Docs: Update downloads page table to have less duplication (#6231)
* update downloads page table to have less duplication

* color from variable

* add component to exclude for spell check

* adding workflow to docs files for release notes exclusion

* release notes

* cli tool added to the server download list
2025-11-22 22:12:03 +00:00
Matiss Janis Aboltins
9824a47a86 Revert "Add workflow to auto-assign maintainers to PRs on comment/review" (#6230)
* Revert "Add workflow to auto-assign maintainers to PRs on comment/review (#6156)"

This reverts commit dc2dd2ee6f.

* Add release notes for PR #6230

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-22 20:56:07 +00:00
Martin Chen
daa126523a Disable fontSizeChanged to prevent undo stack exceeding limit after dashboard reset (#6094)
* fix: temporarily disable fontSizedChanged to prevent infinite update loop after dashboard reset

* chore: add release note for disabling fontSizeChanged to prevent undo stack exceeding limit after dashboard reset

Revert "chore: add release note for disabling fontSizeChanged to prevent undo stack exceeding limit after dashboard reset"

This reverts commit eea0a161bf3ddbaf0b2f76ec3c91ac015d4f1a76.

chore: add release note for disabling fontSizeChanged to prevent undo stack exceeding limit after dashboard reset

* Revert "fix: temporarily disable fontSizedChanged to prevent infinite update loop after dashboard reset"

This reverts commit a83fd74ae60a426c4888c9f5c5718273d1af4ec7.

* fix: prevent infinite loop by disabling fontSizeChanged

* Clean up SummaryCard by removing unused code

Removed commented-out code to prevent confusion.

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2025-11-22 18:17:36 +00:00
Juulz
975bb3b692 Change Done Reconciling button text - fixes #6196 (#6220)
* Rename button text from 'Done reconciling' to 'Complete Reconciling'

* Change button text from 'Done' to 'Complete'

* Update button text in reconciliation test

* Update button text for reconciliation completion

* Modify reconciliation completion messages

Updated reconciliation messages to provide clearer instructions.

* Change button text from 'Complete Reconciliation' to 'Exit reconciling'

* Fix capitalization in 'Exit Reconciling' text

* [autofix.ci] apply automated fixes

* Update release notes for reconciliation changes

Changes wording for clarity and adds exit option.

* Update release notes with button wording changes

Changes wording for clarity and adds a new exit option.

* Update category and button wording in release notes

Changes the category from 'Changes' to 'Enhancements' and updates button wording.

* Clarify wording for reconciliation exit options

* Update test expectation for reconciled message

* Update test to check for reconciled message

* [autofix.ci] apply automated fixes

* Clean up reconciliation view text

Removed unnecessary line breaks and exit message from the reconciliation view.

* [autofix.ci] apply automated fixes

* Update reconciliation test for improved text matching

* [autofix.ci] apply automated fixes

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

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

* [autofix.ci] apply automated fixes

* Change button click from 'Exit reconciling' to 'Lock transactions'

* Enhance release notes for reconciliation button changes

Updates authors and clarifies button wording for reconciliation.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-22 16:19:23 +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
b7c44d0fd6 Revert "Fix flaky merkle test by enforcing deterministic key ordering" (#6217) 2025-11-21 08:38:45 +00:00
Matiss Janis Aboltins
8f8d3e7712 Exclude test files from build artifacts (#6216)
* Exclude test files from build artifacts

- Update crdt tsconfig.dist.json to exclude test files from dist output
- Update desktop-electron tsconfig.dist.json to exclude test files from build output

This prevents test files from being compiled into dist directories and
ensures they won't be picked up by test runners in CI/CD.

* Add release notes for PR #6216

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-20 22:21:43 +00:00
Matiss Janis Aboltins
dc2dd2ee6f Add workflow to auto-assign maintainers to PRs on comment/review (#6156) 2025-11-20 21:20:41 +00:00
Matiss Janis Aboltins
2dfd62adb8 Improve schedule edit form responsiveness for mobile support (#6178) 2025-11-20 08:39:10 +00:00
Juulz
9b535b42c3 Update payees.md - fixes #6184 (#6203)
* Update payees.md

Updated Payee document to include Category Learning links and formatting updates.

* Update payees.md

speklling

* Update payees.md

docusaurus admonitions fix

* Update payees.md

Resolve comments

* Add files via upload

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6203

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-19 17:17:33 -07:00
Michael Clark
0bac101e61 🎨 Update PWA icons to new one (#6204)
* update pwa icons to new one

* release notes

* icon

* color update for menu

* icon tiny bit smaller

* favicons as well - why not

* keeping the old icons for reference

* last icon archived

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6204

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-19 17:17:06 -07:00
Matiss Janis Aboltins
a1183755c1 Fix flaky cash flow chart e2e test by disabling animations (#6208) 2025-11-19 23:25:00 +00:00
Matiss Janis Aboltins
957bfe240d Fix flaky merkle test by enforcing deterministic key ordering (#6165) 2025-11-19 18:04:25 +00:00
Matiss Janis Aboltins
38145975ec Fix rule edit page crashing (#6175) 2025-11-19 18:03:51 +00:00
Matt Fiddaman
6834f4d669 change merge keybind to "g" (#6200) 2025-11-19 15:15:03 +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
Joel Jeremy Marquez
97dec0d3c8 [Maintenance] Update types for budget table components (#6022)
* [Maintenance] Update types for budget table components + new hooks to reduce prop drilling

* Require BudgetCategories props
2025-11-18 09:45:53 -08:00
Matt Fiddaman
f3419a4ee2 fix flaky reports tests (#6193)
* add isTestEnv hook

* disable all recharts animations in test env

* note

* drop all reports snapshots

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6193

* disable animation instead of zeroing duration

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-18 17:35:49 +00:00
Juulz
7a4ec20bac Update Settings doc - fixes issue #6183 (#6197)
* Update index.md

New screenshots. Add new settings

* Add files via upload

New screenshots for setting page

* Update index.md

Small adjustments

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6197

* Update index.md

More small adjustments to formatting.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-18 09:57:42 -07:00
Matt Fiddaman
7e34ddd356 prevent reports from unmounting when out of viewport (#6194) 2025-11-18 09:57:36 +00:00
Matt Fiddaman
30f4a7fa9d make docs issue titles consistent (#6192) 2025-11-18 01:13:10 +00: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
dependabot[bot]
c48a201378 Bump js-yaml from 3.14.1 to 3.14.2 (#6174) 2025-11-17 20:42:40 +00:00
Matiss Janis Aboltins
2c9d2a0d63 Fix mobile settings page horizontal scroll (#6100) 2025-11-17 20:30:43 +00:00
Stefan McKinnon Edwards
bc8fbe26cc Remove dollar symbols from template-string examples in GoalTemplateModal.tsx (#5946)
* Update GoalTemplateModal.tsx

Removed dollar symbol from template string examples.

* Update packages/desktop-client/src/components/modals/GoalTemplateModal.tsx

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

* fix note

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-11-17 11:38:36 -07:00
Matt Fiddaman
2819ebb52d fix schedules page crash (#6169)
* handle null schedule conditions

* note
2025-11-17 16:27:32 +00:00
Matiss Janis Aboltins
de04af9ff0 ForceReload: update service worker refresh logic (#6162) 2025-11-16 21:11:41 +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
Matiss Janis Aboltins
ead8ff7293 Add blog post: Fighting AI Slop (#6104) 2025-11-15 21:33:39 +00:00
Matiss Janis Aboltins
3d02350d4a Extract schedule edit form into separate reusable component (#6150)
- Created ScheduleEditForm component with all form fields, transactions table, and footer buttons
- Moved NoTransactionsMessage component to ScheduleEditForm
- Updated ScheduleEditModal to use the new form component
- Form component is now reusable for mobile schedules page
2025-11-15 18:56:02 +00:00
Matiss Janis Aboltins
f84ebe668c Fix bundle stats comment markdown formatting (#6152)
Add missing newlines after summary tags in bundle stats comment to fix broken markdown rendering
2025-11-15 18:55:48 +00:00
Nik
36f6a080a6 Allow categories to be added via a plus button in the group header (#6110)
* Allow category to be added from sidebar group

* [autofix.ci] apply automated fixes

* Small add category adjustments
- Add tooltip on add button hover
- Fix NotesButton padding for proper border radius rendering
- Add ability to disable tooltip pointer events so that the tooltip does not float when the trigger disappears

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6110

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-15 16:27:26 +00:00
tabedzki
e31ac3fa7c Update Feedback Link for Experimental CrossoverReport (#6148) 2025-11-15 16:23:02 +00:00
Martin Chen
dc7f80024f [WIP] Fix <input type="date"> on iOS 26 Safari (#6145) 2025-11-14 18:21:56 +00:00
Benedikt Müller
3be66e7683 Recognize HTTP GET parameters to prefill new transaction on mobile (#6050) 2025-11-13 18:14:33 +00:00
Matiss Janis Aboltins
7648fc6809 Combine bundle stats comments in PR (#6101)
* Combine bundle stats comments in PR

* Refactor bundle stats comment generation to use a mapping approach for base and head stats, improving argument parsing and validation in the CI action.

* Enhance size comparison workflow by adding steps to checkout the base branch and set up the environment, ensuring accurate build status checks for pull requests.

* Implement size comparison job in GitHub Actions workflow, replacing the deprecated size-compare.yml. This new job downloads build stats from both the base and head branches, processes the stats files, and generates a combined comment for pull requests, enhancing visibility into bundle size changes.

* Add release notes for bundle size stats update, consolidating workflow and PR comment generation.

* Refactor GitHub Actions workflows by removing the deprecated size comparison job from build.yml and introducing a new size-compare.yml workflow. This new workflow enhances build status checks and ensures accurate reporting of bundle size changes for pull requests.

* chore: update action versions and improve error messages in bundle stats scripts

- Updated GitHub Actions to specific commit versions for `upload-artifact` and `checkout`.
- Enhanced error messages in `bundle-stats-comment.mjs` and `update-bundle-stats-comment.mjs` for better clarity and consistency, replacing standard quotes with typographic quotes.

* fix: standardize error messages in bundle-stats-comment.mjs

- Updated error messages in `bundle-stats-comment.mjs` to remove typographic quotes for consistency and clarity.
2025-11-13 18:11:34 +00:00
Matt Fiddaman
033fd2d7e1 change terminology used in count-points script (#6138)
* terminology

* note
2025-11-13 17:57:09 +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
Matt Fiddaman
774e3b7f92 amend the contributor points calculation logic to handle the docs merge (#6127) 2025-11-12 23:03:35 +00:00
Ishan Jain
d3d6b68bfe fix: do not clear notes field on action.op change (#6046)
* fix: do not clear notes field on action.op change

* [autofix.ci] apply automated fixes

* Update upcoming-release-notes/6046.md

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

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-12 13:48:44 -07:00
Matiss Janis Aboltins
f23bcaa9d5 TypeScript: make vite config files strict TS compliant (#6121) 2025-11-12 19:32:44 +00:00
Digvijay Singh
d0f02c7272 Fix OpenID token expiration to correctly use seconds from config (#6130) 2025-11-12 16:51:39 +00:00
Matt Fiddaman
73dfe47d9c delete docs-only release notes (#6129) 2025-11-12 15:44:46 +00:00
Matt Fiddaman
d9c590bf54 fix VRT workflow artifact download (#6126) 2025-11-12 13:33:16 +00:00
Matt Fiddaman
03e3cdbc65 fix error in feature request workflow (#6125) 2025-11-12 13:32:19 +00:00
Matt Stillwell
b22579bdeb docs: update api reference for incorrect category parameter (#6123)
* docs: update api reference for incorrect category parameter

* remove release note

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-12 11:32:56 +00:00
Matt Fiddaman
004b5287c7 remove release note check for documentation changes (#6122)
* don't check for release note on docs changes

* note
2025-11-12 11:01:04 +00:00
youngcw
cac4be7d38 Add in mobile running balance (#5513)
* Revert "Revert "Mobile running balance" because its causing extreme slowness …"

This reverts commit 6e2154d401.

* Fix rebase error

* Release notes

* [autofix.ci] apply automated fixes

* Cleanup

* Rename some props

* Delete upcoming-release-notes/5219.md

* Do not calculate running balance if searching or non-account

* Temporarily increase timeout

* Do not show running balance on non-account views

* Fix merge error

* Fix lint

* Coderabbit feedback

* Update TransactionList dependencies

* Remove test.slow()

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-11 16:54:04 -07:00
Matt Fiddaman
e64a042f0c fix github action version resolution (#6114)
* pin to sha

* note
2025-11-11 23:26:07 +00:00
Matiss Janis Aboltins
914cc6503e ForceReload: change web update logic from .reload() to .applyAppUpdate() (#6119) 2025-11-11 23:21:21 +00:00
Matt Fiddaman
b142cf6cda 📚 remove references to the old docs repository (#6113)
* remove references to docs repo

* note
2025-11-11 22:19:36 +00:00
Matiss Janis Aboltins
611be5dd45 Fix FAQ: Correct information about upload size limits (#6103) 2025-11-11 19:26:26 +00:00
Matiss Janis Aboltins
f41386b753 Convert FiltersMenu to TypeScript (#6091) 2025-11-10 21:40:05 +00:00
Matiss Janis Aboltins
717a7db9e7 Docs: remove account type reference (#6106) 2025-11-10 21:39:48 +00:00
Matiss Janis Aboltins
b307cbc7ea docs: fix incorrect ActualQL function usage in aggregate examples (#6105)
Fixed incorrect usage of amount field in  aggregate function examples.
Changed 'amount' to '' to match ActualQL syntax requirements.
2025-11-10 21:39:30 +00:00
Matiss Janis Aboltins
1d8580cead Fix mobile bank sync full width (#6098) 2025-11-10 18:45:16 +00:00
Matiss Janis Aboltins
da3f4c3091 Add force reload button to settings (#6090) 2025-11-10 18:01:19 +00:00
Matt Fiddaman
0e8aa7ddc4 initial cleanup post docs merge (#6095) 2025-11-10 11:38:48 +00:00
Ishan Jain
a1a7c45068 Added tilde(~) separator to CSV parser (#6045) 2025-11-10 11:05:32 +00:00
Copilot
2e061daa5e Default custom reports to include hidden categories and uncategorized transactions (#6092) 2025-11-09 20:30:08 +00:00
Matt Fiddaman
37b62d0941 merge actualbudget/docs into main repo (#6029) 2025-11-08 22:18:30 +00:00
Julian Dominguez-Schatz
dedf0cd6f8 Fix style issues after Stack migration (#6086)
* Fix style issues after Stack migration

* Add release notes
2025-11-08 15:50:03 -05:00
Julian Dominguez-Schatz
31455d475c Fix automations not saving on modal close (#5811)
* Fix automations not saving on modal close

* Add release notes

* CodeRabbit feedback

* Fix

* PR feedback

* Revert unnecessary change
2025-11-08 15:49:20 -05: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
Matiss Janis Aboltins
1138fc10cf Convert TransactionEdit to TypeScript (#5998) 2025-11-08 08:35:11 +00:00
Jonathan Bramley
2e7e0b520b Sync cleared error (#6082) 2025-11-08 00:21:04 +00:00
Michael Clark
ffe55244e5 :electron: Remove unneeded prop on flathub store metainfo (#6085)
* display length is no longer valid on newer version of appstream

* release notes
2025-11-07 21:18:06 +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
Matt Fiddaman
1889b8762a remove yarn.lock 2025-11-07 18:20:11 +00:00
Matt Fiddaman
c870fa9de9 note 2025-11-07 18:20:11 +00:00
Matt Fiddaman
7904310be8 cleanup lint/typecheck errors 2025-11-07 18:20:11 +00:00
Matt Fiddaman
aa9cea78e2 integrate docs into workspace 2025-11-07 18:20:11 +00:00
Matt Fiddaman
5a0e8b3621 Merge docs repository into packages/docs 2025-11-07 18:17:15 +00:00
Matt Fiddaman
dab3ffc762 Moved docs into packages/docs directory 2025-11-07 18:17:14 +00:00
Juulz
dbfb4e5206 Update Credit Card Section Fixes #742 (#814)
I am unable to upload images from my fork. They are here:

[images](https://github.com/Juulz/docs/tree/master/static/img/credit-cards)

Updated Credit Cards:

- Rewrote index.md to explain how Actual treats credit cards
- Split off Paying in Full - Within the Budget and rewrote with
screenies
- Rewrote Carrying debt with screenies 

Please add Citi and Citibank to allowed words. Thank you.

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-07 08:34:10 -07:00
scojo
44768370e0 Add documentation page for Crossover Point Report experimental feature (#817)
The feature is proposed in PR
[5554](https://github.com/actualbudget/actual/pull/5554)
2025-11-07 08:33:42 -07: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
Michael Clark
42c184acb9 :electron: Adding 512x512 image to the icns file (#6076)
* making the linux icon explicit

* putting flatpak back

* regen icns

* adding the 512px image to the icns file

* release notes
2025-11-07 08:58:55 +00:00
rodriguestiago0
c600bde17a [WIP] Update community docs (#824) 2025-11-06 18:02:27 -07:00
Matiss Janis Aboltins
88313c029b Typescript: GenericInput (#5976) 2025-11-06 23:02:41 +00:00
Matiss Janis Aboltins
3825e65693 Add edit payee functionality to mobile page (#5874) 2025-11-06 20:58:03 +00:00
Matiss Janis Aboltins
1e6fde571e TypeScript: make component-library strict ts compliant (almost) (#6026) 2025-11-06 18:28:07 +00:00
Joel Jeremy Marquez
da8072ffbd Re-implement useDisplayPayee to use context to minimize SQL queries (#5795)
* Re-implement useDisplayPayee to use context to minimize SQL queries

* Rename ScrollProvider to useScrollListener and move to hooks folder

* Add DisplayPayeeContextProvider to TransactionsTable.test.tsx

* Set higher page count

* Fix payee autocomplete search

* [autofix.ci] apply automated fixes

* Fix highlight of Create payee

* Show search if there are 100 payees

* Cleanup

* Rename to DisplayPayeeProvider

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5795

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5795

* Fix new payee not being created in tests

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5795

* Update rules test to use pressSequentially

* [autofix.ci] apply automated fixes

* Coderabbit suggestion

* Fix typecheck error

* Cleanup

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5795

* Revert VRT

* Move DisplayPayeeProvider location

* Recert https on E2E start url

* Fix lint

---------

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-06 09:31:04 -08: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
6bb90efad3 add prompt to convert future transactions to single time schedules (#6065) 2025-11-06 15:51:03 +00:00
Adam Millerchip
979171a591 Update roadmap-for-new-users.md (#823)
The current roadmap only contained a subset of the options for setting
up a server. Rather than maintain two copies of the same information (or
preferring one method over the other), I think it's best to simply link
to the relevant section.
2025-11-06 08:41:42 -07:00
Matt Fiddaman
407a0d2f7f fix GitHub workflows in the compare sizes action (#6079)
* fix compare sizes workflow versions

* note
2025-11-06 01:01:12 +00:00
Matt Fiddaman
74cb141dd9 fix failing import of removed Stack component (#6077)
* fix missing stack import

* note
2025-11-06 00:44:28 +00:00
Matt Fiddaman
32bd929ed5 add CTRL/CMD + Enter as keyboard shortcut to only add single transaction (#6037)
* add ctrl/cmd + enter as shortcut to only add single transaction

* note

* add same logic to add button

* add keyboard shortcut

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6037

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-06 00:12:18 +00:00
Michael Clark
7e2fe5e8dc :electron: Adding hotkeys for mac (#6067)
* adding hotkeys for mac

* release notes

* window mac menu

* fix window
2025-11-05 23:58:37 +00:00
Matt Fiddaman
3d6e9919b2 make SelectLinkedAccountModal responsive (#5984)
* make SelectLinkedAccountModal responsive

* fix table headers

* note

* coderabbit

* fix feedback

* coderabbit

* cast to string

* Fix for unlinking account only

* Code Rabbit reviews

---------

Co-authored-by: lelemm <lelemm@gmail.com>
2025-11-05 23:57:25 +00:00
Lewis Chan
12923a87eb fix: openId.issuer config not loading from env vars (#6061)
* fix: openId.issuer config loading from env vars

* add release note

* [autofix.ci] apply automated fixes

* remove unused directive

* move test to the right place

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-05 23:57:02 +00:00
Henri Cook
a2fa74ca8d Select the user's current country as default when opening bank sync, instead of no value (uses browser locale) (#6054)
Co-authored-by: Henri Cook <henri.cook@linklaters.com>
2025-11-05 23:56:43 +00:00
Jayant Jeet Tomar
d1fa9b2210 [Bug]: Net worth graph doesn't show current week (#6042)
* [Bug]: Net worth graph doesn't show current week
Fixes #5986

* Fixed lint errors

* Update upcoming-release-notes/6042.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-11-05 23:56:35 +00:00
parapsychic
bb79f12435 Prevent duplicate filters from being applied (#6000)
* Fix an issue where the user could add duplicate filters (#5999)

* Add release note (#5999)

* [autofix.ci] apply automated fixes

* Changed from JSON.stringify to isEqual (#5999)

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-05 23:56:27 +00:00
Matt Fiddaman
25f9ea3f97 ⬆️ bump github action versions (#6014)
* actions/checkout v5

* actions/setup-node v6

* actions/upload-artifact v5

* actions/download-artifact v6

* actions/stale v10

* aidan-mundy/react-to-issue v1

* twk3/rollup-size-compare-action v1

* actions/github-script v8

* dawidd6/action-download-artifact v11

* fountainhead/action-wait-for-check v1

* peter-evans/create-or-update-comment v5

* docker/build-push-action v6

* note
2025-11-05 23:56:17 +00: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
8f84164ff7 Convert mobile BudgetTable component to TypeScript (#5997) 2025-11-05 22:16:24 +00:00
Matiss Janis Aboltins
b690302998 ♻️ (typescript) Convert BudgetCategories to TypeScript (#5961) 2025-11-05 22:15: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
e786bdc398 refactor: Replace all Stack component usages with SpaceBetween (#6039) 2025-11-05 22:14:15 +00:00
Michael Clark
f0b3884b4b Create org.flathub.VerifiedApps.txt for flathub verification (#825)
Adds flathub verification file so we can prove the domain belongs to us.


https://deploy-preview-825.www.actualbudget.org/.well-known/org.flathub.VerifiedApps.txt

When merged it will be:
https://actualbudget.com/.well-known/org.flathub.VerifiedApps.txt
2025-11-05 21:50:14 +00:00
Julian Dominguez-Schatz
9e1edfb7df 🔖 (25.11.0) (#822)
https://github.com/actualbudget/actual/pull/6059
2025-11-03 19:28:19 -05:00
github-actions[bot]
3d47469be3 🔖 (25.11.0) (#6059)
* 🔖 (25.11.0)

* Empty

* Remove used release notes

* Empty

---------

Co-authored-by: jfdoming <9922514+jfdoming@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-03 18:12:18 -05:00
racehd
c95a4bfc78 link simplefin docs in bank-sync.md (#818)
GoCardless is linked but SimpleFin is not. Improves navigation
2025-11-03 04:43:06 +00:00
frank_zhang
dd66a24103 Update budget.md (#775)
Corrected functions in specific month's budget categories.
2025-11-03 04:42:15 +00:00
Stephen Brown II
8ce7420199 Update auto_stop_machines setting in fly.md (#819)
- Updated auto_stop_machines setting to 'stop' to match fly.io
documentation.
- Added min_machines_running setting, set to 0.

See https://fly.io/docs/reference/configuration/#the-services-sections
2025-11-03 04:40:37 +00:00
Matt Fiddaman
cbac6116d4 fix rerender issue with formula card (#6058)
* fix infinite rerender

* note

* remove React import
2025-11-03 01:30:32 +00:00
Michael Clark
e83cfba357 Remove plugin worker temporarily (#6052)
* remove plugin worker temporarily

* releas enotes

* clarifying comment

* remove plugin worker temporarily

* releas enotes

* clarifying comment
2025-11-02 10:18:49 +00:00
Matiss Janis Aboltins
0cac66b203 Remove isGlobal preference functionality (#6049) 2025-11-01 14:18:08 +00:00
Michael Clark
7983ee45e1 :electron: New appx icons (#6043)
* new appx icons

* updates the windows store appx icons to the new style
2025-10-31 21:45:23 +00:00
Michael Clark
844cd3433a :electron: Flathub MetaInfo (#6033)
* updates to flathub metainfo

* update to summary

* release notes

* omit :light

* Update upcoming-release-notes/6033.md

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

* actual budget

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-30 17:15:47 +00:00
dbequeaith
ae6bea2b15 Import qfx safari mobile (#6020)
* Supports selecting qfx files on safari mobile

Fixes #4283

accept explicit MIME types associated with qfx files

* generated release notes

* [autofix.ci] apply automated fixes

---------

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

* extra security

* release notes

* putting it back after testing

* also accounting for directories

* derp
2025-10-27 20:11:40 +00:00
Matiss Janis Aboltins
45a4f0a40d Add sort_by field to custom reports (#6005) 2025-10-27 19:59:53 +00:00
Matt Fiddaman
9a3e33c0d7 fix inconsistent widths of bank sync field mapping selects on mobile (#6007) 2025-10-27 11:56:38 +00:00
Matiss Janis Aboltins
25d072944e Refactor account header to use SpaceBetween component for spacing (#5994) 2025-10-24 20:52:59 +01:00
Joel Jeremy Marquez
cf8a4b6e6a Fix InitialFocus not working on some fields (#5987)
* Fix InitialFocus not working on some fields

* Fix typecheck and lint errors

* Fix lint error

* Add ref type

* Add types

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5987

* Revert vrt

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5987

* Cleanup

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 11:34:41 -07:00
David Genord II
55b1ed170b Bump Alpine docker image to 3.22 upgrading from node 18 to 22 (#5989) 2025-10-23 00:42:48 +01:00
Matiss Janis Aboltins
6c58e77ebb Add faq about budget file size shrinking (#816) 2025-10-22 22:51:07 +02:00
Matt Fiddaman
b266ebf1ea 📱 add bank sync settings page to mobile (#5978) 2025-10-22 20:06:44 +01:00
Jessica L
d712891921 Update nynab.md (#815)
Added instructions for using jq to pretty print budget list and find
budget id

---------

Co-authored-by: Stephen Brown II <Stephen.Brown2@gmail.com>
2025-10-22 19:11:43 +01:00
Matiss Janis Aboltins
6826ca0e4b Add virtualizer to mobile transactions (#5921) 2025-10-22 18:07:29 +01:00
Matt Fiddaman
80aee4ee71 ⬆️ bump dependencies before 25.11 (#5983)
* bump dependencies

* note

* recharts differences
2025-10-22 17:28:11 +01:00
Matt Fiddaman
07224b1dfd drop support for node 20 (#811)
Supplements https://github.com/actualbudget/actual/pull/5937
2025-10-22 17:17:08 +01:00
dependabot[bot]
ab4aa21343 Bump vite from 7.1.9 to 7.1.11 (#5982)
* Bump vite from 7.1.9 to 7.1.11

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.9 to 7.1.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.11/packages/vite)

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

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-22 14:23:36 +01:00
Matt Fiddaman
9dd0284e31 fix report date dropdowns not including current period (#5981) 2025-10-22 13:44:19 +01:00
Matt Fiddaman
dcc879294c fix slow performance in import csv modal (#5980) 2025-10-22 13:43:56 +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
qunm
ee71130d56 Fixes #4333 Overlapping text on mobile (#5900)
* made Budgeted header to be multiline and increased font minimum font size

* added release note

* Update upcoming-release-notes/5900.md

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

---------

Co-authored-by: Quan Nguyen <quannm@Quans-MacBook-Pro.local>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-22 01:11:20 +01:00
Andrea Colombo
6ed18d8f8c Update link to documentation in docker-compose.yml (#5873)
* Update link to documentation in docker-compose.yml

* Add release notes
2025-10-21 18:35:55 +01:00
dependabot[bot]
1737674b9e Bump vite from 7.1.9 to 7.1.11 (#5972) 2025-10-21 17:24:56 +01:00
Matt Fiddaman
e4617e8cd4 fix GoCardless institutions with special continuous access EUA behaviour (#5967) 2025-10-21 17:24:05 +01:00
Matiss Janis Aboltins
57d01467ca Refactor test execution to use lage task runner (#5964) 2025-10-21 08:58:26 +02:00
Joel Jeremy Marquez
8019d9f61b Update react compiler to v1 (#5971)
* Update react compiler

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #5971

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-20 16:14:30 -07:00
Matiss Janis Aboltins
ddbefc790e Fix date validation bug causing crashes with old dates (#5970) 2025-10-20 22:04:32 +01:00
Matiss Janis Aboltins
7eaf23eb7c Improve e2e test stability (#5966) 2025-10-20 19:21:54 +02:00
Michael Clark
8f284e7b60 :electron: New desktop app icons (#5965)
* add new desktop app icons for better display on linux, and to prepare us for mac liquid glass

* png for windows

* release notes

* put old icons in archived folder
2025-10-20 09:24:59 +01:00
lelemm
be35328e42 🐛 Fix to show the notification for updating service worker (#5963)
* Fix to show the notification for updating service worker

* cleanup

* Add release notes for PR #5963

* trigger pipeline

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-19 22:48:05 -03:00
Michael Clark
23f1b7d3c0 :electron: Change desktop app execution name (#5954)
* change entrypoint name

* release notes
2025-10-19 18:30:09 +01:00
Matiss Janis Aboltins
8b1aa6fb93 Adjust account panel borders and corners (#5958) 2025-10-19 15:51:44 +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
9bb5c18ef5 Add balance to rule template docs (#813)
Relates to https://github.com/actualbudget/actual/pull/5925

Documentation improvements:

* Added `balance` as a supported template variable, describing its type
and value in the template variables table.
* Updated spacing to fix some markdown lints.
2025-10-18 08:23:33 -07: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
Andrew
0e09aec9fd Remove condition regarding split transactions (#812)
---
category: Enhancements
authors: [AndrewG147]
---

Transfers can now be created from split transactions (changed in
[25.9.0](https://github.com/actualbudget/actual/pull/5604)). The former
condition is not valid anymore
2025-10-18 07:48:40 -07:00
Matiss Janis Aboltins
0af2c6c2fb Update default dashboard (#5924) 2025-10-18 16:34:41 +02:00
Matiss Janis Aboltins
97482a082d fix: prevent sensitive data leakage in error logs (#5948) 2025-10-18 16:33:27 +02:00
Matiss Janis Aboltins
31a9ba629b Change "/update-vrt" workflow (#5952) 2025-10-18 11:46:52 +01:00
Matiss Janis Aboltins
7c19a6333c docs: add AGENTS.md guide for AI agents (#5942) 2025-10-18 00:29:12 +02:00
Matiss Janis Aboltins
2bce9d707c Improve file decryption modal and button labels (#5943) 2025-10-17 23:47:12 +02:00
Michael Clark
4e42cda29e :electron: Prep for flathub - arm64 support and metainfo (#5947)
* prep for flathub -arm64 build and metainfo

* release note

* spelling mistake

* whitespace removal

* arch build issues

* hmm

* removing arm64 from flatpak - that would get bundled by flathub anyway
2025-10-17 21:08:59 +01:00
Matiss Janis Aboltins
0ce07d7692 Align onboarding form element sizes (#5941) 2025-10-16 22:34:51 +01:00
Matiss Janis Aboltins
0e3415c145 Hide refresh button when not connected to sync server (#5940) 2025-10-16 22:31:53 +01:00
Michael Clark
19675a7de6 ⬆️ Update flatpak sdk and platform (#5935)
* update flatpak sdk and platform

* release notes

* flatpak version config

* going to 24.08 to support as many distros as possible

* remove unneded file
2025-10-16 18:59:19 +01:00
Matt Fiddaman
5a1ceed7d9 ⬆️ bump electron (#5936)
* electron 38.3.0

* electron/notarize 3.1.0

* note
2025-10-16 16:22:48 +01:00
andreparames
86c1c30c97 enhancement: fix Cetelem bank transations (#5914)
* enhancement: fix Cetelem bank transations

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

* Cetelem bank: make code more future-proof

Change based on code review suggestion

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-16 01:34:27 +01:00
lelemm
96ac1292f9 🐛 Fix Service Worker: New hash every build (#5928)
* New hash every build

* Add release notes for PR #5928

* trigger actions

* Changed from TS to MTS

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-15 13:11:54 -03:00
Matiss Janis Aboltins
328dfae8bf Update DeleteFileModal to disable delete button when server is offline (#5926) 2025-10-14 23:58:12 +02:00
Michael Süssemilch
37247395e2 feat(currency): add currency display to schedules (#5907)
* feat(currency): add currency display to schedules

* refactor: useFormat directly in cell
2025-10-14 20:10:57 +01:00
Daniel Boles
02b0e24d6e budgetfilesSlice: Fix paste-o in fallback sorting by ID (#5918)
* budgetfilesSlice: Fix paste-o in fallback sorting by ID

* Create 5918.md

* 5918.md: Clarify

* 5918.md: Ah, those square brackets don't just indicate a placeholder
2025-10-13 18:57:53 +01:00
Matiss Janis Aboltins
dfaa75f1cf Create e2e tests for mobile payees page (#5905) 2025-10-13 19:42:40 +02:00
Matiss Janis Aboltins
adae3e4352 Virtualize mobile payees list (#5904) 2025-10-13 19:04:32 +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
Julian Dominguez-Schatz
c1d97fcc75 Allow size-compare action to run immediately after artifact upload (#5912)
* Allow size-compare action to run immediately after artifact upload

* Add release notes
2025-10-13 09:20:18 -07:00
Matiss Janis Aboltins
3715f16888 Add virtualizer to mobile rules list (#5899) 2025-10-11 12:57:39 +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
Karim Kodera
117b77d6d7 Documentation for Schedule API based on CRUD. (#729) 2025-10-10 22:55:38 +01:00
Matt Fiddaman
737341ffb6 fix hotkey scope warning (#5901) 2025-10-10 19:59:20 +01:00
Matt Fiddaman
6147495003 ⬆️ upgrade recharts to v3 (#5903) 2025-10-10 19:58:59 +01:00
Matiss Janis Aboltins
614bedcfbf Trigger edge docker release on master push (#5897) 2025-10-10 09:37:54 +02:00
Matt Fiddaman
248b1034d7 fix api failing to import (#5896) 2025-10-09 22:55:48 +01:00
Claudio Spizzi
4f88afa266 Fix the Authentik external help URL for OIDC (#5891) 2025-10-08 21:41:16 -03:00
Matt Fiddaman
5c23aad3c2 ⬆️ bump yarn to 4.10.x (#5885)
* bump yarn to 4.10.3

* note

* fix flaky test
2025-10-08 23:21:37 +01:00
Michael Clark
5b9bcc94f6 ⬆️ Upgrade electron-builder (#5857)
* upgrade electron-builder

* no postinstall when yarn immutable

* downgrade to last version without the bug

* fix issue with wrappy

* release notes

* regen yarn lock

* react-sprint

* hmm

* update yarn manually...

* fixing spring?

* lock

* finally

* conflict

* put package back
2025-10-08 22:20:29 +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
Matt Fiddaman
2e439aacba ⬆️ bump various dependencies (#5886)
* bump various dependencies

* note

* update playwright images

* globals 16.4.0

* react-router 7.9.4
2025-10-08 21:01:27 +01:00
gdufay
244140314c Enhancements: Use remark plugin in the report's Text widget (#5850)
* Add remark plugin to MarkdownCard

* Generate release note

* [autofix.ci] apply automated fixes

* Avoid duplicate css code

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-08 17:26:31 +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
lelemm
295839ebbb 🐛 Fix for worker in dev mode (#5878)
* Fix for worker in dev mode

* Add release notes for PR #5878

* trigger actions

---------

Co-authored-by: Leandro Menezes <leandro.menezes@fusionflowsoftware.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-07 14:45:13 -03: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
90ac8d8520 📚 More Translations (#5812)
* Translations

* linter

* Add release notes for PR #5812

* actions trigger

* md category change

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* typecheck fix

* linter

* more linter

* omg

* Fixes

* [autofix.ci] apply automated fixes

* Code review change

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Leandro Menezes <leandro.menezes@fusionflowsoftware.com>
2025-10-07 14:36:10 -03:00
Matt Fiddaman
52aeec2d59 ♻️ bump react dependencies (#5865) 2025-10-07 17:50:41 +01: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
lelemm
b034d5039f Frontend plugins Support [2/10]: Plugin service worker (#5784)
* Plugin service worker
2025-10-07 12:14:32 -03:00
Matiss Janis Aboltins
5ac29473f2 Mobile payees - swipe to delete (#5824) 2025-10-06 19:23:52 +01:00
Matiss Janis Aboltins
9087add617 Blog post: continuing contributor payments (#808) 2025-10-06 18:58:32 +01:00
Matt Fiddaman
3b0db2bed7 ♻️ bump various build dependencies (#5864)
* vite 7.1.9

* typescript 5.9.3

* @types/node 22.18.8

* linting

* emscripten types

* note
2025-10-06 17:32:42 +01:00
Michael Clark
7a886810bc :electron: Hide the Electron menu (#5847)
* add retries to electron server import

* release notes

* get rid of this menu. If its an app functionality it should be available within the app

* hide the menu - update the ui

* fix function call

* Update VRT

* release notes

* spelling mistake

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-06 17:13:47 +01:00
Haritha Hasathcharu
8bf0997275 Add LKR and CRC currencies (#5848) 2025-10-06 08:41:59 -07:00
Matt Fiddaman
2f965266ab run schedule rules regardless of posted date (#5870)
* run schedule rules regardless of date

* note
2025-10-06 16:31:24 +01:00
Matt Fiddaman
499f24f7fd ♻️ bump non-react deps in desktop-client (#5858)
* patch/minor deps

* @vitejs/plugin-basic-ssl 2.1.0

* remove chokidar

* cross-env 10.1.0

* downshift 9.0.10

* remove focus-visible

* jsdom 27.0.0

* rollup-plugin-visualizer 6.0.4

* note
2025-10-06 16:28:04 +01:00
Matiss Janis Aboltins
4c5be62f56 Mobile payees - add loading indicator to rules count label (#5842) 2025-10-05 19:57:27 +01:00
Matiss Janis Aboltins
1446c7d93f Mobile rules - refactor to use react-aria GridList component (#5804) 2025-10-05 19:57:06 +01:00
Julian Dominguez-Schatz
ad9980307e Fix React compiler behaviour in dev mode (#5853)
* Fix React compiler behaviour in dev mode

* Add release notes

* Add comment
2025-10-05 07:14:03 -07:00
dependabot[bot]
d4ad31fb0c Bump tar-fs from 2.1.3 to 2.1.4 (#5796)
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.3 to 2.1.4.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-05 14:51:07 +01:00
Matt Fiddaman
05355788e4 ♻️ bump sync-server dependencies (#5819)
* uuid 11.1.0 -> 13.0.0

* better-sqlite3 12.2.0 -> 12.4.1

* debug 4.4.1 -> 4.4.3

* express-rate-limit 8.0.1 -> 8.1.0

* pluggy-sdk 0.74.0 -> 0.77.0

* babel/core 7.28.0 -> 7.28.4

* note
2025-10-05 14:36:57 +01:00
Stephen Brown II
805e2b1807 Align amount conversion utilities between api and loot-core (#5747)
* Align amount conversion utilities between api and loot-core

Updates api amount conversion utilities to align with loot-core, improving consistency and maintainability across the project.

Uses decimal places as parameters in conversion functions.

* Moves amount conversion utils to core

Moves amount conversion utilities to the core library.

This change consolidates these utilities for better code reuse
and maintainability across different parts of the application.
It removes the duplicate definition from the API package and
imports it from the core library where it is shared.
2025-10-05 14:23:34 +01:00
Çağdaş Şenel
e54dc0c1ca fix losing transaction amount decimals on update (#5807) 2025-10-05 14:23:15 +01:00
Çağdaş Şenel
e1c2f0a181 feat: show full decimals while editing (#5808)
* show full decimals while editing

* add changes

* handle null
2025-10-05 14:23:04 +01:00
Matt Fiddaman
cc2e329e8e show empty data points on line graph reports (#5815)
* draw zero points

* note

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-05 14:22:51 +01:00
Matt Fiddaman
71f849d1e1 ♻️ bump eslint-plugin-actual dependencies (#5818)
* eslint 9.27.0 -> 9.36.0

* eslint-plugin-eslint-plugin 6.4.0 -> 7.0.0

* eslint-vitest-rule-tester 2.2.0 -> 2.2.2

* note

* misc eslint deps
2025-10-05 14:22:42 +01:00
Matt Fiddaman
0ea8bc1fb4 expand eslint untranslated string rule (#5827)
* expand translation rule and abstract import fix implementation

* fixes

* note

* coderabbit
2025-10-05 14:22:14 +01:00
Matt Fiddaman
f0c7953c0b ♻️ refactor rules code (#5837)
* extract handlebars helpers

* extract condition types

* extract condition class

* extract action class

* extract rule class

* extract rule indexer

* extract rule utils

* update main index

* note

* enable strict where able

* generalise assert

* coderabbit

* move condition-types into condition, move helper functions into rule-utils
2025-10-05 14:22:02 +01:00
Matt Fiddaman
4cf5f9b183 add average per year calculation to the summary report (#5838)
* add average per year to summary report

* note

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-05 14:21:52 +01:00
Michael Clark
80fd997540 Reports - Add an option to trim the start & end intervals (#5641)
* initial test to trim the intervals

* bit more

* got the logic

* fix table data

* add migration for trim intervals

* release notes

* nice work rabbit

* small cleanup

* not sure how major that is but yeah why not
2025-10-05 10:48:35 +01:00
Michael Clark
da93ddf63b 🛠️ Add retries to electron loot-core import (#5843)
* add retries to electron server import

* release notes
2025-10-05 10:48:05 +01:00
Matiss Janis Aboltins
f607f3dd79 Update Yarn configuration and dependencies; migrate to Yarn 4.10.3 (#809) 2025-10-04 10:27:42 +01:00
Matt Fiddaman
a60cef1f3f 🔖 (25.10.0) (#806)
Actual: https://github.com/actualbudget/actual/pull/5834
Docs: https://github.com/actualbudget/docs/pull/806

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
2025-10-02 12:30:30 +01:00
github-actions[bot]
7846d2e787 🔖 (25.10.0) (#5834)
* 🔖 (25.10.0)

* Remove used release notes

* Remove used release notes

---------

Co-authored-by: matt-fidd <81489167+matt-fidd@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-10-02 11:55:47 +01:00
Dustin
2f260699ee Update text widget description in index.md (#807)
Updated text widget description since it does not actually run or
generate a report.
2025-10-02 01:00:27 +01:00
youngcw
ca6d80461a 🐛 fix limit checker (#5835) 2025-10-01 09:04:34 -07:00
Matt Fiddaman
fa14cbb697 fix decimal input in amount input boxes (#5831)
* preserve decimal seperators while typing in input boxes

* note
2025-10-01 16:27:51 +01:00
Matt Fiddaman
1210a74b4a fix error handling for simplefin batch sync (#5822)
* fix error handling for batch simplefin sync

* note
2025-09-30 23:51:17 +01:00
Matt Fiddaman
534c1e6680 fix crash when switching reports (#5823)
* fix report autocomplete

* note
2025-09-30 21:24:46 +01:00
Matt Fiddaman
14d436712a move balance history graph to live queries (#5821)
* move balance history graph to live queries

* note

* [autofix.ci] apply automated fixes

* coderabbit suggestion

* fix null starting balance

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-30 20:27:22 +01:00
Matt Fiddaman
e9f3925124 prevent the account balance graph from showing on small screen sizes (#5816)
* prevent account balance graph from showing on small screen sizes

* note

* lint
2025-09-30 00:46:26 +01:00
Matt Fiddaman
f28229be99 fix payee autocomplete hovering randomly (#5817)
* use correct index for payee autocomplete hover states

* note

* coderabbit
2025-09-30 00:46:07 +01:00
Matt Fiddaman
1fc922c672 skip running the schedule service if the database is not loaded (#5810) 2025-09-29 14:29:17 +01:00
Matiss Janis Aboltins
c712217a7c Update PayeesList component to use flex styling for improved layout consistency (#5803) 2025-09-28 06:31:30 +01:00
Jonas
aebaf42eed rule-templating: clarify meaning of sub prefix in date functions (#803) 2025-09-28 00:09:15 +01:00
Matiss Janis Aboltins
3559b2df3a Mobile Payees - move to react-aria GridList to improve performance (#5802) 2025-09-27 21:54:16 +01:00
Matt Fiddaman
6365a8f4bb replace deprecated function in count points script (#5791)
* fix deprecated function call in count points script

* note
2025-09-25 21:03:44 +01:00
Matt Fiddaman
14426b64fd fix live report time ranges (#5790)
* fix live range

* note

* use latest of currentMonth/latestTransaction

* [autofix.ci] apply automated fixes

* standardise card code

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-25 19:16:40 +01:00
Matiss Janis Aboltins
65790d4b9c Fix token expiration parsing (#5782) 2025-09-25 18:07:26 +01:00
Eric J
f0fcdf41e4 Update Tips and Tricks (#805)
Added section highlighting the ability to use math operators in amounts
2025-09-25 14:43:24 +01:00
Michael Clark
9af4ba4d07 🔽 Downgrade Ubuntu image for more compatibility with older distros (#5788)
* downgrade ubuntu image for more compatibility with older distros

* release ntoes
2025-09-24 19:37:31 +01:00
Matiss Janis Aboltins
28caf8eaf9 Add data-1p-ignore to transaction amounts (#5783) 2025-09-24 17:15:16 +01:00
lelemm
81160256bc Frontend plugins Support [1/10]: CORS proxy (#5780)
* Frontend plugins Support [1/10]: Cors proxy

* Add release notes for PR #5780

* changed code as CodeQL suggested

* CodeQL improvement for ip validation to bypass dns changes

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

* Code Rabbit suggestion

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

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

* Added env var for cors proxy

* multiple changes

* missed updating yarn.lock

* making code rabbit happy

* Tests

* linter

* Code Rabbit changes

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

* [autofix.ci] apply automated fixes

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-24 08:13:24 -03:00
Joel Jeremy Marquez
ca5378c0e8 Optimize scroll provider and replace usage of debounce package with lodash's debounce (#5750)
* Optimize scroll provider and replace usage of debounce package with lodash's debounce

* Coderabbit suggestions
2025-09-23 15:59:55 -07:00
youngcw
08b5b7fdc7 add limit template type (#5775)
* add limit template

* use null to match other tempaltes

* add in directive

* handle no limit preset

* limit periods aren't optional

* make start field the right type

* fix test

* fix looping

* remove unneeded comment
2025-09-23 14:34:36 -07:00
Matiss Janis Aboltins
67c0b6911b Mobile payees: click handlers (#5776) 2025-09-23 22:18:37 +01:00
Matt Fiddaman
4e9e153989 ensure file upload size limits are respected when syncing files (#5779) 2025-09-23 18:06:45 +01:00
Matiss Janis Aboltins
b0321ee265 refactor: update table and import transactions modal components (#5770) 2025-09-23 16:49:03 +01:00
Martyn Ranyard
c19cd3ce57 Added more notice that GoCardless no longer accepts new accounts. (#799)
Users will attempt to install actual, and connect it, but then find they
cannot sign up, so pointing this out earlier is a good thing.

Ideally in the docs page actual should stop advertising it at all, and
simply leave the instructions there for people who already have
accounts, but not mention it in the features and such.
2025-09-23 13:58:46 +01:00
milanalexandre
753a105b3d [WIP] [FIX] Translate Schedule '(No payee)' (#5777) 2025-09-22 22:56:41 +01:00
Matiss Janis Aboltins
5a888d44b9 Create mobile payees list page (#5767) 2025-09-22 18:56:57 +01:00
thromer
7a4799de94 Avoid repeated calls to payee.find in useDisplayPayee.ts (#5761) 2025-09-22 16:26:14 +01:00
Amr Awad
4ad369cd8f add a 'dryRun' option to transactions import API (#5758) 2025-09-22 16:24:35 +01:00
Matt Fiddaman
9a7df9b05d document api quiet mode (#802)
For https://github.com/actualbudget/actual/pull/5762
2025-09-22 13:01:32 +01:00
Matt Fiddaman
2c9a66cec6 API quiet mode (#5762)
* initial implementation of api quiet mode

* note

* lint rule

* rollout logger to loot-core

* add group methods

* windows paths

* make fixer more robust

* appease linter

* add debug

* change option name quiet -> verbose
2025-09-22 12:54:08 +01:00
Matiss Janis Aboltins
6e96b81799 fix: add minimum width to value editor in ConditionEditor component (#5766) 2025-09-22 12:04:43 +01:00
Ruben Olsen Lærk
ea349af32f Closing 787 by clarifying example image. (#790)
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-09-22 10:18:38 +01:00
milanalexandre
f89d4fd13d [FIX] Translate 'Off budget' and 'Transfer' (#5765)
* translate transaction edit modal (mobile)

* add relese note

* fix warn

---------

Co-authored-by: Alex <Alex>
2025-09-22 09:42:03 +01:00
Haritha Hasathcharu
e6ffa63aaa Fix minor spelling error (#801)
Fix a minor spelling error in `docs/advanced/restart.md`.
2025-09-21 10:16:30 -07:00
Matt Fiddaman
cc0812113a improve cleanup when opening multiple budgets through the API (#5760) 2025-09-21 17:47:27 +01:00
Matt Fiddaman
59724d445f fix nuisance timestamp error in API (#5759) 2025-09-21 17:47:10 +01:00
Çağdaş Şenel
6b99497d5d feat(reports): extend report end date to the latest transaction date (#5753)
* add get-latest-transaction function to extend end dates beyond today

* add release notes

* yarn lint

* fix dateEnd and lint warnings

* change getFullRange to return all months

* Update upcoming-release-notes/5753.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-09-21 13:28:08 +01:00
Amr Awad
58dcc66e50 [WIP] Add Lunch Flow to community projects (#800) 2025-09-20 21:58:09 +01:00
Matt Fiddaman
5f5457b226 fix scrolling inside modal with an input that autofocuses (#5752) 2025-09-20 20:03:01 +01:00
dependabot[bot]
4bdcb27573 Bump @eslint/plugin-kit from 0.3.1 to 0.3.5 (#5749)
Bumps [@eslint/plugin-kit](https://github.com/eslint/rewrite/tree/HEAD/packages/plugin-kit) from 0.3.1 to 0.3.5.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/packages/plugin-kit/CHANGELOG.md)
- [Commits](https://github.com/eslint/rewrite/commits/plugin-kit-v0.3.5/packages/plugin-kit)

---
updated-dependencies:
- dependency-name: "@eslint/plugin-kit"
  dependency-version: 0.3.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-20 11:47:11 +01:00
Joel Jeremy Marquez
8ae070ab12 React Compiler (#5562)
* Highlight first suggestion when searching instead of the split option

* Fix error

* Try out react compiler

* Fix typecheck errors

* Increase --max-old-space-size

* Increate --max-old-space-size in package-browser

* Update config and versions

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update versions

* Fix typecheck errors

* Revert some changes

* Implement react compiler to take advantage of some performance improvements

* Fixes

* Remove unused packages

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-19 14:28:16 -07:00
dependabot[bot]
0ca5bec094 Bump axios from 1.8.3 to 1.12.1 (#5719)
Bumps [axios](https://github.com/axios/axios) from 1.8.3 to 1.12.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.8.3...v1.12.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-19 17:32:06 +01:00
dirk-apers
988bc21818 enhancement: add BPER Italy bank parser (BPER_RETAIL_BPMOIT22) (#5741)
* Refine BPER retail parser with anonymized fixtures

* style: streamline bper parser comments

* chore: add release note for BPER Italy parser
2025-09-19 17:31:04 +01:00
Stephen Brown II
f4419b96de Dynamic currency display options (#5744) 2025-09-19 17:06:21 +01:00
passabilities.eth
e30a38ced8 [Feature] Account Net Worth Graph (#5037)
* show net worth graph for each account page

* add release notes

* hide filter button

* fix lint

* import ReactNode type

* find selected accounts based on accountId param

* remove breaks

* can toggle account page net worth graph

* Improves account balance history graph
Refactors the balance history graph to improve its data fetching and rendering.

Removes the `selectedAccounts` state and related logic from the Account component, simplifying its state management. The `accountId` is now passed directly to the BalanceHistoryGraph.

Moves the BalanceHistoryGraph component to the accounts directory and removes the redundant BalanceHistoryGraph in the sidebar.

Updates the queries to directly use the accountId for filtering transactions, leading to more efficient data retrieval.

* mv

* min width and height only for sidebar

* move toggle chart button to account menu

* add fill gradiant to chart

* fix maxWidth

* fix chart hover offset

* responsive graph aspect ratio

* auto hide chart on short view

* revert balance position

* auto hide chart on 15% height

* remove chart boolean from internal state

* Implement account-specific net worth chart preferences

Replaced global net worth chart visibility preference with account-specific preferences. Updated components to use the new dynamic preference keys and added a toggle option in the account menus for better user customization.

* lint

* fix account groups

* Update VRT

* bump

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 13:32:21 -07:00
Michael Süssemilch
98b91cfb8d fix: make sure cumulative value can not be undefined (#5738)
* fix: make sure cumulative value can not be undefined, which results in NaN

* doc: add release notes
2025-09-18 08:20:57 -07:00
Josh Woodward
942d3ea4d5 Schedules with the same amount and date are now handled properly (#5414)
* minor typescript updates

* [autofix.ci] apply automated fixes

* more typescript changes

* [autofix.ci] apply automated fixes

* Another typescript

* fixes

* [autofix.ci] apply automated fixes

* fixed test

* [autofix.ci] apply automated fixes

* renaming a few things

* [autofix.ci] apply automated fixes

* a test

* test 2

* [autofix.ci] apply automated fixes

* test 3

* attempting to add a new test

* [autofix.ci] apply automated fixes

* test update

* additional typing.

* [autofix.ci] apply automated fixes

* Testing first item again

* [autofix.ci] apply automated fixes

* temporarily adding logging

* [autofix.ci] apply automated fixes

* only running rules within a schedule if exists

* swapping if

* removing unused import

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* fixing typecheck

* updated test

* [autofix.ci] apply automated fixes

* Updated screenshots

* further test fixing

* changing test order

* [autofix.ci] apply automated fixes

* Almost there

* new images

* tests may be flaky

* just one image

* 🙏

* 🙏 🙏

* removing all images

* Revert "removing all images"

This reverts commit 4492cb7080.

* small order change

* [autofix.ci] apply automated fixes

* Update VRT

* Update packages/desktop-client/e2e/schedules.test.ts

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

* reverting unrelated changes

* [autofix.ci] apply automated fixes

* Reverting one other typescript change

* testing completing 1 schedule

* Update VRT

* release wrote rewrite

* Making sure rule application is saved

* Cleaning up get function

* prettier and null catch

* Removed now unused schedule type

* Better falling back if rule / schedule no longer exists

* linting

* Better typing for db request

* camel case to make code rabbit happier

* slightly more accurate comment

* [autofix.ci] apply automated fixes

* Running other rules when linked rule runs

* lint / prettier

* one more lint

* Update 5414.md

---------

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: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-16 20:12:31 -07:00
Matiss Janis Aboltins
3c9b70df79 Integrate responsive design for RecurringSchedulePicker component (#5733) 2025-09-16 21:33:30 +01:00
milanalexandre
5c18b53888 [fix] make the StatusLabel text appear on a single line (#5736)
* make the StatusLabel text appear on a single line

* add relese note

---------

Co-authored-by: Alex <Alex>
2025-09-16 13:30:39 -07:00
mgibson-scottlogic
413398531c Fix copy last month's budget including hidden categories (#5735)
* Add check that category is not hidden before copying last months budget

* Add release notes

* Add check that group is also not hidden

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-09-16 11:21:50 -07:00
jgeneaguilar
e4c3d4e12a Fix AccountMenu popover in Italian (#5734) 2025-09-16 16:54:35 +01:00
Michael Clark
91b838c539 🔔 Add setting to disable update notifications (#5725)
* add setting to disable update notifications

* release notes

* fix dependency array

* Update packages/loot-core/src/server/preferences/app.ts

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

* moving latest version info into app state to prevent needless calls to external api

* fix release note

* Update VRT

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-15 09:12:24 +01:00
Joel Jeremy Marquez
9eb0e04c6a [Maintenance] Remove raw variables in render (#5718)
* Remove usage of raw variables in renders

* Release notes

* Update status

* Fix typecheck error
2025-09-12 15:26:09 -07:00
Joel Jeremy Marquez
14bf3d611c [Maintenance] Remove usage of a raw variable in CategoryAutocomplete component (#5686)
* Remove usage of a raw variable in CategoryAutocomplete component

* Cleanup

* Fix typecheck error

* Fix typecheck error

* Highlight first suggestion when searching instead of the split option

* Fix error

* Fix special item highligted index
2025-09-12 15:25:52 -07:00
Joel Jeremy Marquez
34b6599da3 Re-design mobile accounts page to better match the transactions and budget tables/list + add all accounts page (#5610)
* Re-design mobile accounts page to better match the transactions and budget tables/list + add all accounts page

* [autofix.ci] apply automated fixes

* Update to "All accounts" to match desktop text

* Update prop

* Update VRT

* Increase height

* Update VRT

* Update UI

* Update VRT

---------

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: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2025-09-11 09:17:07 -07:00
Evan Smith
bc1cd9023c Remove auto-scrolling behavior when editing split transactions on mobile (#5572)
* Remove behavior to auto scroll to transaction with 0 amount

* Add release notes
2025-09-11 16:26:21 +01:00
dependabot[bot]
5ae9176f5e Bump vite from 6.3.5 to 6.3.6 (#5707)
* Bump vite from 6.3.5 to 6.3.6

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.5 to 6.3.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.3.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.6/packages/vite)

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

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-09-11 16:19:48 +01:00
Joel Jeremy Marquez
2ed908aff4 Remove usage of a raw variable in Account component (#5684) 2025-09-11 08:13:24 -07:00
Matt Fiddaman
3318dd56e9 remove BANKS_WITH_LIMITED_HISTORY override array for GoCardless (#5714)
* remove banks with limited history gocardless array

* note

* [autofix.ci] apply automated fixes

* set 89 in fallback

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-11 15:48:43 +01:00
Matt Fiddaman
23a943a05b remove BANKS_WITH_LIMITED_HISTORY override instructions (#798)
https://github.com/actualbudget/actual/pull/5714
2025-09-11 15:48:28 +01:00
Matt Fiddaman
f1a8522b79 add warning for GoCardless sign up instructions (#797) 2025-09-11 15:48:14 +01:00
Michael Clark
00ab11cc40 :electron: Update Electron to v38 (#5713)
* update electron to 38

* release notes
2025-09-11 15:40:40 +01:00
Abraham
277967c722 Fixing typo in documentation (#796) 2025-09-11 15:39:12 +01:00
youngcw
25c83eb64d Add bank sync option to only import balance (#5711)
* add investment account setting

* note

* disable other options if enabled

* handle 0 balance

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

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

* [autofix.ci] apply automated fixes

* dont exit early

---------

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

* add release notes
2025-09-11 14:45:43 +01:00
Nalin Gupta
d2cfedf5e4 Fixes #5674 mark transfer issue (#5696)
* Fixes #5674 mark transfer issue

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-09 20:32:55 -07:00
Shalan
00a4cfcabf feat: add EGP and SAR currencies to supported list (#5698)
* feat: add EGP and SAR currencies to supported list

* add release notes for currency support

* use yarn generate:release-notes to fix release notes

* Rename file with PR number 5698
2025-09-08 08:04:55 -07:00
Karim Kodera
a18a05f55a Introduction of APIs to handle Schedule + a bit more. (#5584)
* Introduction of APIs to handle Schedule + a bit more. Refer to updated API documentation PR2811 on documentation.

* Fixed lint Error

* Removed unused declarations

* Fixed Bug in Test module

* Avoiding type Coercion fixes and direct assignment on conditions array.

* Lint Error Fixes

* more issues fixed

* lint errors

* Remove with Mutation in Get function. Fixed quotes. updated getIDyName for error handling

* More lint errors

* Minor final fixes.

* One type coercion removed

* One type coercion removed

* Revert back to original working code

* Added Account testing for both get by ID and updating schedules

* [autofix.ci] apply automated fixes

* Added Payee tests as well

* Payee Tests

* [autofix.ci] apply automated fixes

* Optimized condition checking at the beginning of the code and avoid ambiguity in case of corrupt schedule

* Mode debug infor on error in testing

* better bug tracking

* //more trouble shooting

* Bug fixed

* [autofix.ci] apply automated fixes

* Minor mofication to satisfy code rabbit. We should be ready for review.

* [autofix.ci] apply automated fixes

* Removing type coercion from the model

* [autofix.ci] apply automated fixes

* fixed compilation error

* Fixed new bugs

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-08 09:03:11 +01:00
Matiss Janis Aboltins
b399f290a6 Add ErrorBoundary around Modals and updating FatalError modal behavior. (#5649)
Fix #4703
2025-09-07 19:14:31 +01:00
Matiss Janis Aboltins
7c07295448 Issues: add issue types (#5648) 2025-09-07 19:13:15 +01:00
Michael Clark
510dd31de6 🔧 Fix heap allocation error when building locally with docker (#5695)
* fix heap allocation error when building locally with docker

* release notes

* clarifying comment
2025-09-07 13:32:40 +01:00
Michael Sanford
8e5a88bc55 Add NO_COLOR standard environment flag to sync-server logging. (#5676)
* Add NO_COLOR standard environment flag to sync-server logging.

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-05 15:31:12 -07:00
Joel Jeremy Marquez
bbf91ccbca [Maintenance] Remove usage of a raw variable in PayeeAutocomplete component (#5687)
* Remove usage of a raw variable in PayeeAutocomplete component

* Add note on 100 payees limit
2025-09-05 12:26:44 -07:00
Joel Jeremy Marquez
58bc14e1b3 Optimize usage of useScrollListener and useTransactionsSearch (#5690) 2025-09-05 12:26:05 -07:00
Joel Jeremy Marquez
de2966a06c [Maintenance] Remove usage of a raw variable in AccountAutocomplete component (#5685)
* Remove usage of a raw variable in AccountAutocomplete component

* Remove usage of a raw variable in CategoryAutocomplete component

* Release notes

* Fix typecheck error

* Fix typecheck errors

* Remove CategoryAutocomplete changes
2025-09-05 11:21:59 -07:00
Michael Süssemilch
90b859fd74 feat(currency): add BRL, JMD, RSD, RUB, THB and UAH (#5653)
* feat: add BRL, JMD and THB currencies

* feat: add RSD, RUB and UAH
2025-09-05 10:57:29 -07:00
biolan
fafcee071d Add Romanian and Moldovan currency (#5688)
* * add Romanian Leu currency

* add Moldovan Leu currency

* Add release note

* * Add release note

* * one line release note

---------

Co-authored-by: biolan <admin@biolan.dev>
2025-09-05 07:05:56 -07:00
Bernardo Jordão
ed40901534 Fix range calculator on the MonthPicker component (#5622)
* fix month range

* release notes

* use floor() to match e2e tests
2025-09-05 06:41:23 -07:00
Julian Dominguez-Schatz
338093836b Add tools to migrate/un-migrate to/from UI automations (#5624)
* Add helper to render automations to template notes

* Add modal to un-migrate from the automations UI

* Add import warning to automations modal

* Add release notes

* Use CSSProperties type from React directly
2025-09-05 07:32:17 -04:00
Julian Dominguez-Schatz
4df05aa37c Fix version bump logic to work if the month has rolled over (#5662)
* Fix version bump logic to work if the month has rolled over

* Refactor script to be more testable

* Add tests for regression

* Move tests to dedicated package

* Add release notes

* Coderabbit
2025-09-05 07:31:53 -04:00
Julian Dominguez-Schatz
afc97220b9 🔖 (25.9.0) (#794)
https://github.com/actualbudget/actual/pull/5663
2025-09-03 21:08:50 -04:00
Julian Dominguez-Schatz
5459b8baca 🔖 (25.9.0) (#5663)
* 🔖 (25.9.0)

* Remove used release notes

* Empty commit to bump CI

* Add release notes for PR #5663

* Remove AI-generated release note

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 19:27:22 -04:00
Matiss Janis Aboltins
902f57a4a4 Fix contributor list by moving @alecbakholdin (#795) 2025-09-03 23:00:14 +01:00
Jonathan
fb5c47d13d Make Experimental Features installation instructions more obvious (#792)
I could not find instructions on the [Budget
Templates](https://actualbudget.org/docs/experimental/goal-templates)
experimental feature docs page for how to enable the feature. I did not
look closely enough at the advanced settings to realize I had to click a
link, even though I had looked at the setting page.

After asking in discord, I was told how to enable the feature, and even
found that there was a parent page [Experimental
Features](https://actualbudget.org/docs/experimental/) which had the
instructions I would have needed.

This PR simply adds a short sentence with a link back to that root page
on the experimental features pages. This would have helped me find my
own solution without needing to ask.

I did not add anything to the [Pluggy.ai
Setup](https://actualbudget.org/docs/experimental/pluggyai) page because
it has the blurb `Pluggy integration is experimental at this point, so
before you can use it you need to enable it under Settings -> Advanced
Settings -> Experimental Features -> Pluggy.ai Bank Sync` in the page
and didn't have the same callout sections at the warning callout
sections as the other pages at the top.
2025-09-02 08:33:51 -07:00
Julian Dominguez-Schatz
073d91a7b7 Fix income modal balance not showing (#5659)
* Fix income modal balance not showing

* Add release notes
2025-09-02 10:02:44 -04:00
Gediminas Lelešius
58a638cee2 [fix] Support webRoot being in a hidden folder (e.g. .cache) (#5643)
Fixes #5642 and makes npx and pnpx work for @actual/sync-server
2025-08-29 15:52:29 -04:00
milanalexandre
23f1bae7db [fix] Adjust modal styles and text wrapping in TransactionError (#5634)
* adaptive size of the modal

* add relese note

---------

Co-authored-by: Alex <Alex>
2025-08-27 13:24:31 -04:00
Matt Fiddaman
57240284a3 fix health check script (#5631)
* fix health-check

* note
2025-08-26 16:10:45 -04:00
Matiss Janis Aboltins
6c6d8931bb Release Pluggy bank-sync integration (#5628) 2025-08-26 18:17:20 +01:00
Michael Clark
cae8fa4e6f :electron: Building bcrypt for correct architecture during packaging (#5623)
* rebuilding bcrypt

* release notes
2025-08-25 09:41:45 +01:00
Michael Süssemilch
48ae371ecc fix: crash on filtering by amount (#5608)
* fix: crash on filtering by amount

* doc: add release notes
2025-08-23 10:55:22 +01:00
Matiss Janis Aboltins
e8d93fb797 Implement responsive DateSelect component for mobile view (#5607) 2025-08-22 22:13:16 +01:00
Joel Jeremy Marquez
6790f99de2 [Mobile] Show uncategorized/overspending totals on budget banners (#5605)
* [Mobile] Show uncategorized/overspending totals on budget banners

* Cleanup

* Update VRT

* Coderabbit feedback

* Remove console.log

* Rename release notes

* Use Array.from

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 21:26:55 -07:00
Joel Jeremy Marquez
68f0b05aed [Redux] Rename queriesSlice to transactionsSlice (#5598)
* Move getAccountsById to accountsSlice

* [autofix.ci] apply automated fixes

* [Redux] Rename queriesSlice to transactionsSlice

* Fix import

* Release notes

* Remove nonexistent saved state

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-21 18:16:43 -07:00
Joel Jeremy Marquez
c954d3924e [Redux] Move tags states from queriesSlice to tagsSlice (#5597)
* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* [autofix.ci] apply automated fixes

* Move getAccountsById to accountsSlice

* [autofix.ci] apply automated fixes

* [Redux] Move tags states from queriesSlice to tagsSlice

* Fix lint + release notes

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-21 15:31:06 -07:00
Joel Jeremy Marquez
adf4bd2d0f Enable Make Transfer menu for child transactions (#5604) 2025-08-21 15:24:16 -07:00
Matiss Janis Aboltins
102c6eaff6 Enhance responsiveness of GenericInput in RuleEditor component for mobile devices (#5601)
* Enhance responsiveness of GenericInput in RuleEditor component for mobile devices

* Refactor ActionEditor layout in RuleEditor component for improved responsiveness

- Adjusted styles for the View components to enhance layout flexibility.
- Ensured the GenericInput component maintains appropriate minimum width based on method type.
- Updated Stack component to prevent shrinking, improving overall UI consistency.
2025-08-21 22:17:17 +01:00
Joel Jeremy Marquez
21105fc25b [Redux] Move category states from queriesSlice to budgetSlice (#5593)
* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* [autofix.ci] apply automated fixes

* Move getAccountsById to accountsSlice

* [autofix.ci] apply automated fixes

* Fix merge error

* [autofix.ci] apply automated fixes

* [Redux] Move category states from queriesSlice to budgetSlice

* Move getCategoriesById to budgetSlice + fix lint

* Fix lint

* [autofix.ci] apply automated fixes

* Fix typecheck

* Add new slices to boundActions

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-21 14:15:30 -07:00
Matiss Janis Aboltins
c69142f58e Refactor schedule handling in ManageRules component (#5600)
- Updated the ManageRules component to use ScheduleEntity type for schedules.
- Improved the describeSchedule function to include type annotations for better clarity.
- Added a conditional check to handle cases where the schedule may not exist, ensuring robust functionality.
2025-08-21 20:09:21 +01:00
Matiss Janis Aboltins
fe32bf14c6 Mobile rules - update default stage to be "default" instead of "pre" (#5587) 2025-08-21 19:24:52 +01:00
Joel Jeremy Marquez
92e43bc3b5 [Redux] Move payee states from queriesSlice to payeesSlice (#5592)
* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* [autofix.ci] apply automated fixes

* Move getAccountsById to accountsSlice

* [autofix.ci] apply automated fixes

* [Redux] Move payee states from queriesSlice to payeesSlice

* Fix merge error

* Fix merge error

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Fix import

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-21 08:51:38 -07:00
Joel Jeremy Marquez
165be3d0df [Redux] Move account states from queriesSlice to accountsSlice (#5581)
* Add rejected reducers

* Add dirty states

* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* [autofix.ci] apply automated fixes

* [Redux] Move account states from queriesSlice to accountsSlice

* Release notes

* Move getAccountsById to accountsSlice

* [autofix.ci] apply automated fixes

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-21 08:16:22 -07:00
youngcw
3dd22994b7 fix bug (#5594) 2025-08-21 07:56:09 -07:00
Michael Clark
96bfc69332 Command bar VRTs (#5591)
* command bar vrts

* release notes

* reduce flakiness

* oh

* add screenshots back in

* Update VRT

* trigger

* reducing screenshots

* Update VRT

* trigger

* jeez

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 09:08:46 +01:00
Joel Jeremy Marquez
284fc13161 [Mobile] Do not show transfer transactions on uncategorized transactions view/page (#5589)
* [Mobile] Do not show transfer transactions on uncategorized transactions view/page

* [autofix.ci] apply automated fixes

* Rename

* Add release notes for PR #5589

* Change release notes to bugfix

---------

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-08-20 14:09:53 -07:00
Matiss Janis Aboltins
30102b1474 Revert "Dispatch github ci jobs after running update-vrt workflow (#5586)" (#5590)
This reverts commit 3a8eb96d76.
2025-08-20 21:28:27 +01:00
Matiss Janis Aboltins
3a8eb96d76 Dispatch github ci jobs after running update-vrt workflow (#5586)
* Enhance CI workflows to support repository dispatch events and improve branch handling

- Added support for `repository_dispatch` events in build, check, and codeql workflows.
- Updated concurrency group to include `client_payload.pr_number` for better context.
- Modified checkout steps to reference the correct branch from `client_payload` if available.

* Add release notes for PR #5586

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 21:12:16 +01:00
Joel Jeremy Marquez
91a8bc3ef1 Prevent unnecessary calls to DB if same redux action is already pending (#5579)
* Prevent unnecessary calls to DB if same redux action is already pending

* [autofix.ci] apply automated fixes

* Release notes

* Add rejected reducers

* Add dirty states

* Remove commented code

* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* Update packages/desktop-client/src/queries/queriesSlice.ts

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

* [autofix.ci] apply automated fixes

* Coderabbit feedback

---------

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-08-19 19:42:15 -07:00
Julian Dominguez-Schatz
dc2ab4843f Connect automations UI to backend (#5533)
* Connect automations UI to backend

* Fix integer -> amount

* Add release notes

* Fix length check

* No layout shift

* Coderabbit: decimal places
2025-08-19 20:30:09 -04:00
Matt Fiddaman
89e5676cfb only show schedule name in notes for upcoming transactions (#5580) 2025-08-19 19:06:27 -04:00
POGMAN
645342d47d Compute color of tags text for dark mode (#5574) 2025-08-19 10:16:45 -07:00
Julian
116c695964 fix filter transactions by closed account transfer payee (#5438)
* fix filter transactions by closed account transfer payee

* apply equivalent ignore pattern to arguments as variables in eslint

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-19 08:14:40 -07:00
Joel Jeremy Marquez
a5d18929c8 Fix AutoTextSize warnings (#5576)
* Fix AutoTextSize warnings

* Release notes
2025-08-19 08:14:21 -07:00
Matt Fiddaman
989d332e1b fix rerender loop in calendar card (#5573) 2025-08-18 11:19:45 -04:00
Michael Clark
169d08e721 🗑️ Remove old sourcemap and process package (#5567)
* remove old sourcemap package and process package

* release notes

* Update 5567.md
2025-08-18 08:54:44 +01:00
milanalexandre
a74da11904 translate import transactions (#5565)
* translate import transactions

* translate import transactions headers

* add relese note

* feed back

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

---------

Co-authored-by: Alex <Alex>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2025-08-17 07:39:55 -07:00
Michael Clark
cccd66713d 🗑️ Remove unused package (reselect) (#5566)
* remove unused package

* release notes
2025-08-16 21:04:41 +01:00
Matiss Janis Aboltins
1ce53b2762 feat(mobile): ability to delete rules (#5556) 2025-08-16 17:56:22 +01:00
milanalexandre
d75f984186 Translate closing account and more (#5549)
* translate

* add relese note

* Update VRT

* feed back

* Update VRT

* revert vrt

* avoid duplicate translations

* translate rename save butons (reports custom)

---------

Co-authored-by: Alex <Alex>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 18:06:38 -07:00
frank_zhang
0b926b86b1 Update sync.md (#786)
Add the lacking double quote in the sub-title: What Does Resetting Sync"
Mean
2025-08-15 06:21:41 -07:00
frank_zhang
9397bdd733 Made some adjustments to make the doc more readable (#788) 2025-08-15 06:21:07 -07:00
frank_zhang
5919ad79a1 Update restore.md (#784)
Completed the beginning introduction of Restoring a Backup doc

**P.S. The first screenshot illustrating where to close the finance file
needs to be updated to comply with that in the current version.**
<img width="384" height="402" alt="截屏2025-08-15 09 48 32"
src="https://github.com/user-attachments/assets/c44012df-ecc3-4d76-8280-858001c68aa8"
/>
2025-08-14 19:00:40 -07:00
Matiss Janis Aboltins
692ade7254 Extract mobile rules form to a new page (#5516) 2025-08-14 21:52:47 +01:00
frank_zhang
4d02e1edd9 Update filters.md (#782)
Make descriptions match picture
2025-08-13 20:29:26 -07:00
frank_zhang
5f6f430aed Update index.md (#779)
Making the sentence more accurate and easy-to-read.
2025-08-13 20:27:29 -07:00
frank_zhang
52c9849aed Update schedules.md (#778)
corrected a grammatical error
2025-08-13 20:26:31 -07:00
dependabot[bot]
da0ac0b144 Bump tmp from 0.2.1 to 0.2.5 (#5551)
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.5.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.1...v0.2.5)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-13 22:07:53 +01:00
Michael Clark
be20f65b6e 🛠️ Moving loot-core to Vite (#5379)
* Moving loot core to Vite
2025-08-13 20:49:48 +01:00
Joel Jeremy Marquez
1067e32028 [Mobile] Fix preview transactions not loading in multi-account views and uncategorized splits not loading (#5072)
* Fix preview transactions not loading in multi-account views and uncategorized splits not loading

* Update release notes

* Fix typecheck error

* Coderabbit feedback

* Fix lint error

* Fix banners

* Fix uncategorized view to use new route

* Updates

* Update VRT

* Dummy commit

* Fix lint

* [autofix.ci] apply automated fixes

* Update loading

* Coderabbit feedback

* [autofix.ci] apply automated fixes

* Delete old snapshots

* Translate Closed

* Update Closed translation

* Update translation

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

* [autofix.ci] apply automated fixes

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-08-13 11:05:05 -07:00
Johannes Maas
dcb1c69e67 Display absolute date of reconciliation (#5521) 2025-08-13 13:47:27 -04:00
Matiss Janis Aboltins
f084e28086 Added CODEOWNERS file (#5544) 2025-08-12 22:10:10 +01:00
Joel Jeremy Marquez
f54e459e03 Fix transaction hooks and improve transactions loading experience in mobile (#5415)
* Fix transaction hooks and improve transactions loading experience in mobile

* Allow skipping of running balance calculation on preview transactions + recalculate running balances if there are any inversed transaction amounts

* [autofix.ci] apply automated fixes

* Disable PullToRefresh when transaction list is in loading state (See #5080)

* Cleanup

* Add calculateRunningBalancesTopDown to calculate top down from starting balance

* update balance sheet value

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-12 13:57:17 -07:00
Matiss Janis Aboltins
ccdde60bfe TypeScript: convert edit rules modal (#5543) 2025-08-12 21:41:13 +01:00
Michael Süssemilch
712d315229 fix: hidden category selection and include hidden when they are shown on budget (#5526)
* fix: hidden category selection

* chore: add (hidden) to hidden categories and groups

* feat: add hidden category to filter

* feat: show hidden categories in mobile

* refactor: remove unused variable
2025-08-12 12:57:54 -07:00
milanalexandre
31c6362307 Fix SpendingCard crash (#5541) 2025-08-12 09:51:10 -04:00
CyberSardinha
d1519993d6 Add gocardless support for Stadtsparkasse München (#5383)
* Add files via upload

* added credits to the original author Nebukadneza

* [autofix.ci] apply automated fixes

* Create 5383.md

* Improve Stadtsparkasse München GoCardless transaction parsing

* Improve Stadtsparkasse München GoCardless transaction parsing

* Update 5383.md

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-12 01:18:55 -04:00
Julian Dominguez-Schatz
ebde78434a Add backend logic to support automations UI (#5532)
* Add backend logic to support automations UI

* Fix tests

* Add release notes

* PR feedback: default priority

* PR feedback: template_settings

* PR feedback: batch

* PR feedback: no remainder special-casing

* Simplify SQL

* Fix tests

* Coderabbit

* Schema default
2025-08-11 23:39:09 -04:00
Pheggas
ea2d334c40 [WIP] Better readability and fixes (#754)
I changed two docs pages - multi user and oauth (opeid provider).

There were some minor inconsistencies and errors. I also fixed the
redirect URI from `<domain>/path/openid/callback` to
`<domain>/openid/callback` as the first one was incorrect for my
keycloak instance.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-08-11 16:05:25 +02:00
Michael Clark
5e6efe0f45 Change search plugin to a more accurate one (#771)
The search tool we use has always been a bit clunky for me. There's no
keyboard shortcut support, it doesn't look great, doesn't support react
19, and I had to write a theme sync function for it to work properly
with Docusaurus V3.

The package I've upgraded here fixes all those issues. I've also updated
all the packages to the latest version, and aligned the node support
with the Actual repo.

**Old (very inaccurate search):**

<img width="885" height="573" alt="image"
src="https://github.com/user-attachments/assets/eae157de-8282-412f-b89c-618f3e3e99e5"
/>

**New:** 

<img width="676" height="605" alt="image"
src="https://github.com/user-attachments/assets/145db22f-8216-4e3f-9a98-a8bd469f1494"
/>

It also comes with a fancy new search page when you click _See all
results_
2025-08-10 19:56:26 +01:00
Ruben Olsen Lærk
8e193f4887 Download page is now centered. (#774)
Fixing an old annoyance :-)
2025-08-10 20:18:37 +02:00
Ruben Olsen Lærk
e5da8818d5 Fixing #745 - Limitations of privacy filter not disclosed in docs (#772)
- Amended main explanation in Tips And Tricks
- Linked to the caveats from the Tour dealing with the UI.
- Bonus: Fixed ALT TEXT on images.
2025-08-10 18:16:03 +02:00
Ruben Olsen Lærk
e8b6d9a7b0 Another starting fresh method (#761)
Based on a discussion in #general-chat about starting fresh from
https://discord.com/channels/937901803608096828/940290142579605514/1400170231556603954

Thanks to Magnus Burnsides for this kick in the butt :-D
2025-08-10 16:22:37 +02:00
Matiss Janis Aboltins
8fcaff8e3a Fix display of link schedules condition (#5529) 2025-08-09 16:34:02 +01:00
Michael Clark
622d97c06f Upgrade docusaurus (#769)
> [!NOTE]  
> Important This will need a decent amount of testing of images, links,
sidebar, rss feed, etc

Upgrading Docusaurus to the latest.

- We can now use Mermaid diagrams
- It's supposed to have better performance
- It's actively supported (v2 wasn't)

Throughout this PR you'll notice 

- Formatting updates (they are required for the build process)
- Some CSS updates - some default styling was changed in the plugins we
use. The updates I've made should make the style near identical to
what's currently live
- Some updates & fixes to bring our docs in line with the v3 way of
writing

Overall, the docs should look the same.


## Known issues:

- The top page nav is flickering when clicking links in the top page
nav. It's happening on the main Docusuarus website
https://docusaurus.io/blog
- If we upgrade we'll have to accept it until they fix it on their end
2025-08-09 14:52:21 +01:00
dependabot[bot]
13bc99738f Bump tmp from 0.2.1 to 0.2.4 (#5504)
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.1...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-09 01:39:06 -04:00
Junyuan Zheng
959824d317 [BUG] Fix incorrect mathematic calculation in reconcile window (#5528)
* [Bug 5527] Fix incorrect mathmatic equation in resoncile window

* fix linter

* update

* add note

* [autofix.ci] apply automated fixes

* fix linter

* fix linter & type

* fix typing error

* fix lint and typing

* add test

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-09 01:26:06 -04:00
ShayanAraghi
2abc144b03 Add fix for unfocusing the date disabling all other buttons (#5519)
* Add fix for unfocusing the date disabling all other buttons

* Add Release notes
2025-08-08 11:41:12 -07:00
dgliwka
71250f5fb7 [WIP] add Polish Złoty currency (#5472)
* add Polish Złoty currency

* Add release note

* Add Polish Złoty currency

* Delete upcoming-release-notes/5672.md
2025-08-08 09:40:52 -07:00
Michael Süssemilch
c5f050f6f8 fix: negative numbers in summary report (#5520)
* fix: negative numbers in summary report

* doc: add release notes
2025-08-08 12:32:48 -04:00
r1ch
0d46e221f9 Fix missing space on MergeUnusedPayeesModal (#5523)
* Missing space MergeUnusedPayeesModal.tsx

Create PR branch

* Create 5523.md

* [autofix.ci] apply automated fixes

* Update MergeUnusedPayeesModal.tsx

* Add parent

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-08 09:31:55 -07:00
Matiss Janis Aboltins
6bf2f581a3 Extracted rule editor outside of the modal and into its own component (#5518) 2025-08-07 22:38:44 +01:00
POGMAN
3c34603111 Add 'Prior year to date' time range (#5419)
* add 'Last year to date' time range

* Rename 'Last YTD' to 'Prior YTD'

* Day accurate prevYear for Prior YTD

* Update VRT
2025-08-07 13:31:12 -07:00
milanalexandre
3e488ae8f7 Fix translate payees page (#5514)
* Payees page

* edit rule

format

* add relese note

* feed back

---------

Co-authored-by: Alex <Alex>
2025-08-07 15:51:25 -04:00
Emil George
bacf3091b6 [4036] - Fix Payee Name Overflow (#5489)
* fix: update payee name overflow styles

* chore: add release note

* fix: use text one line component
2025-08-07 10:16:05 -07:00
Emil George
ac77c0f360 Add Indian Rupee (INR) Currency (#5483) 2025-08-07 11:49:21 -04:00
r1ch
e21256e7a2 [WIP] Fix display of old payee name in MergeUnusedPayees modal (#5485) 2025-08-07 09:35:16 -04:00
Alex Camilleri
43bc27e00f [WIP] Adding bank: fixed instructions order (#766)
I encountered this issue when I [created a
PR](https://github.com/actualbudget/actual/pull/5479) to add a new bank
to Actual.
The docs were instructing me to first create the PR and then generate
the docs.

At the same time, when I tried to open the PR, the default template
message was instructing me to generate the release notes *before*
opening the PR.

```
<!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. -->
```

I am not sure who is telling the truth here, but given the emphasis that
the template put on *before* I am inferring that the docs had the wrong
order. If this is not the case, of course feel free to nuke this PR and
update the GitHub template instead.
2025-08-07 07:58:24 +02:00
Joel Jeremy Marquez
22237d11ca Add Philippine Peso currency (#5507) 2025-08-06 17:39:49 -07:00
milanalexandre
63604c1161 Fix translate custom report and rule (#5486)
* translate Allocation Methods

* fix translate Action

translate Split info

* translate date range

* translate monthly spending

* translate shorter filter

* translate date filter reports custom

* add relese note

---------

Co-authored-by: Alex <Alex>
2025-08-06 15:14:36 -07:00
Michael Süssemilch
74b95ca83e feat(currency): add to reports (#5283)
* feat(currency): add to networth report

* feat(currency): add to cashflow report

* feat(currency): add to spending report

* feat(currency): add to summary report

* feat(currency): add to calendar report

* feat(currency): add to custom report

* chore: add release note

* chore(rename): rename formatFunc to format

* fix: missing average rounding

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-08-06 18:05:37 -04:00
Matiss Janis Aboltins
6a9028464b Mobile rules page (#5390) 2025-08-06 23:00:08 +01:00
Matt Fiddaman
186d417c6e make bulk notes prepend/append behaviour consistent with rules (#5464) 2025-08-06 16:26:10 -04:00
Alex Camilleri
c898116412 Added Länsförsäkringar bank (#5479)
* Added Länsförsäkringar

* Release Notes

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2025-08-06 21:21:27 +01:00
fritz
6ae701b389 fix: mention ACTUAL_DATA_DIR is now dataDar in config (#758)
<!-- The process for Actual Budget Community Documentation pull requests
is documented at
https://actualbudget.org/docs/contributing/#submitting-a-pull-request
-->

Fixes
[actualbudget/actual/#5395](https://github.com/actualbudget/docs/issues/759)

**TL;DR** ACTUAL_DATA_DIR works as an env variable but not in the
config.json anymore. That comes up if you are migrating from the old
server to the new.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-08-06 21:48:12 +02:00
Matt Fiddaman
85bd6bfb81 hide hold for next month option when "to budget" is negative (#5496) 2025-08-06 13:12:58 -04:00
Matt Fiddaman
c8fb61e270 add paying contributors page to sidebar (#764)
I found this through the blog post, but the page wasn't set up correctly
with a title and didn't appear in the sidebar.

Before:
https://actualbudget.com/docs/contributing/leadership/paying-contributors

After:
https://deploy-preview-764.www.actualbudget.org/docs/contributing/leadership/paying-contributors

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-08-06 13:43:33 +02:00
Matiss Janis Aboltins
72616376e2 Enhance Tooltip component with close delay functionality (#5475) 2025-08-06 08:49:20 +01:00
Matt Fiddaman
136ad055f7 ♻️ bump sync-server dependencies (#5497)
* bcrypt 5.0.2 -> 6.0.0

* supertest 6.3.4 -> 7.1.4

* pluggy-sdk 0.70.1 -> 0.74.0

* types

* better-sqlite3 11.10.0 -> 12.2.0

* express-rate-limit 7.5.0 -> 8.0.1

* babel/core 7.27.1 -> 7.28.0

* typescript 5.8.3 -> 5.9.2

* node types

* note

* typechecker
2025-08-06 02:00:04 -04:00
Matt Fiddaman
c621f68e0a fix live report date mode not supporting a 2 month window (#5495)
* allow live report date ranges 2 months wide

* note
2025-08-05 23:19:54 -04:00
Matt Fiddaman
4f611ca458 fix (#5493) 2025-08-05 22:12:11 -04:00
Matt Fiddaman
d98e8375a8 merge automatic package versioning GitHub workflows (#5480)
* merge bump-package-versions script with get-next-package-version

* note

* appease the rabbit

* add update flag to node script

* use update flag in workflow

* not much has changed but they live underwater
2025-08-05 22:06:37 -04:00
passabilities.eth
4f50c1a889 Display Schedule Name in Upcoming Tx Notes (#5482)
* show schedule name in notes for upcoming scheduled transactions

* release notes
2025-08-05 21:36:34 -04:00
Matiss Janis Aboltins
0fa582b3d3 feat: show/hide balance graph in side nav (#5452) 2025-08-05 21:35:33 +01:00
Matt Fiddaman
80cd2cf347 prevent closing an account into itself (#5462)
* prevent closing account into itself

* note

* prevent at API level too
2025-08-05 15:11:01 -04:00
milanalexandre
f328332ab2 fix translations on the "new transaction" and "list" page on mobile (#5471)
* fix 'frome'/'to' && 'Split'...

* add relese note

* fomat

---------

Co-authored-by: Alex <Alex>
2025-08-05 01:15:45 -04:00
Chai
7465bdb54d fix: missing table column on mobile devices (#5126)
* fix: missing table column

* chore: better releasenote

* chore: incorrect filename

* Update VRT

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-04 21:31:01 -04:00
milanalexandre
1ad3406e84 Fix/i18n translate status and date (#5411)
* add translations for StatusLabel

* add translations for BalanceHistoryGraph (date)

* add random translations

* Update setHoveredValue update to avoid a crash

format

* add relese note

* feed back

---------

Co-authored-by: Alex <Alex>
2025-08-04 20:48:41 -04:00
Matt Fiddaman
48166952ce add Qatari Riyal currency symbol (#5456)
* add Quatari Riyal currency symbol

* note
2025-08-04 20:43:03 -04:00
Matt Fiddaman
994b959050 parallelise contributor points calculations (#5465) 2025-08-04 18:46:33 -04:00
Çağdaş Şenel
7f4f5005a5 Add currencies SEK and TRY (#5477)
* Add SEK and TRY

* Add SEK and TRY to translations

* Add release notes
2025-08-04 20:09:29 +01:00
ShayanAraghi
1e05b169c8 Truncate multiple payee names with ellipsis to prevent layout overflow in the payee column. (#5418)
* Have the multiple payee text overflow with ellipsis

* [autofix.ci] apply automated fixes

* Add release notes

* add minWidth to the payee text

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-04 11:28:07 -07:00
POGMAN
c54a5b3405 Use null as tag color by default (fallback to theme color) and stricter tag validation (#5398)
* Use null as tag color by default (fallback to theme color) and stricter tag validation

* Set ColorPicker's defaultValue props

* Set default tag color in first position

* Make ColorSwatchPicker configurable

Easier to change colors and how they are presented
2025-08-04 11:27:44 -07:00
milanalexandre
5c11a0a51a Fix missing translations (#5396)
* add missing translations

* add relese note

* add missing translations (no note)

---------

Co-authored-by: Alex <Alex>
2025-08-04 11:26:17 -07:00
milanalexandre
8f69669cc6 Fix translate rule stages (#5421)
* add translation support for rule stages

* add relese note

* fix test

* feed back

---------

Co-authored-by: Alex <Alex>
2025-08-04 11:25:56 -07:00
Matt Fiddaman
9ebdba27fd import category notes from nYNAB (#5461)
* import category notes from nYNAB

* note

* typecheck

* add notes to test file
2025-08-04 14:24:42 -04:00
Jakub Kuczys
8df3d23e03 Allow Docker image build by workflow dispatch on forks (#5404)
* Allow Docker image build by workflow dispatch on forks

* Add release note
2025-08-04 14:23:59 -04:00
ShayanAraghi
5d238c238d fix: move add specific days onto the next row and dynamically increased the width of the numbered input (#5406)
* fix: Move Add Specific Days to next line and dynamically increase the width of the numbered input box

* [autofix.ci] apply automated fixes

* Add Release Notes

* Update the release notes summary

* Update width from px to ch

* Update schedule date modal to expand when repeat every number increases

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-04 14:23:37 -04:00
Julian
e69235a35b fix responsiveness of mobile navigation with longer translation strings (#5429)
* fix responsiveness of mobile navigation with longer translation strings

* [autofix.ci] apply automated fixes

* Update VRT

* Update VRT

---------

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-08-04 14:23:26 -04:00
Matt Fiddaman
611f7b046a make payeeName fall back to default if the custom mapped bank sync field is missing (#5460)
* payeeName should fallback if custom mapped field is empty

* note
2025-08-04 14:23:14 -04:00
Matt Fiddaman
ee8f7453ba add tooltip for detailed last sync time on bank sync page (#5458) 2025-08-04 14:23:04 -04:00
Matt Fiddaman
380fae1ccd fix tag colors when using the light theme as system default (#5457)
* fix tag colouring on system default light theme

* note
2025-08-04 14:22:51 -04:00
Matt Fiddaman
8d84f16604 improvements to release PR points counting logic (#5450)
* do not credit reviewers of release PRs

* make release regex more flexible
2025-08-02 15:31:04 -04:00
Michael Clark
239a087542 🐛 Paginate the count points list files call (#5448)
* paginate the count points list files call

* fix tier assignment

* paginate the count points list files call

* fix tier assignment

* ensure utc dates and fix issue filtering to include issues updated in other months
2025-08-02 18:33:18 +01:00
POGMAN
cf1cafa46b Add Tags documentation (#756)
Add documentation for notes tagging and how to change their colors.

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-08-02 12:17:22 -04:00
Matt Fiddaman
f9a33a14d6 🔖 (25.8.0) (#763)
Actual PR: https://github.com/actualbudget/actual/pull/5447
2025-08-02 12:17:11 -04:00
github-actions[bot]
895d69f875 🔖 (25.8.0) (#5447)
* 🔖 (25.8.0)

* Remove used release notes

---------

Co-authored-by: matt-fidd <81489167+matt-fidd@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-02 11:39:18 -04:00
Matt Fiddaman
1cb5e97fab fix reconcile input being hidden when empty (#5446)
* fix bug when reconcile box is empty

* note
2025-08-01 22:00:02 -04:00
Matt Fiddaman
13bd08d243 clarify ai release note comment (#5440) 2025-08-01 17:03:20 -04:00
ShayanAraghi
d946852ee9 Clear active edit on mobile when clicking out of notes field (#5430)
* clear active edit on mobile when clicking out of notes field

* Add release notes
2025-08-01 00:19:52 -04:00
Julian
4cdff76547 fix crash when enter is used to submit empty date in date picker (#5423) 2025-07-31 20:19:54 -07:00
youngcw
1a1975b5ab fix auto hold on new categories (#5434) 2025-07-31 20:18:09 -07:00
Amit Palti
07db8696cb add a link to moneyman importer (#762)
found this importer named Moneyman,
It can import from most banks in Israel 
see
https://github.com/daniel-hauser/moneyman
2025-07-31 12:18:19 -07:00
Ruben Olsen Lærk
76c0e615af Added information on how to manage spelling errors in the docs (#760)
People are unsure on how to handle the spelling bot errors.
2025-07-31 08:35:39 +02:00
youngcw
6e2154d401 Revert "Mobile running balance" because its causing extreme slowness in large accounts. (#5405)
* Revert "Mobile running balance (#5219)"

This reverts commit a20805bfae.

* Add release notes for PR #5405

* retain added translation

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-30 12:57:28 -07:00
Henry Bley-Vroman
27a632d186 update fly setup cli flow (#449) (#732)
- Fixes https://github.com/actualbudget/docs/issues/449 which was closed
early

The CLI flow for setting up a new Fly app has changed and simplified.
This PR brings the Actual docs up to date.

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-07-29 06:38:00 +02:00
youngcw
ed11581d5e updates to template docs (#743)
This adds the documentation for
actualbudget/actual#5288
actualbudget/actual#5295
actualbudget/actual#5301

And also some minor additions in other places.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-07-29 06:34:47 +02:00
Falke Carlsen
a9c8aff56f [WIP] Add promox helper scripts link (#752)
These scripts are useful for quickly provisioning on a Proxmox instance
2025-07-28 22:05:22 +02:00
Matiss Janis Aboltins
b82b9f3837 Revert "apple container docs" (#757)
Reverts actualbudget/docs#725

See explanation in
https://github.com/actualbudget/docs/pull/725#issuecomment-3119926083
2025-07-28 21:44:50 +02:00
POGMAN
45bfd23daa Do not search tags in deleted transactions (#5409) 2025-07-28 07:17:03 -07:00
POGMAN
c44b32805f fix tag matching of filter and make hasTags op case-sensitive (#5386)
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-07-26 09:03:48 -07:00
Matiss Janis Aboltins
45530638fe Fix potential undefined points issue in contributor points calculation (#5393) 2025-07-26 07:48:09 +01:00
youngcw
a15ff85c20 Fix tags not syncing properly (#5387)
* start

* migration

* don't show deleted tags in list

* tag updates (#5389)

* upsert tag to ensure uniqueness

and insert default-tag in migration

* remove ability to change default tag color

---------

Co-authored-by: pogman-code <adrian.maurin@gmail.com>

* tags fixes (#5391)

* better tag validation

* fix typecheck issues

* update note

---------

Co-authored-by: pogman-code <adrian.maurin@gmail.com>
2025-07-25 14:32:52 -07:00
Matiss Janis Aboltins
1861060bda Fix undefined points error in contributor points (#5392) 2025-07-25 21:14:29 +01:00
Koen van Staveren
9281acb819 fix: reconcile select number on click (#5373) 2025-07-23 14:50:17 -07:00
youngcw
dc86441809 Fix template priority sorting (#5380)
* fix

* lint
2025-07-23 14:48:32 -07:00
Michael Clark
a0a1ca4855 Fix ctrl/cmd issue on tips and tricks page (#751)
Prevented `cmd` mod from getting changed to `ctrl` when users were not
on Macs.
2025-07-23 22:36:20 +01:00
Henry Bley-Vroman
a28f137bbd add contribution docs to repo; add PR template with PR process docs link comment (#733) 2025-07-23 21:29:54 +02:00
passabilities.eth
78bcac95ed [Enhancement] Disable Sidebar Tooltip on Touchscreen Device (#5362)
* check if device is not touchscreen to show account sidebar tooltip

* release notes
2025-07-23 18:34:34 +01:00
POGMAN
45610bae81 Add button to import existing tag from transactions notes (#5368)
* Add button to import existing tag from transactions notes

* fix ##non-tag matching

* 'find' tags instead of 'import' to avoid confusion

* add link to show transaction that have given tag

* use same style as PayeeTableRow's button
2025-07-23 09:57:43 -07:00
Christian Speich
f5a6700b21 Only use fund from local group during cleanup. (#5377)
When using local group cleanup, currently all funds available in To Budget are distributed into the sinks. This behaviour seems somwhat odd and also results in all later groups or the "global" cleanup run to possibly have no funds as they've been distributed before.

This patch now changes the group usage of cleanup, to only distribute funds made available by the group itself. If one also wants to sink money from To Budget into the category, a simple addtional `#cleanup sink`, will achieve this.

Fixes #5374

Signed-off-by: Christian Speich <christian@spei.ch>
2025-07-23 08:56:21 -07:00
Michael Clark
8cea059834 VRT's for Help menu (#5371)
* add some tests for help menu

* updating tests

* release notes

* fix lint

* Update VRT

* unneeded focus

* good wabbit

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-23 09:06:28 +01:00
dependabot[bot]
31b31f2edb bump form-data from 4.0.0 to 4.0.4 (#5365)
* Bump form-data from 4.0.0 to 4.0.4

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.0 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.0...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-07-22 16:07:36 -04:00
Michael Clark
4b56e0cb54 ⌨️ Enhanced keyboard shortcuts modal (#5340)
* start to an enhanced keyboard shortcuts modal

* shortcut start

* poc

* still rough but getting closer

* refactor a bit

* types

* bits

* renaming

* clarifying comment

* release notes

* suggestions

* adding initial focus state on the search

* fix lint
2025-07-22 18:48:16 +01:00
Matt Fiddaman
f8dd4897e7 fix datepicker month input validation to allow mm/yyyy on resubmission (#5356)
* fix datepicker month input validation

* note

* fix year too

* keep mm/yyyy format consistent

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-22 12:27:19 -04:00
Matt Fiddaman
526d7a9baa add options to post schedule today or the next scheduled date (#5359)
* add option to post transaction today

* note

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-07-22 12:27:10 -04:00
Ciftci
af8f26f200 Fixes #5343: Color of the resize handle now adapts to color scheme (dark theme/midnight theme/light theme) (#5364)
* Added color variable pageTextLight to resizable handlers in overview.scss

* Generated release notes

* [autofix.ci] apply automated fixes

---------

Co-authored-by: seabeeberry <seri@Mac.fritz.box>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 22:32:24 -04:00
Elijah Olmos
548f36e8d6 feat(CommandBar): display account balances (#5355)
* feat(CommandBar): display account balances

* add release note

* rename release note
2025-07-21 12:36:05 -04:00
Matt Fiddaman
9aed1f400c fix crash when using bulk amount update (#5360) 2025-07-21 11:27:09 -04:00
Matt Fiddaman
59bcee9369 fix payee and transaction context menus when no items selected (#5358)
* fix context menus with no items selected

* note
2025-07-21 10:16:36 -04:00
Matt Fiddaman
ff7529f6e5 remove unused dependency express-response-size (#5361)
* remove unused dep

* note
2025-07-21 10:11:32 -04:00
Julian Dominguez-Schatz
77e99af297 Convert SelectLinkedAccountsModal to TypeScript (#5059)
* Convert `SelectLinkedAccountsModal` to TypeScript

* Add release notes

* Fix typo caught by Rabbit
2025-07-21 09:54:27 -04:00
FF-Ibb-PD
c16b31267d Update Apache httpd with correct ProxyPass and ProxyPassReverse settings (#753)
Fixed an Error:
Proxy Pass & Proxy Pass reversed need the tailing / - otherwise static
assets like /static/js/ won't be accessable.

Improvement:
"ProxyPreserveHosts on" submits the host to ActualBudget (e.g.
"budget.example.com")

RequestHeader set X-Forwarded-Proto "https" 
RequestHeader set X-Forwarded-Proto "443" 
Preserve an loop, if the app requires to be run with SSL
2025-07-21 13:06:50 +01:00
POGMAN
82a3c97222 Add colors to ReportTable "Totals" row (#5104)
* add colors to ReportTable

* Update VRT

* use default color for zero values

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-21 02:23:30 -04:00
martijnhielema
cafcc823cb Add extra date format (#5353)
* Added dd-mm-yyyy date format for display.

* adding release note entry
2025-07-21 00:23:01 -04:00
passabilities.eth
582e27dbdb [Feature] Only Show Sidebar Tooltip on Desktop (#5352)
* only show sidebar tooltip on desktop

* release notes

* Update upcoming-release-notes/5352.md

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

* replace with media query checks

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-07-21 00:00:19 -04:00
Elijah Olmos
d747563915 feat(CommandBar): add aggregated acct views (#5348)
* feat(CommandBar): add aggregated acct views

* docs: generate release notes

* capitalize release note

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-07-19 18:14:06 -04:00
Ngoc Do
84dec137bb fix defaultCleared options not used when importTransactions (#5247) 2025-07-19 11:33:08 -04:00
deathblade666
36815ad579 Fix Bank Sync in docs and add new picture (#750) 2025-07-19 14:13:17 +01:00
Joshua Taillon
e3bc160e3f add new shortcut key references (#748)
Documentation updates related to
https://github.com/actualbudget/actual/pull/5330
2025-07-19 10:53:56 +01:00
Guillaume Taquet Gasperini
76de8bf67f Fix Boursorama GoCardless transaction ordering (#5344)
I wrongly thought that all the card transactions will always
have their first line with the `CARTE` identifier.
But as I have seen recently, it's not the case, and we shouldn't
rely on the ordering of the array returned by the Boursorama
GoCardless integration.

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

This addresses a true case (added in test) where the payee name
was wrongly extracted as being `110,04 Gbp / 1 Euro = 0,860763454`
2025-07-19 04:23:10 -04:00
passabilities.eth
5db7026435 fix: Save Account Notes (#5326)
* replace static function with useCallback

occasionally if you are editing the notes of an account and then open another account from the sidebar without first closing the popover, the note would be saved to both the current and previously opened account.

* reset tempNote on id change

* save notes only if changes are made

Previously, the notes were being saved unconditionally when closing the Notes modal. This update ensures that the save action is triggered only if the temporary notes differ from the existing note, reducing unnecessary events.
2025-07-18 19:00:26 +01:00
youngcw
e4a993ad67 🐛 improve budgeting of schedules templates (#5319)
* fix

* fix

* didn't need that

* prevent div by 0
2025-07-17 12:49:00 -07:00
Dreptschar
38ab63638a add action button to trigger applyBudgetTemplatesInGroup to mobile (#5293)
* add action button to trigger applyBudgetTemplatesInGroup

* add release note

* fix typos

* fix lint and typecheck findings

* [autofix.ci] apply automated fixes

* fix typecheck

---------

Co-authored-by: dreptschar <dreptschar@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-07-16 09:50:03 -07:00
POGMAN
4eea349966 fix pseudo-element quotes in ColorPicker (#5335)
* fix pseudo-element quotes in ColorPicker

* Update upcoming-release-notes/5335.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-07-16 10:53:19 -04:00
Michael Clark
f66baeabd3 Add command palette to shortcuts modal (#5334)
* add command bar to shortcuts modal

* release notes

* release note
2025-07-15 19:48:16 +01:00
Joshua Taillon
19180138bb Add keyboard shortcuts to duplicate transaction, edit amount, and edit date (#5330)
* add kb shortcuts for duplicate, edit date, and edit amount

* release notes

* only allow editing amount if we can't merge

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-14 21:37:47 +01:00
atgrey24
7730789033 Update rule-templating.md to include payee_name (#747) 2025-07-14 10:31:26 -04:00
youngcw
7705a2df08 🐛 fix template priorities in the tracking budget when templating income (#5316) 2025-07-12 07:29:15 -07:00
Sai Pratyush Cherukuri
202af094af enhancement: add interval selector for net worth report (#5282)
* feat: add interval selector for net worth graph

* docs: add release notes

* chore: reformat code

* fix: resolve review comments

* Update VRT

* chore: dummy commit

* feat: handle intervals in net worth card

* fix: handle date ranges inclusively

* fix: enhance date formatting and normalise x-axis tick size

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update VRT

* feat: move interval selector inline

* fix: change label to current interval

* Update VRT

* feat: header wrapping for networth, calendar, cashflow and summary

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-07-11 12:28:34 -07:00
Margarida Reis
333e7ff7bc fix: apply context menu actions to all selected transactions and payees (#5269)
* fix: apply context menu actions to all selected transactions

when multiple transactions were selected and the user right-clicked on one transaction, context menu actions were only being applied to the right-clicked transaction instead of all selected transactions

* fix: apply context menu actions to all selected payees

when multiple payees were selected and the user right-clicked on one payee, context menu actions were only being applied to the right-clicked payee instead of all selected payees
2025-07-11 12:28:18 -07:00
Giorgio Grigolo
eb11e14e94 Added Bank of Valletta as a limited history bank (#5309) 2025-07-09 21:06:44 -04:00
Darius
5c09fae3fc chore: added link to correct gocardless service (#741)
After registering for a completely unnecessary GoCardless main account,
I found out you actually need GoCardless Bank Account Data acount. Lets
point other new users in the right direction.
2025-07-09 07:28:03 -07:00
youngcw
dbcfb63857 [Goals] limits for remainders (#5301)
* limits for remainders

* round if needed

* handle edge cases
2025-07-09 07:11:11 -07:00
youngcw
64f4d200dd Reword the overspending banner for tracking budget. (#5307)
* no hidden

* changes for tracking

* note and cleanup

* sentance case

* exclude income categories

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 20:02:50 -07:00
Julian Dominguez-Schatz
4be7e03570 Fix a few typos mentioned on Weblate (#5211)
* Fix a few typos mentioned on Weblate

* Add release notes

* Update VRT

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-07-08 21:05:00 -04:00
youngcw
ca969cc61b no hidden (#5305) 2025-07-08 10:29:19 -07:00
youngcw
682d439c34 [Goals] upgrade week template to be a periodic template (#5295)
* upgrade week template to periodic template

* note

* do it right

* tabs
2025-07-08 06:54:12 -07:00
youngcw
37d91a90f7 [Goals] Round template amounts if hide decimals is set (#5288)
* round amounts

* cleanup, handle not pref set

* move comment

* fix test

* bunny, add a test
2025-07-08 06:53:45 -07:00
Michael Clark
3a09d91399 :electron: Fix early server-started signification message (#5303)
* fix issue where server was telling parent process it was ready but was not finished listening

* release notes
2025-07-08 09:39:42 +01:00
POGMAN
405c8b986f Customize tags colors (#5032)
* add user defined tag colors

* use DB to store tag colors

* change specific tags_colors to generic tags

* move tag customization to its own page (pt. 1)

* move tag customization to its own page (pt. 2), edit description

* move tag customization to its own page (pt. 3), better default tag mgmt

* move tag customization to its own page (pt. 4), tag creation

* move tag customization to its own page (pt. 5), remove tags settings

* Update VRT

* nitpicking & code rabbit fixing

* remove spaces from tag and better partial Tag typing

* add tag similar to transaction add

* peer review updates (live preview)

* enable keyboard navigation

* fix lint errors

* live input for color picker

* disable 3 digit hex color live input

* add context menu

* add tags link to command bar

* Update VRT

* Update VRT

* fix lint issues

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-07-07 12:42:26 -07:00
Rapha149
bd9f0aec89 Run rules on transactions created by a transfer. (#5279)
* Run rules on transactions created by a transfer.

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-07 10:10:16 -07:00
spezzino
a4f0d5bca8 add notes to scheduled transactions table (#5290) 2025-07-07 10:10:01 -07:00
Michael Clark
0085c3b58a 💬 Added Discord link to the help menu for discoverability (#5286)
* adding our discord to the help menu so users can find community support

* better label

* derp

* release note

* derp
2025-07-04 21:48:02 +01:00
Ciftci
cfb0f51e36 Fixes #5278: Applied PrivacyFilter to balance graph display (and added conditionality whether user is hovering on the graph) (#5281)
* Apply PrivacyFilter to balance graph display

* Deleted empty line which was added by accident

* Added release note

* [autofix.ci] apply automated fixes

* isHovered state now conditionally deactivates PrivacyFilter if user hovers the graph

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Seray Ciftci <seri@Mac.fritz.box>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-04 12:53:44 -07:00
Matt Fiddaman
2d95fe6d03 add some basic linting rules for translation consistency (#5212)
* lint rules

* trans rule

* migrate away from rulesDir config

* fixes

* prefer Trans to t()

* typechecker

* cleanup

* note

* typo

* extend regex to include punctuation

* extend fixer to handle imports

* autofixes from punctuation
2025-07-04 15:17:17 -04:00
Matiss Janis Aboltins
80bb4ab299 Update contributor points calculation logic (#5169) 2025-07-04 07:56:54 +01:00
Michael Süssemilch
2f71e007d6 feat(currency): add currency setting and format (#5167) 2025-07-04 07:56:23 +01:00
Julian Dominguez-Schatz
7b71374e79 Move remaining .d.ts files to .ts (#5208)
* Update CRDT protobuf generation to create a .ts file

* Move remaining .d.ts files to .ts

* Fix remaining type errors

* Ignore .d.ts files so we don't accidentally use them in the future

* Add release notes
2025-07-03 14:59:21 -04:00
Matt Fiddaman
c1d70722b8 use correct running balance when adding a new transaction (#5207) 2025-07-03 13:16:03 -04:00
POGMAN
2cd79960a9 Fix rule templating on date causing crash (#5259)
* fix rule templating on date causing crash

* apply coderabbit suggestion, more or less
2025-07-03 09:27:16 -07:00
Ciftci
9a6afda6de Fixes #5228 - has tag(s) filter now takes values when pressing Enter (#5263)
* Fixes #5228 - has tag(s) filter now takes values when typing quickly and pressing Enter

* Added release notes

* State of GenericInput now gets updated with every keystroke

---------

Co-authored-by: Seray Ciftci <seri@Mac.fritz.box>
2025-07-03 09:27:04 -07:00
lougeorge
979fa43c4a correctly ignore hidden categories when using "Set Average Budget" (#5239)
* fixed setAverage functions to ignore hidden categories

* Add logic to ignore hidden categories in budget actions

* Modify SQL statements in setAverage functions to also exclude categoryGroups and change DbViewCategory type definition to include hidden flag of the group a category belongs to

* [autofix.ci] apply automated fixes

* Revert setZero functionality to set all budget categories and category groups to zero, including hidden ones

* Add new type DbViewCategoryWithGroupHidden which includes a flag for whether the group a category belongs to is hidden or not, and have setAvg functions use that type instead

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-03 09:26:47 -07:00
youngcw
a20805bfae Mobile running balance (#5219)
* start

* small fix

* clean

* working for regular transactions

* working for schedules

* cleanup

* typing

* cleanup

* cleanup

* vrt

* bunny

* use pref

* use pref right, lint

* more lint

* vrt

* pass hasInitialBalances to isLoading

* remove comment

* Add option to calculate running balances in useTransactions hook

* Fix typecheck error

* Fix lint error

* use the updated hook

* typecheck

* simplify

* don't show balances when searching

* Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from

* Add filter to usePreviewTransactions and set startingBalance to account and category preview transaction hooks

* use runningbalance from preview transactions hook

* lint

* lint;typecheck

* remove initial from preview balances

* remove unneeded type

* Apply suggestions from code review

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

* typecheck; align right; change color

* types

* add a menu item

* cleanup

* fix for loot-core migrated files

* lint;type

* fix import

* only schedules need fixed

* lint

* it works

* cleanup

* make lint happy

* [autofix.ci] apply automated fixes

* simplify a bit

* fix import

* feedback

* fixed regular transaction balance calculation

* fix numbers not showing

* fix schedule running balance

* note

* attempt to update properly

* type

* remove the useEffect that I don't think should be requred

* remove old note

* cleanup

* typeing

* I FINALLY FOUND THE PROBLEM

* cleaner balance calculation

* fixes

* fix zeros

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-03 09:26:28 -07:00
youngcw
15529c3255 🔖 v25.7.1 (#740)
[web PR](https://github.com/actualbudget/actual/pull/5272)

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-07-03 06:56:29 -07:00
github-actions[bot]
485830c859 🔖 (25.7.1) (#5272)
* 🔖 (25.7.1)

* build

* Remove used release notes

---------

Co-authored-by: youngcw <28542559+youngcw@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-02 17:07:15 -07:00
youngcw
4aea6f4898 fix (#5270) 2025-07-02 12:07:49 -07:00
youngcw
59e51412d6 auto hold (#699)
matches actualbudget/actual#4778

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-07-01 14:06:02 -07:00
Julian Dominguez-Schatz
6f206e5f1a 🔖 (25.7.0) (#738)
https://github.com/actualbudget/actual/pull/5260
2025-07-01 16:52:23 -04:00
github-actions[bot]
1f828b6562 🔖 (25.7.0) (#5260)
* 🔖 (25.7.0)

* Empty commit to bump ci

* Remove used release notes

* Empty commit to bump CI

---------

Co-authored-by: jfdoming <9922514+jfdoming@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-01 14:35:37 -04:00
Ruben Olsen Lærk
04801d2b81 Closing #696 - total rewrite of the Schedule tool. (#734)
- Was expected to only close #696: _Add information about upcoming
schedule length._
- Added sections for Managing Schedules, Schedule Length, Find
Schedules.
- Added introductory section.
- Added clarification on the approximation on amounts
- Rewrote most of the document.
- New screen shots - and deleting old ones.
- Rewrote the intro section to reflect the planning aspects of schedules
and not the automation aspect.
- Added Account Register view screen shot and moved information on
account register view under the Adjusting the Upcoming Length heading.
- Removed "Schedule Options That Are Not Supported" section and moved
information about not supporting holidays as a note under schedule
creation.
2025-06-30 21:28:03 +02:00
Mauritz Schild
ad9a84ddf1 Fixes #5238 last synced button text not visible on light theme. (#5241)
* Changed the buttonMenuText color for the light theme so that text is visible on light background as well.

* Updated the release notes.

* Change file name of release notes

* Remove button varient from use last synced total and restore light theme
values to previous.
2025-06-30 07:40:12 -07:00
Ruben Olsen Lærk
e75e9b95aa Added Warning callout as this was missing (#737)
We use warnings several places, especially with regards to experimental
features.
2025-06-30 15:35:11 +02:00
Ruben Olsen Lærk
fac96d2e3e Adding tips on using emojis in the budget. (#735) 2025-06-30 12:26:24 +02:00
Jin
6fc739a514 [WIP] Fixing a typo in the documentation (#736) 2025-06-29 20:00:30 +02:00
Matiss Janis Aboltins
d9a171b249 fix: Tracking budget income budget fields missing in mobile view (#5251) 2025-06-29 18:51:04 +01:00
Matiss Janis Aboltins
e5c84d4ae0 Fix switching budget type requiring hard reload to take effect (#5253)
Fixes #5252
2025-06-29 17:43:32 +01:00
An Hoang
94a76a008d fix: reapply thousand separators before passing input to appendDecimals (#5220)
* fix: reapply thousand separators before passing input to appendDecimals

This ensures that the input going into `appendDecimals` is not malformed when the  `hideFraction` option is On, otherwise when hitting delete on the text `"1,234,567"`, it will result in the text `"1,234,56"` which the formatter will parse as `1234.56`. This doesn't happen when `hideFraction` is off since hitting delete on the text `"12,345.67"` results in `"12,345.6"`, which `appendDecimals` will happily handle in a separate case to provide `"1234.56"` as the input into `currencyToAmount`.

* Handle edge cases for reapplyThousandSeparators

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

* [autofix.ci] apply automated fixes

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-06-28 12:49:30 -07:00
Matiss Janis Aboltins
432c2b6165 Patch mobile issues - hold for next month, transfer (#5245) 2025-06-28 14:37:38 +01:00
0x4d4e
46eb2a7c38 Added a gocardless bank parser for Raiffeisen AT bank (#5244)
* Added a gocardless bank parser for Raiffeisen AT bank

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-06-28 09:13:45 -04:00
Ruben Olsen Lærk
7402e4bb66 Fixing #728 - add command palette documentation in Tips and Tricks page. (#731)
- Also adding screenshot of command palette.
- Fixed misc headers
- Removed section global shortcuts in the electron app as they don't exist
2025-06-28 09:09:46 +02:00
Jeevan Shikaram
3214d5dd53 Update links pointing to /budgeting/users/. (#5246)
* Update links pointing to /budgeting/users/.

* Add release notes.
2025-06-28 00:27:27 -04:00
youngcw
66d8f1a631 Speed up balance history graph (#5229)
* speedy

* bunny, fill in missing data

* small cleanup

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

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

* handle some edge cases, fix the month check

* better date formatting

* one more edge case

* fix

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2025-06-27 12:59:32 -07:00
Matiss Janis Aboltins
a00b584126 Add Cursor IDE documentation (#730)
- Introduced a new document for Cursor IDE, detailing setup, automation,
and custom rules.
- Updated the new core contributors guide to include a link to the
Cursor IDE documentation for additional tips.
2025-06-25 20:55:40 +01:00
youngcw
e3aa63d1fa don't import deleted split lines ynab4 (#5226)
* don't import deleted split lines

* Update upcoming-release-notes/5226.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-23 14:28:24 -07:00
Matiss Janis Aboltins
ad88007829 Document payment system for core contributors and update proposal status (#723) 2025-06-23 18:42:11 +01:00
Michael Clark
9478707ebb Prevent forks from running nightly worfkflows (#5213)
* dont run nightly worfkflow on forks

* dont run nightly worfkflow on forks

* release notes
2025-06-21 19:04:24 +01:00
Taylor Jones
8f5b8aad31 Add iOS Widget Community Project: community-repos.md (#727)
Adds a listing to the Community Projects doc page for an iOS widget
project.
2025-06-21 07:57:47 -07:00
Matt Fiddaman
9952412e1d [WIP] 🌍 Mark more files for translation (#5209)
* translate more files

* prefer Trans component in JSX where possible

* note

* [autofix.ci] apply automated fixes

* aria-label

* more...

* [autofix.ci] apply automated fixes

* review

* [autofix.ci] apply automated fixes

* more review

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-06-21 02:11:49 -04:00
Matt Fiddaman
8231bbbf5a 🌍 mark titlebar strings for translation (#5206)
* translate title bar

* note

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-21 01:45:20 -04:00
Julian Dominguez-Schatz
eadd88ce31 Move more .d.ts files to .ts (#5204)
* Rename .d.ts files to .ts

* Fix type and lint errors

* Add release notes

* CodeRabbit feedback
2025-06-21 00:16:55 -04:00
youngcw
6c61cf6a8d Revert "Mobile running balance (#4809)" (#5205)
This reverts commit 2c87c44168.
2025-06-20 20:37:24 -07:00
Matt Fiddaman
0fb9c252ca improve compatibility with OFX/QFX files (#5203)
* support ofx files with space in opening tag

* note
2025-06-20 22:21:32 -04:00
Guillaume Taquet Gasperini
d73ead135e Improve Boursobank Gocardless transaction parsing (#5202)
* Fix Boursobank transfer parsing

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

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

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

* Add credit note type for BoursoBank

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

* Improve Boursobank card transaction parsing

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

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

* Improve Boursobank payee name backslashes handling

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

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

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

* Set notes with date for Boursobank card transactions

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

* Add 5202 release note

* [autofix.ci] apply automated fixes

* refactor loops and match

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-20 19:48:22 -04:00
youngcw
2c87c44168 Mobile running balance (#4809)
* start

* small fix

* clean

* working for regular transactions

* working for schedules

* cleanup

* typing

* cleanup

* cleanup

* vrt

* bunny

* use pref

* use pref right, lint

* more lint

* vrt

* pass hasInitialBalances to isLoading

* remove comment

* Add option to calculate running balances in useTransactions hook

* Fix typecheck error

* Fix lint error

* use the updated hook

* typecheck

* simplify

* don't show balances when searching

* Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from

* Add filter to usePreviewTransactions and set startingBalance to account and category preview transaction hooks

* use runningbalance from preview transactions hook

* lint

* lint;typecheck

* remove initial from preview balances

* remove unneeded type

* Apply suggestions from code review

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

* typecheck; align right; change color

* types

* add a menu item

* cleanup

* fix for loot-core migrated files

* lint;type

* fix import

* only schedules need fixed

* lint

* it works

* cleanup

* make lint happy

* [autofix.ci] apply automated fixes

* simplify a bit

* fix import

* feedback

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-06-19 17:54:00 -07:00
lelemm
15beba2ca3 🐛 Fix to AI generated release note (#5200)
* AI Generated release notes

* lint

* removedverbose console.log

* wrong permission to PR's

* missing write to issues

* Add release notes for PR #5200

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-19 20:46:22 -03:00
Matt Fiddaman
667cc24fac ⬆️ bump react-i18next from 14.1.3 -> 15.5.3 (#5196)
* bump react-i18next from 14.1.3 -> 15.5.3

* note
2025-06-19 19:17:20 -04:00
Matt Fiddaman
4cc542a658 ⬆️ bump csv-parse and csv-stringify to latest (#5198)
* bump csv-parse and csv-stringify

* note

* fix imports

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-06-19 19:17:10 -04:00
lelemm
093d799ba0 Auto generate Release Notes (#5182)
* AI Generated release notes

* lint

* removedverbose console.log
2025-06-19 17:22:44 -03:00
Matt Fiddaman
68d10f6b29 ⬆️ bump vitest from 3.1.4 -> 3.2.4 (#5195)
* bump vitest from 3.1.4 -> 3.2.4

* note
2025-06-19 15:30:25 -04:00
Matt Fiddaman
252f04e02c ♻️ remove body-parser dependency (#5197)
* bodyParser

* note
2025-06-19 15:30:12 -04:00
Matt Farrell
dcfd0e2e92 apple container docs (#725)
Adds documentation to run Actual in the newly released Apple Containers.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-06-19 06:15:09 +02:00
wachkyri
13cb85835b fix: wrong payeeName for KBC Brussels (#5193) 2025-06-18 20:49:24 -04:00
wachkyri
39cf04c74d add Belfius and KBC to banks with limited history (#5183)
* add Belfius and KBC to banks with limited history

* Update upcoming-release-notes/5183.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-18 16:40:07 -04:00
Jeremy Tan
562b5e2afd [Feature] Store and use last synced account balances (#4799)
* Update `processBankSyncDownload` to store synced balance in `balance_current`

* Display last synced balance in `MoreBalances`

* Add "Use last synced balance" to reconcile

* Remove logs

* Release notes

* Fix lint

* Add missing useEffect dep

* Restore console.log and fix type for id

* Last synced total

* Fix lint

* lint

* Made requested changes from maintainers.

* Added my name to authors note and updated description of feature.

---------

Co-authored-by: Spencer Sawyer <spencer@spencersawyer.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-06-18 14:51:43 -04:00
Tim Nielens
4b4e32d0e2 add BNP_BE_GEBABEBB in gocardless bank-factory.js (#5187)
* add BNP_BE_GEBABEBB in gocardless bank-factory.js

* Create release note 5187.md

* Update 5187.md
2025-06-18 14:50:11 -04:00
Matt Farrell
d821f1cebc fix parsing schedule templates with brackets in the name (#5189) 2025-06-18 11:38:17 -07:00
Joel Jeremy Marquez
53e3694a38 Move spreadsheet bindings to spreadsheets feature folder and move hooks in src/components/spreadsheets to src/hooks (#5007)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/data-hooks over to desktop-client package

* Fix typecheck and lint errors

* Fix lint error

* Fix typecheck error

* Fix test

* Move spreadsheet bindings to spreadsheets feature folder and move hooks from src/components/spreadsheets to src/hooks

* Move NamespaceContext to useSheetName

* Rename NamespaceContext to SheetNameContext and use SheetNameProvider

* Fix lint errors

* Fix import and provider

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-06-17 14:34:00 -07:00
Michael Clark
0f3716a206 Add reset password to cli tool docs (#726)
Updated the CLI tool page with docs for the new reset-password option:
- https://deploy-preview-726.www.actualbudget.org/docs/install/cli-tool


Updated this blurb to be more specific:
-
https://deploy-preview-726.www.actualbudget.org/docs/install/desktop-app#exposing-your-local-server-to-the-internet
2025-06-17 22:06:19 +01:00
Michael Clark
8647452ccc 🔧 Add reset passsword to cli tool (#5185)
* add reset passsword to cli tool

* release notes

* added the script properly
2025-06-17 22:05:45 +01:00
Julian Dominguez-Schatz
5a40b017f0 Move more .d.ts files to .ts (#5060)
* Move more .d.ts files to .ts

* Add release notes

* Some errors with templates snuck in

* Fix API build

* CodeRabbit feedback

* Move budget templates to new directory

* Fix type errors in library module
2025-06-16 21:05:36 -04:00
Matiss Janis Aboltins
8ccc1af77e Clean up configuration files (#5181) 2025-06-16 22:22:38 +01:00
Matiss Janis Aboltins
07904c209e Enhance PullToRefresh component to ensure full height usage on mobile devices (#5179) 2025-06-16 21:30:52 +01:00
Matiss Janis Aboltins
234f008dcf Update feature request management message to clarify voting system and community contributions (#5180) 2025-06-16 20:07:49 +01:00
Matiss Janis Aboltins
d130b427b3 Upgrade react router to v7 (#5172) 2025-06-16 18:23:26 +01:00
André Roggeri Campos
b6c52df888 Update pluggy.ai dashboard url (#724)
Updating the URL to pluggy.ai console (now called dashboard). There are
some screenshots still using the console name that I can rename if you
prefer.
2025-06-15 11:51:43 -04:00
Matiss Janis Aboltins
39cd71aa48 Fix: display notifications below modal windows (#5165) 2025-06-15 16:44:03 +01:00
Matiss Janis Aboltins
100711ccfb Fix bottom navbar overlaying content in mobile (#5166) 2025-06-14 20:55:14 +01:00
youngcw
e8db6672c1 add experimental page (#718)
Adds a base page for the experimental features section. This says what
experimental features are and how to enable them.
2025-06-14 08:59:14 -07:00
Matiss Janis Aboltins
7c9f3f241d Added unit tests for CategorySelector and Change components (#5118) 2025-06-14 15:54:13 +01:00
Matiss Janis Aboltins
6509e80061 Update version notification message for Pikapods instances (#5146) 2025-06-14 14:54:46 +01:00
Matiss Janis Aboltins
fbd6989a18 Add GitHub workflow and script for counting monthly contributor points (#5147) 2025-06-14 13:18:40 +01:00
Rob Jackson
180431f9ed Fix account properties being overriden with empty values from metadata (#5115)
My Monzo bank appears to return 'name' through the GoCardless getDetails and getMetadata calls, but the value in the getMetadata response is an empty string! Merging metadata values over detail values therefore risks losing values, that are useful to have & to present to the user.

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

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

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-14 08:03:59 -04:00
Spencer-Sawyer
4f9e4581f3 Update contributing/project-details (#714)
- Desktop electron works with self hosted out of the box now.
- Made Sync Server a third level header for consistency since it's no
longer in a separate repo.
2025-06-14 07:55:16 -04:00
Matiss Janis Aboltins
d27d62b5fc Add GitHub Actions workflow for automatic code formatting (#5157) 2025-06-14 11:34:08 +01:00
Matiss Janis Aboltins
b5f29ccb4a show account historical balance change in side-nav hover tooltip (#5085) 2025-06-13 20:07:16 +01:00
Matt Fiddaman
0a5acebeaf use fallback linking parameters if initial GoCardless linking process fails (#5150) 2025-06-13 12:19:59 -04:00
Leandro Menezes
fa544d9c08 removed wrong md from master 2025-06-13 12:41:01 -03:00
github-actions[bot]
8976a59c3a Add release notes for PR #5155 2025-06-13 12:34:15 -03:00
Elijah Olmos
9713d09603 feat: add command bar (#5076)
* deps(desktop-client): add cmdk

* feat(desktop-client): create and integrate CommandBar

* hover on selection

* Ctrl+K only opens, ESC closes

* add custom reports

* add navigation items to cmdk

* fix: mouse hovering can interfere with keyboard navigation

* reset search state when CommandBar closes

* revert import order changes

* deps(desktop-client): readd cmdk

* fix vite error

* add item icons

* move navigation items into their own section

* hide scrollbar and release notes

* style: run yarn lint:fix

* fix: infinite loop opening commandbar with active modal

* fix: infinite error loop bc focus conflicts

* fix: kebab case console warning

* chore: update yarn.lock

* refactor: use autoFocus prop

* feat: add i18next

* style: relocate eslint-disable comment
2025-06-13 09:41:16 +01:00
Michael Clark
456ffa6f5b Update core team (#722)
Teprifer joined Alumni on 2025-05-10 


https://discord.com/channels/937901803608096828/1106842738239995904/1370882805587775640
2025-06-12 21:21:48 +01:00
youngcw
814f4fe955 release context menus (#5142) 2025-06-11 14:59:24 -07:00
Michael Clark
dbe6b27d9f :octocat: Prevent nightly npm packages publishing on push (#5144)
* prevent nightly npm packages publishing on push

* release ntoes

* Update upcoming-release-notes/5144.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-11 22:54:18 +01:00
Michael Clark
31a7902a08 :octocat: Add workflow for publishing nightly npm packages (#5047)
* add workflow for publishing edge npm packages

* release notes

* alright mr rabbit

* never trust the wabbit

* changing tag to nightly as per maintainer feedback

* fix hotfix script version

* rename workflow

* wabbit

* exit process

* fix reference to package json

* variable scoping

* change nightly version number to yyyymmdd (#17)

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-11 21:37:54 +01:00
Matt Fiddaman
eb35b41c6d fix preview transactions not showing on multi-account views (#5135) 2025-06-11 10:46:40 -04:00
Danish Joseph
a025d2b621 fix: bottom UI overlap with iOS Home Indicator (#5121) 2025-06-11 09:08:01 +01:00
Olicorne
d72140b8b6 add LCL to the list of bank with only 90 days of sync (#5087)
* add LCL to the list of bank with only 90 days of sync

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

* add missing release note

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

* Update upcoming-release-notes/5087.md

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

---------

Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-10 14:04:46 -04:00
Olivier Kamers
254059d4c8 fix: ensure correct PR number is used for release notes file (#5134) 2025-06-10 11:25:09 -04:00
Olivier Kamers
92bc1e8ec9 fix: add missing 'enabled' in sentence. (#5133) 2025-06-10 12:59:40 +01:00
Matiss Janis Aboltins
b211b67f5e Fix: Only sync off-budget accounts when syncing from off-budget page (#5124) 2025-06-08 19:30:06 +01:00
Olivier Kamers
a2abb2b2ae Fix net worth graph gradient conflict (#5129)
* Fix net worth graph gradient conflict

Ensures that the net worth graph's gradient ID is unique to prevent conflicts when multiple graphs are rendered on the same page.
Fixes #3965

* Apply review suggestion
2025-06-08 14:03:59 -04:00
Olivier Kamers
3fab1be737 chore: replace snapshot-diff and jest with jest-diff (#5127)
Unlike the name suggests, jest-diff does not have a dependency on jest.
2025-06-08 14:00:33 -04:00
Matiss Janis Aboltins
70468a8a64 📝 (proposal for spending community funds) (#709)
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-06-08 16:01:33 +01:00
youngcw
bf9fbc5137 🐛 fix goal type templates (#5120)
* fix

* note

* fix test
2025-06-08 07:38:06 -07:00
youngcw
52eced1f21 🐛 group template apply (#5112)
* fix

* Update upcoming-release-notes/5112.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-08 07:36:54 -07:00
Michael Clark
359af05cc4 🐳 Fix nightly Docker edge image (#5123)
* fix nightly docker edge test

* release notes
2025-06-07 15:54:52 +01:00
Matt Farrell
ac766221f2 [WIP] ActualTap documentation (#719)
Current documentation includes ActualTap-Py which is a fork of
https://github.com/MattFaz/actualtap *(which I use/maintain)*.

Adding in the original ActualTap repo and updating ActualTap-Py to
clarify differences.
2025-06-07 06:23:22 -07:00
Matiss Janis Aboltins
8699fc2865 Add sponsored Cursor subscription details for core contributors (#721) 2025-06-07 13:46:20 +01:00
Matiss Janis Aboltins
c441df5377 Add triaging issues guidelines to contributing documentation (#720) 2025-06-07 13:45:20 +01:00
Matt Fiddaman
9f1a8f6d5c ⬆️ upgrade uuid from 9.0.1 -> 11.1.0 (#5048) 2025-06-07 01:02:35 -04:00
Matiss Janis Aboltins
b22d712b4f fix: add missing dependency array to useEffect in SaveReportChoose.tsx (#5044) (#5111) 2025-06-06 18:51:11 +01:00
Michael Clark
098cacd904 :electron: Guide user to the docs on the electron configure server page (#5107)
* add link to docs on configure server page

* release note

* release note

* bump

* Update VRT

* huh

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-06 10:48:01 +01:00
Matiss Janis Aboltins
127f114914 🔧 improving the needs-info stale issue management (#5110) 2025-06-05 23:08:51 +01:00
Matiss Janis Aboltins
b56e26ee56 🔧 auto close issues with inaactivity and 'needs info' label (#5109) 2025-06-05 22:45:20 +01:00
Matiss Janis Aboltins
cd6b141117 🔧 (eslint) patch no-restriced-imports rule (#5081) 2025-06-05 19:59:51 +01:00
Roger Goldfinger
cd15aded05 Add test that docker images are working (#4952)
* use build directory in dockerfiles

* add release notes

* add test

* Add test for cli, try to fix image test

* - fail

* try again

* try again to fail

* done testing

* Code review

* publish is unecessary
2025-06-05 10:31:56 -04:00
Baruch Odem (Rothkoff)
cac318255d [Proposal] Enhance transaction import functionality with new Transaction type and type annotations (#4720)
* Enhance transaction import functionality with new Transaction type and type annotations

* release notes

* fixes for PR

* move transaction type as requested by @MatissJanis

* type importTransaction return value

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2025-06-05 10:31:29 -04:00
dependabot[bot]
6872dd235b bump tar-fs from 2.1.2 to 2.1.3 (#5084)
* Bump tar-fs from 2.1.2 to 2.1.3

Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.2 to 2.1.3.
- [Commits](https://github.com/mafintosh/tar-fs/commits)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 2.1.3
  dependency-type: indirect
...

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-05 10:30:09 -04:00
Will Garrison
649932b42f [bugfix] Include split transactions in select-all (#5086)
* Include parent transactions in select-all when all of their children are selected

* Added release notes

* Fix release notes file name

* Make function return type explicit
2025-06-05 10:29:54 -04:00
Albert Pedersen
d372b71f36 Trim EndToEndID from the Danish Danske Bank branch (#5101)
* Trim EndToEndID from the Danish Danske Bank

* Add release note for PR #5101

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-05 10:29:45 -04:00
youngcw
47cb5e1ecf Add ability to auto hold funds for future months (#4778)
* add spreadsheet logic

* separate to own cell

* add selection cell

* fix selection

* added button

* arrow

* switches between the two hold options gracefully

* reset manual hold on apply auto hold

* working?

* fix

* lint

* better to budget menu logic

* type

* typing

* missing function pass

* some cleanup

* typecheck

* translation

* closer to good arrow

* lint

* prevent rollover arrow from clipping

* move to a menu; position is broken

* lint

* fix location

* lint

* standardize verbage

* right case

* fix import

* cleanup

* start of a mobile menu

* slightly better

* some cleanup

* lint

* Update packages/desktop-client/src/components/modals/EnvelopeIncomeBalanceMenuModal.tsx

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

* fix styling

* types

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

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

* Apply suggestions from code review

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-05 06:04:14 -07:00
Matt Fiddaman
612ae400c5 🔖 (25.6.1) (#717)
https://github.com/actualbudget/actual/pull/5099
2025-06-04 18:21:00 -04:00
github-actions[bot]
02c59d9a1c 🔖 (25.6.1) (#5099)
* 🔖 (25.6.1)

* Remove used release notes

---------

Co-authored-by: matt-fidd <81489167+matt-fidd@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-04 18:13:40 -04:00
Matt Fiddaman
f9f6917fcd update dockerfiles to use node 20 (#5091)
* update dockerfiles to use node 20

* note
2025-06-04 13:31:45 -04:00
Michael Clark
7441b5fa92 🐛 Fix server version on docker (#5093)
* fix server version on docker

* bit more safety

* fix lint

* release notes

* more error handling
2025-06-04 13:31:37 -04:00
Matt Fiddaman
bfb2d61286 fix crash when datepicker deselected with no date set (#5095)
* fix crash when datepicker not set

* note
2025-06-04 13:31:29 -04:00
youngcw
7a9a34d142 move multi user docs since its been released (#712) 2025-06-04 04:36:30 -07:00
Michael Clark
5dabea55b3 Desktop server docs (#716)
Introduces some docs for the Desktop App. 

**Pages chnged:** 

-
https://deploy-preview-716.www.actualbudget.org/docs/install/desktop-app/
2025-06-04 00:42:24 -04:00
Julian Dominguez-Schatz
62eee6404a 🔖 (25.6.0) (#715)
https://github.com/actualbudget/actual/pull/5083
2025-06-04 00:37:25 -04:00
github-actions[bot]
09b12b8218 🔖 (25.6.0) (#5083)
* 🔖 (25.6.0)

* Empty commit to bump CI

* Remove used release notes

* Empty commit to bump CI

---------

Co-authored-by: jfdoming <9922514+jfdoming@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-04 00:35:34 -04:00
Matiss Janis Aboltins
1c46655e30 🐛 (mobile) fix - show loading indicator if schedules not yet loaded (#5080) 2025-06-02 22:24:06 +01:00
dependabot[bot]
82329b7de2 Bump formidable from 2.1.2 to 2.1.5 (#5075)
* Bump formidable from 2.1.2 to 2.1.5

Bumps [formidable](https://github.com/node-formidable/formidable) from 2.1.2 to 2.1.5.
- [Release notes](https://github.com/node-formidable/formidable/releases)
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/node-formidable/formidable/commits)

---
updated-dependencies:
- dependency-name: formidable
  dependency-version: 2.1.5
  dependency-type: indirect
...

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-01 19:54:47 -04:00
Shimikito
a34c94d9fe Add ING PL (ING_PL_INGBPLPW) to banks with limited history (#5073)
* Update bank-factory.js 90 days bank history

Add ING PL (ING_PL_INGBPLPW) to banks with limited history

* Adding a bank with limited history - alphabetical fix

adding alphabetical sorting

* note

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-06-01 19:49:08 -04:00
Normen
ae6eed65f7 Add 'GLS Gemeinschaftsbank' to banks with limited history (#5052)
* chore: add GLS_GEMEINSCHAFTSBANK_GENODEM1GLS to BANKS_WITH_LIMITED_HISTORY

* chore: add release note
2025-06-01 19:48:14 -04:00
Ruben Olsen Lærk
1c13389e4d Syncs transactions from banks like Akahu and Up to Actual Budget (#713) 2025-06-01 17:43:14 +02:00
Adam Millerchip
6609580f72 add an alternative Synology guide (#710)
Add a link to [my guide](https://adamu.jp/blog/actual_budget_nas) to
installing Actual on a Synology NAS that uses a different method than
the existing guide: using Docker's [Container
Manager](https://kb.synology.com/DSM/help/ContainerManager/docker_desc?version=7)
app, and additional TLS certificate options.
2025-06-01 12:40:41 +02:00
Matiss Janis Aboltins
53398624f3 🔧 added needs-triage label to all new bug issues (#5070) 2025-05-30 21:57:16 +01:00
Valentin Lorenzen
47ee6eeb51 enable GoCardless account selection if supported by the target institution (#5031)
* Update gocardless-service.js

* Allow account selection during requisition based on institution support

* lint

* note

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-05-27 16:32:25 -04:00
Michael Süssemilch
6e3a337945 fix: save category expansion state when value is 0 (#5069) 2025-05-27 12:33:37 -07:00
Shreyas
d2d8ce2353 Fix: restrict electron-embedded sync server to bind only to configured hostname for security (#5050)
* comment sync server

* Fix: ensure electron-embedded sync server binds to localhost to limit access

* lint and release notes

* rename

* remove hostname config and revert docker yaml
2025-05-27 16:57:06 +01:00
Pan
63343d32e2 Fix ambiguous examples in goal-templates page (#707)
The last two examples for the goals have created confusion because the
template and goals line shows in one line:

https://discord.com/channels/937901803608096828/1372691110614274170/1376211790639136779

This PR makes sure that any `#template` and `#goal` lines that are meant
to go together are displayed on top of each other instead of inline.

It also makes sure that all uses of `#template` show with inline
code-formatting for overall conistency.
(Let me know if you'd rather have this in a separate PR and I'll splice
out that commit.)
2025-05-27 08:32:04 -07:00
POGMAN
57b2c36145 List Arch AUR packages (#706)
There was one package in the doc (actual-appimage) but there is more
actually :D
2 Desktop clients based on the AppImage and a server based on the
@actual-app/sync-server NPM package.
2025-05-26 07:27:56 +02:00
Johnn27
7d38f6934d 🐛 Fix goals tooltip obstructing cover spending context menu (#5051)
* 🐛 Fix goals tooltip obstructing cover spending context menu

* Update release note

* Fix lint format

---------

Co-authored-by: Johnn27 <>
2025-05-24 09:23:34 -07:00
Julian Dominguez-Schatz
d0fc4949be Update release docs with the latest changes (#705) 2025-05-23 19:07:18 -04:00
Spencer
74a1182381 Fixed Typo on apache reverse proxy page (#704)
Also changed the proxy pass to be http instead of https since the
default for an Actual container is http.
2025-05-23 16:44:29 -04:00
Matt Fiddaman
d4b09ecb27 fix "delete x users" translation string (#5045) 2025-05-22 20:18:47 -04:00
Matt Fiddaman
a508a8705c ⬆️ upgrade express from 4.21.2 -> 5.1.0 (#5042)
* upgrade express from 4.21.2 -> 5.1.0

* fix tests

* note

* fix wildcard route

* fix access of req.body when undefined
2025-05-22 16:21:57 -04:00
Matt Fiddaman
f3b2507516 ⬆️ upgrade date-fns from v2.30.0 -> v4.1.0 (#5041) 2025-05-22 14:37:55 -04:00
Joel Jeremy Marquez
583ddab2ac Use @desktop-client alias in all of desktop-client package (#4960)
* Use @desktop-client alias in all of desktop-client package

* Run yarn lint:fix
2025-05-22 09:01:05 -07:00
Joel Jeremy Marquez
1876ba9fe7 Update @actual-app/components/input to be based on react-aria-components Input component (#4955)
* Update @actual-app/components/input to use react-aria-components Input component

* Cleanup

* Dummy commit

* Remove marginRight being magically added by Stack component

* Update 4955.md

* Update selection background color to match current color

* Update selection background color

* Dummy commit

* Fix ConfigServer styles

* Fix lint error

* re-add accidentally removed placeholder fix

* vrt

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-05-21 22:48:05 -07:00
Matt Fiddaman
4c15647f7f ⬆️ upgrade low risk dependencies to their newest minor version (#5025)
* vitest

* types

* eslint

* better-sqlite3

* pluggy-sdk

* globals

* google-protobuf

* fast-check

* chokidar

* i18next

* openid-client

* playwright

* lru-cache

* memfs

* redacted font

* sass

* @vitejs/plugin-basic-ssl

* re-resizable

* rollup-plugin-visualizer

* note

* update vrt screenshots

* vrt
2025-05-21 16:56:07 -04:00
Joel Jeremy Marquez
174e13b3fe Fix category schedule indicators not showing up in budget page (#5036)
* Fix category schedule indicators not showing up in budget page

* Update release notes
2025-05-21 09:30:36 -07:00
Stein Petter Tokvam
2e9a752baa if BankSyncError is caused by rate limit. display that in toast (#5038)
* if BankSyncError is caused by rate limit. display that in toast

* ran prettier
2025-05-21 12:08:22 -04:00
Joel Jeremy Marquez
83f6706020 Add types to budget template files and some cleanup (#4986)
* Add types to budget template files and some cleanup

* Rename test context

* Rename test name

* Rename goal-template to match other files

* Update imports

* Fix lint and typecheck errors

* Release notes

* Update release notes

* Rename templateContext

* Revert rename

* Redo rename

* Fix renamed file

* Fix null error

* Missed to ignore hidden categories

* Revert to forEach

* Fix priorities

* Update 4986.md

* Revert deleted file

* Coderabbit feedback
2025-05-21 08:54:38 -07:00
Ruben Olsen Lærk
d1f9d8e125 Fixing miscalculation (#703)
Fixing #702
2025-05-21 16:34:18 +02:00
POGMAN
340e49f480 Update community-repos.md to add actual-userscripts (#701)
PR to add a link to a collection of userscripts to use with Actual web
client.

https://github.com/pogman-code/actual-userscripts
2025-05-21 14:53:21 +02:00
Matt Fiddaman
4dba95842a ⬆️ upgrade react dependencies to their newest minor version (#5027) 2025-05-20 13:46:20 -04:00
Matt Fiddaman
af499c6503 ⬆️ upgrade babel/webpack dependencies to their newest minor version (#5028) 2025-05-20 13:45:45 -04:00
Julian Dominguez-Schatz
913a2c9a68 Automatically upload to the MS store on release (#5034)
* Update electron-master GitHub action to also submit to the MS store

* Add release notes
2025-05-19 23:23:46 -04:00
Matt Fiddaman
a4b0c4a0be ⬆️ upgrade electron dependencies to their newest minor version (#5029) 2025-05-19 17:34:12 -04:00
Jared Tweed
32a04cbbcb Changed 'close file' to say 'switch file' so it is more clear that the … (#4872)
* Changed 'close file' to say 'exit file' so it is more clear that the file is not being deleted (#4852)

Resolved this issue here:

https://github.com/actualbudget/actual/issues/4852#issue-3006813465

* chore(release): add release note for PR #4872

* Update BudgetName.tsx "Close file" -> "Switch file"

* Update 4872.md

* Changed 'Close budget' to 'Switch file' on mobile

* Update VRT

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-19 10:29:47 -04:00
Matt Fiddaman
e950bbb1df resolve loot-core peer dependency warnings (#5024)
* fix loot-core peer dependency issues

* note

* update @swc/core
2025-05-18 19:37:22 -04:00
Matt Fiddaman
188cd21cf1 ⬆️ bump adm zip to 0.5.16 (#5019)
* bump adm-zip to 0.5.16

* note

* move to native yarn patch
2025-05-18 18:29:56 -04:00
Matt Fiddaman
f7a45d2081 ⬆️ bump dependency patch versions (#5015)
* bump dependency patch versions

* note

* remove unused ts-expect-error directives

* downgrade adm-zip again
2025-05-18 16:50:32 -04:00
Matt Fiddaman
99768a9aae ⬆️ upgrade yarn from v4.7.0 to v4.9.1 (#5014)
* upgrade yarn from v4.7.0 to v4.9.1

* note
2025-05-18 14:22:37 -04:00
Matt Fiddaman
7dbb3404f1 ⬆️ bump jq (#5018)
* bump jq

* note
2025-05-18 14:22:33 -04:00
Matt Fiddaman
ca09bbb858 remove dependency on ip (#5017)
* remove transitive dependency on ip

* note
2025-05-18 14:22:18 -04:00
Roger Goldfinger
0dca8498fe Set yarn engine version (#5011)
* Set yarn engine version

* release notes

* more precise version
2025-05-18 00:34:01 -04:00
Joel Jeremy Marquez
b5ece8e221 Make InitialFocus component generic (#5008)
* Make InitialFocus component generic

* Fix lint error
2025-05-16 15:02:06 -07:00
Samuel Barnes
351e252129 Allow-return-to-trigger-default-actions (#4912)
* button being focused

* working

* tests

* text selection test

* allow for ref injection

* updated some of the usages

* release notes

* rename of prop

* docs

* fixed release note

* remove unnecessary test setup

* updated from comments

* removed selecttext references

* fix type error

* updated children type

* removed comment
2025-05-16 12:28:31 -07:00
Joel Jeremy Marquez
720d0fda6d [Final PR] Move remaining loot-core/client files to desktop-client feature folders (#4830)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/data-hooks over to desktop-client package

* Fix typecheck and lint errors

* Fix lint error

* [Final PR] Move remaining loot-core/client files to desktop-client feature folders

* Fix tests

* Clear server on each run

* Fix lint errors

* Fix imports

* Fix typecheck error

* Fix lint errors

* Fix typecheck error

* Fix test

* Fix tests - unsubscribe test pending fix

* Fix lint errors

* Fix typecheck error

* Fix lint error

* Fix tests

* Fix lint error
2025-05-16 10:42:06 -07:00
Joel Jeremy Marquez
fdf213865d Move loot-core/client/data-hooks over to desktop-client package (#4828)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/data-hooks over to desktop-client package

* Fix lint errors

* Fix typecheck error

* Fix typecheck and lint errors

* Fix typecheck error

* Fix lint error
2025-05-16 08:53:59 -07:00
Alec Bakholdin
b2ffa1d846 [WIP] Qif empty lines (#5002)
* fixed qif failing with empty lines

* release notes

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-05-16 11:45:46 -04:00
Alec Bakholdin
21fb090ddf ⚙️ Moving TransactionsTable and TransactionList over to Typescript (#4930)
* moved over some util functions

* moved over TransactionHeader

* Added the bulk of Transaction typing data

* moved PayeeCell into its own file

* moved StatusCell over

* added NotesCell file

* Moved over NewTransaction

* converted TransactionsTable

* Converted TransactionList to use new typed TransactionsTable

* Converted consumers of TransactionList to use TransactionList

* removed old TransactionsTable

* release notes

* fixed bug vrt found

* fixed one todo

* attempting to debug whatever is going on

* moved TransactionsTable tests up a directory and that fixes it for some reason

* removed type cast

* re-instated onScheduleAction types

* re-added old TransactionsTable.jsx file

* consolidated changes into just TransactionsTable

* deleted split files and finished moving over TransactionList

* typecheck

* typecheck

* yarn lint

* changed type casting to make it more specific

* changed warn to error

* added some todos to clean up type assumptions later

* yarn lint

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@mac.myfiosgateway.com>
Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-05-16 06:15:07 -04:00
Joel Jeremy Marquez
c389c6c637 Move loot-core/client/store and loot-core/client/redux code over to desktop-client package (#4827)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/store and loot-core/client/redux to desktop-client package

* Separate redux store into it's own file

* Import types from redux/store instead of redux
2025-05-15 13:09:10 -07:00
Joel Jeremy Marquez
7bb6aff756 Move loot-core/client/users code over to desktop-client package (#4823)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/users code over to desktop-client package

* Fix lint errors
2025-05-15 12:45:20 -07:00
Mitch B.
29e1af364b Pocket ID tested with OAuth (#697) 2025-05-15 21:28:55 +02:00
Joel Jeremy Marquez
3f4ddfdfe0 [Mobile] Fix category transactions screen not showing child transactions (#4998) 2025-05-15 11:38:50 -07:00
Joel Jeremy Marquez
7dd98c4f86 Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from (#4994)
* Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from

* Add filter to usePreviewTransactions and set startingBalance to account and category preview transaction hooks
2025-05-15 11:31:38 -07:00
Michael Clark
f3fc4b8d22 Remove duplicate import (#4997) 2025-05-15 19:22:31 +01:00
Joel Jeremy Marquez
644e8df3e1 Move loot-core/client/queries code over to desktop-client package (#4822)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/queries code over to desktop-client package
2025-05-15 11:10:19 -07:00
Joel Jeremy Marquez
9dfbefa1d2 Fix prefsSlice import (#4995) 2025-05-15 11:09:54 -07:00
Michael Clark
516977f666 Fix pipeline build (#4996) 2025-05-15 19:06:59 +01:00
Michael Clark
70362f6801 :electron: Server config ui (#4870)
* server config ui 

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-05-15 18:52:46 +01:00
Eetu Mäenpää
d225e5d5e1 Update react-spring to v10.0.0 (#4992)
* feat: update react-spring to v10.0.0

* docs: add release notes
2025-05-15 11:34:40 -04:00
Ruben Olsen Lærk
2c1d5eeeff Fixing #608 by documenting the actual process. (#698)
- Adding new screenshots.
- Deleting old screenshot.
- Also did some language changes on the rest of the page.

This should address @youngcw wrote in a comment on PR
https://github.com/actualbudget/docs/pull/599 _The restore page is a
little weird where it says you need to logout before you can do a
restore. That should be changed at some point._
2025-05-15 10:26:55 +02:00
Joel Jeremy Marquez
ae00fa2841 Move loot-core/client/prefs code over to desktop-client package (#4821)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/prefs code over to desktop-client package

* Dummy commit
2025-05-14 22:01:02 -07:00
musicaldesigner
b475951075 Update bank-factory.js, add DNB to list of banks with limited history (#4893) 2025-05-14 19:09:06 -07:00
Joel Jeremy Marquez
d9dd96d0de Add option to calculate running balances in useTransactions hook (#4987)
* Add option to calculate running balances in useTransactions hook

* Fix typecheck error

* Fix lint error

* Cleanup

* retrigger checks
2025-05-14 15:27:38 -07:00
Joel Jeremy Marquez
45ff94590b Move loot-core/client/notifications code over to desktop-client package (#4820)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Move loot-core/client/notifications code over to desktop-client package
2025-05-14 13:25:09 -07:00
Joel Jeremy Marquez
466875a8dd Move loot-core/client/modals code over to desktop-client package (#4819)
* Move loot-core/client/modals code over to desktop-client package

* Fix lint error

* Fix imports

* Fix lint error

* Fix lint error
2025-05-14 12:09:25 -07:00
Alec Bakholdin
0431039eb6 Inconsistent date update mobile new transaction (#4910)
* converted onUpdate to onChange for better mobile ux

* release notes

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-05-13 10:33:05 -04:00
Alec Bakholdin
2215c131a5 Fix new transactions account notes not clearing (#4914)
* added history entry if history entry is null while entering Add Transaction widget

* release notes

* Update TransactionEdit.jsx

* Update TransactionEdit.jsx

* Update TransactionEdit.jsx

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-05-13 10:32:54 -04:00
Matt Fiddaman
4de5fb34b9 increase OpenID timeout (#4980)
* increase openid request timeout

* note
2025-05-13 00:20:59 -04:00
Ruben Olsen Lærk
e80805276a Adding some fancy reporting dashboards to the front page (#694)
Also as a teaser on the customer report documentation page. We need to
show of some cool stuff.
2025-05-13 06:17:36 +02:00
Ruben Olsen Lærk
eeae707229 Fixing #663 Privacy Filter / Scramble and Hide data documenation (#693)
The privacy filer / scrambling function has so far only been briefly
mention on the first page of the tour guide.

I added some screenshots + text to the tips and tricks page.

As a bonus I also added ALT text to the existing images.
2025-05-13 06:16:58 +02:00
OhNoBigO
4f6b97ae4a [Mobile] 🐛 Fix viewing pie/donut charts on mobile (#4935)
* Fix viewing pie/donut charts on mobile

* Add release note

* Fix onMouseEnter firing on ios devices

* Change isTouchDevice to canDeviceHover

---------

Co-authored-by: Oli-vers <180103373+Oli-vers@users.noreply.github.com>
2025-05-12 13:57:52 -04:00
Matt Fiddaman
6d921a48b6 change minimum version of Node.js to version 20 (#4978)
* update workflows

* update supported engines in package.json

* .nvmrc

* base yarn cache on node version being used rather than .nvmrc

* note
2025-05-12 13:49:09 -04:00
Michael Clark
2d0716233f Replacing Actuator with our own implementation (#4897)
* actuator replacement experiment

* replacing actuator

* release notes

* description added

* version typo

* Update upcoming-release-notes/4897.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-12 18:40:15 +01:00
Matt Fiddaman
4e243420fa change minimum version of Node.js to version 20 (#692)
I think I got all instances where we specify a version, there seem to
only be two places in the docs.

We'll also call it out in the release notes.

https://github.com/actualbudget/actual/pull/4978
2025-05-12 19:17:10 +02:00
Joel Jeremy Marquez
6f3bfd2ad4 Move loot-core/client/budgets code over to desktop-client package (#4818)
* Move loot-core/client/budgets code over to desktop-client package

* Fix lint error

* Fix lint error
2025-05-12 09:46:33 -07:00
Joel Jeremy Marquez
10a143a3ae Add upcoming/missed/due schedules indicator on budget table (based on category schedule templates) (#4815)
* Add upcoming/missed/due schedules indicator on budget table (based on category schedule templates)

* Rename hook

* Fix typecheck error

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

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

* Use category goal_def instead of reparsing notes

* Fix lint and typecheck error

* Fix lint error

* Update type

* Handle doal_def parse errors

* Only show schedule status on month of the schedule's next date

* Mobile - only show category schedule status on month's schedule

* Update tooltip wording

* Disable if goal templates feature is disabled

* Move schedule indicator to spent column

* Update colors

* Mobile - move indicator to spent

* Cleanup

* Cleanup

* Support multiple schedule templates

* Clearer error message

* Memo useCategoryScheduleGoalTemplates

* Fix lint and typecheck errors

* Category preview transactions for mobile

* Fix lint errors

* Fix calls to .some()

* Show most urgent schedules first

* Fix typecheck error

* Fix lint error

* Align all schedule indicators

* List all schedules in schedule indicator tooltip

* Fix typecheck error

* Fix lint errors

* Update SpentCell to show schedule indicator

* Fix lint error

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

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-05-12 09:46:20 -07:00
Joel Jeremy Marquez
82c469648e Split transactions repair tool to remove categories from parent transactions + prevent adding/updating parent transactions with categories (#4889)
* Add a functionality to split transactions repair tool to remove categories from parent transactions and prevent adding/update parent transactions with categories

* Fix lint error

* Remove console.log
2025-05-12 09:17:22 -07:00
Joel Jeremy Marquez
ab3088b6fa Update budgetType preference in DB from rollover/report to be envelope/tracking (#4879)
* Update budgetType preference from rollover/report to be envelope/tracking

* Release notes

* Fix default budgetType in BalanceCell
2025-05-12 08:27:50 -07:00
Joel Jeremy Marquez
582bb59097 Move loot-core/client/app code over to desktop-client package (#4817)
* Move loot-core/client/app code over to desktop-client package

* Fix lint

* Fix lint error
2025-05-12 08:21:06 -07:00
youngcw
01c68bcfc7 Tests for goal templates (#4882)
* start

* make week tests make sense

* fix

* copy

* average

* no call checks

* add rest.  Still need to vet runSpend, and runBy

* fix average

* tweak spend

* updates

* cleanup

* note

* add more up to tests

* previous percentage

* hitting limit tests

* remainder

* fixes

* more fixes

* fixes, and fix remainder return value

* fix amounts in limit tests

* e2e for a category

* skip checking schedules if not needed

* lost changes

* fix null

* add goal tests

* final fix?

* lint

* lint option 2
2025-05-12 06:25:01 -07:00
Johnn27
dd749483f5 [Mobile] 🐛 Fix widget order (#4949)
* Fix Dashboard Widgets Not Ordered on Mobile

* Update Release Notes

* Update formatting and comment

---------

Co-authored-by: Johnn27 <>
2025-05-12 08:56:35 -04:00
sergio10
11b86fc33c Add Abanca to the list of banks with limited history (#4970)
* Add Abanca to the list of banks with limited history

* add release notes

* change category release notes
2025-05-12 08:42:50 -04:00
Guillaume Taquet Gasperini
6e5f4bfb18 Add BoursoBank GoCardless Integration (#4958)
* Add BoursoBank GoCardless Integration

The default normalization was creating new payees for each
transaction per day, as there was no specific integration
for this bank.

e.g. `Carte dd/mm/yy Payee Name Cb*1234` was taken as payee
name.

There doesn't seem to be an easy catch-all syntax for
the BoursoBank transactions, but I have put all the
ones I could find from my transactions.

* Fix comment typo

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-05-12 08:42:30 -04:00
Vincent Giorgi
d87b78c02a invert most of seb kort credit card transactions (#4869)
* invert most of seb kort credit card transactions

* add release-notes

* revert package.json

---------

Co-authored-by: Vincent Giorgi <8283278+vincegio@users.noreply.github.com>
2025-05-12 07:55:19 -04:00
Ruben Olsen Lærk
73838c8ec6 Add link til Arch Linux User Repository (AUR) package (#691)
See
https://discord.com/channels/937901803608096828/1027831463103696928/1349820333221478431.

Ordered the list alphabetically.
2025-05-12 10:50:32 +02:00
Michael Clark
135719f7be Ngrok reverse proxy docs (#688)
I think this might be useful for people running the Actual Desktop app
with the sync server.

I might add the link to this in the desktop app dedicated docs page
(when I've made it). In that page, I'll mention that a reverse proxy can
expose Actual Server to the internet for free.

-
https://deploy-preview-688.www.actualbudget.org/docs/config/reverse-proxies
-
https://deploy-preview-688.www.actualbudget.org/docs/install/build-from-source

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-05-12 09:18:29 +01:00
Alec Bakholdin
3cab9a374b 🐛 fixed scrollbar being impossible to grab (#4923)
* adjusted scrollbar width

* added icons to release note generator

* release notes
2025-05-11 13:23:29 -04:00
Julian Dominguez-Schatz
96949b701e Stabilize electron build directory paths (#4864)
* Stabilize electron build directory paths

* Add release notes
2025-05-11 07:39:05 -04:00
Michael Clark
0f55c67d3e 🐛 Fix sync server build not copying sql files over (#4968)
* fix sync server build not copying sql files over

* release notes

* copy-static-assets script
2025-05-10 13:17:34 +01:00
Michael Clark
b0adcb1333 🐛 Sync server - resolving the user-files and server-files to an absolute dir (#4954)
* resolving the user-files and server-files to an absolute dir

* safety

* release notes
2025-05-09 19:39:57 +01:00
azrikahar
9cc802cd28 Minor tweaks to the Caddy compose file (#689)
Changes made with some justification, in order of commits:
- removed port mapping for `actual-server` service since we're using
Caddy as the reverse proxy, similar to how there's no port mapping for
the Traefik example
- minor consistency changes by referring to the Traefik example:
  - moved `image: caddy:alpine` to the top
  - add restart policy
  - swapped one inconsistent single-quoted port mapping to double quotes
2025-05-09 07:19:56 -07:00
Alec Bakholdin
04da20e34c Fix title first null undefined (#4908)
* added more null checks to titleFirst

* release notes

* fixed lint and typecheck

* Update packages/loot-core/src/shared/util.ts

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

* removed ts-ignore after changing titleFirst

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: Alec Bakholdin <alecbakholdin@mac.myfiosgateway.com>
2025-05-08 12:11:27 -04:00
Alec Bakholdin
48715bf6b4 Ofx parsing dates incorrectly (#4911)
* added trim to ofx parsing

* release notes

* removed console.log
2025-05-08 12:11:19 -04:00
Alec Bakholdin
6c278a72a5 Fixed graphical bug in report (#4917)
Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-05-08 12:11:11 -04:00
Alec Bakholdin
17173d3ff0 New transaction text deselection on alt tab (#4921)
* changed default amount to come from amountToCurrency to handle localized values and maintain focus

* release notes

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-05-08 12:11:02 -04:00
Alec Bakholdin
64caf0f28b Last reconciled date not visible mobile (#4922)
* added last reconciled note to the reconciliation popup

* release notes

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

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

* bumped up padding

* yarn lint

---------

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: Alec Bakholdin <alecbakholdin@mac.myfiosgateway.com>
2025-05-08 11:42:27 -04:00
Joel Jeremy Marquez
0a8f820652 Use cx in Button className merging (#4956) 2025-05-07 08:12:57 -07:00
Michael Clark
e30735104e 🐛 Fix cli package json after ts build change (#4957)
* fix cli package json after ts build change

* release ntoes
2025-05-07 09:06:09 +01:00
Julian Dominguez-Schatz
8878f36eaf Add basic modal for budget automations (#4810)
* Add basic modal for budget automations

* Add release notes

* Exclude TODOs from this PR for now

* Fix some rebase errors

* CodeRabbit feedback

* PR feedback: reduce nesting in automation editor

* PR feedback: reduce nesting in automation read-only state

* PR feedback: make editors feel more like part of the read-only entry
2025-05-06 20:51:08 -04:00
Julian Dominguez-Schatz
9531a57f1c Deduplicate vite versions (#4943)
* Deduplicate vite versions

* Add release notes

* Ensure plugins are compatible with the latest vite

* yarn dedupe
2025-05-06 18:10:51 -04:00
Michael Clark
9d99fe2838 🐛 Fixing docker edge (#4953)
* instead of referencing the build dir directly reference using relative path

* release notes
2025-05-06 22:56:32 +01:00
Joel Jeremy Marquez
3a18718fa0 [Mobile] Show transactions upon clicking income categories (#4940)
* [Mobile] Show transactions upon clicking income categories

* Fix lint error
2025-05-06 14:09:40 -07:00
Roger Goldfinger
090345bd95 Enable Typescript in sync-server (#4887)
* attempt at running with typescript

* release notes

* working jest tests for TS files

* working docker image build

* remaining docker images

* cleanup

* ensure vitest is working

* get tests passing in ci

* less strict

* update release notes

* use tsc compiled assets in the published package

* scripts

* update yarn.lock

* Use build path for electron app

* PR feedback: move sync-server build out of bin/build-browser

* PR feedback: undo moduleResolution change

* extend main tsconfig and fix types

* PR feedback on scripts and when the sync-server build runs

* fix lint (unrelated change)

---------

Co-authored-by: alecbakholdin <alecbakholdin@gmail.com>
2025-05-05 23:45:49 -04:00
dependabot[bot]
4a7439da5e Bump vite from 5.4.18 to 5.4.19 (#4904)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.18 to 5.4.19.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.19/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 20:29:16 -04:00
Joel Jeremy Marquez
a3c9525c83 Fix lint error accidentally pushed to master (#4942) 2025-05-05 14:28:30 -07:00
Alvaro Crespo
0d60da5ba9 Payees functional tests (#4766)
* add PayeesPage model for searching payees in e2e tests

* add navigation method to go to PayeesPage in e2e tests

* add e2e tests for Payees page

* update release notes

* Run prettier to fix lint

* clean imports

* fix imports

* Add snapshots for visual tests

* Remove unused import in payees test

* Update VRT

* Update 4766.md

Dummy commit

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2025-05-05 09:26:17 -07:00
Julian Dominguez-Schatz
388a9f6c86 Automatically generate GitHub release text (#4932)
* Automatically generate GitHub release text

* [TEMPORARY] Revert Electron signing changes to make this change testable

* Revert "[TEMPORARY] Revert Electron signing changes to make this change testable"

This reverts commit eeb5680b1a.

* Add release notes
2025-05-05 08:45:09 -04:00
Julian Dominguez-Schatz
cabb7149f0 Use the latest release tag instead of the latest tag for version checks (#4933)
* Use the latest release tag instead of the latest tag for version checks

* Add release notes
2025-05-05 08:44:31 -04:00
lelemm
3c47c1ca27 Promoting OpenId as default feature (#4903)
* Removed OpenId feature flag

* linter

* md

* wrong author
2025-05-05 08:21:47 -03:00
Joel Jeremy Marquez
cc204ba70e Use @desktop-client/hooks alias for cleaner imports (#4789)
* Use @hooks path alias for cleaner imports

* Fix line errors

* Update to @desktop-client
2025-05-04 22:30:10 -07:00
Joel Jeremy Marquez
7074b4dd82 Rename AQL module's runQuery function to aqlQuery to disambiguate with DB module's runQuery function + AQL types (#4787)
* Rename AQL module's runQuery function to aqlQuery to disambiguate with DB module runQuery function

* Release notes

* Update SqlPieces

* Fix lint

* Update SqlPieces.from

* Add types

* Type result as any for now

* Fix lint

* Add types

* Fix typo

* PR feedback

* Update comment

* Fix lint error

* Fix import
2025-05-04 22:29:23 -07:00
Julian Dominguez-Schatz
4184496010 🔖 (25.5.0) (#687)
code: https://github.com/actualbudget/actual/pull/4916

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <jfdoming@users.noreply.github.com>
2025-05-03 14:19:28 -04:00
Michael Clark
0bc8db4ed5 Docs for new sync-server npm package (#680)
**To be merged on the next release.**

Goes with the new @actual-app/sync-server package:
https://github.com/actualbudget/actual/pull/4798

**Pages changed:**
- https://deploy-preview-680.www.actualbudget.org/docs/install/
- https://deploy-preview-680.www.actualbudget.org/docs/install/cli-tool
-
https://deploy-preview-680.www.actualbudget.org/docs/contributing/releasing
- https://deploy-preview-680.www.actualbudget.org/docs/config

**Notable changes**
- New CLI Tool docs
- Cutting a release - we no longer need to manually publish any npm
packages.

---------

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2025-05-03 13:56:44 -04:00
github-actions[bot]
c23cbb4b0e 🔖 (25.5.0) (#4916)
* 🔖 (25.5.0)

* Bump CI

* Remove used release notes

* Bump CI

---------

Co-authored-by: jfdoming <9922514+jfdoming@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-03 13:44:50 -04:00
lelemm
8da1c59362 🐛 Bug FIX: OpenID first login is not working properly when using config.json or ENV VARS (#4902)
* First login was not working properly

* md
2025-05-01 10:26:03 -03:00
youngcw
916a27a89a 🐛 fix schedule preview running balance of split schedules (#4881)
* fix blance math

* clean

* note

* lint

* typecheck
2025-04-25 13:11:49 -07:00
Joel Jeremy Marquez
97b99d1f16 [Mobile] Fix hidden category groups not being hidden (#4880)
* Fix hidden category groups not being hidden

* Update release note
2025-04-23 12:24:52 -07:00
dgsouzabr
a332889db9 [WIP] Update pluggyai.md - Adding missing required setting step (#679)
Adding required step to enable Pluggy under current version
2025-04-23 18:54:16 +01:00
Matiss Janis Aboltins
9cbcc035ac Update index.md (#686) 2025-04-23 18:52:38 +01:00
Henry Bley-Vroman
499ee4e58c [WIP] downloads: intel and apple silicon mac labels [#681] (#682)
- Closes #681

Adds Intel and Apple Silicon to the relevant macOS downloads.
2025-04-23 18:52:13 +01:00
Cameron Jackson
ed9a3a7204 [WIP] Update actual-server-repo-move.md (#672)
Put Windows-specific step in parens to differentiate it from the rest of
the steps

Also gave clarification upfront to inform users what the end-goal is.
2025-04-23 18:51:36 +01:00
ale1800
326398cc3f [WIP] free tier clarification in gocardless.md (#666) 2025-04-23 18:50:28 +01:00
Remilia Da Costa Faro
a77f83ed31 [WIP] Removed GPS informations from matt-fidd.jpeg (#675)
Hello!

I'm using [a plugin in my
browser](https://github.com/allanlw/gps-detect) to be notified when an
image contains GPS data in the metadata of images, and I noticed while
reading the latest release notes that matt-fidd.jpeg contained some GPS
coordinates, so this pull requests is just to remove those from the
image.

Have a nice day
2025-04-23 18:49:49 +01:00
lelemm
8feae65e37 Openid config changed with convict config (#685) 2025-04-23 13:55:31 -03:00
Joel Jeremy Marquez
cf114ef69e [Mobile] Fix uncategorized banner + overspent banner showing previously active month's overspent categories (#4875)
* [Mobile] Fix overspent banner showing previously active month's overspent categories

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

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

* Fix typecheck error

* Enable uncategorized banner and overspent banner for tracking budgets

* Fix lint error

* Update VRT

* Dummy commit

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-04-23 08:15:18 -07:00
Landon Gavin
015a8d682a Update community-repos.md to correct tool name from "Actual Budget Auth Sync" to "Actual Budget Auto Sync". (#684) 2025-04-22 13:43:40 -07:00
Joel Jeremy Marquez
7064106748 Move loot-core/client codes over to desktop-client package (#4816) 2025-04-22 08:21:01 -07:00
deathblade666
5671c598b9 Update https.md to include config.json creation through terminal (#662)
Add instructions for creating the config.json via a single terminal
command.

Reasoning - Assisted a MacOS deploy where they had everything setup
correctly but when they made the config.json file their instance
crashed, this was due to using the default GUI text editor which saved
the file as a .rtf and they renamed to .json. Doing this will leave
metadata in the file and actual wont know what to do with it causing an
infinite restart loop.

This addition provides a simple method to create the file without the
possibility of extra formatting bits causing issues
2025-04-22 07:45:51 -07:00
ftbboy2115
54f833b9c4 Update schedules.md (#654)
Added details regarding expected functionality surrounding repeating
schedules and the end of the month.
2025-04-22 07:44:58 -07:00
Kennedy242
82c8e9f98c Update Reports Documentation (#668)
More reports have been added! 

Update the docs to reflect this.
2025-04-22 07:42:38 -07:00
Landon Gavin
959d2044ca Update community-repos.md to add actual-auto-sync (#683)
PR to add a link to a tool to auto-sync accounts on a schedule.

https://github.com/seriouslag/actual-auto-sync
2025-04-22 07:39:44 -07:00
Michael Süssemilch
b92a1cacf7 fix: commerzbank escape payee (#4845) 2025-04-21 13:28:27 +01:00
Alec Bakholdin
48c41e8015 added documentation for merging transactions (#678)
See implementation in this PR:
https://github.com/actualbudget/actual/pull/4739

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-04-21 10:15:50 +01:00
Michael Clark
f5c1879de1 :electron: Fix some menu links (#4860)
* fix some menu references not working

* release notes
2025-04-21 09:38:12 +01:00
Julian Dominguez-Schatz
92f444f548 Move some .d.ts files to .ts (#4862)
* Move loot-core types to `.ts`

* Add release notes

* PR feedback
2025-04-20 22:40:53 -04:00
Julian Dominguez-Schatz
94600731d9 Move loot-core to vitest (#4859)
* Update build + dependencies to work with vitest

* Update tests to use vitest

* Update snapshots to vitest format

* Update sql.js loading in tests to work with vitest

* Update crdt package loading to work with vitest

* Add release notes
2025-04-20 15:52:59 -04:00
Julian Dominguez-Schatz
5d59ecd72c Move remaining non-loot-core packages to latest vitest (#4856)
* Move remaining non-loot-core packages to vitest

* Add release notes
2025-04-20 15:17:07 -04:00
Michael Clark
54d9f0ff41 :electron: Fix Load Backup backup modal (#4853)
* fix backup screen

* release notes
2025-04-20 17:15:24 +01:00
Vincent Giorgi
eebdbdf34e invert Strawberry credit card transaction amounts (#4857)
* add Strawberry (nordic choice club) credit cards to SEB balance inversion

* add release-notes

---------

Co-authored-by: Vincent Giorgi <8283278+vincegio@users.noreply.github.com>
2025-04-20 11:54:13 -04:00
Julian Dominguez-Schatz
bddc372650 Move crdt to vitest (#4851)
* Move crdt to vitest

* Add release notes
2025-04-20 09:00:39 -04:00
Julian Dominguez-Schatz
d027adc734 Move sync-server to vitest (#4840)
* Move sync-server to vitest

* Add release notes

* Add comment

* Remove extraneous console.log

* Empty commit to bump CI
2025-04-19 23:43:25 -04:00
Michael Clark
e67c064d1f :electron: Prep for configure server page (#4847)
* prep work for configure server page

* release notes

* better log message
2025-04-19 18:34:13 +01:00
Roger Goldfinger
2f1ccad25a Restore"Reload on all redirects to handle Cloudflare Access auth expiration" (#4844) 2025-04-18 23:11:11 -04:00
Bhautik Savaliya
a2b9153d02 Fixes #4705: Scheduled transaction date when posting early. (#4719) 2025-04-18 10:33:39 -07:00
Julian Dominguez-Schatz
f1594e5bca Fix bug in ofx2json logic (#4838)
* Fix double unescape bug in ofx2json

* Add test

* Add release notes

* Update snapshot
2025-04-18 13:29:38 -04:00
dependabot[bot]
fed426d704 Bump nanoid from 3.3.7 to 3.3.11 (#4834)
* Bump nanoid from 3.3.7 to 3.3.11

Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.11.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.11)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-version: 3.3.11
  dependency-type: indirect
...

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

* Add release notes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2025-04-18 13:25:24 -04:00
dependabot[bot]
aeb26b75af Bump vite from 5.4.8 to 5.4.18 (#4833)
* Bump vite from 5.4.8 to 5.4.18

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.8 to 5.4.18.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.18/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.18/packages/vite)

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

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

* Add release notes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2025-04-18 13:23:50 -04:00
Michael Süssemilch
4b58335780 feat: expandable budget categories (#4807) 2025-04-18 05:35:08 -04:00
Michael Clark
153eaeecc5 🐛 CLI: Fix ACTUAL_DATA_DIR env variable not respected in some cases (#4825)
* fix issue with default data directory not respecting env variables
2025-04-18 10:11:34 +01:00
Margarida Reis
e28db52c70 fix: persist filters in custom report on interval or date range change (#4724)
ensure that modified filters are reapplied to the Custom Report when changing its interval or date range, rather than reverting to the last saved state, which could overwrite unsaved changes to the filters or their conditional operand
2025-04-17 22:13:04 -04:00
Grant
83f7a79c76 4571: Fix UI lockout when using In/Out mode with existing split columns (#4715)
* Fix catch 22 problem when using In/Out with split columns already enabled
- Also changed UI and transaction amount parsing behavior to accept all options combined
- Repositioned some amount options
- Adjusted the labels of a few options

* Fix amount options triggering state resets

* Update VRT

* Revert "Update VRT"

This reverts commit 0a4b70afad.

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-17 22:03:09 -04:00
Alec Bakholdin
7e3ebb7e5f Global prefs undefined change (#4837)
* updated saveGlobalPrefs to handle falsy values better

* updated link which was no longer valid

* release notes

* Removed errant log

---------

Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
2025-04-17 12:38:03 -07:00
lelemm
a8d41e88a5 🐛 Fix for returnUrl in OpenID auth (#4836)
* Fix for `returnUrl` in OpenID auth

* md

* change md number
2025-04-17 13:03:21 -03:00
Roger Goldfinger
62ab6a12e8 Revert "Reload on all redirects to handle Cloudflare Access auth expiration (…" (#4835) 2025-04-17 11:02:21 -04:00
Julian Dominguez-Schatz
d91fd2fb0e Slow improvements to Account.tsx (1/many) (#4824)
* Move Account EmptyMessage to a separate file

* Move a tiny bit of state out of Account.tsx

* Add release notes
2025-04-17 09:13:27 -04:00
Alec Bakholdin
4e9d51be1f [Feature] Manually merge transactions (#4739)
* added transactions-merge action

* mergeTransactions now returns kept id

* merge option only shows up when amount matches

* merge now handles more errors and merges from the dropped transaction if values are present

* modified merge logic slightly to avoid duplicating imported_id

* added reconciled and cleared to merge logic

* modified canMerge logic in SelectedTransactionsButton

* made merge undoable

* added onMerge to mobile menu

* release notes

* modified testing suite slightly

* added logic for detecting bank sync vs file import

* typecheck problem

* linting errors

* attempt to clean up tests better

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-04-16 20:11:36 -07:00
dependabot[bot]
1bc87fb35a Bump http-proxy-middleware from 3.0.3 to 3.0.5 (#4832)
* Bump http-proxy-middleware from 3.0.3 to 3.0.5

Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 3.0.3 to 3.0.5.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/master/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v3.0.3...v3.0.5)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 3.0.5
  dependency-type: direct:development
...

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

* Add release notes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2025-04-16 23:00:12 -04:00
Roger Goldfinger
2f5464c735 Reload on all redirects to handle Cloudflare Access auth expiration (#4706)
* Reload on all redirects

* Update index.ts

* Create release notes

* Update index.ts

* Update index.ts

* Update 4706.md

---------

Co-authored-by: Roger Goldfinger <roger@remind101.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-16 20:26:29 -04:00
Matt Fiddaman
c85769eb82 add support for longer running SimpleFIN transaction requests (#4780)
* SimpleFIN follow redirects

* release note
2025-04-16 19:17:27 -04:00
lelemm
a657021303 Do not count hidden categories in tracking budgets + cleanup table math (#4567)
* Alternative solution

* tests

* a bit better, but now categories can be weird

* working, I think

* almost there

* I was making it harder than it needed to be

* Update VRT

* note

* note

* Separating logic from envelope and report to keep envelope as it was

* Update VRT

* Removed checks for budgetType inside `envelope.ts` and `report.ts`

* changed code position in file

* linter

* handle initially hidden

* Fix for when tracking but is enabled

* total up everything

* Add tests for handling hidden categories and groups in budget totals

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Gatera <kevin@deployitwith.me>
2025-04-16 18:43:21 -03:00
Julian Dominguez-Schatz
523a62c8a0 Fix crash on transactions table with new transaction popup open (#4812)
* Fix crash on transactions table with new transaction popup open

* Add release notes
2025-04-15 18:27:37 -04:00
Joel Jeremy Marquez
925efc4cb6 [Mobile] Drag and drop expense category groups to re-order (#4599)
* Update to GridList

* VRT - minimal diff between 2 rows

* Implement a hidden drag button

* Revert VRT

* VRT

* [Mobile] Drag and drop income categories to re-order

* Update drag preview

* Release notes

* Fix drag preview

* Fix typecheck errors

* Fix group header margins

* Coderabbit suggestion

* Fix group

* Yarn lint fix
2025-04-15 14:13:44 -07:00
Michael Clark
31fe766a2b 🆕 Sync server as npm package (#4798)
* sync server as npm package

* yarn lock

* workflow

* fix yml

* fix script

* named job better

* imagine trusting an ai

* pack and publish separately

* v4 instead of v3 upload

* dependencies

* identifying the right package for uplaod

* updating references

* what

* i see

* here comes the glory

* aaaand here it comes

* perms

* hmm

* try changing scope

* owner is invalid for git so have to go to npm instead

* better names on workflow

* package the api too

* updates

* rename to play better with gitignore

* yarn

* better

* dont ignore me

* yarn

* readme

* readme

* release note

* typo

* updating to read package.json from fs rather than import to support more node versions

* more ai autocomplete more problems
2025-04-15 20:51:17 +01:00
Joel Jeremy Marquez
b9e7d7e9c2 [Mobile] Drag and drop expense categories to re-order (#4484)
* ExpenseGroup component

* Release notes

* Fix imports

* Fix typecheck errors

* Fix drag and drop indicator

* Fix drop indicator

* Update imports

* Cleanup

* Update to GridList

* Cleanup

* VRT - minimal diff between 2 rows

* Implement a hidden drag button

* Fix budgeted/spent toggle

* Update VRT

* Dummy commit

* Revert VRT

* VRT

* Update dependency props

* Update VRT

* CodeRabbit suggestions

* Fix rebase error

* Update VRT

* Dummy commit to re-run vrt

* Fix typecheck errors

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-04-14 13:55:17 -07:00
Josh Woodward
04aa086c9e Unlink account via bank sync page (#4714)
* adding unlink and account name to modal

* fixing dispatch and some style updates

* release notes

* catching a few missed "bank-sync" phrases

* linting

* Addressing comments

* Addressing comments

* Linting

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-13 09:41:25 -04:00
Matiss Janis Aboltins
cc02970a16 ⬆️ upgrade to React v19 (#4700) 2025-04-10 08:49:38 +01:00
Matiss Janis Aboltins
9489e2f3b4 🔧 added eslint auto-fix to the lint-staged step (#4757)
small DX improvement
2025-04-10 08:19:44 +01:00
Ian
608b4be765 Add option to control note imports during transaction import (#4593)
* Make note imports optional. Adds tests too

* add release notes

* Update VRT

* type getTransactions to resolve TS error

* remove CSV note import - already supported

* type and lint to make coderabbit happy

* conditional rendering of importNotes

* Update VRT

* update snapshot to account for serialization change

* use <Trans>

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

* Fix closing Trans

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

* address missing import

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-09 15:29:34 -07:00
Joel Jeremy Marquez
01f45d5072 Extract auth related server handlers from main.ts to server/auth/app.ts (#4660)
* Extract auth related server handlers from main.ts to server/auth/app.ts

* Release notes

* Update get-openid-config

* Fix typecheck error

* Fix lint and typecheck errors
2025-04-09 08:34:44 -07:00
alcroito
1b5be7f9d2 Show closed accounts on mobile UI (#4581) (#4584)
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-09 11:20:45 -04:00
Julian Dominguez-Schatz
e5d301c66b Fix bump versions script (#4740)
* Include sync-server in auto-bumped versions

* Fix version bump logic to work if the month has rolled over

* Add release notes
2025-04-08 18:34:31 -04:00
Matiss Janis Aboltins
fe3fe47b67 🐛 (bank-sync) improved error handling for initial gocardless account linking (#4756) 2025-04-08 18:50:02 +01:00
Joel Jeremy Marquez
b4ad639bb5 [Mobile] Fix income categories not changing colors based on active month (#4774)
* [Mobile] Fix income categories not changing colors based on active month

* Release notes
2025-04-08 09:30:40 -07:00
Joel Jeremy Marquez
c77168fa18 Extract encryption related server handlers from main.ts to server/encryption/app.ts (#4662)
* Extract encryption related server handlers from main.ts to server/encryption/app.ts

* Release notes
2025-04-08 09:12:11 -07:00
Joel Jeremy Marquez
6fb7fe1343 Replace category DB queries in server handlers with AQL queries + implement category_groups AQL executor (#4544)
* Implement category_groups AQL executor

* Fix category_groups table name

* Release notes

* Update category-update
2025-04-08 09:11:47 -07:00
Joel Jeremy Marquez
490ec22b8a Extract budget file related server handlers from main.ts to server/budgetfiles/app.ts (#4547)
* Extract budget file related server handlers from main.ts to server/budgetfiles/app.ts

* Fix lint error

* Release notes

* Fix typo

* Move backups to budgetfiles folder

* Move backup snapshot

* Fix lint

* Fix lint
2025-04-08 08:21:35 -07:00
ADRROE
0d420ab4d9 Add functionality to download custom reports as an image. (#4219)
* Add functionality to download custom reports as an image.

* Add functionality to download custom reports as an image.

* Switched from html2canvas to html-to-image due to size considerations.

* Snapshot filename

* Add functionality to download custom reports as an image.

* Add functionality to download custom reports as an image.

* Update ReportTopbar.tsx

Fixed mistake

* Use existing date function

* fix imports

* Update VRT

* move component out of common in aid of components lib migration

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-04-08 11:20:22 -04:00
youngcw
6b22e7422b [Goals]: fix remove goals bug (#4749)
* fix remove goals bug

* note

* Update upcoming-release-notes/4749.md

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-08 08:16:28 -07:00
lelemm
35a833ecba New OpenID first login UX (#4446)
* Fix for openid review parameters

* Refactor and bug fix of OpenId parameters on first login

* md

* change some design

* adjustments

* responsive login

* linter

* removed debugger

* Merge fixes

* removed debugger

* Merge fixes

* missing stuff

* linter

* linter after merge
2025-04-08 12:01:38 -03:00
Michael Clark
140039ea1f :electron: Fix loot-core resolution (#4767)
* fix loot-core resolution

* fix loot core resolution in dev mode for electron
2025-04-08 15:54:43 +01:00
lelemm
afab6ee773 OPENID: Added option to create users on login (#4421)
* Added option to create users on login (openid)

* md

* added default value

* linter

* added validation to ACTUAL_USER_CREATION_MODE

* Merge

* linter

* fixes

* removed enchancement

* linter
2025-04-08 11:18:47 -03:00
lelemm
cefc8da7bc 📚 Missing translations [rules and to budget] (#4770)
* Missing translations

* md

* wrong md name
2025-04-08 11:04:04 -03:00
Alec Bakholdin
91aa2ae47b 🐛 [Bug] Pinning sidebar doesn't persist on reload (#4733)
* Fixed pinning issue

* asyncStorage typing updates

* re-added awaits to savePreferences

* release notes

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-04-08 10:01:55 -04:00
Michael Süssemilch
a2878ff2a2 feat: add previous/next month navigation to the MonthPicker (#4692)
* feat: add previous/next month navigation to MonthPicker

* doc: add release note

* chore: update formatting

* test: update vrt snapshots
2025-04-08 09:59:17 -04:00
Alec Bakholdin
0dfa2910c7 🐛 [Bug]: Focused console warning (#4735)
* removed focused from getInputProps

* release notes

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-04-08 09:58:07 -04:00
Alec Bakholdin
4e0ab44e2f Fixed bug where closing account did not properly validate transfer or category (#4769)
Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-04-08 09:52:54 -04:00
Michael Clark
aba97e8b74 :electron: Remove ngrok from electron server embed (#4768)
* remove ngrok

* lock

* release notes
2025-04-07 22:19:10 +01:00
Stefan Gloutnikov
3705e27330 Added instructions for disabling automatic rule creation (#677)
Added instructions to the rules documentation for disabling future
automatic rule creation.
2025-04-06 19:19:19 -04:00
youngcw
8c4af1f5ef fix download links (#676) 2025-04-06 11:13:15 -07:00
Michael Clark
1d6b70d160 :electron: Playwright test fixture (#4752)
* playwright test fixture

* release notes

* update snapshots

* test

* again

* same timeout as web client

* faster

* srsly

* Update VRT

* update test

* get rid of this test for now

* updating update-vrt

* speed it up a bit

* same timeout as desktop-client

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-04-06 18:56:08 +01:00
bddvlpr
a9047bfcd6 Add KBCBE (KBC_KREDBEBB) to banks with limited history (#4743) 2025-04-06 18:54:25 +01:00
Matiss Janis Aboltins
af03477d3a ♻️ (typescript) converted indexeddb to strict TS (#4672) 2025-04-06 15:09:37 +01:00
Matiss Janis Aboltins
c4b4108eca 🔧 improving typechecker and lint local performance (#4710) 2025-04-06 14:47:49 +01:00
Michael Clark
26ee3179e1 :electron: Playwright testing for electron (#4674)
* playwright testing for electron

* pipeline updates

* fix normal e2e scripts

* fix path to artifact

* listing out whats there

* attempt to fix ci

* umm

* again

* setting a viewport

* window size to be consistent across machine for tests

* now it work... Righhttt?

* hmm

* do it

* worflow

* will this work

* oops

* dont skip

* trust in the pipeline gods

* remove update snapshots, just do it in the pipeline

* change name of snapshot to account for os

* lint

* fix package script
2025-04-05 09:19:06 +01:00
Matt Fiddaman
ece822e1c5 call out electron sync server embedding in 25.4.0 release (#674) 2025-04-05 00:40:57 -04:00
Matt Fiddaman
1062a51226 🔖 (25.4.0) (#673)
- web https://github.com/actualbudget/actual/pull/4728
- docs https://github.com/actualbudget/docs/pull/673
2025-04-04 23:50:56 -04:00
github-actions[bot]
82b6589c37 🔖 (25.4.0) (#4728)
* 🔖 (25.4.0)

* Remove used release notes

* Remove used release notes

---------

Co-authored-by: matt-fidd <81489167+matt-fidd@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-04-04 23:49:46 -04:00
Matt Fiddaman
56f509dcda fix balance menu alignment (#4729)
* fix alignment

* note

* fix mobile

* Fix for width

---------

Co-authored-by: Leandro Menezes <lelemm@gmail.com>
2025-04-03 23:47:10 -04:00
dependabot[bot]
bbfa0093cd bump tar-fs from 2.1.1 to 2.1.2 (#4717) 2025-03-31 16:44:40 -04:00
lelemm
173090c2fd Added pluggy warning trial (#671) 2025-03-31 14:41:12 -03:00
Matiss Janis Aboltins
aef38f1679 🐛 fix menu not closing when menu item is clicked (#4716) 2025-03-31 18:15:17 +01:00
Michael Clark
a604e19ac4 Updating repo move instructions to include bash requirement (#669)
It should help people moving to the new repo on Windows:

Based on this:

https://discord.com/channels/937901803608096828/1355224207541276826/1355229374986719242
2025-03-31 13:59:11 +01:00
lelemm
e04ca554e2 🐛 Fix pluggy.ai foreigner currency transaction (#4712)
* Fix pluggy.ai foreigner currency transaction

* Trigger actions

* removed folder
2025-03-31 06:36:36 -03:00
lelemm
51f93861e4 Added callback url to openid page (#670) 2025-03-28 17:14:25 -03:00
lelemm
77949ad276 🐛 Fix Make Transfer closing the Popover when clicked (#4697)
* Fix `Make Transfer` closing the Popover

* MD

* MD

* linter

* trigger actions

* removed junk from PR

* changed solution

* using focused state
2025-03-28 10:40:56 -03:00
Saahil Jaffer
45f9cc3c1d Fix for iss parameter missing from openid response (#4626)
* fix: iss missing from the response

* add release notes

* add parameter validation check

* remove additional validation

---------

Co-authored-by: lelemm <lelemm@gmail.com>
2025-03-26 16:50:13 -03:00
lelemm
6e4a06528b Pluggy docs (#667)
Adding a draft for pluggy.ai docs
2025-03-26 12:27:59 -03:00
Mario Lamacchia
31ed12832c Fix error spread in non-batch bank sync (#4689) 2025-03-26 09:12:54 -04:00
Margarida Reis
0f8a1aeb2b fix: apply filters in Reports dashboard for cash flow widget (#4683)
fix issue where filters set in the widget editor for the cash flow widget were not applied in the Reports dashboard
2025-03-26 00:16:23 -04:00
Alec Bakholdin
a30b406781 Update documentation to include new yarn generate:release-notes script (#665)
Referenced script is introduced here
https://github.com/actualbudget/actual/pull/4664
2025-03-26 00:05:12 -04:00
lelemm
161c0625b1 🐛 Fix for objects in config files (#4688)
* fix for objects in config

* md

* linter
2025-03-25 20:54:04 +00:00
Joel Jeremy Marquez
009a3dff4e Show hidden overspent categories (#4680) 2025-03-24 16:25:17 -07:00
Alec Bakholdin
5d01e109e6 🐛 [Bug] Cant edit template rules (#4686)
* Can now save template rules

* added release notes

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-03-24 17:54:39 -04:00
Michael Clark
b2287cded3 Local docker build fix (#4677)
* local docker build fix

* Create 4677

* Update sync-server.Dockerfile

* Rename 4677 to 4677.md
2025-03-22 16:25:50 +00:00
Alec Bakholdin
19dbfd0673 fixed can't rename notes (#4675) 2025-03-22 08:20:04 -07:00
Joel Jeremy Marquez
36c40d90d2 [Mobile] Add banners to alert users of recommended budget actions (#4643)
* Add banners to alert users of recommended budget actions

* Update wording for consistency

* Release notes

* Fix release notes

* Code review feedback

* Cleanup

* Extend playwright timeout

* Update Categorize button locator in test

* Update VRT

* Dummy commit

* Streamline cover spending flow

* VRT

* Remove category from modal when covered and close modal when all categories are covered

* Coderabbit suggestions

* Update translations

* VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-21 17:19:09 -07:00
Alec Bakholdin
00ff2e2522 🐛 [Bug] fixed bug in Accounts.tsx for applying rules that split transactions (#4623)
* fixed bug in Accounts.tsx for applying rules that split transactions

* added release notes

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

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

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-21 16:12:29 -04:00
dependabot[bot]
1d074730f4 Bump axios from 1.7.9 to 1.8.3 (#4654)
* Bump axios from 1.7.9 to 1.8.3

Bumps [axios](https://github.com/axios/axios) from 1.7.9 to 1.8.3.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.9...v1.8.3)

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

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

* note

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-03-21 13:11:29 -04:00
Joel Jeremy Marquez
1e685b993b Extract sync related server handlers from main.ts to server/sync/app.ts (#4661)
* Extract sync related server handlers from main.ts to server/sync/app.ts

* Release notes

* Revert async
2025-03-21 08:04:07 -07:00
Alec Bakholdin
6b2d2420a5 🐛 Fixed GoCardless SelectLinkedAccounts institution bug (#4667)
* Fixed GoCardless SelectLinkedAccounts institution bug

* Modified to guarantee string return type

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

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

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

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

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

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

* Formatting

* Fixed spread syntax

* consistency in method (probably redundant)

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-21 07:56:25 -07:00
Joel Jeremy Marquez
af09e5b1d5 Fix error on budget file selection page when using server (#4670)
* Fix error on budget file selection page when using server

* Release notes
2025-03-21 06:29:07 -07:00
Michael Clark
8f12893ff0 :electron: Fix electron loot core resolutions (#4668)
* fix electron resolutions

* temp fix

* dont include build-electron in the web bundle assuming its built

* lowering size of build

* removing exports

* release notes

* adding bits back

* remove bad config
2025-03-21 09:01:20 +00:00
Joel Jeremy Marquez
a85dc890e5 Fix nested button error in budget file selection page (#4625)
* Resolve nested button error by converting to GridList

* Release notes
2025-03-20 13:12:43 -07:00
Joel Jeremy Marquez
8180476531 Fix embedded autocomplete unexpectedly closing when an item is clicked (#4645)
* Fix autocomplete unexpectedly closing when an item is clicked on embedded setting

* Release notes
2025-03-20 13:11:13 -07:00
Matt Fiddaman
ad1df689d7 bump various dependencies (#4656) 2025-03-20 13:27:17 -04:00
Alec Bakholdin
d9716caf5d 🔧 Added release-notes-generator.ts under generate:release-notes (#4664) 2025-03-20 10:19:04 -04:00
Michael Clark
b2cca2337c 🐛 Allowing service worker to cache files up to 5mb - fixes edge & offline mode (#4665)
* allowing sw to cache files up to 5mb

* release notes
2025-03-19 23:14:58 +00:00
Michael Clark
88a9ba6cba Adding git bash as a prereq for Windows & renaming local install to Build from source (#664)
- Added desktop app to installation options "on your own machine" 
- For building from source
- Windows Users will need Git Bash so that they can build the web client
using the bash scripts.
  - Added a warning on the build from source page
- Reordered the _Build from source_ link to the bottom to encourage the
simpler options insted


![image](https://github.com/user-attachments/assets/d1dd032f-0482-444d-9e2d-2d0fe5cab980)


![image](https://github.com/user-attachments/assets/694f9303-d35e-44ba-b00e-2c6c3187bb88)
2025-03-19 21:08:25 +00:00
Joel Jeremy Marquez
e0bddaeb99 Extract spreadsheet related server handlers from main.ts to server/spreadsheet/app.ts (#4649)
* Extract spreadsheet related server handlers from main.ts to server/spreadsheet/app.ts

* Release notes

* Fix get-cell

* Update type of initServer
2025-03-19 11:14:46 -07:00
Alec Bakholdin
2c4c5014ea 🐛 fixed current month upcoming calculation (#4629)
* fixed current month upcoming calculation

* added release notes

* updated test to validate the new behavior of getUpcoming

* modified one month and added more tests for leap years and months with different dates

* Fixed odd error

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-03-19 08:20:42 -07:00
Matiss Janis Aboltins
c7f3dadc07 🐛 (mobile) fix for iOS - keyboard focus when editing budget (#4651) 2025-03-19 04:50:04 +00:00
Matiss Janis Aboltins
999010cca6 🐛 (reports) fix conditionsOp not applying for saved reports (#4652) 2025-03-19 04:49:29 +00:00
Martin Sebek
b9603d0e54 Added CZ AirBank to banks with only 90 days of history (#4595)
* Added CZ AirBank to banks with only 90 days of history

* Added release notes
2025-03-19 00:01:52 -04:00
Alec Bakholdin
0c85523037 Add org name to bank sync UI (#4646)
* Added institution name to the LinkModal

* Added release notes

* removed a stray import I did not mean to leave in

* updated release note number

* Separated institution into its own column and updated sorting to sort by institution -> name

* Added tooltips to allow users to hover over institution name and account name when linking bank accounts

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-03-18 19:55:53 -07:00
Alec Bakholdin
eb5944b353 Bank sync avoid reimporting deleted transactions (#4644)
* matchTransactions imported_id query checks for deleted transactions

* added release notes

* removed stray import

* Added configuration option to control reimporting deleted transactions

* Updated release notes

* Unused import

* Typo

* Linting errors

* Fixed Checkbox id to match what it's for

* Added tooltip for the checkbox

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-03-18 16:21:59 -07:00
Matiss Janis Aboltins
f35a850e3d ♻️ moved loot-core import resolution from TS to yarn workspaces (#4592) 2025-03-18 17:38:57 +00:00
Matt Fiddaman
3ca9f6ecbc Update README.md (#4648) 2025-03-18 14:44:32 +00:00
Joel Jeremy Marquez
602b84342b Update server handlers to use the implementation function type instead of duplicating the function arguments/return types (#4650)
* Update server handlers types to be more strict

* Release notes
2025-03-18 06:43:15 -07:00
Joel Jeremy Marquez
b5cbaa52b2 Simplify Modals component by destructuring modal.options instead of passing options one by one (#4647)
* Simplify Modals component

* Release notes
2025-03-18 06:43:01 -07:00
Matiss Janis Aboltins
5fdaa98249 ♻️ removal of '.testing.ts' file extensions in favour of mocks (#4632) 2025-03-18 06:13:11 +00:00
Joel Jeremy Marquez
c8813e9953 Extract budget category related server handlers from main.ts to server/budget/app.ts (#4442)
* Extract category related server handlers from main.ts to server/budget/app.ts

* Release notes

* On DB layer, replace Entity model usage with DB models

* Fix typecheck errors

* Fix type error

* Fix types

* Fix typecheck error

* Fix lint errors

* Fix test errors

* Fix model mapping
2025-03-17 21:39:10 -07:00
Matiss Janis Aboltins
074d5b76cf ⬆️ upgrade yarn from v4.3.1 to v4.7.0 (#4641) 2025-03-17 17:21:28 +00:00
Matiss Janis Aboltins
9f9f349cbf ♻️ (api) do not bundle test files in package output (#4640) 2025-03-17 17:21:09 +00:00
lelemm
78e763659e 📚 More translations for rules and fields (#4635)
* More translations

* md

* more places
2025-03-17 10:43:45 -03:00
Joel Jeremy Marquez
0cc817f2ef [Redux Toolkit Migration] usersSlice [Final PR] (#4128)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Budgets slice

* Fix lint errors

* Undo auto removal of import/no-unresolved

* Update index.ts

* Release notes

* usersSlice

* Delete actions folder

* Remove action imports

* Fix lint

* Delete constants

* Fix lint error

* Update thunk name

* Replace CLOSE_BUDGET with resetApp
2025-03-16 21:51:58 -07:00
Alec Bakholdin
f00484b17c 🐛 added null/undefined check for scheduleIsRecurring (#4627) 2025-03-15 20:23:31 +00:00
lelemm
0cdaac6944 🐛 Pluggy.ai credit card transactions were inverted (#4628)
* bugfix

* md
2025-03-15 00:08:40 -03:00
Matiss Janis Aboltins
864aaacd11 ♻️ (loot-core) unify some electron/web/api logic (#4610)
* ♻️ (loot-core) unify some electron/web/api logic

* Add missing mock
2025-03-14 22:46:11 +00:00
Michael Clark
bdf76f6c63 :electron: Embed the sync-server (experimental) (#4526)
* sync server embedded

* cleanup

* remove comment

* remove comment

* changing settings names

* release notes

* release notes

* making dev easier (and slower)

* updating reference to webroot

* using the workspace package yo

* coderabbit
2025-03-14 22:22:17 +00:00
Joel Jeremy Marquez
47c0d394ee [Redux Toolkit Migration] prefsSlice (#4127)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Budgets slice

* Fix lint errors

* Undo auto removal of import/no-unresolved

* Update index.ts

* Prefs slice

* Remove old prefs types

* Fix import

* Fix typecheck errors

* Release notes

* Add checks on prefs saving

* Update prefs checking

* Fix set-theme
2025-03-14 06:35:43 -07:00
lelemm
fdac2839c9 🔨 OPENID: Refactor mixed stuff (#4428)
* Refactor

* changed the variable name back to loginMethod

* md

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

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-14 08:38:33 -03:00
Michael Clark
d5b6e40c81 Update docs with new instructions for workspace reference in server (#661)
Should be merged with: https://github.com/actualbudget/actual/pull/4569

**Changed pages:** 
- https://deploy-preview-661.www.actualbudget.org/docs/install/local
-
https://deploy-preview-661.www.actualbudget.org/docs/contributing/project-details/
-
https://deploy-preview-661.www.actualbudget.org/docs/contributing/releasing/
-
https://deploy-preview-661.www.actualbudget.org/docs/contributing/windows/
-
https://deploy-preview-661.www.actualbudget.org/docs/actual-server-repo-move/
2025-03-14 09:08:50 +00:00
Michael Clark
379a84d2e2 🐳 @actual-app/web workspace in sync-server (#4569)
* Workspace ref web client (#9)
---------

Co-authored-by: lelemm <lelemm@gmail.com>
2025-03-14 09:07:59 +00:00
Joel Jeremy Marquez
d16d022b50 Remove height transition animation from modals when adjusting to viewport height for smoother experience (#4620)
* Use dvh to determine height of modal based on dynamic visual viewport

* Apply to dialog instead of another div

* Remove modal transition

* Release notes
2025-03-13 10:49:58 -07:00
Joel Jeremy Marquez
606e39252f [Mobile] Click on income category balance to show transactions (#4621)
* [Mobile] Click on income category balance to show transactions

* Release notes
2025-03-13 10:49:14 -07:00
Margarida Reis
2523c091c3 improvement: enable collapse split transactions with searches or filters (#4600)
* improvement: enable collapse split transactions with searches or filters

enable the "Collapse|Expand split transactions" button with searches or filters

* Update VRT

* chore: trigger GitHub actions

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-13 10:36:01 -07:00
tempiz
d4b37baa4d Modified transaction edit button on mobile to display "Add New Split" (#4536)
* Created Add Split Button

* Create 4536.md

* Fix Lint Check Error

* Fix Release Note Category

* Added add split text to amount left/save button

Removed my add split button and instead added functionality for the button save/amount left button to display "Add New Split" when all amounts are entered.

* Fix Lint

* Update release notes

* Show remaining on add split button

* Fix lint

* Added requested changes

* Fix lint
2025-03-12 17:05:20 -07:00
Matiss Janis Aboltins
ed4ef5b30e ♻️ solve most peer dependency issues reported on install (#4613)
* ♻️ solve most peer dependency issues reported on install

* Release notes

* Patch unit tests
2025-03-12 17:13:35 +00:00
Matiss Janis Aboltins
baadafb15e ♻️ (loot-core) updated all data model imports to use barrel file (#4609) 2025-03-12 17:05:46 +00:00
James Skinner
346727a539 Mobile budget file switching logical error fix (#4596)
* Fix logical error to filter out just the current file from list of files, rather than excluding remote files.

* Add release note and update comment
2025-03-12 07:45:30 -07:00
Matiss Janis Aboltins
ddcd771488 ♻️ (sync-server) align dependency versions; cleanup lint & typecheck (#4605) 2025-03-12 14:03:23 +00:00
Joel Jeremy Marquez
3ecfb4be7e Swipe to dismiss notifications (#4606)
* Swipe to dismiss notifications

* Release notes

* Update VRT

* Dummy commit

* Make notification swipe a bit snappier

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-11 14:35:01 -07:00
Margarida Reis
bf154db3d6 fix: align action buttons in modal for confirming transaction edit (#4604)
align the "Cancel" and "Confirm" buttons in the modal for confirming a transaction edit to the right-hand side for consistency
2025-03-11 14:15:49 -07:00
Joel Jeremy Marquez
4b48f09112 [TypeScript] Make db.all generic to make it easy to type DB query results (#4542)
* [TypeScript] Make db.all generic to make it easy to type DB query results

* Release notes

* Fix type

* Update return type
2025-03-10 12:14:13 -07:00
Matiss Janis Aboltins
6c7df7c1f9 ♻️ (components) updated old import paths to use the new paths (#4591) 2025-03-10 18:11:30 +00:00
Matiss Janis Aboltins
0b9b440a7a ♻️ (components) remove InputWithContent component (#4566) 2025-03-10 17:21:00 +00:00
Matiss Janis Aboltins
ebb83aca51 ♻️ (components) refactor useResponsive and move to comp. lib (#4568) 2025-03-10 15:32:17 +00:00
Joel Jeremy Marquez
e5c2ef47ac [Mobile] Drag and drop income categories to re-order (#4482)
* [Mobile] Drag and drop income categories to re-order

* Fix category group ID

* Update borders

* Use list item value prop

* Cleanup

* useCallback

* Remvoe usage of useListData

* Fix typecheck error

* Release notes

* Fix import

* Update DropIndicator

* Update DropIndicator

* Fix drop indicator
2025-03-10 08:14:33 -07:00
Matiss Janis Aboltins
af068d1f89 🐛 fix rules page table incorrect row heights (#4586) 2025-03-10 12:11:09 +00:00
James Skinner
35fe969b1b Typo fix in OutOfSyncMigrationsModal (#4585)
* Fix typo in OutOfSyncMigrationsModal.tsx

* Add release note

* Rename release note file to be id of PR rather than issue
2025-03-09 22:50:37 +00:00
Matiss Janis Aboltins
cc44fad62e ♻️ (components) rename SimpleTable to InfiniteScrollWrapper and cleanup (#4578) 2025-03-08 23:22:39 +00:00
lelemm
42294d4a53 🐛 Fix for var ACTUAL_OPENID_ENFORCE (#4533)
* Fix for var `ACTUAL_OPENID_ENFORCE`

* md
2025-03-08 13:34:56 -03:00
Joel Jeremy Marquez
d8fcd43324 Upgrade React Aria packages and address deprecated Section component warnings (#4572)
* Update react-aria packages and replace deprecated RAC Section component

* Release notes
2025-03-08 02:18:37 -08:00
Joel Jeremy Marquez
ccb07e12db Delete no longer used deprecated Button component (#4564)
* Delete no longer used deprecated Button component

* Release notes

* Release notes

* Delete upcoming-release-notes/4127.md
2025-03-07 10:15:05 -08:00
Matiss Janis Aboltins
f2267587c8 ♻️ (components) moving Input component to comp. library (#4563) 2025-03-07 16:56:17 +00:00
Joel Jeremy Marquez
4bc34776fb Replace usage of deprecated Button in Autocomplete with new Button component (#4561)
* Replace usage of deprecated Button in Autocomplete with new Button component

* Release notes

* Remove console.log
2025-03-07 08:47:46 -08:00
Joel Jeremy Marquez
63657a8496 Replace usage of deprecated Button component in MobileForms with new Button component (#4559)
* Update mobile forms TapField to use the new Button component

* Release notes

* Fix typecheck error

* Cleanup

* Update VRT

* Dummy commit

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-07 08:44:11 -08:00
Joel Jeremy Marquez
b3e82c55f6 [Mobile] Drag and drop on accounts to re-order (#4476)
* Drag and drop on mobile accounts page

* Fix width

* Move account in DB

* Update onReorder

* Use ID as key

* Fix typecheck error

* Rename prop

* Alert for debugging

* Fix retrieval of keys

* Update after logic

* Fix retrieval of nextToTargetAccount

* More debug

* Remove alert

* Cleanup

* Fix typecheck error

* Drop indicator

* Use DropIndicator component

* Update drop indicator style

* Release notes

* Remove useListData

* Upgrade react aria components in case bug fixes were introduced

* Dummy commit

* Updat e react aria packages

* Revert react aria versions

* Update AccountListItem

* Dummy commit

* Pass ListBoxItem render props to child Button

* Update release notes
2025-03-07 07:59:07 -08:00
Matiss Janis Aboltins
9a45d6707d ♻️ (components) moving select component to component library (#4556) 2025-03-07 14:48:30 +00:00
Matiss Janis Aboltins
46138997d1 ♻️ removing 'focused' prop from generic Input component (#4557) 2025-03-07 09:14:18 +00:00
Joel Jeremy Marquez
c19d5a5722 Replace usage of deprecated Button in TransactionEdit with new Button component (#4560)
* Replace usage of deprecated Button in TransactionEdit with new Button component

* Release notes
2025-03-06 19:59:45 -08:00
Joel Jeremy Marquez
c2cb61eb70 [Redux Toolkit Migration] notificationsSlice (#4126)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Budgets slice

* Fix lint errors

* Undo auto removal of import/no-unresolved

* Update index.ts

* Release notes

* Notifications slice

* Update payloads

* Fix addNotification import

* Fix addNotification import

* Fix typecheck error

* Fix build error

* Fix lint and typecheck error

* Coderabbit feedback

* Fix lint error
2025-03-06 19:59:19 -08:00
tempiz
ca5cd55585 Display Goal/Target Information on Mobile (#4546)
* Display Goal/Target Information on Mobile

* Create 4546.md

* Fix lint issues

* change hr and div to View and modified styling

* Fix lint errors again

---------

Co-authored-by: lelemm <lelemm@gmail.com>
2025-03-06 22:53:20 -03:00
Matiss Janis Aboltins
6fd5164987 ♻️ removing usages of MenuButton (#4555) 2025-03-06 18:48:23 +00:00
lelemm
60a864a790 📚 Translate calendar related strings (#4211)
* Translate dates POC

* more dynamic loading of locales

* added locale

* linter

* linter and typecheck

* added md

* translated DateSelect component

* more translations and fixes

* removed redux state for locale

* linter

* typecheck fix

* fix test for schedules.ts

* linter

* fixed System Default language

* loading all locales at once

* added some fallback cases

* bugfix, linter and typecheck

* schedule description rework to have better translation labels

* fixes

* test fix

* Trigger actions

* merge of #4459

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-03-06 15:17:38 -03:00
Matiss Janis Aboltins
c510f722ef ♻️ (components) moving icons to the component lib (#4554) 2025-03-06 18:16:59 +00:00
Quiwy
feb68dc7f8 Add missing doc about env vars. (#660)
Closes #658
2025-03-06 08:01:30 -07:00
lelemm
1fed3ebbd7 Memoize external accounts for bank sync (#4540)
* Memoize external accounts

* md
2025-03-05 12:23:08 -03:00
lelemm
ad53fcb3c6 Added environment variables to OpenID page (#650)
Added environment variables to OpenID page

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-03-04 21:47:34 -03:00
daniefdz
1bd2964e15 add gcp cloud run install option (#648)
I created a repository with steps to deploy Actual Budget as a Cloud Run
service. I believe this is a better way to deploy in GCP and it's less
complicated.
2025-03-04 23:38:15 +00:00
Joel Jeremy Marquez
84e4cda6ad [TypeScript] Make db.firstSync generic to make it easy to type DB query results (#4249)
* [TypeScript] Make db.first generic

* Release notes

* Fix typecheck error

* Cleanup type

* Update db.first calls

* Fix strict type

* [TypeScript] Make db.firstSync generic

* Release notes

* Coderabbit review
2025-03-04 15:00:44 -08:00
Joel Jeremy Marquez
4fb5bbca34 Extract payees related server handlers from main.ts to server/payees/app.ts (#4443)
* Extract payees related server handlers from main.ts to server/payees/app.ts

* Release notes

* Payee model mapping methods

* Re-arrange methods

* Update types

* Remove undoable because there is withUndo already

* Support meta in undoable

* Fix types

* Fix typo on test
2025-03-04 15:00:27 -08:00
lelemm
e0805c125f 🐛 Fix for ACTUAL_PORT and PORT vars (#4537)
* Fix for ACTUAL_PORT and PORT vars

* md
2025-03-04 20:26:45 +00:00
Matt Fiddaman
a2fc6bdd31 Add "payee is nothing" condition to rule if there is no payee set in a schedule (#4267)
* if no payee set in schedule, add payee = nothing to rule

* note
2025-03-04 19:13:00 +00:00
Joel Jeremy Marquez
866f4891ce [TypeScript] More specific types on budget table components (#4524)
* [TypeScript] More specific types on budget table components

* Release notes

* Wrong PR number
2025-03-04 11:00:34 -08:00
Joel Jeremy Marquez
0f7a1e6b97 [Redux Toolkit Migration] modalsSlice (#4119)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Budgets slice

* Fix lint errors

* Undo auto removal of import/no-unresolved

* Update index.ts

* Modal slice

* Use loot-core Modal type in all modals

* Fix typecheck error

* Fix errors

* Remove ModalsState

* Fix typecheck error

* Update payload

* Fix typecheck error

* Update new modals

* Fix typecheck errors

* Fix lint error

* Fix typecheck error

* Fix typecheck error

* Update packages/desktop-client/src/components/modals/PluggyAiInitialiseModal.tsx

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-04 10:38:33 -08:00
Matt Fiddaman
0b15ba18a0 disable mangling when building (#4532)
* disable mangling

* note
2025-03-04 18:09:08 +00:00
lelemm
cfc8186da1 🐛 Fix config for default data dir (#4535)
* Fix config for default data dir

* md

* Fix for testing

* linter
2025-03-04 18:06:13 +00:00
lelemm
47ad1492dc 🐛 Fix production builds missing convict and pluggy-sdk (#4534)
* Fix production builds

* md
2025-03-04 14:33:44 -03:00
lelemm
90af0466f4 🐛 Fixes for OpenID with the new config (#4530)
* Fixes for openid with the new config

* md
2025-03-04 13:57:18 -03:00
Luke
98e4ece50a Allow marking transactions as Transfers on mobile devices (#4511)
* Extract existing "Make Transfer" functionality

* Add "Make Transfer" functionality to mobile menu

* Don't just blindly allow setting as transfer

* Update disabled colour and missing translations

* Fix import warnings

* Add release note

* Use correct translation function

* Determine whether to show the "Make Transfer" option or not based on the presence of an account

* Build list of menu options nicer

* Fix types

* Fix translations

* Use Trans component instead of t function

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-03-04 13:37:58 +00:00
Szymon Romanko
9e82032595 Fixed transaction dates in bank sync with MBANK_RETAIL_BREXPLPW (#4493)
* fixed transaction date for MBANK_RETAIL_BREXPLPW

* cleared up imports after previous commit (9251d3e1)

* added release notes

* linted code

* Update packages/sync-server/src/app-gocardless/banks/mbank_retail_brexplpw.js

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

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-03-04 12:34:01 +00:00
lelemm
abb6e86f35 🐛 Fix on typed select (#4529)
* Fix on typed select

* md

* merge fix

* linter
2025-03-04 09:06:37 -03:00
Matt Fiddaman
c8d14cae09 improve summary report monthly average calculation (#4302) 2025-03-04 11:33:29 +00:00
lelemm
d815a22f6b Refactoring load-config.js (#4440) 2025-03-04 08:15:46 -03:00
lelemm
d5e2030d23 Pluggy.ai bank sync (#4049)
* added Pluggy.ai bank sync

* added md

* code review nits

* small fixes

* fix syncs

* refactory after redux changes

* changed trunc to round

* removed debugger

* linter

* linter again

* sync-server changes

* types

* code review

* typecheck

* fixes

* removed old sync server file

* code review

* added more fields to mapping

* linter

* code review

* Update packages/sync-server/src/app-pluggyai/app-pluggyai.js

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

* code review

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-03-04 08:07:58 -03:00
Matiss Janis Aboltins
f9b8dde199 🐛 make custom report side nav bar responsive (#4522) 2025-03-04 04:14:45 +00:00
Matt Fiddaman
c17cd28525 Show the last bank sync in plain language instead of timestamp (#4523)
* use relative time strings for last bank sync

* note
2025-03-03 21:58:53 +00:00
Margarida Reis
5ebbff4f87 feat: add "last reconciled" timestamp to accounts (#4459)
* feat: add "last reconciled" timestamp to accounts

add a `last_reconciled` column to the `accounts` table, which stores a UNIX timestamp indicating when each account was last reconciled
upon initial release, all accounts will display "Not yet reconciled"; however, after completing reconciliation and pressing the "Done reconciling" button, the timestamp will be updated accordingly

* test: generate mock accounts with `last_reconciled` as `null`

generate mock accounts with the `last_reconciled` value set to `null`, to match the expected behaviour that new accounts will start with a "Not yet reconciled" status

* improvement: display "last reconciled" timestamp in tooltip

relocate the "last reconciled" timestamp from the account balances header to a tooltip displayed when hovering over the "Reconcile" button
2025-03-03 12:27:57 -07:00
Matt Fiddaman
ca2a930bd5 bump versions to v25.3.1 (#4521)
* bump versions

* remove release notes from patch release
2025-03-03 19:13:29 +00:00
Margarida Reis
7346198360 fix: filtering of transfer transactions (#4519)
fix issue where transactions for transfers between accounts (i.e., transactions where the payee is another account) were not properly filtered during searches
2025-03-03 18:49:50 +00:00
Michael Clark
17c4d168fa 🐛 Fix error modal not showing when in non-secure context (#4499)
* init when not ssl

* bringing it all back

* huh

* race conditions....

* release notes

* remove unneeded console log
2025-03-03 18:47:27 +00:00
Michael Clark
b74175e660 :electron: Copy budget files to succeed even if cleanup fails & adding retries (#4507)
* allowing copy budget files to succeed even if cleanup fails

* release notes

* updating fs-extra

* retries in for removing dir

* better retry defaults

* defaults
2025-03-03 18:46:22 +00:00
youngcw
3628deee95 [Goals] Better processing for by templates (#4486)
* upgrade the by templates

* note

* lint
2025-03-03 09:37:20 -07:00
Matt Fiddaman
7650eed644 increase timeout for SimpleFIN batch sync and add debug logging (#4515)
* increase timeout for SimpleFIN batch sync, add logging

* note

* ensure errors bubble up to the UI
2025-03-03 15:49:10 +00:00
Mahmoud Hanafy
eeeb1d3bcd Ignore user's fly.toml (#4508)
* Ignore user's fly.toml

* Add release notes
2025-03-03 14:17:42 +00:00
Gianluca Trombetta
3863ce369d Fix typo (#4506)
* Fix typo

* Release notes
2025-03-03 10:30:58 +00:00
Julian Dominguez-Schatz
4c3368bd13 Fix blog post date (#657) 2025-03-02 21:13:39 -05:00
Julian Dominguez-Schatz
ee4d9d65af 🔖 (25.3.1) (#656)
https://github.com/actualbudget/actual/pull/4497
2025-03-02 20:17:11 -05:00
Julian Dominguez-Schatz
e10b105756 Fix number input on mobile with hidden decimals (#4503)
* Fix number input on mobile with hidden decimals

* Add release notes
2025-03-02 12:18:27 -05:00
Michael Clark
7dc34a9b99 Update missing start server command (#655)
Missed an instance of ```yarn start:server```
2025-03-02 15:35:45 +00:00
Joel Jeremy Marquez
89006275a0 [TypeScript] Make db.first generic to make it easy to type DB query results (#4248)
* [TypeScript] Make db.first generic

* Release notes

* Fix typecheck error

* Cleanup type

* Update db.first calls

* Fix strict type

* Code review

* Fix typo
2025-03-01 09:33:45 -08:00
Joel Jeremy Marquez
b4f423eac0 [Mobile] Add support for searching child transactions (#4471)
* [Mobile] Add support for searching child transactions

* Release notes
2025-02-28 23:31:54 -08:00
Joel Jeremy Marquez
d5f55cee80 Fix react-hooks/exhaustive-deps error on useSheetValue.ts (#4278)
* Fix react-hooks/exhaustive-deps error on useSheetValue.ts

* Release notes

* Add comments

* Fix typecheck error
2025-02-28 23:20:25 -08:00
Joel Jeremy Marquez
fcf110749d [Redux Toolkit Migration] budgetsSlice (#4114)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Budgets slice

* Fix lint errors

* Fix import

* Release notes

* Undo auto removal of import/no-unresolved

* Move backup actions to budgetSlice

* Fix lint error

* Fix loadBudget

* Update index.ts
2025-02-28 22:59:51 -08:00
Matt Fiddaman
6db52ca7a8 fix negative amount parsing (#4489)
* fix negative amount parsing

* note
2025-03-01 03:50:16 +00:00
Th3Heavy
e91f8e7e06 Update bank-factory.js add bank to BANKS_WITH_LIMITED_HISTORY (#4416)
* Update bank-factory.js

add bank  90 days limit history:
INDUSTRIEL_CMCIFRPAXXX
QONTO_QNTOFRP1

* Create 4416

* Rename 4416 to 4416.md
2025-03-01 02:54:54 +00:00
Matt Fiddaman
1425671d16 prevent subsequent builds from failing when fetching translations (#4485)
* bring back deleted files for subsequent builds

* note
2025-03-01 02:49:41 +00:00
Julian Dominguez-Schatz
9d646f9d12 Add docs on data to move (#653) 2025-02-28 19:39:55 -07:00
Tim
61364fb846 align month picker years to the month text (#4474)
* align month picker years to the month text

* update vrt

* add upcoming-release-notes
2025-02-28 21:23:24 -05:00
Julian Dominguez-Schatz
1a5f83d78c Update transaction repair tool to remove erroneous transaction errors (#4464)
* Update transaction fix tool to remove errors from regular transactions

* Add release notes

* Update 4464.md
2025-02-28 21:21:27 -05:00
youngcw
0bfa988f2b Note on fixing nYNAB duplicates after import (#625)
goes with actualbudget/actual#4294

Merge in at release of v25.3.0

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-02-28 19:01:19 -07:00
Michael Clark
37b570c302 Update github container reference to new repo (#652)
Updating to point to the new github container located here:
https://ghcr.io/actualbudget/actual

This is to accommodate this change:
https://github.com/actualbudget/actual/pull/4483
2025-02-28 20:57:38 -05:00
Julian Dominguez-Schatz
05e187092a 🔖 (25.3.0) (#651)
Release docs for https://github.com/actualbudget/actual/pull/4478
2025-02-28 20:52:41 -05:00
github-actions[bot]
b0deedb411 🔖 (25.3.0) (#4478)
* 🔖 (25.3.0)

* Empty commit to bump ci

* Remove used release notes

* Empty commit to bump ci

* Bump sync-server for web release

* Remove used release notes

* Empty commit to bump ci

---------

Co-authored-by: jfdoming <9922514+jfdoming@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-28 20:19:57 -05:00
Michael Clark
103d95bbc8 🐳 Docker images to be published under the actual repo (#4483)
* docker images to be published to the main repo

* release notes
2025-02-28 19:38:34 -05:00
Julian Dominguez-Schatz
d11fc59ec9 Update bump-package-versions script to handle no input version (#4477) 2025-02-27 19:15:15 -05:00
Matt Fiddaman
1c931cf01c add last bank sync tracking back in (#4472)
* add last sync tracking back in

* note

* type

* db.update
2025-02-27 19:41:24 +00:00
Matt Fiddaman
7f50c73866 fix category group deletion on mobile (#4469)
* fix deleting category groups on mobile

* note
2025-02-27 17:17:07 +00:00
youngcw
a7cde1f90d fix #4445 (#4468)
* change condition

* new message

* fix

* lint
2025-02-27 10:06:08 -07:00
Julian Dominguez-Schatz
398ada0afd Fix crash when deleting child transactions from an errored split (#4465)
* Fix crash when deleting child transactions from an errored split

* Add tests

* Add release notes

* Add graceful fallback

Fallback: don't try to show errors on a transaction if it's not actually
a split.
2025-02-27 09:16:52 -05:00
Julian Dominguez-Schatz
8b928b3b21 Fix missing space in bank sync strings (#4463)
* Fix missing space in string

* Add release notes
2025-02-26 20:17:02 -05:00
Matt Fiddaman
3897a5a51c fix row spacing on bank sync page (#4458)
* fix bank sync row heights

* note
2025-02-27 01:05:46 +00:00
Alec Bakholdin
94f94497af resets transaction search even if search text is not empty (#4461)
* resets transaction search even if search text is not empty

* added release notes

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-02-27 00:03:50 +00:00
Alec Bakholdin
a72fd74c5e Resolves #4429 crash where clicking "manage payees" with an empty payee then clicking dropdown (#4462)
* added release notes

* only set payee in state on page navigation if payee id is present

---------

Co-authored-by: Alec Bakholdin <abakho@icims.com>
2025-02-27 00:02:23 +00:00
Matt Fiddaman
531cdc264a add lelemm to maintainer list (#649) 2025-02-26 17:23:13 +00:00
Joel Jeremy Marquez
5214549ed3 [Mobile] Change budget table colors when on non-current month (#4448)
* Change budget table colors when on non-current month

* Release notes

* Update VRT

* Dummy commit

* Revert calendar icon

* Update VRT

* Update schedule icons

* Update VRT

* Dummy commit

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-25 08:41:40 -08:00
Matt Fiddaman
3c8212e130 change i18n errors to info (#4453) 2025-02-25 16:02:45 +00:00
Matt Fiddaman
eface19216 sort schedule previews by date, then amount (#4452)
* sort schedule previews by date, then amount

* note
2025-02-25 15:10:38 +00:00
lelemm
f413fa03ae 🐛 Fix the default language init for electron (#4439)
* Fix for the default language for electron

* md
2025-02-24 00:03:12 -03:00
Matt Fiddaman
81b30d74e4 prevent docker-edge workflow from running on pushes to forks (#4430) 2025-02-22 22:48:18 +00:00
lelemm
0fddcac76d 📚 Start the application with the browser default language (#4415)
* Start the application with browser default language

* md
2025-02-22 12:21:06 -03:00
Andrey Romanov
1511587e88 Mobile: adjust modals height to visual viewport (#4427)
* Mobile: adapt autocomplete modals to visual viewport

* Fix modal max-height, animate height changes

* Update VRT

* Update max-height to be 90% of visual viewport

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-22 00:18:18 +00:00
Michael Clark
ff7c358b83 :electron: Improving electron logs (#4407)
* enhancing electron logs to send messages to client window about logs send before client window startup

* release notes

* typing the logs

* ts
2025-02-21 19:58:18 +00:00
Joel Jeremy Marquez
f88b00ae77 Extract preferences related server handlers from main.ts to server/preferences/app.ts (#4420)
* Extract preferences related server handlers from main.ts to server/preferences/app.ts

* Release notes

* Fix types

* FIx typecheck errors

* Code review
2025-02-21 09:43:30 -08:00
lelemm
f5a1293e3c Enforce OPENID login (#4423)
* Enforce OPENID login

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

* Apply suggestions from code review

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

* code review

---------

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

* Release notes

* Remove useLayoutEffect

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

* Fix lint and typecheck

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

* Add accounts app to main.ts

* Release notes

* Fix types

* Fix typecheck error

* Fix types

* Fix build error

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

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

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

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

* note

---------

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

* Cleanup

* Release notes

* Update upcoming-release-notes/4409.md

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

---------

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

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

* Fix lint and typecheck

* Release notes

* Update handler names

* Move get-earliest-transaction

* Update release notes

* Fix tests

* Fix types

* Fix lint

* Update snapshot

* Remove duplicate parse-file.ts

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

* Release notes

* Fix typecheck errors

* Fix test

* Update test

* Revert (No payee) color

* Fix tests

* VRT

* Fix category transactions

* Fix lint and VRT

* Update VRT

* Translate

---------

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

* chore: linting

* docs: add release note

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

* chore: rename variable thousandsSep to thousandsSeparator

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

* chore: rename variable decimalSep to decimalSeparator

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

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

---------

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

* md

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

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

* fix code review from coderabbit

* code review

---------

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

* adding release notes

* unneeded partial

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

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

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

* Release notes

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

* Remove comment in eslint config

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

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

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

* Rename

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

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

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

* Fix types of `send` function

* Fix `send` types in a number of places

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

* show payment direction dropdown regardless of sample data

* note

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

* Release notes

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

* Add release notes

---------

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

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

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

* removed pluggy from this version

* md

* code review

* changed how open browser

* missed this

* linter

* trigger actions
2025-02-17 20:49:46 +00:00
David Kaufman
199ebb499f Add SimpleFIN where GoCardless mentioned in Accounts docs (#643)
Replace: Link to GoCardless
With: Link (to GoCardless for Eurpean Banks or SimpleFin for North
American Banks)
2025-02-17 17:17:02 +00:00
Michael Clark
bf8dd4d345 Update sync server config information (#646)
Making it clearer where the config.json file lives and adding it to the
repo move instructions.
2025-02-17 09:16:03 +00:00
Michael Clark
ba49c1651e Upating Local install docs for people on a clean clone (#645)
Issue reported here: https://github.com/actualbudget/actual/issues/4377

https://deploy-preview-645.www.actualbudget.org/docs/install/local

It turns out that yarn doesn't let you run scripts without first
installing dependencies, so users will have to type it in the install
manually.

The other alternative is to run the script with npm but that would add
confusion.

I think yarn workspace focus is the best option to pick but here was the
options:

- Instruct users to ```yarn install``` (which would install all deps) -
1.07GB
- Instruct users to ```yarn workspaces focus @actual-app/sync-server
--production``` (which is a long command) - 60.6MB
- Create a new shell script to run the command ```
./install-server.sh```

In future we might want to consider packaging the server up into an
executable. That way the user wont have to install node/deal with any of
this stuff.

Here's an example packager - i've never used it:
https://github.com/nexe/nexe
2025-02-17 09:15:36 +00:00
Adam Stück
bc09c0412c Add today button on mobile budget page (#4380)
* feat: today button on mobile budget page

Jumps to the current month

* add release note

* cleaner onCurrentMonth

* Update VRT

* use SvgCalendar from icons/v2

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

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-02-16 23:00:58 +00:00
David Kaufman
ea180dc924 Two small corrections to config docs page (#640)
- s/want to Actual to serve/want Actual to serve/
- s/allowed to authentic with/allowed to authenticate with/
2025-02-16 22:59:12 +00:00
David Kaufman
ca7164b01c Small doc correction to local.md install instructions (#639)
s/below/above/ referring to the startup output (which is now actually
"above" the paragraph)
2025-02-16 22:58:43 +00:00
David Kaufman
25ad8353d8 [WIP] Grammar correction to starting-fresh.md page (#641)
s/like bill and groceries/like bills and groceries/
2025-02-16 22:56:43 +00:00
David Kaufman
116508aa47 Correct Rule link syntax, url and drop-down menu item name on schedul… (#642)
…es.md page

Corrected:
- link [Rules][rules] to [Rules](/docs/budgeting/rules)
- s/Click Link Selection/Click Link schedule/
2025-02-16 22:56:08 +00:00
David Kaufman
4028ba448d [WIP] Small grammar correction to filters docs page (#644)
s/To clear out the any/To clear out any/
2025-02-16 22:52:32 +00:00
Michael Clark
87779d3199 Updating sync server package name to @actual-app/sync-server (#4370)
* updating sync server to have a consistent package name

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

* Delete js snapshots

* Move extended expect and test to fixtures

* Fix wrong commit

* Update VRT

* Dummy commit to run GH actions

* Convert test page models to TS

* Release notes

* Fix typecheck errors

* New page models to TS

* Fix typecheck error

* Fix page name

* Put awaits on getTableTotals

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-16 10:24:38 -08:00
Simon Mayerhofer
1c7b8e2e5f Add Priotecs MoneyControl importer reference (#624)
I created a new importer to migrate from [Priotecs
MoneyControl](https://primoco.me/) to Actual Budget and linked it in the
docs.
2025-02-16 16:53:53 +00:00
Martin Michotte
04f8140d26 Add fallback value for payeename: 'undefined' - CBC Bank (#4384)
* Add fallback value for payename: 'undefined'

* docs: add release note

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

* add saving and prefs

* add last sync functionality

* use mapping for synced transactions

* note

* jest -u

* Update VRT

* Coderabbit

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

* add new fields

* rename migration, newer in master

* lint

* coderabbit

* update snapshots

* GoCardless handlers fallback and notes

* expose new fields from SimpleFIN

* update tests

* update instructions on GoCardless handlers

* lint

* feedback

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2025-02-14 13:57:03 +00:00
Matt Farrell
1434ed8711 Documenting percentage adjustments feature for actual PR #4257 (#631)
Goes with https://github.com/actualbudget/actual/pull/4257
2025-02-13 16:53:41 -07:00
Matt Farrell
f90fc69341 Add percentage adjustments to schedule templates (#4098) (#4257)
* add percentage adjustments to schedule templates

* update release note

* remove unecessary parentheses

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

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

* PR comments addressed

* Linting fixes

* Updated error handling, added tests

* Linting fixes

---------

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

* release notes
2025-02-13 22:43:33 +00:00
Matt Fiddaman
275e6da9e8 update payees page (#634)
Closes https://github.com/actualbudget/docs/issues/505
2025-02-13 03:36:01 +00:00
Matt Fiddaman
bfc1b0ef3f update filtering page (#635)
Closes https://github.com/actualbudget/docs/issues/604

Budget used (for future reference if these need revisiting): 

[docs-filtering-budget.zip](https://github.com/user-attachments/files/18776247/docs-filtering-budget.zip)
2025-02-13 03:35:50 +00:00
Matt Fiddaman
f55a67c009 add release dates to releases page (#636)
Closes https://github.com/actualbudget/docs/issues/493
2025-02-13 03:35:37 +00:00
Matt Fiddaman
cd1b5f1052 add docs for rule action templating experimental feature (#632)
Closes https://github.com/actualbudget/docs/issues/480

Feedback issue for the reference
https://github.com/actualbudget/actual/issues/3606

This is a starting point for a more fleshed out version, adding examples
in the future would be good
2025-02-13 01:54:16 +00:00
Matt Fiddaman
55e41fbf97 update reconciliation page (#633)
Closes https://github.com/actualbudget/docs/issues/485

This is probably hard to review through GitHub as the file name ordering
has been fixed too, best look at it through the deploy too.
2025-02-13 01:09:21 +00:00
Julian Dominguez-Schatz
454f019f7a Make loot-core compatible with exactOptionalPropertyTypes (#4214)
* Make `loot-core` compatible with `exactOptionalPropertyTypes`

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

* uuidv4

* === / !==

* default exports

* re-enable linting for the server

* fix jest

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

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

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

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

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

* release notes

* also on merge to master

* rabbit suggestion

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

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

* remove temp script
2025-02-10 19:26:54 +00:00
Michael Clark
6308598f29 Documenting the server repo move (#629)
Documenting the repo move. I'll attach this doc to the Server readme so
people are more informed


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

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

* release notes

* renaming release note
2025-02-06 20:34:30 +00:00
Matt Fiddaman
ed9999be4c 🔖 (25.2.1) fix desktop apps and reports page (#628)
What commits will be included in the release?

https://github.com/actualbudget/actual/compare/v25.2.1?expand=1

---

- web: https://github.com/actualbudget/actual/pull/4319
- server: https://github.com/actualbudget/actual-server/pull/565
- docs: https://github.com/actualbudget/docs/pull/628
2025-02-06 19:05:27 +00:00
Matt Fiddaman
c4ad24edde bump versions to v25.2.1 (#4319) 2025-02-06 19:01:37 +00:00
Michael Clark
f5b9a5b23d Fix electron translations (#4317)
* fix electron translations
2025-02-06 18:16:17 +00:00
Michael Clark
8b49a25ab4 A note informing of the repo merge of actual-server into the actual repo (#560)
* Update README.md

* Create 560.md

* Update README.md

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

---------

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

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

* lint

* note

* rabbit

* handle groups

* handle hidden right

* cleanup mock file

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

* lint

* note

* rabbit

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

* Add release notes

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

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

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

* chore: add release note

* fix: update deps array

* refactor: replace intersection

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

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

* chore: added release note

* chore: updated release note

* refactor: made condition more clear

* Revert "refactor: made condition more clear"

This reverts commit ec16c99041.

* fix: added edge case
2025-02-05 22:37:47 +00:00
Julian Dominguez-Schatz
7cf8d3a96b 🔖 (25.2.0) (#626)
- web: actualbudget/actual#4296
- server: actualbudget/actual-server#561
- docs: actualbudget/docs#626
2025-02-05 16:53:06 -05:00
Julian Dominguez-Schatz
b5b3b533bf Add docs about releasing translations (#627) 2025-02-05 16:19:54 -05:00
Julian Dominguez-Schatz
ca480a8269 🔖 (25.2.0) (#561)
* 🔖 (25.2.0)

* Remove used release notes

* Pull in newly built npm package

---------

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

* Remove used release notes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-05 16:10:13 -05:00
Szymon Sakowicz
a559fda57f Add actual-budget-prometheus-exporter (#623)
Hello, 

I've created a prometheus metrics exporter and want to share it with a
community :)
2025-02-03 14:06:09 -07:00
Matt Fiddaman
0c1c8e6adb Make password login page more mobile responsive (#4266)
* make password screen more responsive

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

* chore: note

* chore: feedback

* chore: fix vrt's

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

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

* chore: use new migration

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

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

---------

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

* fix inconsistent schedule amounts

* note, cleanup

* update error

* lint;test
2025-01-30 16:03:22 -07:00
ftbboy2115
f8440b62a8 Update 2024-07-01-ynab_v_actual.md (#617)
Corrected typo - "the don't worry" -> "then don't worry"
2025-01-30 22:42:53 +00:00
ftbboy2115
11ae860f5c Update envelope-budgeting.md (#615)
Capitalized and Italicized "to budget", where appropriate to improve
context clues.
2025-01-30 22:42:36 +00:00
ftbboy2115
d4614ee1ab Update 2025-01-02-roadmap-for-2025.md (#618)
Typo - "a opinionated" -> "an opinionated"
2025-01-30 22:41:57 +00:00
Matt Fiddaman
9b59333563 keep all English translations regardless of translated % (#4232)
* keep all English translations regardless of translated %

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

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

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

* Add release notes

* minor fix to please the linter

* Add coderabbit suggestions

* add test file

* fix test

* add coderabbit fixes to test file

* fix mock console

* Correct consoleSpy to make linter happy

* Add mock cleanup
2025-01-27 21:01:22 +00:00
ftbboy2115
804a09e4ad Update https.md (#619)
Clarified sentence - "If this is desired" -> "If access from the
internet is desired"
2025-01-27 08:09:07 -07:00
Zachary Milonas
dc43a680e9 Fix link to main.ts in API docs. (#621) 2025-01-27 08:07:29 -07:00
ftbboy2115
344448560e Update reconciliation.md (#622)
Added lock emoji, clarified location of icon on webpage, and corrected
spelling.
2025-01-27 08:06:16 -07:00
Matt Fiddaman
9dcd22962c Fix persistent split error popover (#4225)
* unset transaction error in db when no longer present

* note
2025-01-27 14:51:49 +00:00
nojohnny101
06aaab0277 [WIP] Update faq.md (#614)
small fix for typo
2025-01-24 15:19:05 +00:00
Andrew Buskov
48bf49c2d5 Update envelope-budgeting.md numbering (#616)
Corrected numbering
2025-01-24 08:13:39 -07:00
Samuel Barnes
f09f4af667 Custom upcoming length (#4206)
* save button

* release notes

* custom component shows

* custom input and saving working

* updated getUpcomingDays to handle custom values

* close modal after save

* test around getUpcomingDays

* updated to use more accurate timespan calculation

* fix for scheduled events only occurring till end of period

* add a day

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

* Release notes

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

* more detail

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

* reword

* update the setting

* note

* lint

* typo

* another misspelling

* fix single notification

* note

* Update VRT

* run checks

---------

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

* more detail

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

* reword

* update the setting

* note

* lint

* typo

* another misspelling

---------

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

* note

* Update VRT

---------

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

* Display transaction notes on mobile, fixes #1764

* Display transaction notes on mobile, fixes #1764

* Display transaction notes on mobile, fixes #1764

* Moving the notes to the bottom

* Moving the notes to the bottom - right file.

* Updating the code as requested

* Adding conditional rendering as suggested by Bugs Bunny

* Adding conditional rendering as suggested by Bugs Bunny and lint

---------

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

* Release notes

* Update VRT

* Dummy commit

* Delete js snapshots

* Fix call to expect

* Move extended expect and test to fixtures

* Fix wrong commit

* Fix typecheck error

* Update VRT

* Dummy commit to run GH actions

* Delete mobile budget test JS

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-22 09:00:10 -08:00
Kennedy242
8116279300 Update docker compose command (#613)
Update to newer docker compose command.

From the docs: From July 2023 Compose V1 stopped receiving updates. It’s
also no longer available in new releases of Docker Desktop.
See the docs: https://docs.docker.com/compose/releases/migrate
2025-01-22 15:27:33 +00:00
Kate
39361e5b62 Spending Report: Fix budget category filtering (#4194)
* Spending: Fix budget comparison filters
- Previously only worked for category *is*, now should work for any category filters

* Add release notes

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

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

---------

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

* Added release note for PR

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

* Add upcoming-release-notes/542.md

* Don't set bookingDate unless booked

* Add a basic spec file

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

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

* Release notes

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

* Mobile budget menu tests

* Fix + release notes

* Apply budget template test

* Fix test

* Fix category menu modal test

* Cleanup balance menu modal test

* Cleanup budget summary tests

* Updates

* Fix flakiness

* Cleanup

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

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

* Cleanup based on coderabbit

* Fix flaky mobile test

* Assert data-navbar-state attribute

* Fix lint

* Update playwright timeout

* Remove Budget mode toggle logic

* VRT

* Update VRT

* Dummy commit

* Remove expect in mobile-navigation

* Update VRT

* Dummy commit to rerun GH actions

---------

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

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

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

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

* Add release notes

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

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

* Create Release Notes file

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

* release notes

* updated references to submit string

* fixed type in test

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

* add upcoming release note

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

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

* fix: add error handling for 'initializeUserData' method

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

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

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

* Create Release Notes file

* Lint institutionIds array

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

---------

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

* Added unit test

* Changed order of Learn Categories in settings page

* Removed console log and fixed prefs type

* Added release note

* Fixed default value for global setting

* Added tooltip and context menu option

* Removed test assertion

* Refactored default value for global setting

* Added missing boolean to saveDiff and saveDiffAndApply

* Fixed default global value

* Icon and Disable payee menu hidden when globally disabled

* Moved category learning settings to payees page

* Added automatic centering for payee SVGs

* Lint changes

* Typecheck changes

* Fixed copy paste

* Added more translation

* Changed global setting to a modal

* Fixed import order

* Renamed migration

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

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

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

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

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

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

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

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

* Changed wording

---------

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

* Add release notes

* Temp: testing VRT

* Update VRT

* Revert test change

* Update VRT

---------

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

* Release notes

* Update VRT

---------

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

* Add release notes

* PR feedback
2025-01-18 20:02:02 -05:00
youngcw
b020e84b72 [Goals]: tweaks for clarity and note on lines (#611) 2025-01-19 00:00:55 +01:00
Matt Fiddaman
eb31071043 fix paid schedules showing as upcoming in the account (#4188) 2025-01-18 21:34:15 +00:00
Joel Jeremy Marquez
91c4e3e067 [Redux Toolkit Migration] appSlice (#4018)
* Migrate to accountSlice

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* App slice

* Release notes

* Remove app state type

* [TS] Actual startOAuthServer function

* Rename slice

* Fix types

* Slice name

* Cleanup

* Fix lint errors

* Fix import

* Move sync actions to appSlice

* Revert to window

* Updates

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

* Add release notes

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

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

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

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

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup

* Fix typecheck error

* Move createAppAsyncThunk

* Queries slice

* Release notes

* Cleanup types

* Cleanup

* Fix typecheck error

* Lint

* Fix typecheck error

* Fix import

* Fix typo

* Fix typo

* Update

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

* Update setLastTransaction payload

* Remove optional optional chaining on unwrap

* Rename accountId

* Fix type

* Remove return value of initiallyLoadPayees since no callers use it

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

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

* Add setting to control language

* Add release notes

* Update VRT

* Wrap missed strings in `t`

* Update VRT

* [placeholder] Bump CI

* Fix crash on old language file

* Fix loading wrong language

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

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

---------

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

* Release notes

---------

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

Added space between category name and "is"

* Create 4175.md

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

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

* Add release note

* lint

* fix end date picker

* remove debugger

* Update VRT

* Update VRT

* Fix year to date and last year

* remove debugger

* pr comments

* fix small size

* Update VRT

---------

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

* docs: add release note

* address PR comments

* typing getMenuItemStyle

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

* add current month upcoming length option

* note

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

* note

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

* correct status in transaction table

* ts

* note

* ci

* upcoming -> forceUpcoming

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

* note

* change nomenclature

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

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

* Create 4167.md

* Fix quotes

* Fix

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

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

* remove overrides in bank handlers

* note

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

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

* note

* Update VRT

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-15 21:25:55 +00:00
Travis Lesicka
15b7169529 Add Page for Multi-Currency Support (#594)
Adding a page to Using Actual/Budgeting to demonstrate how to implement
multi-currency using Rule Templates.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-01-15 13:38:23 -07:00
Koen van Staveren
97b28ca375 Remove code injection for /update-vrt (#4151)
* Remove code injection for /update-vrt

* chore: release note

---------

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

* Add release notes

* Make linter happy

* Fix optional param

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

* Add optional iban property to creditorAccount

* Use fallback for normalizeAccount and calculateStartingBalance

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

---------

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

* Remove untranslated languages in CI

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

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

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

* Release notes

* Fix lint and typecheck errors

* Update types

* Fix lint

* Fix types

* Cleanup

* Rename file

* Rename state

* Cleanup types

* Cleanup

* Remove useActions

* AppStore type

* Fix typecheck error

* Fix typecheck error

* Move createAppAsyncThunk

* Fix errors

* Rename LinkAccountArgs to LinkAccountPayload

* Fix import transactions modal

* Update upgradingId type

* Undo accounts redux state rename

* Fix typecheck error

* Fix lint error

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

* disable on unsupported report types

* db migration

* note

* typecheck

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

* Update VRT

* fix defaults

* Update VRT

* always allow sorting on data tables

* Update VRT

* coderabbit

* migration: populate sort_by for existing reports

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

* Update VRT

* fix migration

* default sorting options for different report types

* revert vrt

* Update VRT

---------

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

* note/lint
2025-01-13 15:10:32 -07:00
DJ Mountney
c5285aa512 Add auth proxies config to the docs (#581) 2025-01-13 20:17:39 +00:00
DJ Mountney
4bb59fd7f6 fix: Fix the auth proxy trust by ensuring the proxy is in the trust (#499) 2025-01-13 19:43:24 +00:00
youngcw
2682f3bca8 reworking template docs (#606)
This is the start of getting the existing template setup ready to
mainline. We can consider making each template type its own file if this
feels too long.

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-13 08:00:49 -07:00
Stefano
a1be1d43f6 Enactment: enable triggering of rules on selected transaction form the account view. (#3805)
* Adding functionality to trigger the rules of transaction from the transaction view

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

* fix warnings

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

* Fixing errors on the checks: adding changelog and lint

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

* Applying suggestion from the bot.

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

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

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

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

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

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

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

* chore: correct coderabbitai

* Removed hotkey

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

---------

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

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

* Release notes

* Bring back import/no-unresolved
2025-01-10 14:06:10 -08:00
Khiet Tam Nguyen
677c227f16 changed effect (noun) to affect (verb) (#609)
> Off budget accounts don't effect the budget and are meant to track
stuff like investments and mortgages. Transactions in off budget
accounts can't be categorized; they simply track balances over time.

Should be `affect`, a verb, instead of `effect`, a noun.
2025-01-10 09:40:32 -07:00
Matt Fiddaman
58f87dc80f ♻️ standardise GoCardless handlers (#541) 2025-01-10 11:20:11 +00:00
Ruben Olsen Lærk
1e935baf01 Fixing #566 - documenting ACTUAL_DATA_DIR environment variable. (#589) 2025-01-10 06:36:39 +01:00
Ruben Olsen Lærk
11b20e7961 Community repos ICS Cards and Amazon Order CVS file generators. (#602)
- https://github.com/IeuanK/AmazonExporter/
- https://github.com/IeuanK/ICS-Exporter/
See
https://discord.com/channels/937901803608096828/1027831463103696928/1325627562080206878

Changed a heading to _Bank Export and Importers_ as this is more correct
given the kind of contributions we see here.
Also, did I move the _My Edenred_ entry to its proper alphabetical
place.
2025-01-10 06:35:30 +01:00
Ruben Olsen Lærk
ee33b5c82b Export from commercial Actual Budget app-page and associated image is no longer relevant for the documentation. (#599)
Reason:  The commercial https://app.actualbudget.com has been axed. 

For export from the current open-source offering use the existing
documentation.

Replacment pages is found at
https://actualbudget.org/docs/backup-restore/backup and
https://actualbudget.org/docs/backup-restore/restore
2025-01-10 06:34:46 +01:00
Julian Dominguez-Schatz
5a34c06859 Include translations in builds (#4089)
* Pull/push strings via Git instead of via API

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

* Schedule workflow instead of running on every commit

This is so we can minimize downtime for Weblate translations.

* Prevent pull requests modifying translations

* Don't commit translations during the merge freeze

* Add release notes

* Undo rename

* Don't commit translations nightly, per feedback

* Include translations just-in-time in builds

* Revert "Prevent pull requests modifying translations"

This reverts commit 8c19a0ce13.

* Re-ignore translations

* Update release notes to be accurate

* Create missing directory

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

* Release notes
2025-01-09 15:09:52 -08:00
Adam Monsen
89c0254df4 document multi-user usage of same budget file (#496)
Discussed in:

*
https://discord.com/channels/937901803608096828/969693280226906162/1288542693814960260
*
https://discord.com/channels/937901803608096828/1290073711730495599/1290073711730495599

Could someone with intimate knowledge of the syncing
architecture/CRDTs/etc. validate and help me perfect the text? I took
the conservative approach with my "To be safe..." comment, but if it
truly is fine to edit simultaneously, we should say so less
conservatively. Moreso, if simultaneous edits are supported behavior, we
should also take this page out of "experimental".

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-01-09 12:39:16 -07:00
Klemen Košir
7c3084fbc4 Update instructions for enabling Tracking Budget (#607)
This PR updates the instructions for enabling Tracking Budget. The
feature is no longer experimental, but the documentation still treats it
as such.
2025-01-09 12:31:38 -07:00
Rob Hofman
c017b8a228 Add default undefined option for payeename in KBC integration (#533) 2025-01-09 18:49:49 +00:00
Matiss Janis Aboltins
34ffc5c4b2 ♻️ refactor theme variable to be statically defined (#4086) 2025-01-09 18:12:16 +00:00
Koen van Staveren
14b0cd7b1d fix: notes is (nothing) not working (#3998) 2025-01-09 09:21:38 +01:00
Koen van Staveren
daca767808 enhance: allow prefix for budget templates (#4032)
* enhance: allow prefix for budget templates

for example:
Prime video: #template $10

* chore: note

* chore: fix test

* chore: move prefix to template-notes.ts
2025-01-09 09:20:43 +01:00
Ruben Olsen Lærk
2fa1d34d17 #470 - added section on Pay Yourself First strategy (#473)
A go at #470
2025-01-08 19:53:20 +01:00
Matt Fiddaman
6111f94b51 Sort barchart data (#4072) 2025-01-08 17:52:51 +00:00
Travis Lesicka
ce0ca60bcf ♻️ (typescript) Refactor Accounts/Balances to tsx and Remove ts-strict-ignore from Accounts/Account (#4047)
* Convert Balance.jsx to Balance.tsx

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

* Create 4047.md

* Fix typo

* Added Translation helpers to aria-labels

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

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

* Fix typecheck and lint

* Fix lint and typecheck errors

* Fix lint and typecheck errors

* Fix typecheck error

* Cleanup

* Remove useAppStore

* Cleanup

* Undo renames

* Code review feedback

* UndoState type

* UndoState type

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

* add release note

* Make sure budget month actions use showUndoNotification
2025-01-08 00:33:03 +00:00
Julian Dominguez-Schatz
7666337df6 Update releasing.md for release notes (#605)
Goes with https://github.com/actualbudget/actual/pull/4105
2025-01-07 18:36:00 -05:00
Julian Dominguez-Schatz
c956f8003b Mark release as draft initially (#4105)
* Mark release as draft initially

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

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

* One additional validation + Release notes

* Fixed duplicate code

* Improved comment

* Improved comment

---------

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

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

* chore: revert notes to include all data

* chore: release note

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

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

* add release note

* fix linter

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

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

* Update useUndo.ts

* fix code pasted on wrong line

* drive-by fix typo

* Update 4097.md

---------

Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
2025-01-07 08:08:14 -07:00
lelemm
af64b7484d Multiuser and OpenId (#447)
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2025-01-07 07:54:04 -07:00
Julian Dominguez-Schatz
dcf277afb3 🔖 (25.1.0) (#601)
- web: actualbudget/actual#4095
- server: actualbudget/actual-server#536
- docs: #601
2025-01-07 08:47:44 -05:00
Julian Dominguez-Schatz
95180cc780 🔖 (25.1.0) (#536)
* 🔖 (25.1.0)

* Remove used release notes

* Update web package

---------

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

* Remove used release notes

---------

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

* add release note for #3734

* add accessibility label to mobile combined-account header button

* increase touch targets for combined-account buttons

* remove highlight color and add bounce to header buttons

to match the feel of the other account buttons

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

* docs: add release notes

* docs: rename notes

* refactor: fix missing cleared/uncleared balance

* refactor: use Binding type
2025-01-06 13:23:03 -08:00
Ruben Olsen Lærk
56ab44301b Adding Portuguese prepaid meal card tracking from @rodriguestiago0. (#598)
Also grouped this with with the Coinbase sync under a new heading called
Other Importers, as they are not necessarily pure banking-related
importers.
2025-01-06 19:56:34 +01:00
Ruben Olsen Lærk
296ffabee0 Fixing #582 Migration Link Broken by clarifying the content. (#600) 2025-01-06 19:53:31 +01:00
Matiss Janis Aboltins
17057027d5 📝 add UnderKoen and RubenOlsen to maintainer list (#595) 2025-01-04 13:55:17 +00:00
Zach Young
cd724027fb Update index.md (#561) 2025-01-03 13:04:36 +00:00
Ruben Olsen Lærk
0a20a82d01 [WIP] Fixing spellbot errors to prevent #561 to go stale (#592) 2025-01-03 13:32:34 +01:00
redshiftltd
9163c0a64e Update local.md - Adding Linux systemd unit file instructions (#489)
I wrote some steps on how to automate non-Dockerized Actual starting up
with Linux systems using systemd. I'm using this on my server and so far
so good.

If this is too much for this page please consider putting it on its own
page. I think it's useful info for anyone who wants to do self-hosted on
a VPS with a non-Docker instance.

---------

Co-authored-by: Brandon Fotiu <bfotiu@bgsu.edu>
2025-01-03 13:20:30 +01:00
Ruben Olsen Lærk
88d63d544e Fixing spellbot errors to prevent #561 to go stale (#591) 2025-01-03 13:16:18 +01:00
Joel Jeremy Marquez
c3590d8ce7 Use consistent terms regarding on-budget and off-budget accounts (#504)
Co-authored-by: Jeremy Marquez <jmarquez@starlinewindows.com>
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2025-01-03 08:26:31 +01:00
Julian Dominguez-Schatz
832fd1e5d8 Fix schedule split template amounts (#4077)
* Fix incorrect argument to goals schedule function

* Add argument types to prevent similar issues

* Add release notes

* Fix test types
2025-01-02 18:01:19 -05:00
Matiss Janis Aboltins
6b74c58714 📝 (op-ed) looking ahead to 2025 (#588)
Recounting my journey from YNAB to Actual. Giving a brief roadmap for
2025. And lastly answering some comments/questions I keep seeing on the
internet.

https://deploy-preview-588.www.actualbudget.org/blog/roadmap-for-2025
2025-01-02 18:04:20 +00:00
Matt Fiddaman
928260ca3a Fix calendar report day background colour in development theme (#4073)
* fix calendar background in development theme

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

* Add release notes

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

* work with all repeat types

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

* enhance: context menu on EditableBudgetName

* chore: release note

* chore: lint

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

* chore: fix margin

* fix: merge

* chore: use useContextMenu hook

* style: change account name field an input

* lint

---------

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

* chore: release note

* chore: lint

* chore: use both feature flags

* chore: use both feature flags

* chore: pr feedback

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

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

* Add release notes
2024-12-27 18:19:22 -05:00
quarklark
292877ab83 Closes #585 (#587)
Closes https://github.com/actualbudget/docs/issues/585 

I'm guessing the original intention for the index page was for it to be
associated with the Budgeting menu item.
2024-12-26 08:29:44 -07:00
Matt Fiddaman
3f6068fe88 add electron build files to eslint ignore list (#4042)
* add electron build files to eslintignore

* note
2024-12-26 01:22:53 +00:00
Jason Axelson
151b409e0e Add dashboard and tracking budget links to latest release notes (#559) 2024-12-25 00:30:35 +00:00
Julian Dominguez-Schatz
9213ed75b5 Upload translations on builds of master (#4002)
* fix: translations were not being loaded properly

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

* feat: upload new strings on master build

* Add release notes

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

* Update VRT

* chore: change to icon

* chore: rename to today

* chore: fix not being centered on multiple months

* Update VRT

* Update VRT

* Trigger Build

* fix: keep now button with monthpicker not left

* Update VRT

* fix: center MonthPicker

* Update VRT

* Trigger Build

---------

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

* chore: add test case

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

* Code rabbit auto generated code applied

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

* Code rabbit suggestions round 2

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

* fixes from code rabbit round 1

* fixes from code rabbit round 2

* change variable name

* code review round 3

* Update VRT

* small fix

* Update VRT

* linter

* app.tsx

* LoggedInUser

* UserAccess

* UserAccessHeader

* UserAccessPage

* UserAccessRow

* UserDirectory

* UserDirectoryHeader

* UserDirectoryPage

* UserDirectoryRow

* BudgetList

* Bootstrap

* Login

* OpenIdForm

* CreateAccountModal

* EditAccess

* EditUser

* GoCardlessInitialiseModal

* OpenIDEnableModal

* PasswordEnableModal

* SimpleFinInitialiseModal

* TransferOwnership

* AuthSettings

* fix hooks in EditUser

* enable electron openid login

* typecheck

* linter and typecheck fixes

* Update VRT

* small fix

* linter

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

* linter for merge

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

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

* linter

* linter²

* code review

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: matt <matt@fiddaman.net>
2024-12-23 09:46:22 -07:00
Kai Chevannes
b704fbbf7c [WIP] fix envelope budgeting numbering typo (#584)
4 was duplicated, changed second occurrence to 5.
2024-12-23 14:40:58 +00:00
Robert Dyer
7b7f6c904c Add example of orderBy with a descending order (#583)
This adds an example to show how to change the sort order.
2024-12-23 14:34:45 +00:00
youngcw
cde81da72c [Goals]: Fix applying templates in tracking budget (#4010)
* fix logic

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

* md

* Update src/scripts/disable-openid.js

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

* changed error codes based on code rabbit review

* fix for github auth

* code review

---------

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

* note

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

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

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

* Fix password login and session token initialization

* Disallow multiple authentication methods simultaneously.

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

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

* Migrate old database version

* Fix lint errors

* Add release note

* Add unit tests for runMigrations

* Integrate secrets database into migration system

* Remove unused imports

* trying local package

* merge

* working example

* working example

* working example

* forbidden instead of 401 when session expired

* cleanup

* small fix

* moving to another pc

* features

* more features

* added multiuser configuration

* lint fixes

* adjustments and linter

* making code more readible

* added token expiration and fixes

* fix on custom token_expiration

* lint

* build fixes

* fixes

* missing file

* linter

* linter

* test fixes

* linter

* first tests

* tests

* typo fix

* remove the init code from the old PR

* minor bug when enabling openid is deleting the password user

* fix bug when disabling openid

* another fix bug when disabling openid

* added option to login without discovery url

* adjustments for keycloak

* linter

* more tests

* adjustments

* linter fix

* added environment variable

* merge fixes for using middleware

* linter fix

* linter and tests

* tests adjustments

* added environment variables

* linter

* enhancements

* removed old files

* Added token expiration as environment variable

* fixes

* typescript fix

* linter

* unwanted code

* changed master to owner

* fixed down migrations and added transactions to it

* changed to the 'in' operator

* fixed typo

* code review

* code review

* json.parse may fail

* code review and removed duplicated methods

* multiple fixes and refactories

* bunch of fixes

* removed logs

* descriptive variable names

* linter

* code review

* linter

* improved variables

* fixes and refactories

* more code review

* variable name

* code review

* linter

* wrong logic after refactor

* refactor query

* fixes

* changes from code review

* added logs to toggleAuthentication

* removed not used route

* merged master into the branch

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

* changed md file

* fixes on merge

* linter

* fix on tests

* more fixes

* fix

* another fix

* Update src/app-admin.js

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

* Update jest.global-setup.js

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

* code rabbit reviews

* linter

* Update migrations/1719409568000-multiuser.js

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

* Update migrations/1719409568000-multiuser.js

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

* Update src/account-db.js

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

* Update src/accounts/openid.js

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

* Apply suggestions from code review

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

* fix on code suggestion

* suggestion from coderabbit

* linter

* Apply suggestions from code review

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

* linter and code review

* Apply suggestions from code review

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

* Update src/util/middlewares.js

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

* fixes, ai code review, linter

* reverting res.locals and fixes

* Update src/accounts/openid.js

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

* Update src/load-config.js

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

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Update src/account-db.js

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

* fixes and refactories

* merge fix

* fix

* merge fix

* linter

* Update src/accounts/openid.js

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

* Update src/services/user-service.js

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

* Update src/services/user-service.js

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

* Update src/services/user-service.js

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

* more code review

* linter accepted code

* typo

* code review suggestion

* change to enable backward compatibility

* removed the userId = null

* fixes from code review

* Update jest.global-setup.js

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

* code review

* minor change

* code rabbit commit was wrong

* Fix for existing user sessions

* fixes on migration

* md

* Update migrations/1719409568000-multiuser.js

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

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

* small fixes

* fix for electron

* md

---------

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

* note

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

* Some type hardening

* add release note

* lint

* typecheck

* lint

* rename expanded -> isExpanded
2024-12-11 17:52:41 -08:00
bpaulien
bab4b799d8 Update reference.md (#557)
title case, edited for clarity
2024-12-11 23:58:35 +00:00
bpaulien
06ca5a87f4 Update index.md (#556)
title case, edited for clarity
2024-12-11 23:58:30 +00:00
bpaulien
d01528b2cf Update tips-tricks.md (#555)
title case,
2024-12-11 23:58:22 +00:00
bpaulien
4e041ce5bf Update types.js (#554)
edited for clarity
2024-12-11 23:58:10 +00:00
Adivardhan Maheshwari
2ed1add5bc Update reconciliation instructions and images to reflect current UI (#560)
When I setup my actual account, I noticed that there was no
reconciliation button as described in documentation. Found out after
hunting, that the UI has changed resulting in this issue. I have created
this PR to update that.

Let me know if the language or images need to be changed.

Caused because of: https://github.com/actualbudget/actual/pull/3684
2024-12-11 23:56:03 +00:00
bpaulien
553d18e938 Update index.md (#569)
title case, punctuation
2024-12-11 23:55:19 +00:00
bpaulien
af720eecac Update index.md (#570)
punctuation, grammar, clarified name of nYNAB
2024-12-11 23:55:12 +00:00
bpaulien
d23eb40401 Update migrations.md (#573)
punctuation
2024-12-11 23:54:56 +00:00
bpaulien
b590d68a92 Update new-core-contributors-guide.md (#579)
punctuation, title case
2024-12-11 23:54:37 +00:00
bpaulien
dbca4c9962 Update writing-docs.md (#578)
punctuation, title case,
2024-12-11 23:54:30 +00:00
bpaulien
020f9c7dc0 Update releasing.md (#576)
punctuation, title case
2024-12-11 23:54:22 +00:00
bpaulien
11c2ec4255 Update preview-builds.md (#575)
capitalization, wording, remove duplicated paragraph
2024-12-11 23:54:16 +00:00
bpaulien
3687e7ae09 Update i18n.md (#574)
title case
2024-12-11 23:54:09 +00:00
bpaulien
eafd128c63 Update feature-flags.md (#572)
title case, punctuation, added clarifying words
2024-12-11 23:54:01 +00:00
bpaulien
51bbdcf1c4 Update database.md (#571)
punctuation, phrasing for better understanding
2024-12-11 23:53:54 +00:00
bpaulien
a2f14ee30b Update edge-browser.md (#568)
fixed punctuation
2024-12-11 23:53:35 +00:00
bpaulien
ad194555ee Update reset_password.md (#567)
title case
2024-12-11 23:53:26 +00:00
bpaulien
3d27dd91f0 Update server.md (#565)
title case
2024-12-11 23:53:19 +00:00
bpaulien
7ca1486bb0 Update examples.md (#564)
title case
2024-12-11 23:53:11 +00:00
bpaulien
2894d2f982 Update functions.md (#563)
title case, added words to make it flow better.
2024-12-11 23:53:04 +00:00
bpaulien
a66540d2b2 Update windows.md (#577)
punctuation, title case
2024-12-11 23:52:44 +00:00
bpaulien
5c3d9bea85 Update index.md (#562)
title case, spelling
2024-12-11 23:52:34 +00:00
Joel Jeremy Marquez
81fc029a03 Use useTranslation hook instead of directly importing the t function (#3893)
* Use useTranslation hook instead of directly importing the t function

* Release notes

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

* a bit of hardening

* release notes

* typecheck & lint

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

* Release notes

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

* Release notes

* Update mobile account header

* Fix release notes

* Fix release note category

* Update VRT

* Rename variables

* Remove hyphens

* Show off budget

* Update VRT

* Dummy commit

---------

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

* Fix lint

* Fix mock bind

* Reduce re-renders

* Update useSheetValue

* Update

* Make QueryState immutable

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

* Release notes

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

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

* Create 3847.md

* Removed un-needed comment

* Changed error log text

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

* Added translation

* Fixed linting error

* Changed delete file hack

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

* Removed hard coded english from loot-core server

* Updated wording and style of Duplicate File Modal

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

* small fix

* fix eval for new operations

* code review suggestion

* suggestions

* small fix for rules table

* batch loading the accounts

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

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

* missed this type

---------

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

* chore: release note

* Update upcoming-release-notes/3775.md

* chore: improve spelling

* feat: useContextMenu hook for context menus

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

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

* created a release note

* rename release note to PR number not issue number

* revert changes to check e2e tests

* redo changes

* indentify exact styling issue

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

* Added release notes. Minor linting fix added.
2024-12-06 13:53:15 -07:00
youngcw
0178e3aed0 Update the tracking budget page so the feature can be released. (#483)
Moved the page out of experimental and added a few minor things.

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-12-06 13:50:49 -07:00
Matt Fiddaman
0b9f01b936 [WIP] fix titles in release notes (#553) 2024-12-06 20:04:38 +00:00
bpaulien
f0d775b3ae Update manage-files.md (#548)
title case, consistency in headers.
2024-12-06 19:48:26 +01:00
bpaulien
c5ad46cede Update monthly-cleanup.md (#549)
title case, edited for clarity
2024-12-06 19:47:57 +01:00
bpaulien
9b3de061a7 Update tracking-budget.md (#550)
title case
2024-12-06 19:47:13 +01:00
bpaulien
624de5645b Update goal-templates.md (#551)
remove currency symbols, add note explaining how they're used, tried to
standardize how template vs #template / goal vs #goal are used, some
edits for clarity,
2024-12-06 19:46:29 +01:00
Matt Fiddaman
969630cad3 fix version number for v24.12.0 (#552) 2024-12-06 18:39:46 +00:00
Matt Fiddaman
9ae6481fd4 🔖 (24.12.0) (#545)
- web: https://github.com/actualbudget/actual/pull/3931
- server: https://github.com/actualbudget/actual-server/pull/515
- docs: https://github.com/actualbudget/docs/pull/545
2024-12-06 18:31:43 +00:00
Matt Fiddaman
f207803f7a 🔖 (24.12.0) (#3931)
* bump versions

* Remove used release notes

* Remove used release notes

---------

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

* Remove used release notes

* bump web version

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-06 16:39:22 +00:00
bpaulien
9d90eb5207 Update index.md (#533)
fixed title case on headers, spelling / grammar errors

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2024-12-06 13:19:06 +01:00
bpaulien
f2ad60f12e Update sync.md (#546)
title case, and edited for clarity
2024-12-06 13:18:13 +01:00
bpaulien
dd987fd625 Update index.md (#547)
wording change, and added clarification on how to get into the advanced
settings page.
2024-12-06 13:15:07 +01:00
Julian Dominguez-Schatz
df7bc5d2f0 Fix a navigation bug and a crash from the account pages (#3932)
* Don't crash when making a txn from the uncat page

* Always navigate consistently from the txn add/edit page

* Add release notes

* Attempt to fix functional tests

* Update VRT

---------

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

* md

* Update VRT

---------

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

* Release notes

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

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-12-05 15:37:52 -08:00
bpaulien
d4bb3d043c Update custom-reports.md (#541) 2024-12-05 21:28:30 +01:00
bpaulien
b65fc30ede Update importing.md (#534) 2024-12-05 21:24:56 +01:00
ewatch
f16e539235 adds hint for missing date formats (#497)
If the date column is not configured correctly the date format will not
show up if it's not one of the preconfigured ones.
I think that can help in the documentation.
2024-12-05 08:37:09 +01:00
spoon1331
4501211125 Update reverse-proxies.md (#523)
After fighting with this for some time, it seems that the trailing slash
in apache config causes budget to think that the server is offline.
Removed.
2024-12-05 08:36:15 +01:00
bpaulien
2e9e5017fe Update categories.md (#524)
spelling, and word flow edits.
2024-12-05 08:35:08 +01:00
bpaulien
0aa163f329 Update reconciliation.md (#535)
title case, supply missing words.
2024-12-05 08:31:22 +01:00
bpaulien
eb60cc8c5b Update payees.md (#536)
title case, clarity
2024-12-05 08:30:35 +01:00
bpaulien
d288d461dc Update bulk-editing.md (#537)
title case, edited for clarity.
2024-12-05 08:29:49 +01:00
bpaulien
5a43fb572f Update simplefin.md (#538)
title case
2024-12-05 08:29:00 +01:00
bpaulien
31d2d2cdfc Update modify-transfers.md (#539)
title case, spelling error
2024-12-05 08:28:36 +01:00
bpaulien
2e9a9db1b7 Update index.md (#540)
title case, spelling error
2024-12-05 08:27:59 +01:00
bpaulien
8cd3099ee4 Update backup.md (#542)
title case
2024-12-05 08:21:04 +01:00
bpaulien
10203bc98a Update restore.md (#543)
title case, punctuation
2024-12-05 08:20:37 +01:00
Froghut
d3a7b6228a Fix gocardless bank "Hanseatic Bank" (access_valid_for_days max 89) (#514)
* Add support for "Hanseatic Bank" (access_valid_for_days max 89)

* add PR changelog file

* fix line endings + author format

* make linter happy

* make linter happy

* use alphabetical order for import and banks list
2024-12-03 17:53:00 +00:00
bpaulien
3a1671e479 Update returns-and-reimbursements.md (#525)
easier understanding, grammar fix
2024-12-03 08:42:40 +01:00
bpaulien
ce9f527f63 Update carrying-debt.md (#526)
broke up a run on sentence.
2024-12-03 08:41:18 +01:00
bpaulien
8b538c82d7 Update joint-accounts.md (#527)
further explain how to get the percentage of the 2nd person.
2024-12-03 08:40:26 +01:00
bpaulien
5256e12a32 Update restart.md (#528)
extra words to help explain which month
2024-12-03 08:40:01 +01:00
bpaulien
44790d927e Update index.md (#530)
grammar change
2024-12-03 08:39:37 +01:00
bpaulien
a622925fed Update schedules.md (#529)
several edits to improve readability
2024-12-03 08:39:08 +01:00
bpaulien
46e2c46476 Update filters.md (#531)
added words to improve understanding
2024-12-03 08:37:54 +01:00
bpaulien
5decb2ab3f Update transfers.md (#532)
make it a little more understandable
2024-12-03 08:37:03 +01:00
Michael Clark
501c8653ef 🐛 Fix flicker when saving transaction on account page when transactions are scheduled (#3920)
* fix flicker when saving transaction on account page when there are scheduled

* release notes
2024-12-02 08:53:57 +00:00
Matt Fiddaman
842bc40d0c fix some spelling issues, standardis(z)e to US English (#521)
Quick whip through to try and standardis(z)e some language, looks like
the most common English in the docs is US English so I chose that one,
but if we'd prefer the Queen's then that's okay too.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2024-11-29 06:45:45 +01:00
Matt Fiddaman
1faead2732 whitespace fixes (#522)
Removes double spacing and trailing whitespace.
2024-11-28 21:40:12 +01:00
guglicap
484211185b Fix Hype Bank sync (HYPE_HYEEIT22) (#511)
* fix: wrong institution_id for HYPE_HYEEIT22 in `BANKS_WITH_LIMITED_HISTORY` array

* added upcoming-release-note

* fixed author name in release note
2024-11-28 18:56:47 +00:00
bpaulien
bd2d1cce30 Update https.md (#514)
fixed wording
2024-11-27 19:01:17 +00:00
bpaulien
3eb57ba407 Update http-header-auth.md (#515)
easier to understand
2024-11-27 19:00:45 +00:00
Matt Fiddaman
80d1071019 Small fix to wording in Pikapods page (#520) 2024-11-27 20:00:04 +01:00
bpaulien
c9a8c9c0c0 Update nynab.md (#516)
changed wording,
2024-11-27 19:59:22 +01:00
bpaulien
207a0ab496 Update starting-fresh.md (#517)
reworded for comprehension
2024-11-27 19:58:44 +01:00
bpaulien
e755c6a260 Update index.md (#518)
reworded for clarity

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2024-11-27 19:57:01 +01:00
bpaulien
d65ccf4f49 Update index.md (#519)
edited for clarity, and to understand better.
2024-11-27 19:55:06 +01:00
bpaulien
628fca09f2 Update pikapods.md (#511)
added a couple missing words to help with readability

---------

Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2024-11-27 12:05:37 -05:00
Joel Jeremy Marquez
22623ce65e Fix mobile transaction edit page's back button behavior (#3905)
* Fix mobile transaction edit page's back button behavior

* Release notes
2024-11-27 08:02:37 -08:00
bpaulien
fc27456e95 Update fly.md (#512)
improved readability
2024-11-26 22:17:27 -05:00
bpaulien
1eaf19e572 [WIP] Update index.md (#513)
fixed spelling and wording of statement
2024-11-26 22:16:18 -05:00
bpaulien
2f5246d535 Update payees.md (#510) 2024-11-26 22:12:29 +00:00
bpaulien
1ed0be4e7a Update roadmap-for-new-users.md (#509) 2024-11-26 22:12:12 +00:00
bpaulien
fe841ea6ff Update envelope-budgeting.md (#508) 2024-11-26 22:11:58 +00:00
bpaulien
cb024bbca7 Update schedules.md (#507) 2024-11-26 22:11:16 +00:00
lelemm
8506b87f2c 🐛 Fix existing sessions when using the latest version with Openid (#507) 2024-11-26 19:00:54 +00:00
bpaulien
3ed55fd08a Update accounts.md (#501)
edited for clarity, some grammatical errors

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-11-26 16:46:41 +00:00
bpaulien
ab71e1e33f Update reports.md (#503) 2024-11-26 16:39:23 +00:00
bpaulien
c94398b865 Update accounts.md (#502)
another grammatical error
2024-11-26 16:39:18 +00:00
bpaulien
4cde4dc5f5 Update budget.md (#500)
verbiage changes to enhance understanding.
2024-11-26 16:39:11 +00:00
bpaulien
903612c905 [WIP] Update writing-docs.md (#498)
Removed redundant word.
2024-11-26 14:51:32 +00:00
bpaulien
04988a1748 [WIP] Update index.md (#499)
made a sentence make sense.
2024-11-26 14:51:18 +00:00
Kayce Serafin
1d964978d6 [WIP] Update/docs (#494)
- Update image for months selector
- Remove extra semicolon
2024-11-25 16:25:43 -07:00
Michael Clark
c25e3d4163 🐛 Fix performance when navigating between budget/accounts (#3882)
* memo the bindingobj

* release notes

* fix

* a bit heavy handed

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

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

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

* release notes

* setting the line height back

* renames

* condtion on the font changed event

* fix type check

* typecheck

* clarifying comment

* remove margin on left and right - not required

* fix import

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

* Release notes

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

* Release notes

* Update VRT

* Fix regression

* Update VRT

---------

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

* Release notes

* Fix lint

* Fix lint

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

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

* Release notes

* NoteAmendMode

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

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

* Release notes

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

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

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

* Apply suggestions from code rabbit

* Apply suggestions from code review

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

* MORE CODE RABBIT SUGGESTIONS

* typecheck fix

* change view form the details page

* added privacy filter

* Apply suggestions from code review

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

* debounce

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

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

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

* fix on recommended code rabbit commit

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

* accept infinite

* feedback fixes

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

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

* translations

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

* changed MD from enhancements to feature

* typo

* change card

* typecheck

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

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

* typecheck

* changes to fit the number better

* small fix

* fix on filters

* code review

* revert code to check for height

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-11-21 09:25:09 -07:00
Matt Fiddaman
30f21497a6 fix bug in batch SimpleFIN startDate logic (#504) 2024-11-21 15:49:08 +00:00
Michael Clark
b6647427f7 Update local.md (#492)
Based on
https://discord.com/channels/937901803608096828/1308579814625640508


![image](https://github.com/user-attachments/assets/ed7a7944-82d8-4709-88f5-7f9aac760ce9)
2024-11-21 09:15:59 +00:00
Joel Jeremy Marquez
f523d25052 Convert ManagementApp.jsx to tsx (#3860)
* Convert ManagementApp to tsx

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

* Release notes

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

* add filter for parent id

* fix Category is not (nothing) as well

* lint fixups

* add special case for 'category is not nothing'

* add release notes

* adding tests

* lint fix

* use $and expression for complex condition special cases

* add tests for condition special cases

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

rename subExpression to and

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

* update uses of subExpression with and

* remove stray debugger rules

* Update VRT

* Revert "Update VRT"

This reverts commit a450fc7b2457bb578e53f62d5f4201e91e9a93c4.

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

* feedback

---------

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

* Release notes

* Rename hook function

* [chore] Comment

* Coderabbit feedback

* Fix loading states

* Code rabbit

* No payee text

* Update VRT

* Update release notes

---------

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

* cleanup

* fix cases of negative previous balance
2024-11-19 06:53:21 -07:00
Matiss Janis Aboltins
23bb89b96e release tracking budget feature (#3833) 2024-11-18 22:41:50 +00:00
ankitson
5ddfb30817 docs: Explain running balance is shown only with descending date (#482)
I was a little confused that I couldn't see a running balance in my
accounts until I realized that it's only shown in a specific sort order.

I think it would actually be useful to be able to see the running
balance no matter the sorted order, but until then maybe we should
clarify in the documentation.
2024-11-18 13:59:50 -07:00
Matt Fiddaman
7010ab1eb6 add simplefin batch sync to api (#3821) 2024-11-18 20:38:45 +00:00
Joel Jeremy Marquez
18f538c54b Convert Mobile Transaction component to TransactionListItem + cleanup (#3761)
* Migration mobile Transaction component to TransactionListItem + cleanup

* Release notes + yarn install

* Fix style

* Padding changes + VRT

* Update useScrollListener

* Code rabbit feedback

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

* Fix lint + release notes

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

* Check undefined

* Rename to useScrollListener

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

* Cleanup

* Fix lint

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

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

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

* release notes

* blasphemy

* more blasphemy

* putting warning back

* last heretic act

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

* Add backend translation files for i18n integration

* code refactored

* code refactored

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

* Add release notes

* Merge master

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

* gitignore

* release notes

* one directory back from electron

* spelling mistake

* Update 3801.md

* test

* making it correct

* huh

* urghh

* again

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

* hu-

* lets go

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

* Fix lint problems with the previous commit

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

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

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

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

* add release notes

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

* Release notes + lint fix

* Update useQuery

* useTransactions update

* Stabilize tests

* Fx flaky test

* Fix tests

* Fix tests

* Update queries

* Apply coderabbit suggestions

* Fix onlySync

* Update useTransactions

* Code rabbit suggestions

* useTransactionsSearch hook

* Debounce the useTransactionsSearch search method

* usePreviewTransactions debounce fix

* Fix lint

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

* Code review feedback and improve schedules loading

* Update error handling

* Cancel debounce on unmount

* Fix lint

* set loading state on error

* Fix test

* VRT

* Revert VRT

---------

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

* lint, note

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

* Code Refactored

* Added translated desktop client files

* Code refactored

* Code refactored

* Fix lint issue

* Removed i18next line from RuleRow.tsx

* Code refactored

* Code refactored

* Code refactored

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

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

* Added translation for setting encryption

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

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

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

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

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

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

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

---------

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

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

* Create 3593.md

* Fixed Menu Dropdown Arrow shrinks with long budget name

* Changes recommended by coderabbitai

* Fixed Lint issue

* Remove Help from Menu

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

* Update VRTs

* Update VRTs

* Fix logo shrinking with long budget name issue

* Update 3593.md

* Removed Logo and pencil icon

* Update VRTs

* Removed unused classnames from SideBar and BudgetName component

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

* chore: use correct permissions

* chore: don't cancel on non command message

* chore: make workflow not expose github secret

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

* Release notes

* Fix lint

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

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

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

* Also fix namedParameter queries with  filter

* improve tests

* release note

---------

Co-authored-by: Joel Rich <joelrich@protonmail.com>
2024-11-05 00:39:43 -08:00
Julian Dominguez-Schatz
7afa8d9c23 Fix date on latest release post (#484)
As it says on the tin; noticed this was wrong while browsing the docs.
2024-11-04 20:11:08 -05:00
Reverse256
3e46012350 incorrect box specified from the photo (#478)
the arrows are the yellow box not blue.
2024-11-04 14:46:42 -07:00
youngcw
6ccee5bc33 update template docs to match changes (#477)
Matches limit additions in actualbudget/actual#3754.
Original PR with descriptions is actualbudget/actual#3714

Tweaks a few other things to retain accuracy.
2024-11-04 14:43:28 -07:00
Koen van Staveren
19c6f85f5e Update update-vrt.yml (#3788) 2024-11-04 19:58:22 +01:00
Koen van Staveren
d4f1f703ea fix: /update-vrt (#3787)
fatal: detected dubious ownership in repository at
https://github.com/actions/runner-images/issues/6775
2024-11-04 19:43:49 +01:00
Michael Clark
914f59197f :electron: Removing node-fetch and updating root ca impl for more support (#3782)
* updating root ca impl to use node env variable for more support

* release notes

* removing node-fetch

* clean up

* error message

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

* minor changes and TS class migration

* good starting point

* very basic testing

* fix

* basic overwrite of simple templates working

* mostly working.  By and schedule don't work

* some cleanup, better async

* add notifications

* add daily weekly limits

* by is working I think

* mostly working

* some fixes, make faster

* lint, note

* note

* cleanup old stuff

* fix paths

* test fixes

* fix test

* fix note

* rabbit, and fix long goal

* lint

* some fixes

* more typing

* fix save error

* last bunny fixes

* fix save, trim schedule names

* lint

* minor fixes

* last fixes

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

* chore: release note

* fix: tests

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

* remove incorrect automated imports

* fixes

* refactor to mark all transactions new

* clamp latestTransaction to current date

* refactor out temporary placeholder solution

* simplify bank syning logic

* stricter types

* note

* remove debug logging

* better logging

* error handling

* fix handling of SimpleFinBatchSync

* pass errors down

* fix

* another go!

* hopefully the last try...

* fix log

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

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

* coderabbit: simplify promise construction

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

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

* expand types

* month utils

* use aql over sql

* fix types

* fixes

---------

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

* chore: add missing container for /update-vrt

---------

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

* Added release note

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

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

* add correct month

* clean up code

* clean up code

* clean up code

* clean up code

* add notification and clean up

* add notification and clean up

* add notification and clean up

* add notification and clean up

* add notification and clean up

* add release note

* excluded hidden categories

* removed unused method from api

* adjust template to run on already budgeted categories

* fix typecheck

* add apply multiple as budget action and remove from api

* lint clean up

* fix notification and remove log

---------

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

* Release notes

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

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

* docs: add release note

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

* build: use COPY commands

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

---------

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

* feat: context menu's on budget page

* chore: release note

* fix: losing focus on context menu

* feat: schedules context menu

* feat: payees context menu

* feat: rules context menu

* chore: update release note

* chore: lint

* fix: broken balance movement menu

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

* feat: context menu on budget field

* chore: lint

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

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

* chore: fix merge

* fix: e2e test

* fix: moving of the popover in the sidebar

* chore: lint

* chore: add feature flag

* chore: fix tsc

* chore: fix test

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

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

* fix: to budget button

next steps didn't work

* chore: lint

---------

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

* update #1

* test

* wip

* green

* wip

* ux

* green

* red

* cleanup

* Add release notes

* Unique notification name

* Missing awaits

* Try to fix Electron app

* Simplify update checking

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

* chore: release note

* chore: code rabbit feedback.

* chore: code rabbit feedback.

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

* md

* e2e update

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

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

---------

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

* Remove used release notes

---------

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

* Remove used release notes

---------

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

* release notes

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

* add release note

* fix linter

* remove debug print

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

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

---------

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

* added release notes

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

* chore: release note

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

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

* release-notes

---------

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

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

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

* notes

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

* release notes

---------

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

* note

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

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

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

* chore: release note

* chore: remove debug logging

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

Closes #3551

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

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

* add release note

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

* integrate comments

* fix linter

---------

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

* chore: release note

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

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

* docs: set correct pr number

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

---------

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

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

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

* notes

* defualt show spending graph

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

* Add release notes

* Attempt to fix build issues

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

* add release notes

* rabbit suggestion

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

* feat: fix categories being set on offbudget transactions

* fix: #2266

* fix: small mistake

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

* added release notes

* fixed misspelling of Enhancements

* fix lint errors

* Only show when Goal Template Flag is enabled

* fix lint

* Only show on Budget page

* fix lint

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

* fix lint, made requested change to HelpMenuItem type

* stylized tables

* fixed type error

* Moved section headers to within Table Headers

* fix lint

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

* release notes

---------

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

* add Reconcile Button in the account page

* added release note

* updated VRT snapshots

* removed Reconcile option from Account menu

* made the button minimal with tooltip and added vrt

* missing unused import

* fixed icon and button size

* fixed merge conflicts

* hide reconcile button on all account and for budget page

* fix lint from merged file

* changed reconcile button order

---------

Co-authored-by: vincenzo <dibiasev@gmail.com>
2024-10-20 13:11:45 -07:00
Ruben Olsen Lærk
634527b640 [WIP] Link to actual Budget hosted on Google Cloud's always free tier in the installation instructions. (#475) 2024-10-20 09:14:15 +02:00
youngcw
03f2cabc18 clean up accidental push (#3695)
* clean up accidental commit

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

* Add tests for unexpected behaviour

* Refactor to consistently generate valid splits with no errors

* Add release notes

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

* TS patches

* Patch types

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

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

---------

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

* Remove custom CSSProperties

* Fix errors

* Fix typecheck error

* Fix lint error

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error

* Release notes

* VRT

* VRT

* Revert VRT

* Fix typecheck error

* Fix glamor import

* yarn

* Fix lint error

* Dedupe

* Fix typecheck error

* Update @emotion/css

* Revert vrt screenshots

* Fix toggle content

* Fix content

* Fix lint error

* VRT

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

* feature flag implemented

* feature toggle setting added

* added release notes

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

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

* vrt

* vrt

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-10-17 17:09:34 -07:00
Jonathan Fang
4044a14da2 Add info on how to access edge build via edge.actualbudget (#471)
add mention of how to access the edge build of actual, i couldn't find
it anywhere else in the documentation.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2024-10-17 23:55:43 +02:00
youngcw
225c93914c allow 4 decimal places in file imports (#3676)
* allow 4 decimals

* note

* fix comment

* update test
2024-10-17 12:40:35 -07:00
youngcw
0dd2c61fe5 add copy template (#467)
add blurb for the new copy template from actualbudget/actual#3617
2024-10-17 09:28:19 -07:00
youngcw
c25e97b0f6 [Goals] Add copy template (#3617)
* add copy template

* note, lint

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

* hover working

* moved title

* release notes

* updated release notes category

* split info bubble into its own component

* text longer than 500px will be split

* extracted text width into its own file

* wip tests

* wip testing

* removed separate method and tests

* added textWidth option to Info Bubble

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

* Add release notes

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

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

---------

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

* chore: release note

* fix: create test budget

* fix: transaction-rules tests

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

* release notes

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

* Move react-i18next import before memoize-one

* Add release notes

* Add prettier formatting

* Fix eslint import/order warning

* Add translation support for "No payees" text
2024-10-14 22:20:27 +01:00
Ruben Olsen Lærk
2b66cabfe0 Fixed broken (relative) link in /docs/config/https to correctly point to /docs/config/reverse-proxies 2024-10-14 19:23:51 +02:00
Julian Dominguez-Schatz
778fc713f3 Move help-related items under one single menu (#3648)
* Remove previous help-related elements

* Add new 'Help' menu with multiple options

* Fix alignment of popovers

* Better types

* Add release notes

* PR feedback

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

To match the desktop behaviour.

* add release notes

* update vrt snapshots

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

* Release notes

* Cleanup

* VRT

* Cleanup

* Remove glamor import

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

* add release note

---------

Co-authored-by: dreptschar <dreptschar@gmail.com>
2024-10-13 20:00:27 +01:00
Adam Monsen
178d00ca06 [WIP] fix links to starting fresh guide (#472) 2024-10-13 17:43:54 +02:00
dependabot[bot]
f89817170a Bump word-wrap from 1.2.3 to 1.2.5 (#3657)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* ui changes and setting

* wip

* null check

* removed more than a month

* prettier

* todo

* get status tests

* added prefs to app.ts

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

* updated schedules component to use localPrefs

* removed console.log

* release notes

* renamed release noted md

* eslint fixes

* import fix

* update useEffect dependencies

* removed a comment

* moved upcoming length setting to schedule page

* removed import

* made setting collapsible and moved to the top

* fixed breaking change

* updated to work with updated synced prefs methodology

* pulled preference from db

* updated tests with mock reset

* update vrt

* per coderabbit: upcoming length null value prevention

* update test to use number inputs rather than string

* aria label added to close button

* moved before/after each blocks per coderabbitai

* fixed default value typo

* updated edit button to use slimmer style

* vrt

* vrt

* vrt

---------

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

* unify error messages and styles

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

* add release notes

* remove extra validation function

* fix typo in AccountSyncSidebar params

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

* lint imports

* update error message to Name x already exists

* use proper translation functions

---------

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

* user friendly error

* hooking parts up - untested

* changed approach

* release notes

* removing old comments

* cleanup old code

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

* release notes

* Apply suggestions from code review

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

---------

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

* release note

* lint

* indentation

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

* chore: release note

* chore: lint

* chore: remove .only

* fix: csv import e2e tests

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

* chore: release note

* fix: flakiness e2e test

* Update bin/run-vrt

* fix: flakiness e2e test

* chore: lint

* chore: fix merge

---------

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

* chore: release note

* Apply suggestions from code review

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

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

---------

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

* chore: release note

* chore: implement pr feedback

---------

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

* Upgrade app
2024-10-08 18:26:04 +01:00
Matiss Janis Aboltins
22b607659e 🔖 (24.10.1) (#465)
- web: https://github.com/actualbudget/actual/pull/3596
- server: https://github.com/actualbudget/actual-server/pull/475
- docs: https://github.com/actualbudget/docs/pull/465
2024-10-08 18:02:21 +01:00
Matiss Janis Aboltins
85b3c5714e 🔖 (24.10.1) fix synced prefs (#3596) 2024-10-08 18:02:07 +01:00
Koen van Staveren
ce4b80f499 feat(rules): templating actions (#3305)
* feat(rules): templating actions

* chore: update snapshots

* fix: date functions templating

* chore: lint

* fix: put action templating behind feature flag

* fix: template syntax checking

* test: handle bar functions

* chore: pr feedback

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

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

* Linting

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

* Release notes

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

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

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

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

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

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

---------

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

* added release note

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

* more settings

* giving users option to automatically move files when changing dir

* trueee

* updates

* does this fix the type issue

* weird

* translating

* release notes

* release notes

* a bit extra safety

* updating wording

* parameterising backup params

* text update

* parameterise vals

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

* pencil icon to save real estate

* ordering

* Rename 3500.md to 3584.md

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

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

---------

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

* note
2024-10-07 17:37:08 +01:00
Matiss Janis Aboltins
0b6ea52d9b 🐛 (reports) fix reports page having empty blocks (#3566) 2024-10-07 08:33:53 +01:00
Christopher Kodama
a5324a2bd8 Update advanced settings in index.md (#464)
As of 24.10.0, simplefin is not in experimental features anymore, and
now there is a customizable reports option.
2024-10-06 19:12:01 -07:00
Matiss Janis Aboltins
38c5f89c41 ♻️ (typescript) migrated NetWorth component to TS (#3576) 2024-10-06 20:09:11 +01:00
mullermn
3dba323bc0 [WIP] Update ynab4.md (#462)
Added in a Known issues section for YNAB4 imports to cover an issue with
split transactions not receiving correct payee details.

Once this issue is resolved the documentation note can be removed:
https://github.com/actualbudget/actual/issues/3561

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2024-10-06 20:42:22 +02:00
Michael Clark
b774a3b216 :electron: Removing electron-is-dev dependency (#3580)
* removing is-dev dependency

* release notes

* release notes
2024-10-06 17:36:18 +01:00
Matiss Janis Aboltins
dc5d1174c7 ⬆️ upgrade some github actions (#3577) 2024-10-06 07:06:10 +01:00
Robert Dyer
cfedb8f822 Update rules page (#463)
Some minor updates to the rules page to keep it in sync with the current
UI:

- Updates the list of actions and fields so the order matches the UI.
- Adds missing `category` field to the list
- Mentions you can also append/prepend to `notes`

See:
https://deploy-preview-463.www.actualbudget.org/docs/budgeting/rules/
2024-10-05 20:19:54 -07:00
Joel Jeremy Marquez
33a7524cd7 [Mobile] Fix budget list on mobile auto selecting a budget file under the Switch budget file menu (#3574)
* Fix budget list on mobile

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

* Release notes

* VRT

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

* Mobile VRTs

* Fix mobile budget page

* Updated VRT

* VRT fix

* Update VRT

* [skip ci] Release notes

* Cleanup tests

* Fix VRT

* VRT

* Extend timeout

* Clean screenshots

* Updated VRT

* Category / group VRTs

* Mobile budget page menu VRT

* Updated VRT

* Prevous and next budget month tests

* Code Rabbit suggestions

* Feedback

* VRT

* Fix getSelectedMonth

* Fix selectedBudgetMonthButton locator

* Fix flaky tests

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

* release notes

* putting the package config back

* cleaning up

* add missing db files

* updates

* window state updates
2024-10-04 17:16:24 +01:00
Matiss Janis Aboltins
d27a135613 📝 update "how to cut a release" doc (#461) 2024-10-04 08:12:37 +01:00
Austin Pearce
d0caf9f521 fix yearly schedule templates (#3511)
Co-authored-by: Austin Pearce <austin@apearce.dev>
2024-10-03 11:49:21 -07:00
Ali Gradina
3f85aedd0b Marked files for translation (#3444)
* marked files for translation

* added release note

* fixed linting warnings

* 🐛 fix account filters being overridden (#3441)

* :electron: Reduce package size  (#3443)

* reduce package size of all packages

* release notes

* Update beforePackHook.ts

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

* Cleanup react aria packages and dedupe

* Release notes

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

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

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

* release notes

* fix name

* updating names to be more specific

* removing setloading

* feedback

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

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

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

* fix: csv import deduplication (#3456)

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

Closes #2272

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

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

* Release notes

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

* Fix #3214

* Fix rollover indicator

* VRT

* Fix typecheck error

* VRT

* Release notes

* VRT

* Update style

* Fix budgeted

* VRT

* VRT

* Revert VRT

* VRT

* Fix style

* Revert usePreviewTransactions

* Fix error

* Fix reports form submit handlers (#3462)

* Fix form submit handlers

* Release notes

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

* remove some old updater code

* remove old updater logic

* CSV import e2e tests (#3467)

* Fix React Aria Button hover styles  (#3453)

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

* Release notes

* Cleanup

* Update edit rule hover style

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

* Undo auto transfer notes + auto notes for cover

* Release notes

* Fix notes

* Fix notes undo

* Do not show clicked category on transfer or cover menus

* Fix typecheck error

* typecheck

* Fix removeCategoriesFromGroups

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

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

This reverts commit 5e12d4013a.

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

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

* replace deprecated file handler in electron

* release notes

* types eh

* types

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

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

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

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

* Update tooltip and themes with better visibility

* Rename merge request # into release notes

* rename release note

* update VRT

* tweak light theme

* dont put border on autocomplete menus

* update VRT

* tweak popover style

* simplify

* update VRT

* update VRT

---------

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

* fix modals on mobile BudgetTable (#3487)

* Fix privacy filter (#3472)

* Fix privacy filter

* Release notes

* Coderabbit suggestion

* VRT

* VRT

* Revert VRT

* VRT

* VRT

* VRT

* VRT

* Delete VRT

* VRT

* Revert VRT

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

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

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

* marked files for translation

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

This reverts commit 7336badffd.

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

This reverts commit 5cbadc41bb.

* Revert changes due to failed rebase

* removed import of t

* fixed lint warning

* added PayeeTableRow.tsx

* needed changes

* bugfix: pluralization

* variables adjustments

* removed doubled trans

---------

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

* Remove used release notes

* Upgrade @actual-app/web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-03 18:27:34 +01:00
Jonathan Fang
af19c9d239 Reorganizing documentation since SimpleFIN will be officially released #2 (#459)
- removed simplefin from experimental tab
- added mention of simplefin in bank-sync
- split bank-sync into gocardless and simplefin
- created dropdown for bank-sync
- proofreaded punctuation & image alignment in gocardless and simplefin
guides

Fixes https://github.com/actualbudget/docs/issues/452,
https://github.com/actualbudget/docs/pull/453 and fixes
https://github.com/actualbudget/docs/issues/454

I'm not sure why https://github.com/actualbudget/docs/issues/458 got
closed, so I'm making a new one here.

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-10-03 18:12:23 +01:00
Matiss Janis Aboltins
cfca359f68 🔖 (24.10.0) (#460)
- web: https://github.com/actualbudget/actual/pull/3545
- server: https://github.com/actualbudget/actual-server/pull/472
- docs: https://github.com/actualbudget/docs/pull/460

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
2024-10-03 18:06:57 +01:00
Matiss Janis Aboltins
9b7a79a01c 🔖 (24.10.0) (#3545) 2024-10-03 18:06:47 +01:00
Michael Clark
125510c981 🐛 Fix balance carryover arrow on Firefox (#3535)
* Update BalanceWithCarryover.tsx

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

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

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

* Update README.md

* Rename README.md to 449.md

* Update 449.md

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

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

* Release notes

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

* Release notes

* Update playwright.config.js

* Fix error

* Updates VRT

* VRT

* Revert VRT

---------

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

* Add test

* Add release notes

* Fix failing tests

---------

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

* chore: add PR release note

---------

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

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

* add to tracking

* note

* note

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

* Privacy mode: no layout shift when switching mode

* fix(Spending): update for latest PrivacyFilter

* refactor(PrivacyFilter): use CSS :hover

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

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

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

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

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

* feat: Add support for RevolutRevolt21 Bizum transactions

* test: Add RevolutRevolt21 bizum transactions tests

* chore: Add upcoming release note

* fix: Add missing bookingDate to tests

* fix: sort everything alphabetically
2024-09-26 09:56:50 +01:00
Muhammad Talal Anwar
9933d02139 docs: fix more typos (#456) 2024-09-26 09:14:22 +01:00
DirgoSalga
835b6987a7 Add custom handler for the German bank Rheinhessen Sparkasse to the GoCardless app (#454)
* Add custom handler for the German bank Rheinhessen Sparkasse to the GoCardless app.

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

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

Testing still pending.

* FIx linting errors and add release notes

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

Added the release notes file 454.md.

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

* Fix linting errors

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

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

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

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

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

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

* Update upcoming-release-notes/454.md

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

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

* Remove functions normalizeAccount and CalculateStartingBalance

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

* Correct linting error

Remove import of unsed variables.

---------

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

* Release notes

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

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

* Disable balance tooltip for mobile

* Fix lint error

---------

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

* add tests for bugfixes

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

* lint and release notes

* fix release note number

* lint fixes

* add missing file in previous lint fix

* fix typecheck and linting errors

---------

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

* release note
2024-09-25 23:03:46 +01:00
Tim
7e889300ef Add UncategorizedButton to mobile budget view (#3326) 2024-09-25 14:39:24 -07:00
Jonathan Fang
4a8425c40b Update community-repos.md to remove simplefin community in favor of official simplefin integration (#457)
remove simplefin community tool because simplefin has been integrated
officially
2024-09-25 22:03:09 +01:00
Matiss Janis Aboltins
c497d3a941 🧪 improve onboarding e2e test stability (#3503) 2024-09-25 21:56:44 +01:00
Tim Quelch
fe17c6ba75 Forcibly reload app from server when API is redirected (#3286)
* Add advanced setting to reload app from server

* Add change notes

* Automatically reload when API call is redirected

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

* Remove setting to reload

* Update release notes

---------

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

* add md file

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

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

Typo "Actual budget" to "Actual Budget"

* Create 3501

* Rename 3501 to 3501.md

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

* notes

* merge fixes

* legenditem

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

* Create 3491.md

* VRT

* Revert VRT

* Put pressed css on Page component

* Remove data-pressed

* Fix lint errors

* [chore] Update README

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

* Release notes

* Coderabbit suggestion

* VRT

* VRT

* Revert VRT

* VRT

* VRT

* VRT

* VRT

* Delete VRT

* VRT

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

* Rename merge request # into release notes

* rename release note

* update VRT

* tweak light theme

* dont put border on autocomplete menus

* update VRT

* tweak popover style

* simplify

* update VRT

* update VRT

---------

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

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

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

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

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

* release notes

* types eh

* types
2024-09-21 17:19:10 +01:00
Ruben Olsen Lærk
b7f7f49ca9 Added Link to UnRAID SSL setup in /docs/install/index.md (#451) 2024-09-21 13:58:08 +02:00
Matiss Janis Aboltins
a1bc66b10a ♻️ (synced-prefs) separate metadata and local prefs out (#3458) 2024-09-20 20:01:51 +01:00
Matiss Janis Aboltins
4485a631cd Revert "CSV import e2e tests (#3467)" (#3474)
This reverts commit 5e12d4013a.
2024-09-20 19:48:10 +01:00
Matiss Janis Aboltins
25a4041958 🐛 (reports) deleting custom report should remove it from the dashboard (#3469) 2024-09-20 08:11:20 +01:00
Joel Jeremy Marquez
e6bf6da381 Undoable auto transfer notes + auto notes for cover (#3411)
* Undo auto transfer notes + auto notes for cover

* Release notes

* Fix notes

* Fix notes undo

* Do not show clicked category on transfer or cover menus

* Fix typecheck error

* typecheck

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

* Release notes

* Cleanup

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

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

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

* Fix rollover indicator

* VRT

* Fix typecheck error

* VRT

* Release notes

* VRT

* Update style

* Fix budgeted

* VRT

* VRT

* Revert VRT

* VRT

* Fix style

* Revert usePreviewTransactions

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

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

* added release note

---------

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

* release notes

* fix name

* updating names to be more specific

* removing setloading

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

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

* release notes

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

* Release notes
2024-09-15 15:10:52 -07:00
Ruben Olsen Lærk
0b8f267f9b Reorganising the menu items (#429)
1. Moved _Filtering_ from _Reports & Filters_ to _Accounts &
Transactions_ as it's are more natural place to have the filter
documentation.
2. Renamed _Reports & Filters_ to just _Reports_
3. Moved _Schedules_ out of _Budgeting_ to better reflect the sidebar
items in the program.
4. Based on feedback from Michael Burnside on Discord, moved the
envelope budgeting docs higher up in the menu. What he wrote on Discord:
_I think the Envelope Budgeting doc should be moved up in the list. It's
important to understand the method and the "Why" first, so that users
can make sense of the tool and the "how". I know there's a link at the
top of the Starting Fresh article, but people tend to go top to bottom
in the contents (if they're reading at all)._
5. Moved _A Tour of Actual_ out of _Getting started_ as it's marketing
and not getting started with the program.
6. Moved _Starting Fresh_ higher up to differentiate between the tech
stuff and the why stuff.

**There is no change in content - just trying to make the menu a better
place to navigate**

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-09-15 13:50:28 +02:00
Ali Gradina
c5193b6d43 Marked files for translation (#3430) 2024-09-14 21:41:10 +01:00
Ruben Olsen Lærk
1c1531ec12 Joint account streategy changes (#442) 2024-09-14 22:38:11 +02:00
Michael Clark
9c30602230 Update notes on self signed certificates for desktop app (#450)
Notes on mkcert when used with desktop app. 

Should resolve future questions like this one:
https://discord.com/channels/937901803608096828/1281484103580909621/1284432537682317365

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
2024-09-14 15:08:28 +02:00
Dev Prakash Sharma
84ecc7751e [WIP] Updated the local installation file (#388)
This PR brings the following changes in the
https://actualbudget.org/docs/install/local page.

<img width="1135" alt="image"
src="https://github.com/actualbudget/docs/assets/44609609/0ec1833f-360f-474e-9f0a-337c7d003894">

- Updated the content structure of the entire page.
- Removed unnecessary information and content
- Removed superficial information.

---------

Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
Co-authored-by: Robert Dyer <rdyer@unl.edu>
2024-09-14 07:40:02 +02:00
Neil
7e8dfcb691 Add web app install docs (#405)
Adding a section to install documentation that explains how one could
use the web app for a quick start without sync.
2024-09-14 06:56:55 +02:00
Matiss Janis Aboltins
183c4b25a9 (dashboards) ability to save cash-flow report filters/date-range (#3417) 2024-09-13 19:40:10 +01:00
Ali Gradina
933804e836 Translation for IncomeHeader, BalanceMenu & BudgetMenu .tsx (#3426) 2024-09-13 18:25:57 +01:00
NickFR
0a59f793bf Translation: desktop-client/src/components/budget/BalanceWithCarryover.tsx (#3352) 2024-09-13 18:07:00 +01:00
wdpk
f13cc304ed basics of text style guide for consistent tone when writing. (#398)
add some basic guidelines about how to write the docs so a shared voice is heard when using the documentation.

---------

Co-authored-by: Zeus\Herb <herb@win.dows>
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-09-13 08:36:16 +01:00
Odd Stråbø
bf0a6bad5c Remove compose down from update instructions (#443)
docker compose down is not needed, and running it before pulling updated
images causes longer service downtime than required.

Simply running `docker compose up -d` after `docker compose pull` will
recreate all containers that changed (by either image version or other
settings in the compose file).
2024-09-13 06:14:52 +02:00
Ali Gradina
cfa9ac09d7 Translation for MonthCountSelector, index, SidebarCategory & SidebarGroup Component (#3363) 2024-09-12 20:13:31 +01:00
molnarti
fe8532578d Update bank-factory.js (#452) 2024-09-12 19:27:39 +01:00
Joel Jeremy Marquez
420aad0878 Final PR for react-aria-components Modal migration (#3413)
* Final PR for react-aria-components Modal migration

* Complete manager modals migration

* Release notes

* fix lint

* Apps full height

* Fix lint error

* VRT

* Centralize providers

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

* notes

* typecheck fixes

* fix bugs and UI changes

* fix error for invalid time

* change budget button wording

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

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

* Fix account menu test

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* VRT

* VRT

* React Aria Button - All except filters and autocomplete

* Fix typecheck errors

* Fix typecheck error

* Update

* Fix typecheck error

* Fix border

* VRT

* Revert MobileForms and TransactionEdit

* VRT

* VRT

* Revert VRT

* React Aria Button - Filter buttons

* Release notes

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

* release notees

* remove unneeded console log

* promise-retry instead of my own

* tiny bit more info

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

* Fix account menu test

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* VRT

* VRT

* React Aria Button - All except filters and autocomplete

* Release notes

* Fix typecheck errors

* Fix typecheck error

* Fix button links

* Update

* Fix typecheck error

* Fix link button variant

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error

* Fix border

* Fix mobile accounts page

* VRT

* Fix playwright config

* Revert MobileForms and TransactionEdit

* VRT

* Remove borderRadius

* Fix add account button

* VRT

* Revert VRT

* Fix tests

* Fix Cover and Transfer modals

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

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

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

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

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

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

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

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

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

* add release notes

* fix release notes

* update visual tests
2024-09-07 20:08:04 +01:00
Jonathan Fang
99d0b57e0e Added info on how Pikapods updates (#446)
Added information on how Pikapods updates for each monthly release,
including how this works with desktop clients.
2024-09-07 20:00:33 +01:00
Michael Clark
407e3143eb :electron: Prevent keyboard shortcuts modal when entering shortcut into editable field (#3389)
* check input element is focused on before triggering keyboard shortcuts modal

* release notes

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

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

* Remove unused import

* Release notes

* VRT

* Fix typecheck error

* Rename

* Fix typecheck error

* Fix category name

* Update to notes to reassigned

* Append auto transfer notes to month notes

* Update release notes

* VRT

* VRT

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

* realease note

* translate 'arial-label' text

* translate 'text'

* fixing 'text' translation

* <Trans> component for HTML tag

* Lint

---------

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

- change underlinedText style to use borderBottom
- disable text selection

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

* Fix typecheck error

* Use react-aria useLongPress

* Category transactions batch updates

* Remove undo notification title

* Fix types

* Fix notes undo notification

* Move SelectedProvider to TransactionListWithBalances

* Notification inset + reuse useTransactionBatchActions

* Allow clicking action bar when notifications are present

* VRT

* VRT

* VRT

* VRT

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

* Release notes

* Transfer and cover undo notification

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

* chore: release note
2024-09-04 12:56:21 -04:00
Mike Bishop
36ecb67bd3 [WIP] Spelling of "Synology" (#448) 2024-09-04 07:23:19 -07:00
Matt Fiddaman
8a4a9ba083 fix incorrect hook usage in #3277 (#3356)
* fix incorrect hook usage in #3277

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

* add release note

* better handling of plural

* clean plural use

* add review suggestions

* more review suggestions

* change to t() syntax

* use basic list format

* eslint no longer needs disabled

* Fix interpolation of payees list.

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

* fix linter

* fix typecheck

* tighten the types

* move to hook

* memoize the hook

---------

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

* release note

* fix lint

* fix quotes

* feedback

* Update 3277.md
2024-09-03 19:20:55 +01:00
Michael Clark
a99f9c2e7a Point windows app download to Windows Store (#445)
Updates the Windows app download link to point to the Store
2024-09-03 19:16:32 +01:00
dependabot[bot]
0760583359 build(deps): bump micromatch from 4.0.7 to 4.0.8 (#447)
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8)

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

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

* Remove used release notes

* Upgrade actual-web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-03 18:21:51 +01:00
Matiss Janis Aboltins
107f3fa105 🔖 (24.9.0) (#444)
- web: https://github.com/actualbudget/actual/pull/3348
- server: https://github.com/actualbudget/actual-server/pull/444
- docs: https://github.com/actualbudget/docs/pull/444

---------

Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
2024-09-03 18:04:11 +01:00
Matiss Janis Aboltins
44375e72ad 🔖 (24.9.0) (#3348) 2024-09-03 18:02:45 +01:00
Michael Clark
6454c10e63 🐛 Fix tooltip when using touch devices (#3342)
* fix tooltip when using touch devices

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

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

Added NORDEA_NDEADKKK (Nordea Personal Denmark) to the list BANKS_WITH_LIMITED_HISTORY

* Create 340.md

* Rename 340.md to 440.md

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

* Update realease-notes

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

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

* sake...

* working but need to specify rootca.pem

* works

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

* remove console logs

* initial setup for adding cert

* caps

* comments

* fix ts strict

* rewrote it

* release notes

* remove unneeded

* https no polyfill

* removing the cert reference if it is not found

* moving full stop
2024-08-28 21:39:14 +01:00
Matiss Janis Aboltins
ae608f0cb8 🐛 (dashboards) add back spending report if dashboards feature is not enabled (#3323) 2024-08-28 21:02:47 +01:00
Matiss Janis Aboltins
f1c0d0b8a6 🐛 fix 's' hotkey not working in transaction table (#3324) 2024-08-28 20:21:24 +01:00
wdpk
bfe5414ec0 Update docs to be time-neutral by removing outdated references, update related screenshots to where these issues occured (#396) 2024-08-26 23:36:16 +01:00
Matt Fiddaman
d613a6be6e 🧹 optimise GoCardless bank sync to use fewer api calls (#436)
* don't fetch balance from gocardless unless it's needed

* release note

* refactor into common function

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

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

---------

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

* lint

* release note

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

* release note

* remove redundant tests

* tcrasset feedback
2024-08-25 17:53:16 +01:00
Robert Dyer
554882d0a8 Add note about new #community-projects Discord channel. (#441)
And fixes a typo.
2024-08-25 14:40:41 +01:00
João Melo
f2ca574d7e Add actualbudget home assistant integration link (#439) 2024-08-24 13:25:01 +01:00
lelemm
1750cd9081 Filter fix when alternating all <-> any (#3278) 2024-08-24 09:49:36 +01:00
lelemm
7769d0303e "has tags" filter (#3290)
* new tag filter

* fixes

* release notes

* fixes for the rules modal

* more fixes

* linter

* visual regression fixes

* review suggestions

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

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

* windows doesnt need to know about mac build

* teamid env var instead of config val as per docs

* for testing purposes only

* probably wont work

* yet, didnt work

* try this

* update notarize

* removing test code

* add release notes
2024-08-22 17:43:51 +01:00
Robert Dyer
1b70e59bde Apply regular expression conditions to imported transactions. (#3287) 2024-08-22 17:25:16 +01:00
Robert Dyer
b48d256ec4 Translation: desktop-client/components/sidebar (#3302) 2024-08-22 17:23:23 +01:00
Robert Dyer
9c0e6a307b Translation: desktop-client/components/reports/graphs (#3299) 2024-08-21 20:41:25 +01:00
Robert Dyer
81b7305f5f Add FAQ entry on how to add GoCardless bank to limited history list. (#435)
Provides steps to contribute to the GoCardless list of banks with
limited (90 day) historical data.
2024-08-20 12:36:53 -07:00
Michael Clark
3e5ce72e27 :electron: Packaging different architectures and installers for windows (#3185)
* packaging different architectures for windows

* appx for the windows store app hosting

* remove unneeded applicationid

* adding windows store assets

* adding images

* appx added to artifacts

* add appx to release

* remove override build params

* being specific about the mac build - default is dmg

* are these all needed.. Seems so

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

* moving appxs to a different artifact for smaller download

* Update electron-pr.yml

* update version

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

* add release note

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

* Fix spending card reading wrong month

* Revert "Create 2881.md"

This reverts commit de26f690e8.

* Create 3295.md
2024-08-20 07:38:01 -07:00
Matiss Janis Aboltins
db4b504e53 typescript: migrate cards from jsx to tsx (#3285) 2024-08-19 18:07:20 +01:00
Matt Fiddaman
8d4dbbf5f2 🧹 remove unused accountMetadata GoCardless API call on sync (#435) 2024-08-19 01:01:34 +01:00
Tobias Diez
7e2439f781 [WIP] Clarify post-processing in add/importTransactions (#438)
Clarify that `importTransactions` runs rules
2024-08-18 16:14:02 -04:00
Tom Crasset
b8d2797259 Add integration tests for remaining app-sync.js endpoints% (#425) 2024-08-18 21:11:01 +01:00
Matiss Janis Aboltins
d6afc85a8c adding feedback links besides the feature flags (#3283) 2024-08-18 11:17:42 +01:00
Julian Dominguez-Schatz
ee21155d1a Display splits in previews (#2923)
* Display splits in mobile previews

* Display splits in desktop previews

* UI fix: hide checkboxes on preview child transactions

* UI fix: show notes on preview transactions

* Add release notes

* Update vrt for mobile padding fix

* Fix status display

* Collapse split previews by default

* PR feedback: fix issues with split payee

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

* release note

* fix unnecessary check, trans.amount is never set
2024-08-17 16:05:13 +01:00
Tom Crasset
c16a8faa3f add integration tests for the /sync endpoint (#423) 2024-08-17 15:21:03 +01:00
Michael Clark
96f480ef3c Adding instructions for the windows store release (#436)
![image](https://github.com/user-attachments/assets/c3c561d7-b0ee-4ea6-81ee-d19d664099ca)
2024-08-17 13:27:09 +01:00
Matt Fiddaman
4ce7f55e0c add stale workflow update from actual (#430) 2024-08-17 12:34:40 +01:00
dependabot[bot]
574448ff3b build(deps): bump axios from 1.7.2 to 1.7.4 (#424)
Bumps [axios](https://github.com/axios/axios) from 1.7.2 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.2...v1.7.4)

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

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

part of terms for libre plan

* Create 3271.md

* add link to internationalization section of documentation
2024-08-16 19:47:54 +01:00
Julian Wachholz
583dd24423 Remove namespace from i18n example (#434)
Actual Budget does not use namespaces in the translations.
Also adds additional section about handling interpolation using the
<Trans> component.
2024-08-16 16:44:04 +01:00
Robert Dyer
4c192d7e1e Translation: desktop-client/components/filters (#3270)
* Translation: desktop-client/components/filters

* add release note

* fix linter

* add missing t definition
2024-08-16 13:35:57 +01:00
Julian Wachholz
6772a1c7d1 Add i18n documentation (#431)
Initial draft for contribution guidelines on how to prepare Actual for
i18n and l10n.

Please do add your feedback!
2024-08-15 09:54:33 -07:00
Tom Crasset
baf04a4d48 [Maintenance] improve testing utils and add delete-user-file test (#421)
* improve testing utils and add delete-user-file test

* remove linting errors

* add release notes

* match npm scripts naming style

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

* add raw middleware for /sync

---------

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

* release note

* suggestions from joel-jeremy

* useMemo and better types

* add change to mobile

* fix build

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

* add release note

* support prepending

* fix linter

* update release note

* fix typecheck error

* update VRT test code

* revising VRT code

* select by row

* fix missing delete button

* fix VRT tests

* fix linter

* empty commit for CI

* avoid 'undefined' appearing in notes

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

* Set focus on more modals.

* focus mobile transaction edits

* add release note

* fix linter

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

* Remove default `any` types

* Add release notes

* Fix lint

* Attempt to fix unrelated test error

* fix: changed type name

* More correct types

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

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

* Fixed linter warning

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

---------

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

* Update upcoming-release-notes

* Update 3257.md

* Update ModeButton.tsx
2024-08-14 21:45:59 +01:00
wdpk
49e25effc0 update rules page w/ link to regex tutorial (#422)
many people may not know what 'regex' is. now matches filters page. not
sure why i didn't update both places when i got the review last time,
sorry!

---------

Co-authored-by: Robert Dyer <rdyer@unl.edu>
2024-08-14 19:51:20 +01:00
Matiss Janis Aboltins
fa6cc26416 ♻️ cleanup iterableTopologicalSort feature flag (#3262) 2024-08-14 19:42:04 +01:00
Robert Dyer
a1ca871b24 Allow escaping tags with double ##. (#3246)
* Allow escaping tags with double ##.

* add release note

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

* Add release notes

* No backwards-incompatible changes

* Update tests to reflect API changes

* PR feedback: standardize on id for deletes

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

* Add release notes
2024-08-14 13:27:34 -04:00
Robert Dyer
7f8f6ee11b Make note/link about SimpleFIN in the bank docs page. (#432)
This adds a note on the Advanced/Bank Sync page linking to the SimpleFIN
page:

<img width="642" alt="image"
src="https://github.com/user-attachments/assets/82acba25-acdb-42f9-b503-1d8ee61b123c">
2024-08-14 07:12:45 -07:00
Michael Clark
89b096aa65 :electron: Fix export on mac (#3250)
* fix export on mac

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

* Release notes for 3251.

* Fix release notes authors.
2024-08-14 10:13:07 +01:00
Michael Clark
22d9054d8a Update Mac links on Downloads page (#430)
![image](https://github.com/user-attachments/assets/85059ade-8d5f-433c-9fb0-d2455743da4b)

**Possible improvement for later:** we could detect the OS the user is
using and filter the list down so there aren't so many options.
2024-08-13 14:43:23 +01:00
Alex Walker
9c17d55e0d Extract out note template logic from goaltemplates.ts, refactor and add unit tests (#3221)
Signed-off-by: Alex Walker <walker.c.alex@gmail.com>
2024-08-13 06:15:51 -07:00
Julian Dominguez-Schatz
411a6791b2 Fix transfer category in temporary transactions (#3239)
* Fix transfer category in temporary transactions

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

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

* add logging

* removing old way

* release notes

* adding some logs in to test mac build

* repent satan

* i caste yeee oooott sinner

* derp

* hmmm<

* forcing nodegyprebuild

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

* hmm

* dunno

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

* give up

* rebuild

* merge asars fasle

* update package

* manually do it ffs work damnit

* remove the cmd

* dont rebuild cause i build it manually

* dafuq is this, two bettersqlite modules installed huhhhhh

* test

* does this work?

* bloody hell

* couple more logs

* test this out

* arch in name

* adding the rebuild step back into first build

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

* having a laugh

* tidying up

* release notes

* move package up a bit

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

* vrt

* Fix account menu test

* vrt

* vrt

* VRT

* VRT

* React Aria Button - Reports page

* Release notes

* Fix typecheck error

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

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

* Floating action bar

* Styling

* Add functionality

* Fix typecheck error

* Release notes

* Undo notifications

* Fix schedules and update transaction delete confirmation message

* Use react-aria useLongPress

* Bulk edit amount display

* Themes

* Do not clear on batch update

* useUndo hook

* Fix typecheck error

* Update useUndo

* Fix typecheck error

* Handle batch deleted transactions

* useMemo

* Make onClearSelectedTransactions mandatory

* Extract FloatingActionBar to a separate component

* Require onAddSelectedTransaction and onClearSelectedTransactions if there are  any selectedTransactions

* Fix schedule link

* Undo notification timeout

* Use useSelected

* Fix typecheck error

* Category transactions batch updates

* Remove undo notification title

* Fix types

* Fix notes undo notification

* Move SelectedProvider to TransactionListWithBalances

* Remove NewPayeeEntity

* Disable support for amount batch edit for now

* Fix lint error

* Notification inset + reuse useTransactionBatchActions

* Always show notification close button regardless if sticky or not

* Allow clicking action bar when notifications are present

* Fix typecheck error

* Remove inset on addNotification calls

* Use PressResponder

* Fix mobile transaction border

* VRT

* VRT

* VRT

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

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

Fixes #3240

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

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

* Add changelog file

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

---------

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

* Add release notes

* Don't enable `strictNullChecks` for now
2024-08-11 16:52:35 -04:00
Matiss Janis Aboltins
64a254b12d 📝 highlight that Actual does not have a HTTP API (#428) 2024-08-11 20:54:28 +01:00
Oleg Andreych
d8ebce866f [WIP] Fix typo in the budget.md (#427)
Changed text accordingly to menu item's title.
2024-08-11 12:51:19 -07:00
Julian Wachholz
8142dd1ec9 feat: introduce i18n framework (#3036)
* feat: introduce i18n framework

* Incorporate review feedback

* Patch demo

* remove unnecessary arguments

* Consistently use t() function

* Fix typing issue

* Fix e2e tests

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-08-11 15:37:33 -04:00
pmoon
2afd6967b4 Fix reconcileTransactions Invokation To Use strictIdChecking (#3232) 2024-08-11 18:37:20 +01:00
Jakob Petsovits
eec5fbb1cc Return early from SimpleFIN /transactions if the account needs attention (#413) 2024-08-11 17:59:48 +01:00
Robert Dyer
fe922ec22e Highlight current month in budgets. (#3111) 2024-08-10 20:00:46 +01:00
Ruben Olsen Lærk
7d0cc155b1 [WIP] GoCardless clarification on number of requests on the free tier + alt-text of images + fix a step number (#426)
1. Added information about the number of syncs on the free tier (which
is 50).
2. Added link to documentation on how GoCardless counts connections.
3. Added alt-text to all images.
4. Fixed a typo in one of the numeration of the steps in how to link a
GoCardless account to AB - step 8 was repeated twice.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-08-10 07:50:30 -07:00
pmoon
30a70f5627 fix(#2562): Prevent transaction deduplication for imported transactions (#2991)
* fix(#2562): Prevent transaction deduplication for imported transactions (#2770)

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

* chore(): eslint fixes

* chore(): Add release note file

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

* chore: Rename release note, add strazto as author

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

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

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

* test(loot-core): fix linter

---------

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

* Add Handling For goCardless Fuzzy Search

* Rename Release Note File

* Rename Release Notes File

* Fix UseFuzzySearchV2 After Merge Conflict

* Update Fuzzy Search Query To Include New Columns

* Update useFuzzyMatchV2 Variable To useStrictIdChecking

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

---------

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

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

* Work on 'all accounts' page.

* Update help modal

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

* add logging

* removing old way

* release notes
2024-08-08 20:45:57 +01:00
Robert Dyer
baba070baf Update report budget docs (#425)
First, the way to enable it has changed so that is updated.

Second, the UI now calls it "tracking" and "envelope" budgeting, so the
text and filenames were updated to reflect the new "tracking" name.
2024-08-08 20:27:23 +01:00
Robert Dyer
b74f0f2982 Show better error if SimpleFIN account cant be found. (#412) 2024-08-08 20:26:36 +01:00
Hunter Haufler
dc492dba35 Add Credit Card Documentation (#419)
Add documentation on how to fix carrying over debt from credit cards
when importing from nYNAB.
2024-08-08 09:13:40 -07:00
Michael Clark
6a85f84565 :electron: Fix gocardless "Linking account" integration (#3212)
* fix gocardless call - forked process didnt know its origin

* add release notes

* mamma mia

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

* Fix lint

* Add release notes

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

* notes
2024-08-06 20:36:45 +01:00
Matiss Janis Aboltins
2c1967d788 ♻️ (reports) add 'showTooltip' prop to various graphs (#3200) 2024-08-06 20:31:35 +01:00
Ruben Olsen Lærk
ccf3dd7781 Converts Norwegian Trumf Visa PDF invoice to an AB friendly CSV file (#423)
Added link to converter from Trumf Visa PDF invoice to Actual Budget
friendly CSV import file.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-08-06 18:53:33 +01:00
rodriguestiago0
2f272b9733 Add documentation for holdBudgetForNextMonth and resetBudgetHold (#420)
Docs for [PR](https://github.com/actualbudget/actual/pull/3140)
2024-08-06 18:53:06 +01:00
Jonathan Fang
c1fedf07b6 Update fly.io pricing information (#424)
Fly.io no longer offers free cloud hosting; it is pay as you go with
actual usage billed monthly. I calculated between Pikapods $1.4 per
month and Fly.io's $1.5 per month and chose Pikapods since it's one
click and it's cheaper. If there's anything wrong in my calculations,
please let me know.
2024-08-06 18:49:50 +01:00
Avi-Lance
af2197cfe1 Added Cost Optimization Section for Fly Install Instructions (#418)
Added Cost Optimization Section talking about enabling the auto start
and auto stop instance options in fly.toml
2024-08-06 18:49:24 +01:00
Spencer Murray
798aee78c3 Identify Payee and Notes fields by name if they exist in CSV import (#3203)
* Use csv fields with name payee/notes as defaults for Payee/Notes in getInitialMappings

* Add release notes

* Run lint

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

* Release notes

* vrt

* Fix typecheck error

* Fix account menu test

* Fix typecheck error

* Fix typecheck error

* Remove unnecessary aria-labels

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* Fix typecheck error

* Fix lint error

* VRT

* Remove default :focus on Button2

* Add Button2 defaultClassName

* Update className

* Fix typecheck error

* Cleanup

* VRT

* Fix typecheck error

* Fix typecheck error

* Fix typecheck error

* react-aria Button for budget pages

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

* Release notes

* vrt

* Fix typecheck error

* Fix account menu test

* Fix typecheck error

* Fix typecheck error

* Remove unnecessary aria-labels

* Fix payee icons and category notes

* vrt

* vrt

* Fix notes button

* Fix typecheck error

* Fix lint error

* VRT

* Remove default :focus on Button2

* Add Button2 defaultClassName

* Update className

* Fix typecheck error

* Cleanup

* VRT

* Fix typecheck error

* Fix typecheck error

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

* Add test for goals schedule template

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

* notes

* revert cashflow change

* merge fixes

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

* note

* tests

* remove trivial test

* more tests

---------

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

* Add change note

---------

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

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

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

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

* rename method

* array.some instead of for loop

* release note

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

* Add basic spreadsheet typing structure

* Move to different module

* Add account typing

* Add release notes

* Fix lint

* Remove unneeded diff

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

* Add release notes

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

Closes #3079

* Feedback: overfloww auto

* fix modal scrollbar style

* dont need to spread

* lint 😞

* Update 3161.md

* adding width 100% to inputwithcontent

---------

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

* Fix notes field for pendingg transactions

* Release notes fix

---------

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

* release notes

---------

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

* fix formatting

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

* notes

* Add data for last month a year ago

* Adjustments for save button

* spending card fix

* notes

* fix typecheck

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

* release note

* fix long goals over multiple months
2024-07-29 23:49:25 +01:00
bobokun
4ef9dc11e3 Move ActualTap to ActualTap-py (#413)
The current Actual Tap repo is now archived and developement has been
moved to a new repo
2024-07-29 22:03:34 +01:00
Jonathan Fang
70854329c2 Update reports.md to fix typo (#411)
typo from "two built in report" to "two built in reports"
2024-07-29 22:01:34 +01:00
Jonathan Fang
a214ad84f5 Update custom-reports.md for typo (#412)
correcting typo from "reports available" to "reports are available"
2024-07-29 22:01:10 +01:00
Matiss Janis Aboltins
6653dca776 🐛 (modals) remove focus outline (#3160)
Closes #3141
2024-07-29 22:00:27 +01:00
Joel Jeremy Marquez
77ba15f54c Fix local playwright reporter config (#3158)
* Fix local playwright reporter config

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

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

* Release notes

* VRT

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

* release notes

* simpler solution

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

* add release notes

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

* Release notes

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

* Update accounts screenshots
2024-07-27 16:44:14 +01:00
Matiss Janis Aboltins
26a591f07f 🐛 add missing hover cursor to new button component (#3142) 2024-07-27 16:41:59 +01:00
Matiss Janis Aboltins
48c9efb354 📝 update the API docs information (#414)
Removing some outdated information. The API package has been available
for a while already.
2024-07-26 21:08:49 +01:00
Robert Dyer
fe8851c797 Fix running balances thick header. (#3082)
* Update running balances width to display large numbers.

* add release note

* update width

* update width

* Fix running balances thick header.

* add release note

* fix alignment

* fix lint

* dont make header clickable

* refactor so HeaderCell can be unclickable
2024-07-26 12:07:10 -07:00
youngcw
3e481d2850 add section for goal template directive (#401)
This adds the description about how a `goal` template line works with
some examples.
Also some minor tweaks to the page

matches actualbudget/actual#3012
2024-07-26 10:21:20 -06:00
youngcw
511f677ae4 [Goals]: Add a long term goal template (#3012)
* update the parser

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

* fix apply budget

* un change

* note

* lint

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

* add long goal option to the gui and db

* note, lint

* fix cleanup

* fix

* make mobile work, lint

* fix bindings

* more proper

* lint

* fix single category run

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

* lint

* more lint

* fix check when no template exists

* rearrange to get around the issue of inconsistent colors

* lint

* typecheck

* add field to aql schema

* fixes

* cleanup

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

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

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

* notes

* rerun checks

* add time

* tooltips

* change entity to string

* lint fix

* adjust defaults

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

* notes

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

* Add release notes file

* Correct tag

* Remove unnecessary callback

* Linting

* Apply same strategy on reportcomponents

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

* notes

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

* Payees tab now takes into account diacritics

* Category Autocomplete now ignores diacritics

* Schedules filter now ignore diacritics

* Added release note

* Fixed type error

* Added normalisation to manage rules filter

* Added normalisation to $like operator

* Added normalisation function to loot-core

* Fixed type error & added normalisation to notlike

* Fixed unit tests

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

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

* Create 3113.md
2024-07-21 15:27:13 -04:00
Matiss Janis Aboltins
30a47b48df 📝 update core contributor list (#410) 2024-07-21 18:38:31 +01:00
Matiss Janis Aboltins
9a85a72089 🔧 ping WIP PRs that have been inactive for a week (#3107)
* 🔧 ping WIP PRs that have been inactive for a week

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

* Show abbreviated payees in split payee section

* Update vrt

* fix: missing transfer icon

* Add release notes

* fix: update vrt again

* bugfix: failing edge cases

* fix: stale test

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

* Fix imports

* Use composition

* Fix typecheck and lint errors

* VRT

* Fix schedule details modal header

* Fix typecheck error + VRT

* Fix typecheck error

* Release notes

* Update release note

* Fix props

* Update modal props

* useModalState hook

* VRT

* VRT

* Fix typecheck error

* Fix modal close

* VRT

* Fix test

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

* add button in payee to mark as favorite

* cleanup

* minor fixes

* add release notes and make favorite optional

* fix TransactionsTable test

* lint and release notes

* rename section, resort list to ensure both are sorted

* don't show common, move bookmarked to menu

* add a limit on adding common payees

* linting

* reduce to 5 commonly used payees by default

* linting

* more linting

* update migrate timestamp

* more linting

* fix api name, bump migrate timestamp

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

---------

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

* Add comment, early handle 5 character case

* Add release note

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

* use number format preference for `BarLineGraph` ticks

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

* prevent `numberFormatConfig` overwrite

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

* add release note

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

* README

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

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

* refactor, zero-amt parents and add split_amount

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

---------

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

* add release note

* fix linter

* change shortcut

* change hotkey

* fix lint

* add budget shortcuts

* update help page

* fix linter

* add privacy filter hotkey p

* update help modal

* fix deps

* slash the zero

* bound the month picker

* change privacy shortcut to ctrl+p

* remap keys to ctrl

* add select all hotkey

* fix linter

* change add hotkey to T

* update help modal

* resize help modal

* fix linter

* shrink modal size more

* change budget reset behavior

* change privacy to shift+ctrl+p

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

* Handle missing ValDt in camt

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

* Release notes

* Remove tabIndex

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

* Release notes

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

* Release notes

* Update release notes

* Fix typecheck error

* Remove aria labels

* Apply suggestions from code review

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

* Remove aria-labels

* Remove aria-label

---------

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

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

* add release note

* update width

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

* add release note

* fix linter

* fix typecheck

* fix linter

* use component syntax for GroupHeading

* use component syntax for Shortcut

* fix linter

* use component syntax for KeyIcon

* refactor to support different dialogs

* show different help based on current page

* fix linter

* reword help

* capitalize letters

* show cmd on mac

* stop event propagation

* dont show if a modal is already open

* remove unused import

* rename modal

* move where location check happens

* dont stop event

* allow typing '?' in inputs

* better filter

* extract function

* fix linter

* dont show if filter popover is visible

* fix linter

* fix wrong shortcut, support SHIFT

* fix linter

* fix conditional
2024-07-15 08:06:09 -07:00
Michael Clark
16e887c917 :electron: Build electron for Mac Universal arch (#3015) 2024-07-13 22:03:57 +01:00
Oskar
145659b256 Add gocardless support for easybank (Austria) (#396) 2024-07-13 19:54:52 +01:00
Tom Crasset
572033debe migrate BudgetList to typescript (#3026) 2024-07-13 18:02:01 +01:00
Michael Clark
b85f9102ce :electron: Convert window-state.js ➡️ window-state.ts (#3027) 2024-07-13 13:05:42 +01:00
Yusef Ouda
942aebedd0 fixes alignment of notifications on mobile to be centered (#3046) 2024-07-13 12:45:51 +01:00
Ruben Olsen Lærk
4356a23f9c Revamp of A tour of actual (#402)
The current Tour was lacking for people curious about what Actual looks
like, without going into "full teaching manual mode".

What I have done:

- Consistent screenshots
- Added some explanatory text and links to the actual manual pages

I am fully aware that there is a fine line between some of these pages
and manual pages.

Anyway - we should now have something to show the YNABers and MINTers of
the world :-)

Ideally, we should have a video introduction as the "tour" - but given
how much change we have in the program, this would kill the poor guy/gal
who wants to maintain such a video.

PS: I go on vacation on Saturday July 13th - so any changes I am not
able to do after that time.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-07-12 13:42:02 -07: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
rodriguestiago0
0646689266 [WIP] Add actual budget backup to community projects (#407) 2024-07-12 08:13:34 -07:00
Robert Dyer
ba2f767f83 Add getAccountBalance() API documentation (#403)
Docs for https://github.com/actualbudget/actual/pull/2930.
2024-07-12 08:12:37 -07:00
Matt Fiddaman
c5c5d55782 Add mergePayees to the API reference (#404) 2024-07-12 08:04:09 -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
Robert Dyer
aef82dee24 Add API docs for getLocalbudgets() and getRemoteBudgets(). (#377)
API docs for https://github.com/actualbudget/actual/pull/2928.
2024-07-11 13:18:51 -07:00
Ruben Olsen Lærk
3c2a7e8bf6 Added various links to the Community Projects page (#406)
- Added links to the My Edenred Portal bank sync and Actual Task repos.
- Moved some links from Others into Various utilities to enhance
Actual's functionality, as I expect we will get more and more of these
utilities available. Let's keep Other for pure non-functional technical
stuff

Original posting:
https://discord.com/channels/937901803608096828/1027831756545609789/1260289369139580988

I did source GitHub for other interesting projects and have added those
also.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-07-11 13:16:03 -07:00
DJ Mountney
4a0e2ea306 Remove Trafico workflow in favour of our new GitHub bot (#3023)
* Remove Trafico workflow in favour of our new GitHub bot

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

* add release note

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

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

* add release note
2024-07-10 07:05:20 -07:00
Austin Pearce
f9014f0e19 Fix mobile payee creation (#3019) 2024-07-09 16:06:25 -07:00
youngcw
1211b086d7 Add a download page to the website (#359)
This is a super rough start for a download page for the website. Please
make contributions since this is pretty bad so far. Can you tell Im not
a front end dev? 😆

In order for the links to always work we either need to:
* Modify our electron build to not add versions to the filename
* Add some way for the page to know the current version and use that in
the requested filename

For now they are hard coded with the version so they wont work next
month unless something changes.

For now the OS logos are colored so that they can be seen in both light
and dark modes. Im sure there is a better way than making them purple.
2024-07-09 11:47:51 -07:00
Ruben Olsen Lærk
0fca01f59e Activating HTTPs - header levels was wrong - no content has been changed. (#400) 2024-07-09 19:45:51 +01:00
Ruben Olsen Lærk
2ba87486a6 Roadmaps for new users (#395)
I have added a _Roadmaps for new users_ to help people decide on their
next step. The roadmaps are primarily aimed at non-technical people.

I saw the reason for doing this after getting a few questions for
non-techies people I know about "ehhh... where do I start?" ... "I did
install the desktop software, how to get this into my cell phone", etc.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-07-09 11:36:13 -07:00
Julian Wachholz
e59f5c9af8 Add apostrophe-dot number format (#2982) 2024-07-09 19:14:38 +01:00
Matt Fiddaman
3661c1585e Move bank sync payee name normalisation from actual to actual-server (#353) 2024-07-09 19:05:20 +01:00
Matt Fiddaman
771c01c8b4 Move bank sync payee name normalisation from actual to actual-server (#2721) 2024-07-09 19:05:15 +01:00
Michael Clark
9f72b43826 :electron: Remove unneded files (#3014) 2024-07-09 18:08:23 +01:00
Craig Dennis
17cdea9beb Update SEB Credit Card adapter to include SEB Card Accounts (#391) 2024-07-09 18:04:06 +01:00
Julian Wachholz
ec3475d834 Fix number formatting with non-breaking space (#2981) 2024-07-09 18:02:40 +01:00
Wizmaster
5ea9c587a8 Explicitly ask when reconciling transactions on manual import (#2717)
- Added import preview in transaction import list
- Added checkboxes to selectively prevent merging transactions

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

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

These have no click action but have a focus effect of a purple circle
(residual from the "Cleared" checkbox styling) that looks a bit glitchy.

* Add release notes

* Exclude status field from keyboard navigation
2024-07-08 10:39:00 -07:00
Joel Jeremy Marquez
9e455e4c1e Fix cover modal title (#3008)
* Fix cover modal title

* Release notes
2024-07-08 09:59:36 -07:00
Yusef Ouda
d77b54f27b reorders 'Rename' above 'Hide' in menu popovers, adds debounce to sidebar animation (#3001)
* reorders 'Rename' above 'Hide' in menu popovers

* release notes

* adds debounce to sidebar animation

* bump debounce time

* release notes

* release notes

* Update debounce import

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* removes event listener on titlebar, changes margins
2024-07-08 09:51:28 -07:00
Ruben Olsen Lærk
0026a02f76 Extended the PikaPods documentation for non-technical users (#393)
I have extended the PikaPods documentation to cater to non-technical
users. This should be quite straight forward.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-07-08 08:33:08 -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
wdpk
67b4001e9c Readme cleanup, update to release notes, ʻlight modeʻ screenshots (#397)
update the readme to have more of a present date, clean up various small
grammar and formatting throughout the page.

clarify that the docs donʻt have release notes written in the same way
as the rest of the project. include information about what makes it to
the git commit messages to encourage people to write good PRs.

add note that screenshots should be taken in light mode

Notes and edits welcome.

---------

Co-authored-by: Zeus\Herb <herb@win.dows>
2024-07-08 07:39:40 -07:00
wdpk
9d59672a60 Explain condition types on Rules and Filtering pages (#390)
Add information about "matches" being regex.

~~PR 9/10ths of the way there, still need to update screenshots. Is
there a style policy regarding dark/light mode screenshots? It seems
like currently it swaps between the two.~~

---------

Co-authored-by: Zeus\Herb <herb@win.dows>
2024-07-08 07:09:41 -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
Brunno Vanelli
4c76cb2bbf Add reference to the Python library (#392) 2024-07-07 20:34:04 +01:00
Robert Dyer
74ade73476 Update URL to log into SimpleFIN. (#385) 2024-07-07 20:31:59 +01:00
wdpk
81acd29c73 remove version from docker-compose.yml (#388) 2024-07-07 20:30:09 +01:00
Joel Jeremy Marquez
f1caf21deb Assign schedule to both transactions if schedule is a transfer (#2990)
* Assign schedule to both transactions if schedule is a transfer

* Release notes

* Migration for old scheduled transfer transactions
2024-07-07 09:29:27 -07:00
Michael Clark
a28ea6be8f :electron: server.js ➡️ server.ts (#2995) 2024-07-07 13:31:26 +01:00
youngcw
9ced05fca9 fix links in the ynab blog (#391)
since the link paths are treated differently depending on if the blog is
directly linked to vs navigated to. I believe these links will always
work
2024-07-06 17:30:24 -07:00
Ruben Olsen Lærk
d54bdffc6b A go at Starting fresh (#389)
We now have quite a few changes - not only moving the *generic envelope
budget* stuff out.

In short:
* Added section on handling cash. The idea behind this is to give people
that are new to this kind of budgeting, an easy idea on what to do with
cash. Even seasoned Zero-Summers can forget about this simple trick :-)
* Amended Setting up your Budget Categories with a small tip.
* Added sub section Group Your Expense Categories. I have guided a lot
of people on using Zero-Sum software (Ynab, Financier - and now Actual)
- and the grouping I propose have shown to help people to not touch
category money they should not touch.
* Assigning Available Funds is a complete rewrite - this is "Tips" we
removed from the envelope-budget.md file - I will add a link back into
the getting-started document when both PRs has been done.
* Added a section on finding your budget number if you do not want, or
can use historical data
* Keep Budgeting was amended 
* Added a header before text on next step.

OBSERVATIONS: I think this document is too big - and it should be split
into it's 5 parts (+ introduction).

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-07-05 13:39:39 -07:00
Michael Clark
f36c5e002b :electron: Remove "About" screen and broken updater (#2983) 2024-07-05 21:35:52 +01:00
Ruben Olsen Lærk
a6f3bcafe4 Created page on the topic - How envelope budgeting works (#386)
I have added this page because I think the software used for envelope
budgeting should definitively have some documentation on how to actually
do envelope budgeting.

---------

Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
2024-07-05 11:10:29 -07:00
wdpk
5424d6b402 Create section on restarting your budget without removing transactions (#383)
Fixes #362 

Taken from Teprifer#muddledjellyfish's answer on Discord server.

---------

Co-authored-by: Zeus\Herb <herb@win.dows>
2024-07-05 10:55:08 -07:00
Michael Clark
803289ee1f :electron: Electron menu.js ➡️ menu.ts (#2978) 2024-07-04 20:12:22 +01:00
Joel Jeremy Marquez
76cdad4fe6 React Aria Button on Accounts and Payees page (#2914)
* React Aria Button on payees and accounts page

* Release notes

* Fix Reconcile

* VRT

* VRT

* Fix balance hover

* VRT

* Update packages/desktop-client/src/components/accounts/Balance.jsx

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

* Fix lint

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-07-04 11:56:14 -07:00
Tom Crasset
1da9c821ee Prettify GoCardless Bank Integration README (#386) 2024-07-04 17:24:26 +01:00
wdpk
69fe8f61d5 Add Command to update Fly instance via hippalectryon-0 (#385)
add command about exactly how to redeploy the latest image under update.
thanks @hippalectryon-0

fixes #384
2024-07-04 09:05:35 -07:00
wdpk
f677ee64d4 update bank sync faq question - add best practices (#382)
from the docs on bank sync specifically, include best practices notes in
the FAQ to recommend limiting past transactions
Fixes #363

---------

Co-authored-by: Zeus\Herb <herb@win.dows>
2024-07-04 09:03:47 -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
2006d885b8 🔖 (24.7.0) custom reports, splits in rules, tags and more (#383) 2024-07-02 21:49:02 +01:00
Matiss Janis Aboltins
049a41f366 🔖 (24.7.0) custom reports, splits in rules, tags and more (#2955) 2024-07-02 21:29:31 +01:00
Matiss Janis Aboltins
17148c7c70 🔖 (24.7.0) custom reports, splits in rules, tags and more (#379)
- web: https://github.com/actualbudget/actual/pull/2955
- server: https://github.com/actualbudget/actual-server/pull/383
- docs: https://github.com/actualbudget/docs/pull/379
2024-07-02 21:28:41 +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
98ea289509 Update SimpleFIN reset instructions. (#381)
Since https://github.com/actualbudget/actual/pull/2870 is being
released, the docs should update to the new way to reset the token.
2024-07-02 12:25:31 -07:00
youngcw
5748e279f1 Actual vs YNAB blog post (#378)
Feel free to comment. I imagine we will be getting increased interest
over the next few days.
2024-07-01 17:37:55 -07:00
youngcw
552126589f custom reports no longer experimental (#375)
Update the custom reports page and move it out of experimental. Misc
other tweaks to be consistent about reports.
2024-07-01 13:02:49 -07:00
youngcw
c5b39ab0a3 Clean up the homepage feature list (#376)
some of the features on the homepage seemed there just to pad out the
list. The list if decently long and interesting so I removed Payees and
Split transactions. Those seem pretty expected and not that interesting
as a called out feature.

I modified the budgeting feature to be more specific. Just saying we
have budgeting is a bit redundant for a budgeting app.
2024-07-01 12:52:51 -07:00
Robert Dyer
600d130d14 Add missing API documentation. (#373)
This adds missing documentation for existing API calls and removes one
that does not exist.

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-07-01 19:50:36 +01:00
wdpk
0b719e0ca1 fly.io new pricing details update (#374)
fly.io pricing details have changed for new users. new users can only
sign up for a pay-as-you-go plan where usage is billed monthly. as this
is about deploying actual, it should be aimed at new users, not
returning users with maybe-existing legacy plans(like the hobby plan)
details about the legacy plans can still be found at the linked page.
2024-07-01 19:50:08 +01:00
Matiss Janis Aboltins
167522d322 ⬆️ upgrade dependency tree to solve CVE-2023-42282 (#378) 2024-06-29 08:55:37 +01:00
Justin
b47fe50bef Update settings.md (#370)
Updated experimental features to match what's listed in app.

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Robert Dyer <rdyer@unl.edu>
2024-06-28 12:04:02 -07: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
56abc1c3f3 📝 update core contributor list (#372) 2024-06-23 07:06:19 +01:00
Matiss Janis Aboltins
6a21f8e3de Revert "fix(#2562): Prevent transaction deduplication for imported transactio…" (#2910) 2024-06-22 21:32:51 +01:00
Matthew Lehner
4915990761 Remove web terminal section from Fly.io docs (#364)
The web terminal is no longer available on Fly.io and has caused a bit
of confusion for folks who are trying to get Actual deployed.
2024-06-21 11:41:49 -07: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
Robert Dyer
700cf4798c Add link for helpers (#371)
Adds a link to my helper script repository
2024-06-19 18:09:17 -07:00
Matt Fiddaman
f5307e4bd4 Copy trafico workflow from actual (#380) 2024-06-19 21:22:47 +01:00
Matiss Janis Aboltins
5b1a730f11 💬 (bank-sync) update sync button label to improve discoverability (#2899) 2024-06-19 20:19:48 +01:00
Neil
0c14eb17c4 Unflag custom reports (#2554)
* remove featureflag

* notes

* merge fixes

* vrt

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-19 06:57:46 +01:00
dymanoid
7bb0425c81 Consider account sort order in autocomplete (#2896)
* Consider account sort order in autocomplete

* Add release notes
2024-06-18 15:44:44 -07:00
DJ Mountney
8832c2b234 Trafico embedded action (#2895)
* Embed trafico as an action

* Add all the event types from trafico

* Swith to main trafico branch

* Add release note
2024-06-18 15:30:24 -07:00
Crazypkr1099
437e202d27 Add filtering of group name to autocomplete for transactions (#2861)
* Delete packages/desktop-client/e2e directory

* Delete packages/desktop-client/e2e directory

* Add toggleable option to autoCompleteCategories

* Create 2861.md

* Fixing typescript error & removing console.log

* Added themesetting back in

* Added filtering and separation for group name autocomplete

* removed typescript error

* another typescript error fixed

* ts error

* removed styling

* Update 2861.md

* Update prefs.d.ts

* Update index.tsx

removed toggleable settings

* Update index.tsx

* removed toggleablesettings

* changed test tobe     items = screen
      .getByTestId('autocomplete')
      .querySelectorAll('[data-testid$="category-item"]');
    expect(items.length).toBe(3);
  });

* removed isChanged passdown

* Added string followed by category name capability, moved sorting logic to categoryautocomplete, used toSorted, used Usememo, added TS.

* Fix unnecessary changes

* Apply suggestions from code review

Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

* Fixed TS, sort, and memo to useCallback

* fix tosorted -> sort

* Apply suggestions from code review

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

* fix typescript issue

---------

Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-06-18 13:27:49 -07:00
Robert Dyer
d34f5eccb6 Timeout SimpleFIN sync calls after 60 seconds (#2891) 2024-06-18 20:55:09 +01:00
dependabot[bot]
382d347508 build(deps): bump braces from 3.0.2 to 3.0.3 (#377)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 20:42:21 +01:00
Matiss Janis Aboltins
c792c0f54e 🔧 add github action for handling stale PRs (#376) 2024-06-18 20:24:45 +01:00
Robert Dyer
73d0f04d45 Properly handle errors for SimpleFIN. (#375) 2024-06-18 19:39:08 +01:00
Robert Dyer
f1d3902e3e Rework bank secrets reset (#2870)
* Rework bank secrets reset

* Fix alignment

* Fix lint errors

* add release note

* Fix typo

* fix typo
2024-06-18 11:33:51 -07:00
lelemm
8b6ef7b325 Removed recursion in place for iterable solution to prevent stack overflow (#2848) 2024-06-18 18:39:24 +01:00
Neil
6ad0b47c7c Custom Reports: Include current (#2684)
* include current

* notes

* label change

* add migration and fix merge issues

* fix extra year/month

* default and disabled lists

* default on

* fixes

* rerun
2024-06-17 20:09:38 +01:00
Matiss Janis Aboltins
96964224f4 🐛 fix budget tooltip showing if panel is not collapsed (#2887) 2024-06-17 18:22:20 +01:00
Joel Jeremy Marquez
0ed5e3ebe6 Revert scheduled transaction date filter causing weekly scheduled transactions as Paid (#2890)
* Revert scheduled transaction date filter

* Release notes
2024-06-17 08:03:40 -07:00
Matt Fiddaman
925926f542 Add bank handler for NATIONWIDE_NAIAGB21 (Nationwide) (#372) 2024-06-16 14:47:41 +01:00
vojeroen
44ddf210ea fix TypeError in GoCardless bnp-be-gebabebb sync (#370) 2024-06-16 14:45:03 +01:00
Matt Fiddaman
62c6a8775c Add bank handler for VIRGIN_NRNBGB22 (Virgin Money) (#360) 2024-06-16 14:38:49 +01:00
Matiss Janis Aboltins
64cd6ee3c9 ♻️ (tooltip) refactoring to react-aria (vol.9) (#2826) 2024-06-16 14:31:10 +01:00
Crazypkr1099
abc4636662 Bugfix : Account Nav Padding Bottom containing ; (#2881)
* Added underline & Fixed Capitalization in Account Header

* Create 2847.md

* Changed border pixel size, made it more opaque.

* removed comments

* Update E2E

* Required to run E2E in local...

* Revert "Required to run E2E in local..."

This reverts commit e73ac75cb3.

* Revert "Update E2E"

This reverts commit 56990fd6fe.

* testing...

* testing...

* Update 2847.md

* Underline no longer goes to edge

* vrt

* vrt

* fix bad screenshot

* bug fix

* Create 2881.md

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-15 09:38:31 -07:00
aaimio
ade25b3304 fix: link schedules modal - table width (#2863)
* fix: remove negative margin on ScheduleLink

* chore: add note for upcoming release notes

* feat: increase width of <ScheduleLink>

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-13 14:43:19 -07:00
Neil
b192ad955e Custom Reports: fix card menus regression (#2878)
* fix menus

* notes
2024-06-13 16:45:57 +01:00
Joel Jeremy Marquez
e9da476b51 Fix mobile budget and spent column auto sizing (#2875)
* Fix mobile budget and spent column auto sizing

* Release notes
2024-06-13 07:35:32 -07:00
lelemm
12719e3049 FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average' (#2862)
* FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average'. This fix solves this issue

* added 2862.md

* Ajustments for category menu not closing properly and fix to negative values for income category copy budget

* fix lint

* changed variable name without changing references after lint ajust

* retrigger checks

* smaller 2862.md
2024-06-12 07:50:39 -07:00
Szymon Sakowicz
761f50ed00 Add Actual AI to Community Projects (#369) 2024-06-11 16:27:26 -07:00
aaimio
e178d9914d fix: schedules are missing highlight color (#2864)
* fix: remove redundant style

* chore: add note for upcoming release notes

* chore: fix typo
2024-06-11 12:21:00 -07:00
lelemm
6fd728aa2d fix: Account names in side nav squashed (#2866)
* Fix: Account names in side nav squashed

* add 2866.md

* lint
2024-06-11 12:20:00 -07:00
Crazypkr1099
bf26ca4eb9 Add Underline in Account Header (#2847)
* Added underline & Fixed Capitalization in Account Header

* Create 2847.md

* Changed border pixel size, made it more opaque.

* removed comments

* Update E2E

* Required to run E2E in local...

* Revert "Required to run E2E in local..."

This reverts commit e73ac75cb3.

* Revert "Update E2E"

This reverts commit 56990fd6fe.

* testing...

* testing...

* Update 2847.md

* Underline no longer goes to edge

* vrt

* vrt

* fix bad screenshot

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-06-11 20:07:19 +01:00
lelemm
f606d92c5c Changing the autocomplete search to accept text without accents to match options with accents (#2842)
* Changing the autocomplete search to accept text without accents to match options with accents

* lint fix

* Added upcoming-release-notes
2024-06-11 07:53:10 -07:00
Dan D
8b850f1410 Handle Null Org Domain in SimpleFIN for bank_id (#2836)
* Update main.ts - Handle Null Org Domain in SimpleFIN

SimpleFIN (currently) uses the org domain as the bank ID. According to SimpleFIN docs, this can possibly be a null value, as can the org name. However, at least one of the two must be present.

In Actual, org name is set to "Unknown" if it comes in as null, but the bank_id (previously just set to the org domain) was not, resulting in a null bank_id value at times.

* Create 2836.md

* Fix release notes format.

* Small change to release note.

* Change to use new org Id as fallback for bank_id

* Add orgId property, for new org id from SimpleFIN
2024-06-10 15:42:45 -07:00
Joel Jeremy Marquez
c992e340ca Cover overbudgeted action + make balance movement menus only appear on relevant conditions (#2850)
* Make balance movement menus only appear on relevant conditions

* Release notes

* Hide to be budgeted when covering overbudgeted

* Fix typecheck error
2024-06-10 13:16:27 -07:00
Robert Dyer
06f9db06b0 Fix amounts over 1 million cutting off (#2812)
* Fix amounts over 1 million cutting off.

* Update VRT

* Update VRT

* update VRT
2024-06-10 11:44:38 -07:00
Crazypkr1099
2b96bb3d52 Added Year comparison feature. (#2806)
* Added Year comparsion feature. Also fixed bug with greater than 28 days.

* Removed comments and console.logs

* Create 2806.md

* Cleaned up code

* Hide's graph if no data, and hides average, last month or last year if no data.

* Apply suggestions from code review

Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>

* Fixed spent MTD and last MTD. Added in all suggestions from carkom.

* Update 2806.md

* Added changes required by carkom #2

* Couple more fixes, only show graph if have data for last month (as requested by carkom)

* Removed console.log that was mistakenly added.

* removed useEffect

* Add files via upload

* Remove async function

* lint fix

* fixed carkom requests & added in fix for YAxis issues

* Fixed couple of mistakes. Removed Y Axis fix (new PR will be created)

* Cleanup code

* Fix mode buttons

* Removed console.log...

* Update showAverage Logic

* Update switch logic

default should be default for everyone other part of the graph.

* Add Math.abs

* lint fix

---------

Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
2024-06-10 12:41:45 +01:00
daca11
1af5ab09e9 Grab payee name for Abanca gocardless integration (#359) 2024-06-08 14:09:05 +01:00
Matiss Janis Aboltins
dfbcfc25db 📝 update release instructions (#368) 2024-06-07 21:43:41 +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
Matt Farrell
2dbb27fc1b Update community-repos.md (#365)
Project was refactored and moved to a new repo.
2024-06-06 14:33:38 -07:00
Neil
094f0b8a91 Spending Report: filter out offbudget items (#2840)
* filter out offBudget

* notes
2024-06-06 18:47:34 +01:00
Robert Dyer
aa22e6951d Add GoCardless banks to the bank factory test suite. (#367) 2024-06-05 17:33:23 +01:00
Robert Dyer
55724acafa Refactor GoCardless bank code to avoid duplication (#362) 2024-06-05 17:32:44 +01:00
Julian Dominguez-Schatz
b89a32025a Use amount input on rules page instead of plain text field (#2566)
* Use amount input on rules page instead of plain text field

* Add release notes

* Remove unneeded attributes

* Support percent formatting

* Lint + typecheck

* Fix latent bug

* Handle existing data correctly

* PR feedback: naming

* PR feedback: force percent to a positive number

* PR feedback: reset percent to 100 upon changing input type

* Fix input clamping behaviour

* Empty commit to bump ci

* PR feedback: prop cleanup

* PR feedback: no default number format

* PR feedback: cosmetic refactor
2024-06-05 08:25:37 -07:00
Robert Dyer
d62919a357 [WIP] Don't show account tooltips during VRT (#2838)
* Don't show account tooltips during VRT

* add release note
2024-06-04 21:46:10 +01:00
Joel Jeremy Marquez
1c7d9bf141 [Mobile] Budget table revamp (#2642)
* Initial

* Add cheveron to logo

* Updates

* Release notes

* Fix typecheck error

* Fix build error

* Align budgeted

* Fix tests

* Dynamic font sizes in budget table cells

* VRT

* Apply AutoTextSize

* Layout updates

* VRT updates

* Resize text on value update + fix lint/typecheck  errors

* Category/groups take full width

* Cleanup + VRT

* Feedback

* VRT

* Change column visibility indicator

* VRT

* Use SvgExpandArrow

* VRT

* Zero balance contrast on light mode

* Update AutoTextSize key

* Color updates

* VRT
2024-06-04 13:16:09 -07:00
Robert Dyer
e3934b96dc Ignore coverage folder in the coverage report. (#366) 2024-06-04 20:07:55 +01:00
Stefan Hall
6d117f44de Support nynab imports that have (#2817)
- category groups called income
- categories called income
2024-06-04 10:33:28 -07:00
Joel Jeremy Marquez
64821e6a64 [Mobile] Auto create 2 child transactions on split (#2821)
* Auto create 2 child transactions on split

* Release notes

* Fix typecheck error
2024-06-03 19:52:35 -07:00
Matiss Janis Aboltins
fbdd357de4 📝 update core contributor list (#361) 2024-06-03 19:28:47 +01:00
youngcw
b0cf66a121 add install info on desktop apps (#354)
Co-authored-by: Robert Dyer <rdyer@unl.edu>
2024-06-03 09:45:02 -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
Joseph Livecchi
3311ea58fd Added documention about the header authentication (#341)
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Robert Dyer <rdyer@unl.edu>
2024-06-03 07:06:37 -07:00
Matiss Janis Aboltins
0e86dea544 ♻️ (tooltip) refactoring to react-aria (vol.6) (#2771)
* ♻️ (tooltip) refactoring to react-aria (vol.6)

* Release notes
2024-06-03 11:56:39 +01:00
Matiss Janis Aboltins
2221fd8dff 🔖 (24.6.0) (#368) 2024-06-03 11:05:23 +01:00
Matiss Janis Aboltins
194d19ef58 🔖 (24.6.0) (#360)
- web: https://github.com/actualbudget/actual/pull/2819
- server: https://github.com/actualbudget/actual-server/pull/368
- docs: https://github.com/actualbudget/docs/pull/360

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2024-06-03 10:50:00 +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
Robert Dyer
d90aeffb91 Add reset password doc to the sidebar (#358)
<img width="286" alt="image"
src="https://github.com/actualbudget/docs/assets/1115390/5b558700-4589-4ebd-a809-17bf0355cb0c">
2024-05-25 10:50:19 -07:00
Robert Dyer
7eb0544957 docs: Add instructions to reset SimpleFIN token. (#357)
This adds simple instructions to manually reset the SimpleFIN setup
token.
2024-05-22 11:38:57 -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
Robert Dyer
cece84e9bc API: add docs for the rules API (#356)
This adds documentation for the new rules API
(https://github.com/actualbudget/actual/pull/2568).
2024-05-20 14:13:50 -07:00
Neil
04273d8064 Date Range error catch (#2769)
* Date Range error catch

* notes

* update checkDate
2024-05-20 21:27:24 +01:00
Dev Prakash Sharma
4c94d063da Home page documentation enhancement (#355)
This updates the home page documentation with some content enhancement
as per the style guide (mainly MSTP, Google Developer Style Guide).

Based on the feedback, i will further add more section to enhance the
home page to make it like a home for all the documentation for easier
navigation.

For now, this PR kepts the section that are necessary to address user's
query regarding getting started with Actual and understanding the
Actual's starter kit.

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-05-20 13:11:43 -07:00
Neil
3f1fd55a7b Custom Reports: Table Totals Callback (#2768)
* Table Totals Callback

* notes

* Update packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableRow.tsx

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-05-20 17:23:59 +01:00
shall0pass
bfda42a2be Github action to automatically deploy a release image to Netlify (#2750)
* netlify script

* remove npm ci

* add filter

* release note

* whoops
2024-05-20 08:59:52 -05:00
Tyler Marshall
201f0fd336 fix: put income on left and expense on right always, hide when 0 (#2775) 2024-05-18 22:37:56 +01:00
Travis Ralston
99ab8db99f Ensure api types are included in the npm package (#2559)
* Ensure api types are included in the npm package

* changelog

---------

Co-authored-by: DJ Mountney <david@twkie.net>
2024-05-18 10:23:18 -07:00
DJ Mountney
f604fdaf36 Add crdt to the API package to fix types (#2738)
* Add crdt to the API package to fix types

- This way we get the crdt types supported

* Add release note

* Cleanup yarn.lock merge
2024-05-17 17:07:24 -07:00
Matiss Janis Aboltins
c311d4a8df 🐛 fix recurring schedule datepicker - port to new Popover (#2766) 2024-05-17 19:46:54 +01:00
Neil
1fc7c9974b Custom Reports: TS strict changes #3 (#2728)
* TS strict changes

* notes

* TS strict custom spreadsheets

* notes

* TS strict group speadsheets

* notes

* AreaGraph

* render row changes

* type fix

* merge fixes
2024-05-16 22:54:26 +01:00
Joel Jeremy Marquez
e63fb46c8f Add run-vrt script to run vrt inside docker (#2762)
* Add run-vrt script to run vrt inside docker

* Release notes

* Update README

* Support E2E_START_URL env variable

* Update README
2024-05-16 14:51:46 -07:00
Michael Clark
db6b4e4800 ⬆️ Updated better-sqlite3 to 9.6.0 (#357) 2024-05-16 21:10:40 +01:00
Michael Clark
2901b5e5d0 :electron: Update Electron to latest stable version (#2763) 2024-05-16 20:18:50 +01:00
vojeroen
abd049e715 fill in creditor name for BNP bank transactions (#349) 2024-05-16 19:57:24 +01:00
Rubén Martínez Hostyn
c51e636637 Add BANKS_WITH_LIMITED_HISTORY constant and Implement BANKINTER_BKBKESMM Bank Adapter (#355) 2024-05-16 19:56:51 +01:00
Matthew Booe
df7ad22377 Fix amount filter to include both incoming and outgoing amounts (#2643)
* Update filter amount to filter incoming and outgoing transactions

* Add test and fix logic

* Added release note

* Update with linter fixes

* Update new ammount filter to apply to all ops

* Fix lint
2024-05-16 11:25:56 -07:00
Joel Jeremy Marquez
b11a3dc267 [Mobile] Require account in mobile transaction entry + confirm transaction delete (#2753)
* Require account in mobile transaction entry + confirm transaction delete

* Release notes

* VRT

* VRT
2024-05-16 09:31:23 -07:00
Wizmaster
5a77051a72 Make comma's and period interchangeable when entering figures (#2672)
- Only allowed for formats not using period or comma as a thousand separator
2024-05-16 08:02:27 -07:00
Matiss Janis Aboltins
7360e35ace (api) ability to run bank sync via the API (#350) 2024-05-16 08:38:47 +01: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
youngcw
5fe40200f1 add info about PRs to Contributing page (#353) 2024-05-07 10:18:34 -07:00
Neil
8a70d2464d Custom Reports: Show table activity (#2696)
* Show table activity

* notes

* lint fix

* add underline

* add linkstyle

* fix table aligment
2024-05-07 18:02:17 +01:00
Neil
dcb25bb5e6 Custom Reports convert all jsx files (#2707)
* Overview

* Router and Selector

* ReportSidebar

* ReportTopbar

* CustomReport

* updates

* notes

* Patch some TS issues

* fix malfunctioning disabled lists

* add find

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-05-07 17:59:51 +01:00
Joel Jeremy Marquez
f20e9c6bdb [Mobile] Schedule name and date in mobile scheduled transaction modal (#2664)
* [Mobile] Add schedule name and date to scheduled transaction modal

* useRef to prevent rerenders

* Release notes

* Fix typecheck error

* Fix lint errors

* Update schedule font

* Heavier font weight
2024-05-07 09:48:27 -07:00
Matiss Janis Aboltins
f73f6c7f0d ♻️ (tooltip) refactoring to react-aria (vol.3) (#2631) 2024-05-07 17:18:51 +01:00
DJ Mountney
37457cd6cd Create types for the external versions of entities meant for the API (#2716)
* Create types for the external versions of entities meant for the API

- Otherwise the types used in the API were actually wrong vs the data we were sending

* Add release note
2024-05-07 07:38:02 -07:00
Matiss Janis Aboltins
c16f4c71c5 🐛 remove mac electron app code-signing (#2715) 2024-05-07 08:04:21 +01:00
Joel Jeremy Marquez
452ca82287 Use budget name as export file name (#2713)
* Use budget name as export file name

* Release notes
2024-05-06 14:37:58 -07:00
Joseph Livecchi
ffddd9e8a5 Added Header Authentication - Client Part (#2362)
* Updated Login to handle header auth
2024-05-04 12:22:18 -07:00
Joseph Livecchi
3a486ed973 Added Header Authentication - Server Part (#312)
* Added loginMethod config option

Added a new config option loginMethod that can be password (default) or header for header authentication. This value is returned to the client to be used on the front end


---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Co-authored-by: DJ Mountney <david.mountney@twkie.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Johannes Löthberg <johannes@kyriasis.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: DJ Mountney <david@twkie.net>
2024-05-04 10:29:58 -07:00
DJ Mountney
2178da0414 Fix some additional incorrect types (#2676)
* Fix some additional incorrect types

- This is part of working towards having enough correct types to be able to run tsc on our packed api without error.
- Working towards being able to ship types for the api in the package

* Add release note
2024-05-04 09:58:44 -07:00
Jakob Lover
33c204dedb Extend bank adapter for SEB Kort (#350) 2024-05-04 11:41:26 +01:00
Joel Jeremy Marquez
f8809df59c Parallel cloud file download (#2700)
* Fetch cloud file and file info in parallel to speed downloads up

* Release notes

* Rename release notes
2024-05-03 13:25:29 -07:00
Dario Ernst
41a34d0f1c Add gocardless support for Sparkasse Karlsruhe (Germany) (#346) 2024-05-03 20:56:58 +01:00
Neil
04bc0c3c64 Monthly spending report (#2622)
* monthly Spending

* Add Average

* notes

* title

* date filter

* TS fixes and hide average when no data

* fix average tooltip and relabel x-axis

* Wording/verbiage

* filters changes

* feature flag

* networth card fix
2024-05-03 20:34:21 +01:00
Neil
0aa6a057b1 Custom Reports changes (#2677)
* adjustments

* notes

* scroll height

* lint fix

* compact scrollbar

* fixes

* filters fix

* scrollbar color

* fix week ranges
2024-05-03 20:32:37 +01:00
Matiss Janis Aboltins
f1488077dd 🔖 (24.5.0) mobile improvements and much more (#351) 2024-05-03 17:51:23 +01:00
Matiss Janis Aboltins
a562dcd916 🔖 (24.5.0) mobile improvements and much more (#352)
- web: https://github.com/actualbudget/actual/pull/2693
- server: https://github.com/actualbudget/actual-server/pull/351
- docs: https://github.com/actualbudget/docs/pull/352
2024-05-03 17:32:44 +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
3c3c3ab463 add line for average template (#351)
matches actualbudget/actual#2688
2024-04-30 12:19:59 -07: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
Matiss Janis Aboltins
1f2f103fc6 📝 updating main contributor list (#349) 2024-04-29 21:31:01 +01:00
Matt Fiddaman
c0b21a9f7e Add backup date field for GoCardless transactions with bank BNP_BE_GEBABEBB (#345)
* Add backup date field for GoCardless transactions with bank BNP_BE_GEBABEBB

* release note
2024-04-22 18:27:04 +01:00
Matt Fiddaman
4ae654d54d Refactor to add strict type comparisons and remove unnecessary else blocks (#343) 2024-04-20 18:57:07 +01:00
Matt Fiddaman
1bbba663b2 Make /admin/login return a descriptive error when no password is provided (#342) 2024-04-19 21:35:19 +01:00
Matt Fiddaman
44c7b4eab0 Make running app.js cwd agnostic, extend config to allow changing dataDir (#341) 2024-04-19 21:24:00 +01:00
Johannes Löthberg
ae0faf467f Allow setting accessValidForDays and maxHistoricalDays per bank (#334)
* Allow setting accessValidForDays per bank

This also stops taking `accessValidForDays` from the client since it's
hardcoded there anyway and it's simpler to just have these per-bank
values in one place.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>

* Get the max allowed maxHistoricalDays value from the GoCardless API

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>

* Upgrade nordigen-node to 1.4.0

Contrary to the claims in the nordigen-node changelog 1.3.0 did *not*
fix the missing support for passing in accessValidForDays, so we have to
upgrade to 1.4.0 to actually get the fix.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>

---------

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2024-04-14 17:21:47 +01:00
Huyen Nguyen
a698a2db83 fix: Open Collective link (#348)
Changes the Open Collective URL from `.org` to `.com` (the `.org` is not
accessible).
2024-04-14 17:19:31 +01:00
dependabot[bot]
a5a5f30dd7 build(deps): bump tar from 6.1.11 to 6.2.1 (#335)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.11 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.1.11...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-12 21:25:59 +01:00
Matt Farrell
c746cf1cf1 Update community-repos.md with Actual Tap (#346)
[Shared](https://discord.com/channels/937901803608096828/940290142579605514/1227116311935582260)
the app I developed in Discord and was
[advised](https://discord.com/channels/937901803608096828/940290142579605514/1227331697700376586)
to add to the Community Repos page.
2024-04-10 07:38:49 -05:00
shall0pass
2032503220 Cleanup documentation for local groups (#337)
I think there is a better example than the one I've proposed here. I'm
not convinced the example I've given would even provide an expected
result to the user. I'd appreciate any feedback of those interested and
the PR #2480 could be improved to deliver more expected results.
2024-04-09 17:22:20 -05:00
joklek
8674c5145c Remove double dot in tour (#344)
Fixing a double dot in the tour
2024-04-08 10:21:45 -07:00
Robert Dyer
f06bbf9a51 Add ACTUAL_PORT environment variable to docker-compose.yml (#333) 2024-04-07 16:27:48 +01:00
David Baker
f80476cef6 Fix a typo on the new YNAB page (#343) 2024-04-04 14:10:14 -05:00
dependabot[bot]
1c61508abb build(deps): bump express from 4.18.2 to 4.19.2 (#329)
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-02 18:29:59 +01:00
Matiss Janis Aboltins
deec1f998c 🔖 (24.4.0) custom reports improvements, stability enhancements (#332)
* 🔖 (24.4.0) custom reports improvements, stability enhancements

* Remove used release notes

* Upgrade actual

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-02 07:30:31 +01:00
Matiss Janis Aboltins
d26ccb9fe5 🔖 (24.4.0) custom reports improvements, stability enhancements (#342) 2024-04-02 07:11:09 +01:00
Matiss Janis Aboltins
90c454450f 🔥 remove non-existing api methods from api docs (#340)
Removed api methods that do not exist. Since they don't exist - they
should not be in the docs.

It would be nice to implement them though.. but until they are
implemented - lets not mislead people.
2024-03-30 19:54:09 +00:00
samoorai
de78221ec3 Update the FAQ to reflect the new mobile layout feature (#339)
As the title says, update the response of the FAQ indicating the mobile
web layout
2024-03-26 18:25:39 +00:00
shall0pass
85f58ebcb4 Blog Post: Templates with a twist for weekly targets (#338) 2024-03-25 19:34:28 -05:00
DJ Mountney
b724708411 Add docs on ability to create transfer from two existing transactions (#321)
Docs for PR https://github.com/actualbudget/actual/pull/2398+

as part of the feature
https://github.com/actualbudget/actual/issues/1891+
2024-03-23 10:36:39 -07:00
Björn Wallebäck
bf404104c2 feat: add 'SEB Kort Bank AB' credit card support (#325)
* feat: add 'SEB Kort Bank AB' credit card support

* add: release notes for #325

* Calculate balance correctly for SEB Kort credit cards
2024-03-23 11:04:00 +00:00
qmph22
88e1c714d4 Update local.md (#336)
For closing out issue #334 
Updated required Node.js version

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-03-23 09:35:58 +00:00
David Shen
0bfb097bef Clarify that goal schedule template should not include braces (#333)
My schedule templates weren't working because I was including the curly
braces around the schedule name.
2024-03-22 07:48:18 -05:00
qmph22
dd788aceae Update https.md (#335)
Reformatted the page, reworded some paragraphs, and added more
information about Docker for clarity.

After having to go through these steps myself, I found it might be
helpful to merge some of my suggested changes for others to view.
2024-03-22 07:48:39 +00:00
dependabot[bot]
5fde6561d0 build(deps): bump follow-redirects from 1.15.4 to 1.15.6 (#322)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 19:39:58 +00:00
Emmanuel Vuigner
fef1bee1c0 Update reverse-proxies.md (#332)
Remove double `restart` line on the caddy config
2024-03-14 13:35:42 -07:00
youngcw
d5a7d63808 add financier migration repo (#328)
Links to this custom importer in the community page
2024-03-11 14:11:34 -07:00
Conor Anderson
4e1e608a1e Update categories.md (#329)
Minor edits / proofing
2024-03-09 09:10:10 -07:00
qmph22
73ce8f511b Update index.md - "Using the API" (#331)
Added clarity about migrating from YNAB or Mint to Actual. 

Corrected grammatical error about what Actual officially supports for
importing from other budgeting apps.
2024-03-09 09:09:12 -07:00
tim
720bb85801 Capitalize "actual" on line 7 (#330)
Incredibly minor change. I'm assuming this aligns to the brand template
as I saw "Actual" (capitalized) elsewhere.
2024-03-06 20:26:13 -06:00
shall0pass
f82709cf4d Rollover notes: Update for PR 2409 (#326)
[#2409](https://github.com/actualbudget/actual/pull/2409)
2024-03-04 14:45:36 -06:00
Paul Gauntlett
30dca60c58 Update bank-sync.md (#324)
Explain advantages of setting an opening balance when starting from
scratch with Actual and Go Cardless

---------

Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-03-04 12:58:47 -07:00
Martin Myhrman
6e9eddeb56 feat: add SEB Privat bank (#316) 2024-03-03 20:11:56 +00:00
Matiss Janis Aboltins
b926af286a 🔖 (24.3.0) (#317)
* 🔖 (24.3.0)

* Remove used release notes

* Upgrade @actual/web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-03 17:25:45 +00:00
Matiss Janis Aboltins
2565f5d59d 🔖 (24.3.0) (#327)
- web: https://github.com/actualbudget/actual/pull/2413
- server: https://github.com/actualbudget/actual-server/pull/317
- docs: https://github.com/actualbudget/docs/pull/327
2024-03-03 17:10:23 +00:00
Paul Gauntlett
9e5f9c2930 Update goal-templates.md (#325)
This updates:
1) Dated examples to reference 2024 and 2025 (rather than 2021 and 2022)
2) Adds a warning to reproduce schedule names exactly in templates
2024-02-29 18:39:48 -06:00
Blake Bryant
49ed1ba895 Add final step to enabling https on home server (#322)
Sounds like I'm not the only one that has run into this issue 😄

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-02-28 08:20:28 +00:00
dependabot[bot]
f43097f813 build(deps): bump ip from 2.0.0 to 2.0.1 (#314) 2024-02-28 08:10:17 +00:00
shall0pass
eb0c5418c8 Add text to reconciliation section about lock icon (#319) 2024-02-27 10:49:29 -07:00
shall0pass
90e3ffe539 Remove full sync migration documentation (#320)
This PR removes the migration page from Full Sync to Simple Sync.

This page was needed 16 months ago when a breaking change was merged to
resolve issues with the sync algorithm. Given that there have been over
16 releases since this change, most users will never encounter this
issue.
2024-02-27 10:49:11 -07:00
xentara1
6f42b9f6e3 Adding Create Schedule From Transaction (#303)
As discussed..
https://github.com/actualbudget/actual/pull/2222

---------

Co-authored-by: xentara1 <xentara1@xentara1.com>
Co-authored-by: alex Foreman <>
2024-02-27 10:45:43 -07:00
Dan D
04147fb9b9 Pending Transaction Support for SimpleFIN Integration (#315)
* Add Pending Transaction Support

Adds support for pending transactions (for banks that support them) from SimpleFIN.

* Release Note - Pending Transactions for SimpleFIN

* Fix Linter Errors

* Fix additional Iinter errors

* Spacing - Lint Error Fix
2024-02-21 13:28:10 -07:00
Redbox3070
e56103d456 Create page for custom reports (#316)
Custom reports documentation, pictures are still missing.

---------

Co-authored-by: Teprifer <34882928+Teprifer@users.noreply.github.com>
2024-02-21 12:31:49 -07:00
Matiss Janis Aboltins
6878ca5365 📝 feature flags policy (#317) 2024-02-21 18:17:03 +00:00
youngcw
f7d818529d add info on how to sync simplefin (#318)
The info on syncing with simplefin was really small in the docs, so I
fleshed it out more and added a picture.
2024-02-20 14:27:07 -07:00
DJ Mountney
cd4a2b6678 Fix the link page for gocardless (#311)
* Fix the link page for gocardless

Ensures the redirect page is auto-closed after linking
2024-02-13 11:20:31 -08:00
DJ Mountney
16faf49438 Update the nordigen-node gem to get new endpoints (#310)
* Update the nordigen-node gem to get new endpoints
2024-02-13 09:34:35 -08:00
youngcw
5d87628728 update starting fresh doc, and add simpleFIN call outs (#305)
mostly some more detailed advice in the starting fresh doc. Im trying to
make the budgeting advice be more centralized instead of being in random
places

A few minor tweaks

A few call outs that simplefin is not just a community thing anymore
2024-02-12 13:14:34 -07:00
Lars Stegman
5eab5cf9d1 Goal templates: Edit note that currency symbols other than $ are supported (#315)
The regex for the parser is implemented to match any currency symbol:


5a67b7e822/packages/loot-core/src/server/budget/goal-template.pegjs
2024-02-12 13:14:19 -07:00
Khalu
d73265cdc7 match nginx with other formatting, add httpd (#314)
Moves the summary of NGINX section to the top to match the others. 
Added config section for Apache HTTPD.

Co-authored-by: keith <keith@swagler.casa>
2024-02-12 10:22:42 -07:00
Eric Karr
67f76080a9 Added VM specification to fly.toml to keep within Fly.io free allowances (#306) 2024-02-08 08:26:35 +00:00
Tillman Jex
9bacf7f2d7 cautionary notice about new Fly pricing (#311) 2024-02-08 08:18:52 +00:00
Charlie Arnold
fb064f7ad3 Fix typo in reset_password.md (#313)
title
2024-02-08 08:17:54 +00:00
Dan D
7968c18bcb Add Experimental SimpleFIN Sync to Docs (#312)
Added a new page in the docs under "Experimental", for SimpleFIN Sync. 

I used the existing GoCardless page as a starting point.
2024-02-06 18:14:48 -07:00
shall0pass
f885174a74 Documentation updates for PR #2295 (#307) 2024-02-05 20:40:45 -07:00
John Hollowell
e997f1dc94 Update importing.md (#310)
fix small typo
2024-02-05 09:10:04 -07:00
Matiss Janis Aboltins
483da232d2 🐛 update wording: s/cleared/reconciled/ (#309) 2024-02-02 20:52:03 +00:00
Matiss Janis Aboltins
13a39168c4 🔧 upgrade deprecated github actions (#307) 2024-02-02 20:35:24 +00:00
circle3451
10d53fbe5f Add gocardles ssupport for Andelskassen Fælleskassen (#305) 2024-02-02 20:06:34 +00:00
Matiss Janis Aboltins
21c65cf68f 🔖 (24.2.0) cleared transaction improvements; experimental simplefin bank-sync (#306) 2024-02-02 19:40:44 +00:00
Matiss Janis Aboltins
f3d2a6a90b 🔖 (24.2.0) cleared transaction improvements; experimental simplefin bank-sync (#308)
- client: https://github.com/actualbudget/actual/pull/2311
- server: https://github.com/actualbudget/actual-server/pull/306
- docs: https://github.com/actualbudget/docs/pull/308
2024-02-02 19:23:18 +00:00
Zach Whelchel
e7f6348d9a SimpleFin (#296)
* Initial support for SimpleFin.

* Added release notes and lint cleanup.

* Changed some notes for better context.

* Fixed logic.

* Changes per requests on PR.

* More cleanup of null checks.
2024-01-20 14:35:30 -08:00
Norbert Takács
af6de6b585 Update README.md broken link (#303)
* Update README.md broken link

* added release notes

* moved release file

* Delete upcoming-release-notes/299.md

---------

Co-authored-by: Norbert Takacs <norbert.takacs@postnord.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
2024-01-18 11:20:22 -07:00
Harrison Kiang
d8c7a0a358 non-root users for Dockerfiles (#300)
* Optional non-root users for Dockerfiles
2024-01-18 09:26:51 -08:00
DJ Mountney
58f7b09e8d Limit yarn concurrency on 32bit (#302)
* Limit yarn concurrency on 32bit

- improves ci stability
2024-01-18 09:04:04 -08:00
youngcw
fd8d0cf4f3 add moneymoney importer (#304)
add link to this importer
2024-01-15 12:25:03 -07:00
Matiss Janis Aboltins
1a2d1c175e 📝 created privacy policy (#302)
Necessary for submitting to Mac App Store.
2024-01-14 16:07:22 +00:00
albertchae
7b36c2207a Remove obsolete fly.template.toml (#284) 2024-01-12 17:19:20 +00:00
dependabot[bot]
6de1fe34e3 build(deps): bump follow-redirects from 1.15.2 to 1.15.4 (#299)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 19:08:01 +00:00
Matiss Janis Aboltins
ff073b1221 ♻️ (gocardless) renamed nordigen_* secrets to gocardless_* (#293) 2024-01-09 19:21:28 +00:00
Waseh
1d4eaaa79c Change SparNord integration to add support for Lægernes Bank (#298) 2024-01-09 09:00:33 +00:00
visurel
3b83f064d4 Add GoCardless bank integration for SPK_MARBURG_BIEDENKOPF_HELADEF1MAR (#297) 2024-01-09 08:59:16 +00:00
Jorim Tielemans
b210f45e21 Update bank-sync.md (#300)
Location in menu changed, also updated the screenshots.
2024-01-06 16:33:40 +00:00
Torben
8bd12d2456 📝 (reverse proxies) Remove duplicate line, add service port for Traefik (#297)
While deploying with Traefik I found two small errors in the
documentation.
First is the duplicate line, the second is the missing line so that
Traefik knows on which port it should send the traffic to.
2024-01-06 16:32:48 +00:00
t4cmyk
c330020487 Add GoCardless bank integration for ING_INGDDEFF (#294)
including some test data

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-06 16:29:45 +00:00
Matiss Janis Aboltins
2f7b3917ed 🔖 (24.1.0) Mobile split transactions (#295) 2024-01-06 10:18:51 +00:00
Matiss Janis Aboltins
34c268c861 🔖 (24.1.0) Mobile split transactions (#299)
- web: https://github.com/actualbudget/actual/pull/2177
- server: https://github.com/actualbudget/actual-server/pull/295
- docs: https://github.com/actualbudget/docs/pull/299
2024-01-06 09:56:57 +00:00
Paul Gauntlett
3ef647b240 Update Contributor Section - Side Bar Order (#298) 2024-01-05 22:01:54 +00:00
Matiss Janis Aboltins
8c47ea940a 📝 update core contributors list (#295) 2023-12-30 14:55:30 +00:00
Matiss Janis Aboltins
933fc27126 📝 (gocardless) updated the docs - removed redundant information (#292) 2023-12-22 21:33:06 +00:00
youngcw
b01586ac1d fix links on starting fresh page and blog post (#294)
I think this fixes an issue where the links on the page don't work if
you get to the page via discord link.

The root issue is the same as
https://github.com/facebook/docusaurus/issues/2298

We may need to go through and update the links in the website, or maybe
someone can take the time to migrate the website to docusaurus v3.
2023-12-17 14:52:46 -07:00
Shaan Khosla
0566e9c308 Add Caddy Reverse Proxy Instructions (#292) 2023-12-17 10:54:12 -05:00
youngcw
f4df1400cc add blog post about using goal templates (#291)
We have a blog, so I wrote a post for it.

Its about how I use the goal templates in the hopes that it will inspire
some people on how they can use goals and some budgeting strategy baked
in.

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2023-12-15 13:02:40 -07:00
Matiss Janis Aboltins
c910b6efcb Revert "♻️ (gocardless) renamed nordigen_* secrets to gocardless_*"
This reverts commit 633463a184.
2023-12-15 19:20:57 +00:00
Matiss Janis Aboltins
633463a184 ♻️ (gocardless) renamed nordigen_* secrets to gocardless_* 2023-12-15 19:18:54 +00:00
youngcw
fe8df6c57c Add example rule for using imported payee contains (#293)
The question of not having contains under payee in rules gets asked a
lot. I added an example for it.

I also changed the name of that page to "Rules Examples" to be more
clear on what it is.
2023-12-15 12:01:30 -07:00
youngcw
5c1e1b7fd1 dark mode inclusion and dynamic homepage images (#290)
Added a dark mode callout in the feature list.

Working on dynamically switching between dark and light screenshots when
the page switches themes.

I pulled images from the VRT tests to use for dark images. They are
pretty close to the existing images, but from a slightly larger screen.
2023-12-12 13:38:02 -07:00
DJ Mountney
1cb7459803 Add info on self-signed https connections from the API (#288)
Related to https://github.com/actualbudget/actual/issues/1695

It's pretty common for users to have self-signed certificates for
actual, but this presents some challenges for the API.

Give a little bit of guidance here, for new contributors. Really, all
the info here is just for Node.js and not for actual. (we would want to
create seperate http agents and our own certificate config system if we
wanted to have actual specific config for this).

For many of the existing api use-cases the
`NODE_TLS_REJECT_UNAUTHORIZED` option will be fine. But
`NODE_EXTRA_CA_CERTS` seems like the proper way to do things (and the
one I tested on nodejs 21, on ubuntu via asdf install). But I also made
sure to mention the option of using openssl's ca certificates, because
if you are in a situation where your node.js is configured to link to
the system openssl on Linux, it's going to be the easiest and most
familiar to Linux sysadmins. It's just not the cross-platform supported
option like `NODE_EXTRA_CA_CERTS`.
2023-12-12 12:04:44 -07:00
youngcw
d5c9624242 add blurb for transfer rules (#286)
This gets asked a lot in discord.  Now we can point people somewhere.
2023-12-07 12:28:57 -07:00
youngcw
97703077ef add stop command to docker-compose update steps (#285) 2023-12-07 12:28:13 -07:00
youngcw
287d88fc41 blurb about transfer categories (#283)
We get lots of questions about transfers involving off budget accounts.
This will hopefully alleviate some of that confusion.

It was mentioned in
[actualbudget/#1979](https://github.com/actualbudget/actual/issues/1979)
that the docs don't have a good description of this.
2023-12-07 12:25:56 -07:00
youngcw
70b653fc24 add info about aligning to_budget on nynab import (#282)
When importing from nYNAB `to budget` doesn't match the previous `ready
to assign` value. I added a description of why that is and how to make
the numbers match.
2023-12-07 12:23:56 -07:00
Matiss Janis Aboltins
fa226311a9 🔖 (23.12.1) fix '.migrate' file causing Synology NAS problems (#289)
- server: https://github.com/actualbudget/actual-server/pull/290
- docs: https://github.com/actualbudget/docs/pull/289

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2023-12-07 19:18:08 +00:00
Matiss Janis Aboltins
5ac4c58d1e 🔖 (23.12.1) fix '.migrate' file causing Synology NAS problems (#290) 2023-12-07 18:28:42 +00:00
Bernd Schorgers
f93893e007 Store migrations statestore in datadir (#289) 2023-12-05 21:10:17 +00:00
Peter
941838c045 add reverse proxy config documentation (#267)
Hey, since I've been using Actual via Traefik for a few days now, I took
the time to add a little bit to the documentation in that regard. I hope
it fits so far. Please feel free to comment/improve anything.
2023-12-03 13:31:18 -07:00
youngcw
36969de9e3 guide for starting fresh (#279)
Depends on #278.
Fixes #251

This adds a dedicated guide for those that are starting fresh with
Actual and aren't familiar with zero-sum budgeting. It is a step by step
that points to the existing pertinent docs pages with additional
direction.

---------

Co-authored-by: shall0pass <20625555+shall0pass@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-12-03 13:29:13 -07:00
Matiss Janis Aboltins
42699ac044 🔖 (23.12.0) darkmode, transaction locking, mobile updates and more (#286) 2023-12-02 19:45:50 +00:00
Matiss Janis Aboltins
64c455a897 🔖 (23.12.0) darkmode, transaction locking, mobile updates and more (#284)
- web: https://github.com/actualbudget/actual/pull/2003
- server: https://github.com/actualbudget/actual-server/pull/286
- docs: https://github.com/actualbudget/docs/pull/284

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2023-12-02 19:29:03 +00:00
Feliciaan De Palmenaer
bb07652cf8 Changed fintro specific bank integration to work with BNP and Hello Bank (#285) 2023-12-01 17:50:53 +00:00
Matiss Janis Aboltins
dc47c6d72a 🐛 improved gocardless error handling (#282) 2023-12-01 17:49:27 +00:00
Toon Willems
4b12561905 Add workaround for non-unique transactionIds for Belfius bank (#283)
Co-authored-by: Toon Willems <toon.willems@silverfin.com>
2023-11-30 17:51:39 +00:00
youngcw
f7a4417243 add bank sync feature to home page (#281)
I added bank syncing as a feature on the home page, with a new svg to go
with it.

I also mentioned in the importers that more than ynab are available, but
not officially.
2023-11-28 11:00:10 -07:00
Jason Whitelock
f5addccb1e Create reset password doc (#271)
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-11-28 17:21:55 +00:00
Shazib Hussain
8a90292f97 Adding some contribution guidelines (#277) 2023-11-27 19:42:23 +00:00
Matiss Janis Aboltins
39a8f94931 [WIP] Actual Budget Vision (#213) 2023-11-26 19:36:43 +00:00
DJ Mountney
f1dccec274 API update learnCategory,runTransfers for addTransactions (#280)
To match changes from https://github.com/actualbudget/actual/pull/1944
2023-11-26 18:17:22 +00:00
Matiss Janis Aboltins
ca4ea97768 ⬆️ (node-migrate) upgraded to v2.0.1 (#281) 2023-11-22 22:14:02 +00:00
youngcw
a7e862acbb Community Projects page (#278)
This adds a page that calls out useful and interesting community
projects that integrate with Actual. There are only a few that I know of
right now, but we can add any later that come up.
2023-11-22 13:03:35 -07:00
Val Markovic
87813b398a Add "docker.io/" registry prefix to docker compose image (#274)
Required by Podman Compose. Docker Compose should not care either way. The registry prefix is explicitly supported in the [compose file spec](https://github.com/compose-spec/compose-spec/blob/master/spec.md#image)
2023-11-21 11:14:45 -08:00
Matiss Janis Aboltins
7865e08c91 ⬆️ (yarn) upgrade yarn to v4 and better-sqlite3 to v9.1.1 and node to v18 (#277) 2023-11-17 22:20:53 +00:00
Matiss Janis Aboltins
e116d01453 🐛 (gocardless) fix banksync - create singleton client (#278) 2023-11-16 07:19:19 +00:00
dependabot[bot]
a6c1443669 build(deps): bump axios from 1.3.2 to 1.6.1 (#276)
Bumps [axios](https://github.com/axios/axios) from 1.3.2 to 1.6.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.2...v1.6.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-11 18:49:16 +00:00
youngcw
cfe53bf0cd add blurb for goal colors (#275)
matches [actual#1780](https://github.com/actualbudget/actual/pull/1780)
2023-11-10 14:36:13 -07:00
Matiss Janis Aboltins
de604b9f3a 🐛 (docker) add missing migrations folder (#275) 2023-11-09 07:53:19 +00:00
Matiss Janis Aboltins
5dcf7fd2b0 📝 updated main contributors list (#276) 2023-11-08 17:15:46 +00:00
Matiss Janis Aboltins
1f79708ea3 ability to add migrations (#267) 2023-11-07 18:10:16 +00:00
Matiss Janis Aboltins
494d67459f Create FUNDING.yml (#270) 2023-11-06 20:06:51 +00:00
Matiss Janis Aboltins
9e7c2e7a65 🔖 (23.11.0) (#273) 2023-11-04 10:32:08 +00:00
Stefan Hall
b26bfc457b Update ynab4 + 5 importer links in api docs (#273)
So they point to existing implementations. The current links are broken
and Im hoping these links are correct - someone please let me know if
this is incorrect, thanks
2023-11-04 09:33:47 +00:00
Matiss Janis Aboltins
3b538b6fff 🔖 (23.11.0) (#274)
- web: https://github.com/actualbudget/actual/pull/1859
- server: https://github.com/actualbudget/actual-server/pull/273
- docs: https://github.com/actualbudget/docs/pull/274
2023-11-04 09:28:43 +00:00
Matiss Janis Aboltins
f634dc9850 Update releasing.md (#270)
Co-authored-by: shall0pass <20625555+shall0pass@users.noreply.github.com>
2023-10-19 17:32:00 +01:00
dependabot[bot]
1f5ff932b1 build(deps): bump @babel/traverse from 7.20.13 to 7.23.2 (#272) 2023-10-19 08:44:25 +01:00
shall0pass
46092def6b Deemphasize 'Cloud' usage in the Sync page (#255)
I'm trying to deemphasize the term 'cloud' here because I think it
implies that it's going somewhere unknown. It should be clear that it's
going to a users installed server, and nowhere else. Pikapods and
fly.io, I think would be classic examples where where the term 'cloud'
makes sense but wouldn't make sense if someone had it installed on a
local PC, NAS or Raspberry Pi.

I left a lot of the document alone further down because it seems like
there may be error messages within the app that use the term 'cloud'.

Maybe add an additional explainer in the section that explains the cloud
file?

**Came up in a discord support issue.
2023-10-09 07:58:38 -05:00
Matiss Janis Aboltins
75af7b9987 🔧 (github) adding issue templates (#262)
* 🔧 (github) adding issue templates

* Release notes
2023-10-05 08:40:11 +01:00
Matiss Janis Aboltins
b8fbc9b19c 🔥 remove jlongster/actual-server package (#260)
* 🔥  remove jlongster/actual-server package

* Release notes
2023-10-05 08:40:00 +01:00
Matiss Janis Aboltins
fc643d28c6 ⬆️ upgrade better-sqlite3 to v8.6.0 (#268)
* ⬆️  upgrade better-sqlite3 to v8.6.0

* Release notes
2023-10-05 08:39:45 +01:00
Matiss Janis Aboltins
9d6b9c556d 🔖 (23.10.0) (#269)
* 🔖 (23.10.0)

* Remove used release notes

* Upgrade web

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-04 18:00:13 +01:00
Musa Ahmed
5ccd7a7a32 Small Grammer Improvement (#269) 2023-10-04 17:40:09 +01:00
Matiss Janis Aboltins
4b4914619c 🔖 (23.10.0) (#268)
- web: https://github.com/actualbudget/actual/pull/1757
- server: https://github.com/actualbudget/actual-server/pull/269
- docs: https://github.com/actualbudget/docs/pull/268

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2023-10-04 17:33:32 +01:00
Clumsy
0ae15a2eed Simplify updating docker to 1 command (#261) 2023-09-27 18:25:32 +01:00
Johannes Löthberg
46dbc89482 Make edge builds fetch master builds from correct repository (#265)
If we don't verify that the repository ID is what we expected then we
will pull artifacts from PRs where the source branch is `master`.

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-09-10 20:04:19 -05:00
Daniel P
faa1ed0bff Fix step to skip if no savings account. (#265)
I believe this was incorrect, as skipping step 6 would mean there isn't
anything put into the savings category.
2023-09-04 21:16:02 +01:00
Jakob Aarup Skov
bde303ec45 Add GoCardless bank integration for Spar Nord SPARNORD_SPNODK22 (#257) 2023-09-03 17:42:41 +01:00
James Hackett
6512c465f0 Make file size uploads configurable via env vars (#245) 2023-09-03 17:42:28 +01:00
Matiss Janis Aboltins
6f216cc1aa 🔖 (23.9.0) mobile transaction entry, privacy mode (#259) 2023-09-03 16:22:20 +01:00
Matiss Janis Aboltins
7a90e1e2c7 🔖 (23.9.0) mobile transaction entry, privacy mode (#266)
**Feature highlight:**
- Mobile transaction entry - ability to enter transactions using the
mobile responsive version of Actual
- Privacy mode - ability to mask balance amounts in the app - allowing
to use the product in public environments

---

- web: https://github.com/actualbudget/actual/pull/1635
- server: https://github.com/actualbudget/actual-server/pull/259
- docs: https://github.com/actualbudget/docs/pull/266

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2023-09-03 15:56:04 +01:00
kei
43d5ef0ac0 Update index.md (#264)
Edit typo.
2023-08-27 21:48:39 +01:00
Seth Gillett
80c8c665f5 Add instructions to retrieve nYNAB budget using an API key (#263) 2023-08-25 17:43:45 +01:00
Matiss Janis Aboltins
cd9721d675 Pikapods easy-install in homepage (#262)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-08-24 20:35:10 +01:00
Constantin Mihai
ad65fcdffc Fix config file not being loaded from the project root by default (#249) 2023-08-16 20:03:58 +01:00
Dylan Myers
87747a83b9 Disable Express x-powered-by Header (#248) 2023-08-16 18:36:33 +01:00
Ludvig Hozman
0501deac2d Add DANSKEBANK_DABANO22 integration (#244) 2023-08-15 19:07:17 +01:00
Johannes Löthberg
95c7d5bc2c Decide on transaction date during GoCardless transaction normalization (#243) 2023-08-15 08:29:38 +01:00
Matiss Janis Aboltins
03f4f00547 📝 removing some outdated information (#259) 2023-08-14 20:51:49 +01:00
Matiss Janis Aboltins
9c5e4bc7a1 📝 new core contributor guide (#256)
New Core Contributor Guide

Information that is useful to know when joining the team.
2023-08-10 17:22:31 +01:00
shall0pass
9ee18ad59a Updated text to GoCardless (#254)
I don't have a GoCardless account to update the images.  

Have the images fundamentally changed (besides saying GoCardless instead
of Nordigen)?

---------

Co-authored-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-10 10:47:46 -05:00
CharlieMK
09380db661 Add FINTRO_BE_GEBABEBB GoCardless integration (Include additionalInformation in notes) (#242) 2023-08-09 21:20:50 +01:00
Johannes Löthberg
52c1676005 Add NORWEGIAN_SE_NORWNOK1 bank (#237)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2023-08-09 17:54:36 +01:00
Johannes Löthberg
9c9f6645d3 Add GoCardless bank integration for American Express AESUDEF1 (#239) 2023-08-09 08:27:47 +01:00
Johannes Löthberg
9102d974a5 Make endDate optional when downloading GoCardless transactions (#241) 2023-08-09 08:22:57 +01:00
Matiss Janis Aboltins
7cef3fe24b 🔖 (23.8.1) fix nYNAB import, mobile colors and other smaller fixes (#240)
- web: https://github.com/actualbudget/actual/pull/1475
- server: https://github.com/actualbudget/actual-server/pull/240
- docs: https://github.com/actualbudget/docs/pull/260
2023-08-07 18:58:41 +01:00
Matiss Janis Aboltins
ae2bedd681 🔖 (23.8.1) fix nYNAB import, mobile colors and other smaller fixes (#260)
- web: https://github.com/actualbudget/actual/pull/1475
- server: https://github.com/actualbudget/actual-server/pull/240
- docs: https://github.com/actualbudget/docs/pull/260
2023-08-07 18:54:27 +01:00
Matiss Janis Aboltins
638a631405 Fix docs link (#258)
Fixes the link used in `/blog/rss.xml`
2023-08-04 18:49:58 +01:00
Matiss Janis Aboltins
496d60c3a7 🔖 (23.8.0) stability improvements and new experimental features (#238)
- web: https://github.com/actualbudget/actual/pull/1444
- server: https://github.com/actualbudget/actual-server/pull/238
- docs: https://github.com/actualbudget/docs/pull/257

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-08-02 21:01:54 +01:00
Matiss Janis Aboltins
732f1e9391 🔖 (23.8.0) stability improvements and new experimental features (#257)
- web: https://github.com/actualbudget/actual/pull/1444
- server: https://github.com/actualbudget/actual-server/pull/238
- docs: https://github.com/actualbudget/docs/pull/257

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
2023-08-02 20:34:45 +01:00
Matiss Janis Aboltins
ce8d53a513 🔥 (nordigen) removing env var/config file support (#235)
Removing env var/config file support for Nordigen secrets. These have
been migrated to the new `secrets` db table a while ago. We can now
clean up the legacy implementation for these secrets.
2023-07-29 19:59:31 +01:00
youngcw
8cebea3a25 Goals: add blurb for previous flag, clean up confusing note (#253)
Matches [#1403](https://github.com/actualbudget/actual/pull/1403)

Tweaked some things that I noticed that were confusing.

---------

Co-authored-by: shall0pass <20625555+shall0pass@users.noreply.github.com>
2023-07-29 13:15:37 -05:00
Johannes Löthberg
5787ae51e5 Rewrite managing credit cards page (#252) 2023-07-27 09:13:28 -05:00
Matiss Janis Aboltins
20c2f1950b ♻️ rename nordigen to gocardless (#231)
Just renaming things from Nordigen to Gocardless.
2023-07-24 19:41:25 +01:00
Johannes Löthberg
8a9803fc5f Fix documentation for keeping negative balances in a category (#241) 2023-07-21 08:37:49 -04:00
dependabot[bot]
723d9cd62c build(deps): bump word-wrap from 1.2.3 to 1.2.4 (#230)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3
to 1.2.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jonschlinkert/word-wrap/releases">word-wrap's
releases</a>.</em></p>
<blockquote>
<h2>1.2.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Remove default indent by <a
href="https://github.com/mohd-akram"><code>@​mohd-akram</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/24">jonschlinkert/word-wrap#24</a></li>
<li>🔒fix: CVE 2023 26115 (2) by <a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/41">jonschlinkert/word-wrap#41</a></li>
<li>🔒 fix: CVE-2023-26115 by <a
href="https://github.com/aashutoshrathi"><code>@​aashutoshrathi</code></a>
in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/33">jonschlinkert/word-wrap#33</a></li>
<li>chore: publish workflow by <a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/42">jonschlinkert/word-wrap#42</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mohd-akram"><code>@​mohd-akram</code></a> made
their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/24">jonschlinkert/word-wrap#24</a></li>
<li><a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> made
their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/41">jonschlinkert/word-wrap#41</a></li>
<li><a
href="https://github.com/aashutoshrathi"><code>@​aashutoshrathi</code></a>
made their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/33">jonschlinkert/word-wrap#33</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4">https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f64b188c72"><code>f64b188</code></a>
run verb to generate README</li>
<li><a
href="03ea08256b"><code>03ea082</code></a>
Merge pull request <a
href="https://redirect.github.com/jonschlinkert/word-wrap/issues/42">#42</a>
from jonschlinkert/chore/publish-workflow</li>
<li><a
href="420dce9a24"><code>420dce9</code></a>
Merge pull request <a
href="https://redirect.github.com/jonschlinkert/word-wrap/issues/41">#41</a>
from jonschlinkert/fix/CVE-2023-26115-2</li>
<li><a
href="bfa694edf5"><code>bfa694e</code></a>
Update .github/workflows/publish.yml</li>
<li><a
href="ace0b3c78f"><code>ace0b3c</code></a>
chore: bump version to 1.2.4</li>
<li><a
href="6fd7275946"><code>6fd7275</code></a>
chore: add publish workflow</li>
<li><a
href="30d6daf60f"><code>30d6daf</code></a>
chore: fix test</li>
<li><a
href="655929cabe"><code>655929c</code></a>
chore: remove package-lock</li>
<li><a
href="49e08bbc32"><code>49e08bb</code></a>
chore: added an additional testcase</li>
<li><a
href="9f626935f3"><code>9f62693</code></a>
fix: cve 2023-26115</li>
<li>Additional commits viewable in <a
href="https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=word-wrap&package-manager=npm_and_yarn&previous-version=1.2.3&new-version=1.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/actualbudget/actual-server/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-19 17:08:34 +01:00
Michael Gillett
894b137432 Issue 236 - Settings page images missing highlighted callouts (#249) 2023-07-19 09:07:49 -04:00
Matiss Janis Aboltins
1de788ea68 ⬆️ (nordigen-node) upgrade to v1.2.6 (#229)
1. upgrade `nordigen-node` to 1.2.6 (which uses the new gocardless
domain)
2. allow accessing `nordigen` functionality via `/gocardless` to unblock
using the new API path in actual-web
2023-07-18 18:31:54 +01:00
Johannes Löthberg
c1e801c487 Fix markup of release note template for contributing docs (#248) 2023-07-17 07:03:36 -04:00
Paul Gauntlett
d32b0af92d Explanation of Filter Dropdowns (#247)
Added a note regarding the dropdown arrow by "Date" and "Amount"s in
view of a recent bug report that showed that these are not always easily
discovered..

PS Sorry to keep adding changes but I am trying to respond quickly to
@shall0pass comments on another issue
2023-07-15 19:05:06 +01:00
Paul Gauntlett
0137e6b2b3 Filters - Example of Date Dropdown (#246)
Add Screenshots re Date Dropdown to Docs

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-15 17:36:10 +01:00
shall0pass
f0e67d71d4 Spellchecker CI (#228) 2023-07-15 10:41:33 -04:00
Paul Gauntlett
181e30e168 Describe how to access "Settings" (#245)
A partial update to the text until the screenshots can be updated
2023-07-14 20:12:59 +01:00
Paul Gauntlett
9a24c1019d A tour of actual - small update (#244)
Part of these instructions referred to desktop app and are now amended
2023-07-14 20:12:39 +01:00
Paul Gauntlett
521aa787ac Update Docs re delete Rules (#243)
Update Docs re mechanics to delete Rules
2023-07-14 19:54:27 +01:00
Paul Gauntlett
5fedcde883 Update Docs re Global Keyboard Shortcuts (#242)
Update Documentation regarding Global Keyboard Shortcuts as these do not
work in the Web app
2023-07-14 19:52:32 +01:00
shall0pass
f1f3079b0c Add 'update' subheadings for docker (#240) 2023-07-12 19:01:52 -04:00
Michael Gillett
ce8ea5a534 created filters & reports category (#238) 2023-07-12 14:30:50 -04:00
Michael Gillett
48a4e02097 added section for saving filtered transactions for 23.7.1 update (#232) 2023-07-11 17:45:25 -04:00
Paul Gauntlett
073c78bce5 New Account - Add link to Bank Sync Notes (#235) 2023-07-10 14:22:31 -04:00
Paul Gauntlett
3cc42cd58c Category Functionality Notes Update (#233) 2023-07-10 11:24:40 -04:00
Paul Gauntlett
9bf146cd70 Change and Add Create Accounts Images (#231) 2023-07-09 15:10:33 -04:00
Matiss Janis Aboltins
354152dbb5 🔖 (23.7.2) more patches (not so critical, but still annoying) (#225)
- web: https://github.com/actualbudget/actual/pull/1322
- server: https://github.com/actualbudget/actual-server/pull/225
- docs: https://github.com/actualbudget/docs/pull/230
2023-07-09 17:03:55 +01:00
Matiss Janis Aboltins
067cd5122b 🔖 (23.7.2) more patches (not so critical, but still annoying) (#230)
- web: https://github.com/actualbudget/actual/pull/1322
- server: https://github.com/actualbudget/actual-server/pull/225
- docs: https://github.com/actualbudget/docs/pull/230
2023-07-09 17:02:45 +01:00
shall0pass
a446a5fce1 Spelling corrections (#229) 2023-07-09 11:29:04 -04:00
Michael Gillett
2277b12be8 instructions on manual db updates (#226) 2023-07-07 22:25:52 -04:00
shall0pass
c39b8d5018 Add more documentation for 'up to' keywords and spelling issues (#227) 2023-07-06 18:07:07 -04:00
Matiss Janis Aboltins
d6b1ba1250 🔖 (23.7.1) critical sync fixes (#225) 2023-07-05 17:15:38 -04:00
Matiss Janis Aboltins
c2ee92878c 🔖 (23.7.1) critical sync fixes (#224)
- web: https://github.com/actualbudget/actual/pull/1295
- server: https://github.com/actualbudget/actual-server/pull/224
- docs: https://github.com/actualbudget/docs/pull/225
2023-07-05 21:51:03 +01:00
Jed Fox
b9ea77f7bc Add warning not to install 23.7.0 (#224) 2023-07-05 18:25:31 +01:00
Matiss Janis Aboltins
8237eb56ab 🔖 (23.7.0) Nordigen release, stability improvements (#222)
- web: https://github.com/actualbudget/actual/pull/1280
 - server: https://github.com/actualbudget/actual-server/pull/222
 - docs: https://github.com/actualbudget/docs/pull/223

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-07-04 22:08:39 +01:00
Matiss Janis Aboltins
46f330213f [WIP] 🔖 (23.7.0) Nordigen release, stability improvements (#223)
- web: https://github.com/actualbudget/actual/pull/1280
 - server: https://github.com/actualbudget/actual-server/pull/222
 - docs: https://github.com/actualbudget/docs/pull/223

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-07-04 22:07:04 +01:00
youngcw
e9e213148d check template blurb (#181) 2023-07-04 12:37:02 -04:00
youngcw
9233649012 Entry for available funds percent goal (#221) 2023-07-04 09:36:04 -04:00
Jed Fox
dae2eb210b Add redirects for all pages on the old actualbudget.com (#219) 2023-07-02 07:04:27 -04:00
Jed Fox
4555d62fc7 Update the restore doc (#220) 2023-07-02 07:03:36 -04:00
Shazib Hussain
28e0d712ab Update comments in docker-compose.yml (#221) 2023-06-30 21:16:35 -04:00
Jed Fox
fb40f0b2c6 Add donate links to the navbar & footer (#216) 2023-06-29 14:30:11 -04:00
Jed Fox
413c9f7919 Add a funding policy document (#217) 2023-06-29 14:23:56 -04:00
Jed Fox
3538723e87 Update blog authors (#218) 2023-06-29 14:23:37 -04:00
Jed Fox
b84d3f0a75 Fix errors in import example (#215)
ref:
https://discord.com/channels/937901803608096828/1122664924582260786/1123052436219760691
2023-06-27 16:38:40 -04:00
Matiss Janis Aboltins
53d1588b14 📝 updating the website tagline, the hook (#212)
Updated the tagline (the hook) for the website.

For people coming in for the first time - they don't know (and care)
about the historical context of open source actual vs closed source. So
slightly changed the copy to focus on the truly important things - the
features.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-23 20:13:44 +01:00
Zsolt Sz. Sztupák
22ad3e5ff7 Add Home Assistant as a community install option (#214) 2023-06-22 21:14:06 -04:00
Shazib Hussain
741460fd10 Adding architecture details (#211)
Maybe these notes should form part of an existing page, but I wanted to
put some notes in about the web worker/websockets nuance and clarify the
whole frontend/backend thing as it confused me a bit at first.

Perhaps this page could be a stub for adding more 'technical' details as
we go. (stick a 'more coming soon' on the bottom?)

Or maybe it should just be called 'Technical Details'

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-19 19:28:12 -04:00
Jed Fox
48fbda27fa Redirect /account/* to sunset domain (#210) 2023-06-19 20:54:23 +01:00
Matiss Janis Aboltins
dbb5db590d 📝 update core contributors (#209)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-19 20:07:40 +01:00
Matiss Janis Aboltins
debb33a63d ♻️ (crdt) use actual-app/crdt package instead of api (#218)
Using the new CRDT package instead of API.
2023-06-19 08:07:21 +01:00
Jed Fox
5252f45073 Add a health check script (#214)
This allows running a health check from inside the container. Usage:
`npm run health-check`. That may not work inside of Alpine containers,
so you can do `node src/scripts/health-check.js` directly instead. Fixes
#213.
2023-06-18 22:36:16 -04:00
Shazib Hussain
f92c760d8d Updating project information docs (#207) 2023-06-18 11:00:26 -04:00
Matiss Janis Aboltins
c559e6b68c 📝 (nordigen) move bank-sync docs away from experimental (#208) 2023-06-18 10:58:49 -04:00
Rich Howell
38cbf49ef7 [WIP] Contributing doc changes (#204)
For any changes now that the document is public.
2023-06-16 17:49:21 +01:00
Rich Howell
51b4090066 Documentation Structure (#205)
Amended document structure to fit amended strucutre

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-15 06:45:18 +01:00
Rich Howell
e722f58b52 Update README.md (#206) 2023-06-14 20:16:09 +01:00
Rich Howell
3817952ed6 Update README.md (#183)
Linked to contributing docs, replacing detail. This can't be merged
until after #176 gets merged though as the build will fail due to broken
links.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-14 20:14:46 +01:00
Rich Howell
5954141c15 Contributing readme link update (#217)
Replaced contributing link

<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-06-14 20:07:50 +01:00
Rich Howell
7fa3a13783 Contributing to actual budget (#203) 2023-06-14 18:07:12 +01:00
Rich Howell
216732581a Update faq.md (#198)
Bank Sync update
2023-06-14 17:46:19 +01:00
Jed Fox
bc1a039105 Swap from reference-style links to @mentions (#201)
I will also update the release notes generator to use the new style
(9ffec33742)
2023-06-14 17:45:38 +01:00
Jed Fox
ca27949989 Update “how it works” link (#216)
- https://github.com/actualbudget/docs/pull/202
2023-06-14 07:33:52 +01:00
Jed Fox
268544b6d7 Rename budgeting/howitworks.md to index.md (#202)
This matches the other pages that have child pages.
2023-06-14 07:33:05 +01:00
Jed Fox
be0dc4ecd4 Improve homepage a bit, clean up old/unused code (#200) 2023-06-13 16:50:22 -04:00
Rich Howell
8caa78b1f7 Blog (#196)
https://docusaurus.io/docs/blog
https://deploy-preview-196--actualbudget-website.netlify.app/
2023-06-13 20:14:36 +01:00
Rich Howell
8ac74ed397 Update README.md (#215)
Remove the bulk in favour of links to our core docs.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-06-13 14:05:59 -04:00
Jed Fox
899801ab0c Move the docs back to /docs, add in a version of the homepage (#193)
https://deploy-preview-193--zingy-bonbon-b1b286.netlify.app

---------

Co-authored-by: Rich Howell <github@codenameowl.com>
2023-06-13 05:51:08 +01:00
Jed Fox
d61dbea744 A few minor updates (#194)
- fix broken issue link
- tweak the typography in the API docs
2023-06-13 05:19:50 +01:00
Jed Fox
30f2ef6da6 Fix cd instructions for Windows (#192)
I meant to come back and fill this in as part of #127 but forgot about
it — @rich-howell does this instruction sound correct?
2023-06-12 18:32:22 -04:00
Jed Fox
9260fc4c69 Delete deploy.yml (#191)
We don’t need this anymore since we deploy via Netlify
2023-06-12 20:28:33 +01:00
Jed Fox
5d433c617e Reorganize page URLs to match the sidebar (#185)
Principles:

- lowercase URLs only
- kebab-case
- generally match sidebar structure
2023-06-12 15:20:06 -04:00
Rich Howell
b5e8296318 Update docusaurus.config.js (#190)
Change URL
2023-06-12 15:19:12 -04:00
Jed Fox
7f880446cc New Fly install doc (#127) 2023-06-12 06:29:47 +01:00
Jed Fox
bf99b244e0 Update local install docs to recommend installing the latest LTS version of Node (#184) 2023-06-11 06:38:41 +01:00
Jed Fox
2b11c85c7e Add instructions for updating to the local install page (#187)
Co-authored-by: Rich Howell <22135084+rich-howell@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
2023-06-11 06:37:52 +01:00
Rich Howell
50f31a7cf0 Replace Logo (#188)
Logo update
2023-06-11 06:36:58 +01:00
Jed Fox
83bb5f982a Update Nordigen setup process (#182)
The environment variables and config.json methods are now deprecated
since the secrets are stored in the database.


https://deploy-preview-182--zingy-bonbon-b1b286.netlify.app/accounts/connecting-your-bank/
2023-06-08 18:41:53 +01:00
youngcw
c38e8f380a Remainder goal section (#180)
Matches
[actualbudget/actual#1101](https://github.com/actualbudget/actual/pull/1101)
2023-06-07 18:25:37 -04:00
00apm
9978365350 Update Fly-updating.md- Add info about updating fly.toml before deployment (#97)
I have a suggestion for the "Updating Actual" doc page. Since fly.toml
is in .gitignore pulling changes via git won't update it. Users should
also update their fly.toml before deploying on server.
I added short info in the Fly-updating.md. However I don't know if this
info should also be updated elsewhere.

---------

Co-authored-by: Rich Howell <github@codenameowl.com>
2023-06-03 07:57:30 +01:00
btehan
bee714a383 Update howitworks.md (#134)
Line 53, where it says That money will appear in next month's **To
Budget**. This isn't really happening. Should this part of the
documentation be changed?

---------

Co-authored-by: Rich Howell <github@codenameowl.com>
2023-06-03 07:44:53 +01:00
Matiss Janis Aboltins
ef67722bdb 🔖 (23.6.0) category hiding and filters for reports (#179)
Web: https://github.com/actualbudget/actual/pull/1087
Server: https://github.com/actualbudget/actual-server/pull/207
Docs: https://github.com/actualbudget/docs/pull/179
2023-06-01 21:40:24 +01:00
Matiss Janis Aboltins
7c8e9bb5ec 🔖 (23.6.0) category hiding and filters for reports (#207)
Web: https://github.com/actualbudget/actual/pull/1087
Server: https://github.com/actualbudget/actual-server/pull/207
Docs: https://github.com/actualbudget/docs/pull/179

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-01 21:13:18 +01:00
Jed Fox
d1ff06840e Migrate to combined release notes action from main repo (#208) 2023-06-01 16:07:42 -04:00
Rich Howell
d9e593c689 Remove loot-design (#178)
Remove loot-design from project structure, this resolves #177
2023-06-01 13:42:56 +01:00
youngcw
d481f15fb2 add example for schedule full flag (#174)
Matches up with
[actualbudget/actual#1052](https://github.com/actualbudget/actual/pull/1052)
2023-05-27 10:09:27 +01:00
shall0pass
497911bd99 End of month cleanup (#172)
This is a basic documentation page of the `End of month cleanup` feature
if it's chosen to be included.

PR: https://github.com/actualbudget/actual/pull/1016
2023-05-24 12:08:15 -04:00
Jed Fox
c2c8c1719e Authenticate request for artifacts (#204)
Previously, the latest artifact list was requested unauthenticated using
`ADD "https://api.github.com/..." /tmp/artifacts.json`. While this works
locally, on GitHub’s servers it seems that the per-IP rate limit was
exceeded. There isn’t a way to get Docker to pass the `Authorization`
header that I know of, so this work has been moved to an external shell
script that pulls down the relevant data.
2023-05-15 17:47:10 -04:00
aujkb
c337afa90c Update project-layout.md (#170) 2023-05-13 08:37:01 -04:00
youngcw
5895e51594 Add info on template hold flag (#169)
Info about using PR#1004 of base app.
2023-05-07 16:52:50 -04:00
Jed Fox
5d36ecbbbb Update README (#201) 2023-05-05 19:34:02 -04:00
Rich Howell
1133af7669 23.5.0 (#168)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-05-04 19:02:41 +01:00
Matiss Janis Aboltins
9169bfabad 🔖 (23.5.0) various improvements (#200) 2023-05-04 18:51:03 +01:00
Nik
d1055d00e6 Small fixes for API docs (#167) 2023-05-04 10:02:36 -04:00
youngcw
934b2d0a1e added info about goal template priorities (#166) 2023-05-02 16:37:29 -04:00
Matiss Janis Aboltins
fb6dc5e8f1 🐛 (nordigen) return JSON response for the secrets API (#197)
A small fix: returning JSON response instead of plain-text.

The frontend always expects a JSON response. So a tiny fix here..
2023-05-02 19:06:14 +01:00
Rich Howell
020079210d Demo Budget (#163) 2023-04-27 08:10:39 -04:00
shall0pass
0a57b4341a Add percentage based targets to table (#152)
This is an addition when https://github.com/actualbudget/actual/pull/858
is merged.

Co-authored-by: Jed Fox <git@jedfox.com>
2023-04-26 19:00:06 -04:00
Rich Howell
c6e290268f Update addaccount.md (#164)
This should resolve #54 the issue raised with a note has been added to
notify people of the Off Budget reset when the account type is changed.
2023-04-26 14:52:17 -04:00
Rich Howell
055f2c704b View on Hover (#165)
This should resolve #82 documentation around Category notes added.
2023-04-26 14:50:19 -04:00
Henrik Maaland
d60bb6a19e App secret service (#194)
Co-authored-by: Henrik Maaland <henrikm@netpower.no>
2023-04-26 08:41:07 -04:00
Jed Fox
996f238648 Remove the unused migrations folder (#195) 2023-04-25 16:18:41 -04:00
aujkb
3ef6036933 Update nynab.md (#161) 2023-04-25 07:58:51 -04:00
aujkb
a210fba367 Update nynab.md (#162) 2023-04-25 06:55:31 -04:00
Jakub Kuczys
7c744f0e3d Add a field with all transactions to /nordigen/transactions endpoint (#190)
Helps with actualbudget/actual#919 by adding the `all` field wit both
pending and booked transactions to the output of
`getTransactionsWithBalance()` and, by extension, the
`/nordigen/transactions` endpoint.

I could alter the `getTransactions()` to return the `all` field as well
but I figured that keeping it such that it returns the output from
Nordigen API 1:1 might be better so I left it as is. If you don't agree,
let me know and I'll update this.
2023-04-22 16:44:43 +01:00
youngcw
61d963cf98 Additions to keyboard shortcuts (#147)
I added some non documented keyboard shortcuts for the transaction
ledger. I also standardized the capitalization of the existing
shortcuts.

I cant decide if its better to have the single letters upper or lower
case. I don't want to imply that a `Shift` press is needed. Also, in
`Ctrl + o` shortcut, the `o` was lower case maybe to try and not look
like the number. I don't think I have a preference and can change it to
upper case if that is preferred.
2023-04-22 11:33:40 -04:00
Patrik Stenmark
bdf2f839e3 Fix table in goal template docs (#160) 2023-04-22 11:28:15 -04:00
Matiss Janis Aboltins
2f54a948be 🔖 (23.4.2) revert back to old autocomplete & keyboard shortcut fix (#192)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-22 15:43:51 +01:00
Matiss Janis Aboltins
0452acc108 🔖 (23.4.2) revert back to old autocomplete & keyboard shortcut fix (#159)
- web: https://github.com/actualbudget/actual/pull/930
- server: https://github.com/actualbudget/actual-server/pull/192
2023-04-22 15:34:29 +01:00
shall0pass
b4ea66f5d5 Goals: Added 'schedule' keyword to syntax chart (#158) 2023-04-19 10:28:05 -04:00
shall0pass
2fd7e15892 Changed wording on 'by' matches section (#151) 2023-04-19 10:27:29 -04:00
Tillman Jex
e2f79d3089 fly launch cd clarification - resolves #140 (#155) 2023-04-18 13:16:38 -04:00
Jed Fox
652d75a939 Add a handler for AxiosError errors (#189) 2023-04-17 15:54:36 -04:00
Jed Fox
17b1f15eaf Add step to create a GitHub release when publishing a release (#154) 2023-04-17 15:54:12 -04:00
Jed Fox
104c9803f7 Add a password set/reset script (#186)
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-04-16 15:08:06 -04:00
Matiss Janis Aboltins
bc93604576 🔖 (23.4.1) fix rule creation from transaction list (#188) 2023-04-16 18:11:43 +01:00
Matiss Janis Aboltins
67d314c8dd 🔖 (23.4.1) fix rule creation from transaction list (#153) 2023-04-16 18:09:22 +01:00
Jed Fox
a1af1ff3d2 Add express-rate-limit (#187)
CodeQL keeps yelling at us about this… I’m not sure if the filter is
smart enough to use this rate limit middleware to remove the warnings,
but at least we will be setting a reasonable bound on attempts to crack
the server password.
2023-04-12 16:38:43 -04:00
Alberto Gasparin
47d77a3198 Use babel preset-typescript (#185)
Seems like we already added `tsc` to build the project, but we use the
wrong babel preset (Flow) instead of the specific TS one. This is only
used in testing to make Jest work (from what I can tell).
2023-04-08 23:21:14 -04:00
intiplink
82b4643c78 github action workflow: revert old way to build images (#184) 2023-04-08 12:13:25 -04:00
Jed Fox
0096907368 Add workflow_dispatch to edge image action so it can be manually run 2023-04-08 07:47:42 -04:00
Jed Fox
1504127979 Blank commit to trigger image build 2023-04-08 07:46:29 -04:00
Jed Fox
6f7306cd37 Don’t check for release notes on release/* branches (#181) 2023-04-07 16:26:29 -04:00
Matiss Janis Aboltins
374e2a839d 📝 update release instructions (#150) 2023-04-07 21:21:47 +01:00
intiplink
063d468836 Add support for armv6l (alpine based images) (#182)
GitHub CI log:
```
[linux/arm/v6 base 6/8] RUN yarn workspaces focus --all --production
204.6 ➤ YN0007: │ bcrypt@npm:5.1.0 must be built because it never has been before or the last one failed
204.6 ➤ YN0007: │ better-sqlite3@npm:8.2.0 must be built because it never has been before or the last one failed
...
[linux/arm/v7 base 6/8] RUN yarn workspaces focus --all --production
203.8 ➤ YN0007: │ bcrypt@npm:5.1.0 must be built because it never has been before or the last one failed
203.8 ➤ YN0007: │ better-sqlite3@npm:8.2.0 must be built because it never has been before or the last one failed
```

It seems that both armv6 and armv7 have the same issues with `bcrypt`
and `better-sqlite3` not being built. These packages are required to
build from source, luckily QEMU use armv7l for compiling.

Tested and working on RPi Zero W.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-04-07 14:37:10 -04:00
Jed Fox
8fa23838c0 Use an IIAFE in the API example code 2023-04-06 19:45:27 -04:00
Matiss Janis Aboltins
f20bed8e9f 🔖 (23.4.0) release notes (#148)
**Actual has now been moved to a stand-alone Docker organization. If you
were previously using `jlongster/actual-server` docker image - please
update it to `actualbudget/actual-server`.**

The release has the following notable features:

- Rules can now optionally be applied when any of their conditions match
(in addition to the existing option to apply when all of their
conditions match)
- Rules: quick-create option from the transaction table (in the “X
selected” menu that shows up after selecting a transaction, choose
“Create rule”)
- Ability to hide decimal places for currencies with large numbers (in
Settings → Formatting)
- New autocomplete component (please report any bugs
[here](https://github.com/actualbudget/actual/issues/773))
- Lots of smaller improvements and bugfixes

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-04-06 22:19:55 +01:00
Matiss Janis Aboltins
7e88de182e 🔖 (23.4.0) (#180) 2023-04-06 22:16:15 +01:00
Jed Fox
b453e6771b Add doc to backup page about how to reduce backup size (#145) 2023-04-06 14:25:45 -04:00
Jed Fox
c923505ee2 Fly: add instruction for new upsell (#142) 2023-04-06 14:25:30 -04:00
Jed Fox
1cccf50def Add a page about configuring server debug logging (#146) 2023-04-06 13:48:14 -04:00
Jed Fox
bf4319d978 Add some basic debug logging (#178)
This will help people sort out configuration issues. Will open a PR to
the docs as well to guide people to troubleshoot using this!
2023-04-06 13:24:46 -04:00
Trevor Farlow
01d2b1cb5e Update all Docker Hub references to new actualbudget organization (#144)
...away from `jlongster`'s personal account. We're officially an org
now!

Before merging,
1. merge https://github.com/actualbudget/actual-server/pull/175
2. build and push a new image to the org repo via `actual-server` CI
2023-03-31 22:45:25 -06:00
Trevor Farlow
c3d89b6509 New Docker Hub org in CI and README (#175)
Update all Docker Hub references to new `actualbudget` organization from
`jlongster` personal account.
We're officially an org now!

A bit of markdown/yaml auto-formatting snuck in, too.

Closes https://github.com/actualbudget/actual/issues/364
Corresponding update for the docs site in
https://github.com/actualbudget/docs/pull/144

Simultaneous to merging, we need to update our `DOCKER_HUB_*` GitHub
secrets in this repo.

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-31 14:07:15 -06:00
Trevor Farlow
875f90525c Update directory name for release notes 2023-03-31 13:08:41 -06:00
chris heazlewood
e7486b1299 Update Building-Windows.md (#143) 2023-03-30 19:43:18 -05:00
James Mortensen
cb731099e6 Add linux/arm/v7 to the list of platforms for the Docker image (#141)
Users in #99 report that Actual in Docker runs on armv7 platforms,
although a bit sluggish. I confirmed that the base images for Debian and
Alpine support the linux/arm/v7 target and have added them to the
platform list in the GitHub Actions workflow.

At least one user confirms it works with the bullseye default
`Dockerfile`, but before merging it would be great if someone can
confirm it works with the Dockerfile.alpine image:

```
git clone https://github.com/jamesmortensen/actual-server.git
cd actual-server
git checkout armv7-image
docker build -t actual-server -f Dockerfile.alpine .
docker run -p 5006:5006 actual-server
```

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-30 18:52:45 -05:00
Jed Fox
b6073f7e6f Update docker-compose.yml (#150) 2023-03-29 18:31:06 -05:00
Jakub Kuczys
9b2d74c3ad Stream file without loading to memory in /download-user-file (#172) 2023-03-28 21:05:31 +01:00
Jed Fox
11f28edbf3 Add docs for importing CSVs (#133) 2023-03-27 11:31:44 -05:00
Jed Fox
4a7c7022ee Update Docker docs (#122) 2023-03-27 11:25:45 -05:00
Jed Fox
0cd8aa0d3d Add a link to a guide for hosting on Synology (#125) 2023-03-27 11:25:10 -05:00
Jakub Kuczys
7713848067 Include *.test.js files in test run (#171)
When working on something else, I noticed that `.test.js` files were not
running due to `jest.config.json` not including them. I went ahead and
re-enabled these tests to make sure that unit tests are actually being
run.
2023-03-27 08:55:32 -05:00
Aidan Harbison
3dfa3d196a edge tag contains latest server and client (#141)
Based on testing and discussion in Discord, the `edge` tag does contain
the latest `desktop-client` as well. Removes an outdated statement in
the Docker install documentation that stated otherwise.
2023-03-26 11:23:39 -05:00
Jakub Kuczys
c8a901d3ff (nordigen) Include hashed IBAN in get-accounts and transactions endpoints (#166)
Exposes IBAN in the API which is required for
https://github.com/actualbudget/actual/pull/766 to work reliably.
2023-03-24 21:59:12 +00:00
aujkb
affb20b763 Update overview.md (#139) 2023-03-23 08:51:47 -04:00
Eike Siewertsen
0e9154323a fix api example config typo. serverUrl -> serverURL (#138) 2023-03-22 08:32:37 -04:00
Soulplayer
58946590d7 Update Configuration.md with a warning about exposing data and config.json (#137) 2023-03-22 08:26:26 -04:00
Jakub Kuczys
d02e1b3640 Report parse issues for config.json in default location (#167)
This changes the behavior of configuration loading when
ACTUAL_CONFIG_PATH env var is not specified. With this change, syntax
errors in config.json will now be reported if ACTUAL_CONFIG_PATH env var
is not specified and the app will not proceed. When the config.json file
is not present or cannot be read, the behavior remains the same.
2023-03-21 17:47:11 +00:00
Soulplayer
f18a30fde0 Improved documentation arround connecting your bank (#136) 2023-03-20 07:43:09 -04:00
Matiss Janis Aboltins
19dbf815e6 (bank-sync) expose demo bank in the get-banks endpoint (#168)
Exposing the demo bank again in the get-banks endpoint.

Frontend implementation of the `showDemo` will come next. The demo bank
will only be available for DEV and PREVIEW builds.
2023-03-19 19:55:51 +00:00
Jakub Kuczys
5969844407 Remove backticks in config.json example (#135) 2023-03-18 11:32:30 -04:00
Jed Fox
df70a791fd Add support for automatically generating release notes (#165) 2023-03-16 23:53:47 -04:00
Jed Fox
13ecf64ddb Add docs for auto-generated release notes (#129)
People contributing will now be asked to create a file containing their
PR’s entry into the release notes when opening a PR.

This approach was inspired by Prettier’s release notes approach
(https://github.com/prettier/prettier/tree/main/changelog_unreleased).
Separate files are used to avoid merge conflicts (each file is
completely separate, whereas adding lines to a file would result in
merge conflicts each time a PR is merged).

Checks will nudge people to create these files for their PRs, and PRs
created from a `release/*` branch on the main repos will have an action
run that outputs the Markdown-formatted release notes into a comment on
their PR. That action will also delete the no-longer-needed release
notes files to prep for the next release. Make sure you merge `master`
into release branch before finishing the PR to ensure the release notes
are fully generated and cleaned up. (You may encounter check failures if
you haven’t merged `master`)
2023-03-16 14:40:44 -04:00
TJ Finlinson
00cc8bf40b Adding Bank sync documentation (#126)
Co-authored-by: root <root@L15294>
Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-13 21:52:51 -04:00
shall0pass
b5ae4c5938 [Experimental] Report budget docs (#121)
I'm not a user of this feature, but I thought I could get the ball
rolling on adding some documentation. I'm not 100% sure this is how this
budget type is used, so there are likely wrong assumptions. I'm hopeful
someone will either correct me or take the reigns. There have been
several users looking for the features of this budget type, so I think
it deserves a little time to explain how it's intended to be used.
2023-03-13 21:40:47 -04:00
Matiss Janis Aboltins
4985cbff96 📝 update release instructions (#131)
Updating release instructions. The current instructions were slightly
outdated.
2023-03-13 21:40:10 -04:00
Matiss Janis Aboltins
6453abad31 🔖 (23.3.2) release notes (#130)
* 🔖 (23.3.2) release notes

* Update Release-Notes.md
2023-03-13 20:24:22 +00:00
Matiss Janis Aboltins
a84036e0c6 🔖 (23.3.2) nordigen fixes (#164) 2023-03-13 19:00:44 +00:00
Matiss Janis Aboltins
973070f22b Remove year from the LICENSE (#140) 2023-03-13 10:06:25 -04:00
Tillman Jex
cf0c17a623 update readme and begin image restructuring (#123)
* update readme and begin img dir restructuring

* fix broken issue board link

* readme edit

* addressed RFCs : #123

* organising images

* more images organised

* more image restructuring

* img reorganisation done

* moved unused imgages to img/unusued and checked if anything broke

* typo

* move favicon and actial imgs back, deleted the rest of unused

* corrections
2023-03-12 22:51:19 -04:00
crorodriguezro
debbc5a5bc Typo: Changed band to bank (#128) 2023-03-12 20:41:50 -04:00
Matiss Janis Aboltins
5f0df5ed53 🐛 (nordigen) add currency to account name (#163)
Sometimes accounts have the same names and the same IBAN, but different
currencies (Paypal).

This should make the account names a bit more unique.. thus easier to
distinguish.


https://github.com/actualbudget/actual/issues/724#issuecomment-1464902166

Obviously the user can choose to use different names in `Actual`. They
are not forced to use this name.
2023-03-12 17:30:50 +00:00
Matiss Janis Aboltins
80be279e11 (nordigen) add status endpoint for checking status (#162)
Add a small endpoint that will be used to check the configuration status
of Nordigen. If it is not configured - we should not allow people to
proceed in the account-link flow.
2023-03-12 16:17:16 +00:00
Surya
1aaafbf435 Update README.md (#161)
Add text to show how to open the app
2023-03-11 21:53:10 +00:00
Matiss Janis Aboltins
1dd1283d56 🐛 (nordigen) close window when opening /nordigen/link path (#160)
When Nordigen accounts are linked 2x windows get opened: 1x (initial
tab) is polling for the status; the other window is for authenticating
with bank. Once the auth is done - customer is redirected back to app:
`/nordigen/link` page. At this point we can just close the tab.


https://github.com/actualbudget/actual/issues/724#issuecomment-1462853590
2023-03-11 21:13:09 +00:00
Jed Fox
184ec5f1c0 Don’t make Dockerfile a symlink (#157)
People have been having issues with this. I copied it from
`docker/stable-ubuntu.Dockerfile`. We should follow up on this to remove
the duplication at some point but this will help fix the problems people
are having now.
2023-03-11 15:52:35 -05:00
Rich Howell
d93439dbfe 23.3.0 (#119) 2023-03-10 18:47:18 +00:00
Filip Stybel
56e5c33c3e Re-generate nordigen token (#156)
This PR fixes the regeneration Nordigen token when it expires.

https://github.com/actualbudget/actual/issues/724
2023-03-10 18:43:21 +00:00
Matiss Janis Aboltins
37c5278abf 🔖 (23.3.1) fix nordigen usage in fly.io (#155)
This _slightly_ changes the interface for configuring Nordigen, but IMO
it's safe to do because

1. the nordigen support is still experimental and subject to breaking
changes
2. we released 23.3.0 only an hour ago
2023-03-09 21:37:29 +00:00
Jed Fox
d1482e38fe Remove extraneous $ 2023-03-09 15:56:20 -05:00
Matiss Janis Aboltins
1cce6137a0 🔖 (23.3.0) experimental bank-sync, maintenance, fixes (#154)
Docs: https://github.com/actualbudget/docs/pull/119
2023-03-09 19:44:45 +00:00
Jed Fox
27ea0ddd98 Fix Docker actions failing on PRs from forks (#153) 2023-03-09 07:37:17 -05:00
Matiss Janis Aboltins
bd7992a45a 🚨 adding trailing commas everywhere (#148)
Two changes in this PR:

1. fail CI jobs if there are lint warnings
2. add trailing comas everywhere (this aligns `actual-server` with
`actual`)
2023-03-07 19:45:51 +00:00
Jed Fox
95a0769eaa Fix edge image tagging (#149) 2023-03-07 14:25:18 -05:00
Matiss Janis Aboltins
af9713d5b1 (bank-sync) meaningful default balance calculation (#144)
Set a default balance calculation logic. This will allow us to integrate
with the majority of the Nordigen supported banks without needing to
manually implement each individual bank.

Frontend change: https://github.com/actualbudget/actual/pull/727

**Important**: some banks might break.. sadly I cannot test all of the
banks. But we should successfully cover ~80-90% of the supported banks
with these defaults. And if people notice that some specific bank is
broken - they can alwys report it to us and we can try and implement a
custom bank class for them.
2023-03-07 18:44:55 +00:00
Jed Fox
ab9f771829 Improve edge image build times (#147) 2023-03-07 13:35:29 -05:00
Matiss Janis Aboltins
fa0c91b22c ⬆️ upgrade yarn to v3.4.1 and add interactive-tools plugin (#146)
Upgraded yarn and added interactive-tools plugin.

This is to align yarn version with the other `actual` repositories.
2023-03-06 17:51:05 +00:00
Matiss Janis Aboltins
2e5f5b48fa (bank-sync) expose available banks via an endpoint (#145)
Related to: https://github.com/actualbudget/actual/pull/727

Exposing the available banks via an endpoint. Currently only the "fully"
supported banks are exposed, but very soon the plan is to expose all of
the bank by default (as part of
https://github.com/actualbudget/actual-server/pull/144)
2023-03-06 17:49:15 +00:00
Jed Fox
a52ae2dba1 Update the :edge images to use the very latest web UI version (#121)
- The `:edge` and `:edge-alpine` containers will now download the latest
commit of the frontend repo and build it when they are built.
- The backend dependency install process now uses the local copy of Yarn
(from #56) to install dependencies
- Extraneous files are no longer copied into the production image. This
is mostly a win for local builds (where the `.yarn` cache folder used to
get copied in) but it’s also a small win for CI-built containers which
will no longer have the README/configuration files/Yarn source code
lying around
- The dockerfiles now say `EXPOSE 5006`. This doesn’t have an effect on
anything by default as far as I can tell but it does mean that tools
know we will be listening on that port and can help users set up their
container accordingly (for example, Docker Desktop)
- Remove some extraneous dependencies from the containers (including
openssl)

---------

Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
2023-03-05 22:19:10 -05:00
Jabari E Holder
533de26936 Update HTTPS.md when using config.json (#118)
Based on the code, the paths are no longer `keyPath` and `certPath`. This errors when using the config.json file.

https://github.com/actualbudget/actual-server/blob/master/src/app.js#L66-L67
2023-03-05 16:39:52 -05:00
Jed Fox
e7aef3a4a7 Switch to Yarn to match the other repos (#117) 2023-03-05 19:14:19 +00:00
Jed Fox
ed2adc8a15 Clean up .gitignore entries (#116) 2023-03-05 18:39:55 +00:00
Tillman Jex
3fc8d44614 using actual (images and instructions update) (#109)
* img : update accounts image : #85

* doc : fixed formatting and clearer wording : #85

* doc : updated instructions due to new sidebar layout : #85

* img : update images due to new sidebar layout : #85

* doc : updated accounts/addaccount page : #85

- moved all images into their own folder
	- grepped the whole repo for their img paths to make sure no other pages were referencing the same images.
- updated img paths in the addaccount page
- updated wording based on new layout / buttons
- simplified other wordings

* img : updated images due to new sidebar layout : #85

- created new folder for backup-restore section
- created new images for 'backup.md'
- deleted old images from 'backup.md'
- updated wording in 'backup.md'

* Fix image sizing

* img : try to half size with @2x, but no change : #85

* doc : implement @2x img resizing and update images : #85

- resized retina screenshots where appropriate
- updated images that showed old sidebar layout

* img : commit missing file : #85

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-05 18:39:39 +00:00
Rich Howell
c0937355dc Installation Methods (#114)
* Installation Methods

Adding the ability to have additional installation methods in the documentation linked to from external blogs etc.

* Update overview.md

Moved section to replace last paragraph
2023-03-05 13:42:01 +00:00
Rich Howell
eeb45dc5dc Update Docker.md (#113)
Docker installation documentation this should resolve #99
2023-03-05 13:17:57 +00:00
Jed Fox
89cf9a1e2f Add Prettier with config matching main repo (#111)
* Add Prettier with config matching main repo

* Run Prettier on all files
2023-03-04 17:56:58 +00:00
Jed Fox
d7274c291f Add an image handling component (#110)
* Update docusaurus

* Make sure images are in their own paragraph

* Add image handling logic

* oops!

* Fix issues with Image component

* Enable image plugin in dev

* Allow arbitrary scales, remove unused case
2023-03-04 16:54:46 +00:00
Filip Stybel
19cd163b30 Backend integration with Nordigen - account sync (#74)
* Add nordigen integration

* Move normalizatoin of accounts to the backend side

* Remove .idea from git

* Move normalization of transactions to the backend side

* Fix some edgecases

* Move nordigen to separate directory

* Partial refactor of nordigen and e2e test

* WIP refactor

* Refactoring

* Refactoring

* Add more tests

* Update get accounts path

* Rm not needed import

* Fix after merge

* Fix AnimatedLoading

* Fix coverage, jest config, linter

* Code review changes

* Upgrade to ESM nordigen

* Upgrade to ESM nordigen

* Remove e2e tests and cleanup packages

* Move env vars to config

* Rollback prettierrc config

* Move nordigen app behind to src

* Revert supertest lib

* Fixing specs

* fixes linter

* Fix build errors

* Fix linter

* Update nordigen-node lib

* remove snapshot

* remove babel

* Fix spec

* fix linter

* Revert "remove babel"

This reverts commit 07ce9fc46043a425f6e83b0b5ce15789fd07e12e.

* Fix coverage

* Add supertest

* Add sortByBookingDate as default sort option for integration bank

* Add comment with explanation of client const

---------

Co-authored-by: Filip Stybel <filip.stybel@ynd.co>
2023-03-03 19:40:49 -05:00
Rich Howell
e6b9680a39 Removed unsupported install methods (#108)
* Removed unsupported install methods

* Update Fly.io.md

Fixed broken link

* Update docs/Installing/fly/Fly.io.md

Co-authored-by: Jed Fox <git@jedfox.com>

* Update overview.md

Removing broken links

* Update overview.md

* Create DockerWithNginx.md

* Docker

---------

Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-01 21:59:12 +00:00
Matiss Janis Aboltins
bdfe900828 Versioning strategy (#105) 2023-02-25 08:48:11 +00:00
Jed Fox
06b687e899 Auto-configure the client’s server URL (#135)
* Respond to the /client-bootstrap route

* Move the bootstrap route to /account/needs-bootstrap

* needs-bootstrap is not authenticated

* we don’t need isActual
2023-02-22 10:17:55 -05:00
Hans Fast
575ec8eda2 Add note on migration from old version (#101)
* add a note about export from old version of actual

* link to migration info from getting-started

* Update docs/Installing/overview.md

Co-authored-by: Hans Fast <fasthans@gmail.com>

* Update docs/Getting-Started/migration/migration-intro.md

Co-authored-by: Hans Fast <fasthans@gmail.com>

---------

Co-authored-by: Rich Howell <22135084+rich-howell@users.noreply.github.com>
2023-02-15 23:23:29 +00:00
Jed Fox
ba06f4dfaa Move HTTPS docs to a separate file and add more information (#104)
* Move HTTPS docs to a separate file and add more information

* copilot
2023-02-15 23:21:20 +00:00
Jed Fox
fa42c2202e Replace require with import (#133) 2023-02-11 21:26:04 -05:00
Rich Howell
4e27e7772c Removing some of the non Actual based installation methods (#103)
* Update sidebars.js

Removing some of the non Actual based installation methods

* Update sidebars.js

Removed commented out lines
2023-02-10 20:24:42 +00:00
Rich Howell
feb78b0cab 230209 Release Notes (#102)
* Update Release-Notes.md

* Update Release-Notes.md
2023-02-09 20:39:36 +00:00
Matiss Janis Aboltins
0537544de2 🔖 (23.2.9) ability to ignore SharedArrayBuffer error (#132) 2023-02-09 20:34:55 +00:00
Jed Fox
be1c119799 Upgrade to ESM, update to latest dependencies (#128)
* Port to ESM

* + @types packages

* s/rmdir/rm/

* bump uuid

* Fix reading in eslintrc

* Add /build to eslintignore

* Update linting/types packages

* Stronger error checking

* - DOM globals

* update better-sqlite3

* Create .node-version

* Revert "update better-sqlite3"

This reverts commit 6b8003804fc09ade6c81324f591e5ad853517dfa.
2023-02-09 13:57:39 -05:00
Paul
efb0305ecf Update Unraid docs with steps to generate certificates (#98) 2023-02-09 07:50:29 +00:00
Jed Fox
dd3e1fbd47 Add Caddy as an alternative to Tailscale (#100) 2023-02-09 07:47:41 +00:00
Jed Fox
76f398dd16 Move source code to an src/ directory (#131)
* Move code to src/

* Add back missing app.js

* Delete async.js
2023-02-07 15:42:07 -05:00
Jed Fox
d37c1bfb25 Update config docs for recent improvements (#96)
* Update config docs for recent improvements

- Add ACTUAL_CONFIG_PATH
- add env variable equivalents to all settings
- add webRoot/ACTUAL_WEB_ROOT

* Reference /data fallback
2023-02-06 21:26:49 +00:00
Matiss Janis Aboltins
064d3e5dbb 🔖 (23.2.6) improved HTTPs configurability (#129) 2023-02-06 21:20:36 +00:00
Jed Fox
c6c3243234 Replace '\n' in key/cert text with literal newlines (#127) 2023-02-06 10:46:22 -05:00
Jed Fox
60b183b094 Fix / route returning the wrong MIME type (#125) 2023-02-06 07:39:47 +00:00
albertchae
1b2102d8e0 Fix minor typos in documentation (#95)
Just some small typos I saw while getting actual set up for the first time.
2023-02-06 07:34:57 +00:00
Rich Howell
ccd0ac5e4d Update Release-Notes.md 2023-02-06 07:32:22 +00:00
Rich Howell
0566096d1d Update Release-Notes.md
Added missing fixes
2023-02-06 07:31:00 +00:00
Rich Howell
a4fad8c8ca Update Release-Notes.md
Added a warning
2023-02-06 07:23:14 +00:00
Jed Fox
9b5fb43ad3 Improve the server config (#120)
* Add a `webRoot` property to the config file to override the web UI used

* Allow all config options to be set via env variables

* Fix TS

* Fix test file paths

* Move “Listening on” message to after we’re actually listening

* Fix codeql warning

* Fix bug when config.https is null but HTTPS_* env vars are defined

* Allow passing raw key/cert into `https.key`/`https.cert`

* Allow passing config file as ACTUAL_CONFIG_PATH

* Forgot to handle userConfig not being specified
2023-02-05 16:32:50 -05:00
Jed Fox
352d1bf730 Fix PR refs in actual-server release notes (#94) 2023-02-05 18:21:42 +00:00
shall0pass
9df4cc18eb Experimental sections - Goal docs (#80)
* goal template docs

* added apply templates subsection

* warning note

* warning label on experimental parent link

* Merge branch 'actualbudget:master' into goal_docs

* file move

* fix sidebar

---------

Co-authored-by: Rich Howell <22135084+rich-howell@users.noreply.github.com>
2023-02-05 18:04:50 +00:00
Jed Fox
7ed206e178 Convert user mentions to reference-style links (#93) 2023-02-05 17:59:53 +00:00
Jed Fox
98ac4d7e6a Add docs for the config file and HTTPS (#91)
* Add docs for the config file and HTTPS

* copy edit

* Link from SharedArrayBuffer docs

* Add config page to sidebar

* .
2023-02-05 17:56:28 +00:00
Rich Howell
b56b00704d Update Release-Notes.md (#84)
* Update Release-Notes.md

Prep for next release

* 23.2.5

Pushing changes.

* Update Release-Notes.md

Added bullet points to actual server

* Update Release-Notes.md

Typo

* Update docs/Release-Notes.md

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>

* Update Release-Notes.md

Moved features to bug fix

* Update Release-Notes.md

Added two last minute changes.

* Update docs/Release-Notes.md

Co-authored-by: Jed Fox <git@jedfox.com>

* Update docs/Release-Notes.md

Co-authored-by: Jed Fox <git@jedfox.com>

* Update docs/Release-Notes.md

Co-authored-by: Jed Fox <git@jedfox.com>

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Jed Fox <git@jedfox.com>
2023-02-05 17:55:42 +00:00
Matiss Janis Aboltins
7c58261b72 🔖 (23.2.5) security focused release (#122) 2023-02-05 17:26:45 +00:00
Jed Fox
0d333be6d0 Add docs for the SharedArrayBuffer issue (#88)
* Add docs for SharedArrayBuffer issue

* + “supported browser” section
2023-02-03 20:47:00 +00:00
Jed Fox
22529a911d Update package-lock.json (#90) 2023-02-03 20:46:13 +00:00
Matiss Janis Aboltins
712ca71656 ⬆️ upgrade express*, bcrypt and body-parser (#119) 2023-02-03 19:53:17 +00:00
Jed Fox
c8ad8a693b Add support for HTTPS (#115)
* Add support for starting an HTTPS instead of HTTP server

* Add HTTPS-related file extensions to gitignore
2023-02-03 14:39:50 -05:00
Jed Fox
7285753e2d Updates to the sidebar layout & content (#89)
* Run Prettier

* Add `@docusaurus/plugin-content-docs` as a direct dep

* Remove generated index pages, move Release Notes to the top level

* Move installing section inside “Getting Started”

* Rename “Using Actual” to “A Tour of Actual”

* Expand “Getting Started” by default

* Move “how it works” to the heading of the Budgeting section

* more changes

* polish styles of section headers

* Move old homepage to the start of the tour, add a new one

* A few updates to project-layout.md, remove mobile package

* Clarify that you can use a local server with preview builds

* A couple of tweaks to the Windows article

* Clarify the installation docs

* Fix some issues on the sync page

* Centralize the contact info into one page

* Fix homepage link

* Fix broken links on installation page
2023-02-03 05:05:52 +00:00
Matiss Janis Aboltins
1be74096f6 ⬆️ upgrade @actual-app/api to 4.1.6: node-fetch v2 support (#118)
* ⬆️  upgrade @actual-app/api to 4.1.6: node-fetch v2 support

* Pin api version
2023-02-02 22:00:50 +00:00
dependabot[bot]
92b4eec36a build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 (#117)
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-02 18:13:02 +00:00
Matiss Janis Aboltins
44038fbdce 🔥 remove unused code (plaid, sync-full) (#116) 2023-02-02 18:05:58 +00:00
dependabot[bot]
b4c7996d1a build(deps): bump minimatch from 3.0.4 to 3.1.2 (#111)
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 21:57:04 +00:00
dependabot[bot]
39fd8a5457 build(deps): bump moment from 2.29.3 to 2.29.4 (#112)
Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.3...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 21:01:40 +00:00
dependabot[bot]
24da9b7b5a build(deps): bump node-fetch from 2.2.0 to 2.6.7 (#110)
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.2.0 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.2.0...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 21:00:41 +00:00
Felix Heilmeyer
3edb8db94b fix: listen also listen on ipv6 addresses (#109)
listening on '::' will make node listen on ipv4 as well as ipv6 addresses
2023-01-31 20:54:09 +00:00
Urjeet Patel
909b4b1c0b fix: 🔒 Password change now invalidates old token (#102) 2023-01-31 19:32:39 +00:00
shall0pass
291ce8aa58 update discord links (#87) 2023-01-31 15:52:38 +00:00
George Sumpster
c666f3e448 add duplicate transactions, tweak bulk tx docs (#86) 2023-01-30 12:20:50 +00:00
nfaucher8
38f2ab252e Allow config.json to contain a partial config (#89) 2023-01-28 18:34:02 +00:00
Matiss Janis Aboltins
f0772b147f (adding jest for unit/integration tests) (#91) 2023-01-28 17:56:37 +00:00
Rich Howell
ac93d58035 Using Actual (#36)
* Using Actual

Using actual, this also resolves #11

* Content & Images

* Using Actual Content
2023-01-28 09:29:53 +00:00
Tom French
9fc9d5c642 Migrate to yarn v3.2.1 (#56)
Co-authored-by: Jed Fox <git@jedfox.com>
2023-01-27 16:56:58 -05:00
TechwizEE
344fb9ac8a Docker compose with nginx reverse proxy (#77)
* added DockerWithNginx.md and updated sidebar

* re-ordered sidebar, added FAQ about merged budgets, updated Docker with NGINX to use 9443, added section to assist with debugging

* cleaned up troubleshooting section, re-worked notes on certificates and HTTPS

* tweaked FAQ entry

* tweaked sidebar

* removed section from FAQ

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2023-01-27 20:49:27 +00:00
shall0pass
a3fc674705 Cleared Rules example (#79)
* Cleared Rules example

* Update docs/Budgeting/rules/rules-custom.md

Thanks!

Co-authored-by: Jed Fox <git@jedfox.com>

* verbage updates

* one more

Co-authored-by: Jed Fox <git@jedfox.com>
2023-01-25 18:39:21 +00:00
Rich Howell
02fd340e64 Merge pull request #76 from j-f1/api
Update the API docs
2023-01-15 17:45:31 +00:00
Jed Fox
992bcd730f Use a real UUID in the example code 2023-01-14 17:05:01 -05:00
Jed Fox
26fa00e3be Updates per latest changes 2023-01-14 17:01:42 -05:00
Jed Fox
13b09bfa9f Remove advice to use server files directly 2023-01-14 17:01:15 -05:00
Jed Fox
22f3c5954b Add “Connecting to a remote server” docs 2023-01-14 15:11:47 -05:00
Jed Fox
3ddfcc4dbf Update to match v5 API 2023-01-14 14:46:45 -05:00
Jed Fox
4cf165475a Add remaining methods to “Using the API” 2023-01-14 14:30:06 -05:00
Jed Fox
11114e9309 Fix build errors 2023-01-14 14:25:12 -05:00
Jed Fox
49ca125aa2 Merge remote-tracking branch 'upstream/master' into api 2023-01-14 14:16:34 -05:00
Rich Howell
8dc49538e0 Merge pull request #78 from actualbudget/matiss/netlify
👷  netlify preview deployments
2023-01-14 18:52:50 +00:00
Matiss Janis Aboltins
5196d068ad 👷 netlify preview deployments 2023-01-14 18:28:58 +00:00
Jed Fox
5c344ae62d Improve API docs 2023-01-14 11:44:38 -05:00
Jed Fox
a419fc0822 Update using-the-API.md 2023-01-14 11:27:58 -05:00
Rich Howell
fce29510b0 Merge pull request #75 from actualbudget/2301xx-release-notes
Update Release-Notes.md
2023-01-12 22:02:09 +00:00
Matiss Janis Aboltins
73db82042c Merge pull request #103 from actualbudget/matiss/release
🔖 (23.1.12) responsive mobile version and sidebar improvements
2023-01-12 21:58:48 +00:00
Rich Howell
dc249ab8b6 Update Release-Notes.md
Tagged versions properly.
2023-01-12 20:59:34 +00:00
Matiss Janis Aboltins
a14f558258 🔖 (23.1.12) responsive mobile version and sidebar improvements 2023-01-12 20:54:48 +00:00
Rich Howell
944b7a6b24 Update Release-Notes.md
Fixed headings and added in sub fix splits
2023-01-12 20:43:20 +00:00
Rich Howell
c16f82d1e8 Update Release-Notes.md
Added #442 as it was missing after being merged.
2023-01-12 18:36:52 +00:00
Rich Howell
ad07361ee1 Merge pull request #74 from j-f1/patch-1
Fix using HTTPS url for localhost
2023-01-12 17:47:42 +00:00
Rich Howell
2ccb7e7f67 Update Release-Notes.md
Formatting fix, version number changes and notable changes added
2023-01-12 17:46:14 +00:00
Rich Howell
7aa01a658a Update Release-Notes.md
Created release notes for the next release 23.01.xx
2023-01-12 17:39:14 +00:00
Jed Fox
b03ba7d36a Fix using HTTPS url for localhost 2023-01-12 06:23:07 -05:00
Rich Howell
e41e54b10a Merge pull request #72 from shall0pass/nYnab_updates
nYnab: Separate import options
2023-01-11 20:02:34 +00:00
shall0pass
9075cdde10 update nYnab page 2023-01-11 11:17:23 -06:00
Rich Howell
95659a9b76 Update nynab.md
Added link to json export tool for nYNAB
2023-01-10 14:40:41 +00:00
Rich Howell
a44b21859e Preview builds
Added preview builds overview
2023-01-10 14:40:26 +00:00
Rich Howell
a074c656a6 Merge pull request #71 from actualbudget/docker-sample-files
Update Docker.md
2023-01-08 17:28:37 +00:00
Rich Howell
05c15b6112 Update Docker.md
Added sample files
2023-01-08 17:28:20 +00:00
Rich Howell
3ed4be0ef4 Merge pull request #63 from shall0pass/nYnab_export_1
nYnab export instructions
2023-01-06 07:33:59 +00:00
Rich Howell
9d783e9e4e Merge pull request #69 from j-f1/patch-1
Add some documentation for the end-to-end encryption system
2023-01-06 07:33:48 +00:00
Jed Fox
658c0088ee Add some documentation for the end-to-end encryption system 2023-01-04 12:43:58 -05:00
shall0pass
88ef9a1ba3 Merge branch 'master' into nYnab_export_1 2023-01-03 11:29:23 -06:00
Rich Howell
166a5b0b79 Merge pull request #65 from tjex/patch-1
Update your-own-machine.md
2023-01-03 16:52:15 +00:00
Rich Howell
679fbaffaa Merge pull request #64 from soyatti/patch-1
Update Terraform.md: add link to 'Deploying Actual on fly.io with terraform' page
2023-01-03 16:51:57 +00:00
Rich Howell
314adc6815 Merge pull request #57 from winklevos/master
Add historical transfers applier documentation
2023-01-03 16:51:44 +00:00
Rich Howell
047a645b86 Merge pull request #59 from shall0pass/shall0pass/issue6
e2e encryption sections
2023-01-03 16:51:15 +00:00
Tillman Jex
25935c8972 Update your-own-machine.md
added a step about pointing the browser to local Actual install (localhost:5060)
2022-12-19 17:26:09 +01:00
soyatti
454588b75a Update Terraform.md
link to 'Deploying Actual on fly.io with terraform' page
2022-12-18 22:44:52 +01:00
shall0pass
2162002931 nYnab export instructions 2022-12-12 10:55:03 -06:00
James Long
8c4c38b663 Merge pull request #61 from shall0pass/updateReleaseNotes-Dec
Update release notes regarding 22.12.03
2022-12-09 23:45:05 -05:00
shall0pass
d67752a378 updates 2022-12-09 15:09:37 -06:00
shall0pass
7f8080badc update release notes for 22.12.03 2022-12-09 15:01:40 -06:00
James Long
97081d46c4 Fix reference to Timestamp; version 22.12.09 2022-12-08 17:38:26 -05:00
James Long
60f83b334e 22.12.08 2022-12-08 16:00:20 -05:00
James Long
340ac869ce Bump API to working version 2022-12-08 16:00:01 -05:00
Trevor Farlow
b2b6ba4921 Docker workflow: Drop major.minor tagging 2022-12-08 14:53:48 -05:00
James Long
3274a06e34 Bump to 22.12.03 2022-12-08 12:11:21 -05:00
James Long
e9850bfc56 Bump @actual-app/web and @actual-app/api 2022-12-08 11:30:07 -05:00
James Long
bcc6fcccc0 Merge pull request #60 from shall0pass/ReleaseNotes_12xxxx
December Release Notes
2022-12-06 23:35:29 -05:00
shall0pass
851088389a Updated file name 2022-12-05 11:10:14 -06:00
shall0pass
af1b69caf5 merge comit from MatissJanis #58 2022-12-04 10:50:35 -06:00
shall0pass
941a6af00e Updates 2022-12-04 09:36:01 -06:00
shall0pass
d188dacfa1 Condensed releases grouped by year 2022-12-03 19:15:04 -06:00
shall0pass
8a4e8a5f99 December Release 2022-12-02 13:38:36 -06:00
shall0pass
f01091376a e2e encryption sections 2022-11-28 20:10:38 -06:00
winklevos
4996c9d3fa Add Advanced Section 2022-11-19 12:46:42 +11:00
Rich In SQL
fc50203896 Update docusaurus.config.js
Changed edit url from main to master
2022-11-14 22:15:08 +00:00
Rich In SQL
5d6b0d65c3 Merge branch 'master' of https://github.com/actualbudget/docs 2022-11-12 15:44:06 +00:00
Rich In SQL
c77c8be284 Removed Noman Restriction 2022-11-12 15:44:03 +00:00
Rich Howell
f312a172b5 Merge pull request #56 from shall0pass/shall0pass/issue55
scheduling window of 2 days
2022-11-12 15:42:25 +00:00
winklevos
175cf80927 add historical transfers applier 2022-11-12 16:01:31 +11:00
shall0pass
0ac91c006d fixup 2022-11-10 12:17:33 -06:00
shall0pass
78ab43098d scheduling window of 2 days 2022-11-10 09:45:34 -06:00
Rich In SQL
9bdd0094e3 Issue board link 2022-11-07 18:44:50 +00:00
Rich Howell
2843042bb8 Merge pull request #53 from shall0pass/docker_updates
Update Docker section
2022-11-07 11:32:15 +00:00
Rich In SQL
4f01f3ecdf Update Fly-prerequisites.md
Added mac warning
2022-11-03 09:00:33 +00:00
Rich In SQL
e2bb86f789 Node update 2022-10-29 14:32:02 +01:00
shall0pass
25429304cc fixup - added container name 2022-10-29 08:14:53 -05:00
shall0pass
03b820f692 Delete yarn.lock 2022-10-28 14:13:17 -05:00
shall0pass
791f354009 update docker text, include comments on data 2022-10-28 14:00:18 -05:00
Rich In SQL
bd82f73a7e Base URL 2022-10-27 18:13:15 +01:00
Rich In SQL
e906e63599 Base URL 2022-10-27 18:03:19 +01:00
Rich In SQL
d068dde24d Search 2022-10-27 17:51:38 +01:00
Rich Howell
29f0aa83e4 Merge pull request #47 from actualbudget/search
Update docusaurus.config.js
2022-10-27 16:58:35 +01:00
Rich In SQL
82e84650a1 Search
Trying to get search working
2022-10-27 16:57:34 +01:00
Rich In SQL
902a7444ed Update 22.10.25.md 2022-10-26 13:07:44 +01:00
Rich Howell
7343a695b7 Merge pull request #48 from jatls/migration-to-simple-sync
Add simple sync migration steps
2022-10-26 06:28:57 +01:00
Rich In SQL
481658ebd5 Sidebar updates
Added items into the sidebar.
2022-10-26 06:25:31 +01:00
Rich Howell
77724bbe48 Merge pull request #51 from actualbudget/re-arrange
Broken Links
2022-10-25 19:06:56 +01:00
Rich In SQL
3b65fac2dc Broken Links 2022-10-25 19:06:36 +01:00
Rich Howell
c3b895bb13 Merge pull request #50 from actualbudget/re-arrange
Broken Links
2022-10-25 19:03:57 +01:00
Rich In SQL
ab5731f781 Broken Links 2022-10-25 18:58:25 +01:00
Rich Howell
783082fbaf Merge pull request #49 from actualbudget/re-arrange
Moving docs for better visability
2022-10-25 18:53:43 +01:00
Rich In SQL
00eda0a34e Moving docs for better visability 2022-10-25 18:53:12 +01:00
Jared Smith
77fcaafffe Add simple sync migration steps 2022-10-26 04:49:39 +11:00
Rich In SQL
4628d98051 Update docusaurus.config.js 2022-10-25 18:28:11 +01:00
Rich Howell
949920cbc9 Merge pull request #44 from actualbudget/Category-Document-Flow
Category Document Flow
2022-10-25 17:58:28 +01:00
Rich In SQL
dda475b879 Category Document Flow 2022-10-25 17:57:55 +01:00
Rich In SQL
90d984b034 From Budgeting to Accounts 2022-10-25 17:54:33 +01:00
Rich Howell
9410aa12d3 Merge pull request #43 from actualbudget/bulk-edit-transactions
Bulk edit transactions
2022-10-25 17:46:18 +01:00
Rich In SQL
ccf105aae3 content and images 2022-10-25 17:44:42 +01:00
Rich Howell
25d0b5e793 Merge pull request #42 from actualbudget/filtering-in-actual
Filtering In Actual
2022-10-25 17:37:25 +01:00
Rich In SQL
48969f05a1 Filtering In Actual 2022-10-25 17:35:15 +01:00
James Long
529c42cccf Version 22.10.25 of actual-server 2022-10-25 12:19:40 -04:00
Rich In SQL
cb3cd41c53 Bulk editing transactions 2022-10-25 17:18:41 +01:00
Rich Howell
17824a222a Merge pull request #33 from actualbudget/2210DD-release-notes
221025 Release Notes
2022-10-25 16:34:32 +01:00
Rich In SQL
2a00227486 Update Actual to 22.10.25 2022-10-25 11:28:16 -04:00
Rich In SQL
9fcc4a759d Update release notes version 2022-10-25 07:24:27 +01:00
Rich In SQL
c3fb555bda File rename 2022-10-25 07:24:00 +01:00
Rich In SQL
29d6255749 Version change 2022-10-25 07:23:41 +01:00
Rich In SQL
61c5861c31 Update 22.10.21.md
Fixed typo
2022-10-24 20:13:39 +01:00
Rich In SQL
8073c777e8 Update 22.10.21.md
Updated release date and added warning and releases
2022-10-24 18:39:08 +01:00
Rich In SQL
68c0aef4ac Update API.md
Broken link fix
2022-10-22 18:16:41 +01:00
Rich In SQL
4febb33833 Update API.md
Broken link fix
2022-10-22 18:14:27 +01:00
Rich Howell
379ef5270c Merge pull request #35 from actualbudget/ActualQL-Examples-Org
ActualQL Examples
2022-10-21 21:23:46 +01:00
Rich In SQL
a0bc2cfeab ActualQL Examples
Examples on how to use ActualQL and a re-arrangement of the sidebar, this resolves #16
2022-10-21 14:10:33 +01:00
Rich Howell
d143231040 Merge pull request #34 from actualbudget/Installing-Own-Machine-Install
Update your-own-machine.md
2022-10-21 09:00:29 +01:00
Rich In SQL
032c8d36c0 Update your-own-machine.md
Typo
2022-10-21 08:59:24 +01:00
Rich Howell
8cc96dfcb1 Merge pull request #32 from actualbudget/Installing-Own-Machine-Install
Local Install Docs
2022-10-21 08:51:19 +01:00
Rich In SQL
1fa70892aa Local Install Docs
Local Install Docs.
2022-10-21 08:47:02 +01:00
Rich In SQL
fb78dea5b7 2210DD Release Notes
2210DD Release Notes this resolves #28
2022-10-21 08:41:28 +01:00
Rich Howell
a5464d5c38 Merge pull request #31 from shall0pass/overview_installation_prereqs
Update overview page
2022-10-21 07:32:14 +01:00
Rich Howell
733f285277 Merge pull request #30 from shall0pass/joint_accounts
Joint accounts
2022-10-21 07:30:32 +01:00
shall0pass
8b9a4c0101 Update overview page 2022-10-20 18:53:29 -05:00
shall0pass
041c1c3a09 fixup 2022-10-20 18:27:27 -05:00
shall0pass
4e645ada72 Intial commit 2022-10-20 16:25:54 -05:00
Rich In SQL
b4952e25ff Update overview.md
Updated overview
2022-10-20 18:51:59 +01:00
Rich In SQL
c63a587751 Update Docker.md
Formatting fixes
2022-10-20 18:43:20 +01:00
Rich In SQL
3ad0249ef0 Update Docker.md
Broken link fix
2022-10-20 18:39:51 +01:00
Rich In SQL
c50bcd87e6 Update Docker.md
Docker Tags, this resolves #27
2022-10-20 18:36:36 +01:00
Trevor Farlow
5252edbf70 Merge pull request #82 from trevdor/patch-1
Build docker image on push to master or tag
2022-10-19 21:32:16 -06:00
Rich Howell
b2f888985f Update stale.yml 2022-10-19 19:13:04 +01:00
Rich Howell
aeda7972fd Create stale.yml 2022-10-19 19:12:51 +01:00
Rich Howell
1649a6106d Merge pull request #23 from actualbudget/releasing-docs
Releasing docs
2022-10-18 18:20:43 +01:00
Rich Howell
a6abfceb16 Merge pull request #21 from actualbudget/installation-overview
Installation Overview
2022-10-18 18:20:28 +01:00
Rich In SQL
14d9afc768 Releasing Documentation
Migrating releasing
2022-10-18 18:19:25 +01:00
Rich In SQL
38f50ced4d Installation Overview
Pre Requisites & Unsupported services
2022-10-18 18:13:37 +01:00
Rich Howell
095f10695e Merge pull request #18 from shall0pass/Schedules_cleanup
Added line breaks, typo correction
2022-10-18 17:15:00 +01:00
shall0pass
ae016a3e68 Added line breaks, typo correction 2022-10-18 11:02:29 -05:00
Rich In SQL
1903030b16 Update FAQ.md
Broken links
2022-10-17 19:37:05 +01:00
Rich Howell
1f78a5580b Merge pull request #9 from j-f1/separate-install
Separate cloud/local install docs
2022-10-17 18:38:46 +01:00
Rich Howell
2973ae8774 Merge pull request #10 from shall0pass/master
Update .gitignore
2022-10-17 17:36:32 +01:00
shall0pass
0d0629b062 Update .gitignore 2022-10-17 11:28:50 -05:00
Rich In SQL
69771af24d Update .gitignore 2022-10-17 16:52:29 +01:00
Rich Howell
8d6c2bb1bc Delete node_modules directory 2022-10-17 16:49:33 +01:00
Jed Fox
6855d2c73d s/Hardware/Server/ 2022-10-16 17:27:13 -04:00
Jed Fox
3af29d86d5 Remove ignored files 2022-10-16 17:26:55 -04:00
Jed Fox
56672de436 Separate cloud/local install docs 2022-10-16 17:23:06 -04:00
Rich In SQL
8af9df42a0 Init
Init
2022-10-16 21:00:07 +01:00
Rich In SQL
869f751968 Update docusaurus.config.js 2022-10-16 20:51:40 +01:00
Rich In SQL
423c3132ab Update docusaurus.config.js
Config update
2022-10-16 20:49:03 +01:00
Rich In SQL
3e3417a67b Update deploy.yml
Changed main to master
2022-10-16 20:45:15 +01:00
Rich In SQL
09e04d6784 Update addaccount.md 2022-10-16 20:44:26 +01:00
Rich Howell
0c90ecf4e2 Merge pull request #2 from rich-howell/master
Initial Commit
2022-10-16 20:39:53 +01:00
Rich In SQL
3f3b70920d Init Commit 2022-10-16 20:32:57 +01:00
Rich In SQL
28d4ee94dd Init 2022-10-16 20:28:33 +01:00
Trevor Farlow
74c15b4f42 fixup! Build docker image on push to master or tag 2022-10-13 00:19:59 -06:00
Trevor Farlow
d482b9baf6 Build docker image on push to master or tag 2022-10-13 00:17:12 -06:00
James Long
cde216523e Store user files as blobs instead of unzipping them 2022-10-05 21:47:14 -04:00
James Long
8aeb815b5a Respect configuration for user-files 2022-09-15 10:19:22 -04:00
James Long
3c602268e3 Log sync method in response 2022-09-14 23:43:12 -04:00
James Long
9177fb4d77 Fix lint 2022-09-14 23:43:12 -04:00
James Long
e3f1fafad9 Switch syncing to simple sync method 2022-09-14 23:43:12 -04:00
Arthur E. Jones
32bf923c1a build: add node GC argument to fly template
Fly deployments on the free tier have ~256mb of memory available. Users
with large transaction histories were encountering out of memory errors
when attempting to export their data. This commit adds a node argument
to (more or less) run the garbage collector at a smaller memory usage,
helping keep users on flyio within their available limit.
2022-08-31 23:51:05 -04:00
Arthur E. Jones
d3a0e8067e build: add tini subreaper arg to fly template
Fly deployments with the previous template setting are running without
tini's subreaper capabilities. This change enables tini as a subreaper
in that environment.
2022-08-31 23:50:26 -04:00
Arthur E. Jones
105d5007cf fix: zip only necessary files in budget download
While investigating #54 it was noted that the previous implementation
zips the entire budget folder in the download endpoint. Once received on
the client side, only the most recent db and metadata are actually used.
This means up to 10 backups are being zipped in memory and transferred
to the client (in addition to the two necessary files) despite none of
that data being used. While this inefficiency isn't a major concern in
some environments, it may be problematic in memory constrained
environments.

This change transfers only the files that are actually utilized.

issue #54
2022-08-31 23:49:52 -04:00
Tom French
bafa486668 style: ignore unused variables which begin with an underscore 2022-08-29 23:11:51 -04:00
Tom French
80a2b34d43 style: apply prettier fixes 2022-08-29 23:11:51 -04:00
Tom French
a5e1e38e74 fix: activate prettier rules 2022-08-29 23:11:51 -04:00
Tom French
0486e9e37b ci: check that the server builds correctly on PRs/master 2022-08-29 23:11:02 -04:00
Tom French
09722d8678 ci: rename github workflow file from build to docker 2022-08-29 23:11:02 -04:00
Rich In SQL
cd22e38660 Express version update
Update: Updated express version, this resolves #69
2022-08-09 10:41:29 -04:00
James Long
f83fe76280 1.0.1 2022-06-26 17:33:32 -04:00
James Long
b9e1e6030f Remove changes to messages transform 2022-06-26 17:31:55 -04:00
brend
4874b53c7c move messages generation into sync-full.js 2022-06-26 17:31:55 -04:00
brend
b1a48f4f27 fix 'Out of sync' error 2022-06-26 17:31:55 -04:00
Jared Gharib
3fee9cbb42 fix: error handling middleware signature
Error handling middleware functions must have four arguments to
identify it as such.

Fixes #40
2022-05-28 23:16:46 -04:00
James Long
a2a460a883 Fix CORS issues 2022-05-28 23:15:14 -04:00
James Long
6bcd67a906 Bump Actual to 4.1.0 2022-05-28 23:14:36 -04:00
Arthur E. Jones
9e2d253fb6 fix: correct tsconfig for node.js
- specify module type, resolution, and interop. this package runs under
  nodejs, not a browser environment, and needs ts to be configured
  accordingly.
2022-05-20 13:58:48 -04:00
Arthur E. Jones
a7efc82944 fix: suppress missing module error
- code as written expects the file may be absent and has a fallback
  implemented, so the error can be safely ignored. There may be a better
  strategy for dealing with this, however.
2022-05-20 13:58:48 -04:00
Arthur E. Jones
25f4bb5557 fix: remove unused variable in fn call
- the WrappedDatabase.all() function only has two arguments
2022-05-20 13:58:48 -04:00
Arthur E. Jones
74d6b7edc5 build: add ts build script 2022-05-20 13:58:48 -04:00
Arthur E. Jones
1204b5b1a6 chore: add build dir to gitignore 2022-05-20 13:58:48 -04:00
Arthur E. Jones
59ddc965ec build: skip typechecking app-plaid.js
Doesn't appear to be used; there isn't any plaid depedency in the
package file.
2022-05-20 13:58:48 -04:00
Arthur E. Jones
9cc4ffaf33 build: add typecheck script 2022-05-20 13:58:48 -04:00
Arthur E. Jones
11ba63d086 chore: add better-sqlite3 type definitions 2022-05-20 13:58:48 -04:00
Arthur E. Jones
06d2aba57c chore: add node type definitions 2022-05-20 13:58:48 -04:00
Tom French
7ecaad529f ci: rename linting workflow 2022-05-20 12:19:22 -04:00
Tom French
5ef3aa4153 ci: check linting in CI 2022-05-20 12:19:22 -04:00
Tom French
5e83e14637 style: silence error for old-style require statements
This will be removed once we migrate to typescript
2022-05-20 09:24:19 -04:00
Tom French
8dbc10efd7 style: silence warning for empty function 2022-05-20 09:24:19 -04:00
Tom French
592f0540f9 style: fix linting errors 2022-05-20 09:24:19 -04:00
Tom French
0e28f77a1f build: add prettier plugin 2022-05-20 09:24:19 -04:00
Tom French
618609dbfa build: migrate to use typescript compatible linter setup 2022-05-20 09:24:19 -04:00
James Long
c86f1f5546 Add pikapods under one-click hosted (closes #20) 2022-05-19 22:52:32 -04:00
Manu
a09a028dc9 Move to deployment options 2 2022-05-19 22:51:42 -04:00
Manu
44da71bcdd Move to deployment options 2022-05-19 22:51:38 -04:00
Manu
343ea0c306 Add one-click hosting option. 2022-05-19 22:50:40 -04:00
James Long
a60f22ef5c Update README.md 2022-05-19 12:43:55 -04:00
Kovah
d614070f44 Update readme with details about the Docker images 2022-05-19 08:16:40 -04:00
Kovah
fd5d81e399 Adjust Docker hub image name 2022-05-19 08:16:40 -04:00
Kovah
841d3ac115 Fix tag handling for standard and alpine image 2022-05-19 08:16:40 -04:00
Kovah
3df101a91d Update build process with requested changes
- push to both Docker Hub and Github registry
- use git tags for versioning
- update Docker tags to reflect the git tags and commit SHA
2022-05-19 08:16:40 -04:00
Kovah
3124c29052 Add additional build step for the Alpine image 2022-05-19 08:16:40 -04:00
Kovah
a4a4eda0eb Fix typo 2022-05-19 08:16:40 -04:00
Kovah
7d418b91b4 Update checkout action to v3 2022-05-19 08:16:40 -04:00
Kovah
9ef7771adc Add Github Actions workflow to automatically build a Docker image on pushes to master 2022-05-19 08:16:40 -04:00
Chris
d0a8b678d3 Correct fly template port
Deployments to fly.io were failing with error:
> Failed due to unhealthy allocations
Fixes #16
2022-05-19 07:25:50 -04:00
Kk-ships
6d52cc7c73 Update docker-compose.yml
Co-authored-by: Nathan Isaac <nathanjisaac@users.noreply.github.com>
2022-05-19 07:19:33 -04:00
Kaustubh Shirpurkar
2acc034fc1 added a basic docker-compose file 2022-05-19 07:19:33 -04:00
James Long
51a2cb91f2 Update README.md 2022-05-05 14:25:03 -04:00
James Long
44d045f546 Bump fly.io grace_period 2022-05-03 09:36:28 -04:00
brtwrst
6be206ff28 Move alpine build to Dockerfile.alpine; add tini to debian Dockerfile 2022-05-03 08:38:27 -04:00
James Long
c4badb9daf Revert "Revert "Rebase docker image on top of alpine linux""
This reverts commit f8ad766695.
2022-05-03 08:38:14 -04:00
James Long
f8ad766695 Revert "Rebase docker image on top of alpine linux"
This reverts commit 42bc4c8acb.
2022-05-03 08:35:38 -04:00
Mark Lopez
a55d4634b1 Added health check endpoint. 2022-05-02 23:06:43 -04:00
Luis López
42bc4c8acb Rebase docker image on top of alpine linux 2022-05-02 22:49:07 -04:00
Alex Richards
efd273bfa5 Instructions for running via Docker 2022-04-30 12:14:04 -04:00
Kovah
3fb71b74cd Adjust file handling in Docker build process 2022-04-30 12:12:45 -04:00
Kovah
2bb3e3ea48 Adjust Dockerfile to use multi-stage builds 2022-04-30 12:12:45 -04:00
Wout Mertens
59ec877ddd add: tsconfig.json
This configures TS to look at JS files as well, so that IDEs like VSCode
can provide better edit-time checks
2022-04-30 12:11:17 -04:00
James Long
31e9025df3 Merge pull request #6 from UnexomWid/master-hostname-binding
Add hostname binding
2022-04-29 17:56:34 -04:00
James Long
1b42bc0e75 Merge pull request #1 from Kovah/master
Adjust Dockerfile to build successfully
2022-04-29 17:55:49 -04:00
UnexomWid
0ad3f12686 modify: default hostname 2022-04-30 00:33:59 +03:00
UnexomWid
6de775a1bf add: hostname binding support 2022-04-30 00:30:30 +03:00
James Long
1d74b9d782 Minor cleanup 2022-04-29 16:21:09 -04:00
Kovah
933a5f5e7c Adjust Dockerfile to build successfully 2022-04-29 18:37:53 +02:00
James Long
cd280802de Improve how data dirs are treated 2022-04-29 11:10:20 -04:00
James Long
b53a4e5bf8 Path fix 2022-04-29 10:51:06 -04:00
James Long
c20648c33a Improve bootstrap process 2022-04-29 10:48:58 -04:00
James Long
fa32948508 Log which file dir it uses 2022-04-29 10:42:04 -04:00
James Long
9ec349e733 license 2022-04-29 10:39:57 -04:00
James Long
4fa2bf1b29 Remove fly.toml from git 2022-04-29 10:35:25 -04:00
James Long
3d01a76296 Updates 2022-04-29 10:35:13 -04:00
James Long
f9c0539d68 Bump actual 2022-04-29 10:10:47 -04:00
James Long
dde1495854 Allow user files directory to be configured via env vars 2022-04-29 09:52:35 -04:00
James Long
065f87c2e8 links 2022-04-29 01:22:32 -04:00
James Long
c049cf440f README 2022-04-28 22:40:58 -04:00
James Long
1149730962 Fixes 2022-04-28 22:40:13 -04:00
James Long
16de8cb91b Remove source-map-support 2022-04-28 22:29:45 -04:00
James Long
caec05df14 cleanup 2022-04-28 22:21:18 -04:00
James Long
e387f4ca1c readme 2022-04-28 22:19:23 -04:00
James Long
6d7ffe6a25 Add actual deps, fly config, and more 2022-04-28 22:09:40 -04:00
James Long
ad0c0f6865 Cleanup 2022-03-31 13:24:52 -04:00
James Long
dd541e5f70 initial (open-source) 2022-03-31 13:19:08 -04:00
James Long
66c7ea2155 Fix code 2019-08-02 15:39:39 -04:00
James Long
57da2a3c82 Fix code 2019-08-02 15:39:03 -04:00
James Long
6f9ceea363 Add some test data 2019-08-01 13:53:08 -04:00
James Long
8d4317fa85 initial 2019-08-01 11:13:52 -04:00
3623 changed files with 199754 additions and 74466 deletions

3
.cursor/worktrees.json Normal file
View File

@@ -0,0 +1,3 @@
{
"setup-worktree": ["yarn"]
}

View File

@@ -1,14 +1,11 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose
{
"name": "Actual development",
"dockerComposeFile": [
"../docker-compose.yml",
"docker-compose.yml"
],
// Alternatively:
// "image": "mcr.microsoft.com/devcontainers/typescript-node:0-16",
"service": "actual-development",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"postCreateCommand": "yarn install"
"name": "Actual development",
"dockerComposeFile": ["../docker-compose.yml", "docker-compose.yml"],
// Alternatively:
// "image": "mcr.microsoft.com/devcontainers/typescript-node:0-16",
"service": "actual-development",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"postCreateCommand": "yarn install"
}

View File

@@ -1,27 +0,0 @@
packages/api/app/bundle.api.js
packages/api/dist
packages/api/@types
packages/api/migrations
packages/crdt/dist
packages/desktop-client/bundle.browser.js
packages/desktop-client/build/
packages/desktop-client/build-stats/
packages/desktop-client/public/kcab/
packages/desktop-client/public/data/
packages/desktop-client/**/node_modules/*
packages/desktop-client/node_modules/
packages/desktop-client/src/icons/**/*
packages/desktop-client/test-results/
packages/desktop-electron/client-build/
packages/desktop-electron/dist/
packages/import-ynab4/**/node_modules/*
packages/import-ynab5/**/node_modules/*
packages/loot-core/**/node_modules/*
packages/loot-core/**/lib-dist/*
packages/loot-core/**/proto/*

View File

@@ -1,343 +0,0 @@
/* eslint-disable rulesdir/typography */
const path = require('path');
const rulesDirPlugin = require('eslint-plugin-rulesdir');
rulesDirPlugin.RULES_DIR = path.join(
__dirname,
'packages',
'eslint-plugin-actual',
'lib',
'rules',
);
const ruleFCMsg =
'Type the props argument and let TS infer or use ComponentType for a component prop';
const restrictedImportPatterns = [
{
group: ['*.api', '*.web', '*.electron'],
message: 'Dont directly reference imports from other platforms',
},
{
group: ['uuid'],
importNames: ['*'],
message: "Use `import { v4 as uuidv4 } from 'uuid'` instead",
},
];
const restrictedImportColors = [
{
group: ['**/style', '**/colors'],
importNames: ['colors'],
message: 'Please use themes instead of colors',
},
];
module.exports = {
plugins: ['prettier', 'import', 'rulesdir', '@typescript-eslint'],
extends: [
'react-app',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:import/typescript',
],
parser: '@typescript-eslint/parser',
parserOptions: { project: [path.join(__dirname, './tsconfig.json')] },
reportUnusedDisableDirectives: true,
globals: {
globalThis: false,
vi: true,
},
rules: {
'prettier/prettier': 'warn',
// Note: base rule explicitly disabled in favor of the TS one
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'warn',
{
varsIgnorePattern: '^(_|React)',
ignoreRestSiblings: true,
},
],
curly: ['warn', 'multi-line', 'consistent'],
'no-restricted-globals': ['warn'].concat(
require('confusing-browser-globals').filter(g => g !== 'self'),
),
'react/jsx-filename-extension': [
'warn',
{ extensions: ['.jsx', '.tsx'], allow: 'as-needed' },
],
'react/jsx-no-useless-fragment': 'warn',
'react/self-closing-comp': 'warn',
'react/no-unstable-nested-components': [
'warn',
{ allowAsProps: true, customValidators: ['formatter'] },
],
'rulesdir/typography': 'warn',
'rulesdir/prefer-if-statement': 'warn',
// https://github.com/eslint/eslint/issues/16954
// https://github.com/eslint/eslint/issues/16953
'no-loop-func': 'off',
// Do don't need this as we're using TypeScript
'react/prop-types': 'off',
// TODO: re-enable these rules
'react/react-in-jsx-scope': 'off',
'no-var': 'warn',
'react/jsx-curly-brace-presence': 'warn',
'object-shorthand': ['warn', 'properties'],
'import/extensions': [
'warn',
'never',
{
json: 'always',
},
],
'import/no-useless-path-segments': 'warn',
'import/no-duplicates': ['warn', { 'prefer-inline': true }],
'import/no-unused-modules': ['warn', { unusedExports: true }],
'import/order': [
'warn',
{
alphabetize: {
caseInsensitive: true,
order: 'asc',
},
groups: [
'builtin', // Built-in types are first
'external',
'parent',
'sibling',
'index', // Then the index file
],
'newlines-between': 'always',
pathGroups: [
// Enforce that React (and react-related packages) is the first import
{ group: 'builtin', pattern: 'react?(-*)', position: 'before' },
// Separate imports from Actual from "real" external imports
{
group: 'external',
pattern: 'loot-{core,design}/**/*',
position: 'after',
},
],
pathGroupsExcludedImportTypes: ['react'],
},
],
'no-restricted-syntax': [
'warn',
{
// forbid React.* as they are legacy https://twitter.com/dan_abramov/status/1308739731551858689
selector:
":matches(MemberExpression[object.name='React'], TSQualifiedName[left.name='React'])",
message:
'Using default React import is discouraged, please use named exports directly instead.',
},
{
// forbid <a> in favor of <Link>
selector: 'JSXOpeningElement[name.name="a"]',
message: 'Using <a> is discouraged, please use <Link> instead.',
},
],
'no-restricted-imports': [
'warn',
{ patterns: [...restrictedImportPatterns, ...restrictedImportColors] },
],
'@typescript-eslint/ban-ts-comment': [
'error',
{ 'ts-ignore': 'allow-with-description' },
],
// Rules disable during TS migration
'@typescript-eslint/no-var-requires': 'off',
'prefer-const': 'warn',
'prefer-spread': 'off',
'@typescript-eslint/no-empty-function': 'off',
'import/no-default-export': 'warn',
},
overrides: [
{
files: ['.eslintrc.js', './**/.eslintrc.js'],
parserOptions: { project: null },
rules: {
'@typescript-eslint/consistent-type-exports': 'off',
},
},
{
files: [
'./packages/desktop-client/**/*.{ts,tsx}',
'./packages/loot-core/src/client/**/*.{ts,tsx}',
],
rules: {
// enforce type over interface
'@typescript-eslint/consistent-type-definitions': ['warn', 'type'],
// enforce import type
'@typescript-eslint/consistent-type-imports': [
'warn',
{ prefer: 'type-imports', fixStyle: 'inline-type-imports' },
],
'@typescript-eslint/ban-types': [
'warn',
{
types: {
// forbid FC as superflous
FunctionComponent: { message: ruleFCMsg },
FC: { message: ruleFCMsg },
},
extendDefaults: true,
},
],
},
},
{
files: ['./packages/desktop-client/**/*'],
excludedFiles: [
'./packages/desktop-client/src/hooks/useNavigate.{ts,tsx}',
],
rules: {
'no-restricted-imports': [
'warn',
{
patterns: [
{
group: ['react-router-dom'],
importNames: ['useNavigate'],
message: 'Please use Actuals useNavigate() hook instead.',
},
],
},
],
},
},
{
files: ['./packages/loot-core/src/**/*'],
rules: {
'no-restricted-imports': [
'warn',
{
patterns: [
...restrictedImportPatterns,
{
group: ['loot-core/**'],
message:
'Please use relative imports in loot-core instead of importing from `loot-core/*`',
},
],
},
],
},
},
{
files: [
'packages/loot-core/src/types/**/*',
'packages/loot-core/src/client/state-types/**/*',
'**/icons/**/*',
'**/{mocks,__mocks__}/**/*',
// can't correctly resolve usages
'**/*.{testing,electron,browser,web,api}.ts',
],
rules: { 'import/no-unused-modules': 'off' },
},
{
files: [
'./packages/desktop-client/src/style/index.*',
'./packages/desktop-client/src/style/palette.*',
],
rules: {
'no-restricted-imports': ['off', { patterns: restrictedImportColors }],
},
},
{
files: [
'./packages/api/migrations/*',
'./packages/loot-core/migrations/*',
],
rules: {
'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/HoldTooltip.tsx',
'./packages/desktop-client/src/components/budget/rollover/TransferTooltip.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': {
typescript: {
alwaysTryTypes: true,
},
},
},
};

View File

@@ -1,18 +1,17 @@
name: Bug Report
description: File a bug report also known as an issue or problem.
title: '[Bug]: '
labels: ['bug']
labels: ['needs triage', 'bug']
type: Bug
body:
- type: markdown
id: intro-md
attributes:
value: |
Thanks for taking the time to fill out this bug report! Please ensure you provide as much information as possible to better assist in confirming and identifying a fix for the bug.
- type: markdown
id: intro-md
attributes:
value: |
**IMPORTANT:** we use Github Issues only for BUG REPORTS and FEATURE REQUESTS. If you are looking for help/support - please reach out to the [community on Discord](https://discord.gg/pRYNYr4W5A). All non-bug and non-feature-request issues will be closed.
**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
@@ -23,10 +22,6 @@ 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: textarea
id: what-happened
attributes:
@@ -36,8 +31,15 @@ body:
value: 'A bug happened!'
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: How can we reproduce the issue?
description: Please give step-by-step instructions on how to reproduce the issue. In most cases this might also require uploading a sample budget/import file.
value: 'How can we reproduce the issue?'
validations:
required: true
- type: markdown
id: env-info
attributes:
value: '## Environment Details'
- type: dropdown

View File

@@ -6,3 +6,6 @@ contact_links:
- name: Support
url: https://discord.gg/pRYNYr4W5A
about: Need help with something? Having troubles setting up? Or perhaps issues using the API? Reach out to the community on Discord.
- name: Translations
url: https://hosted.weblate.org/projects/actualbudget/actual/
about: Found a string that needs a better translation? Add your suggestion or upvote an existing one in Weblate.

View File

@@ -0,0 +1,69 @@
name: 'Documentation'
description: Report documentation issues, request new documentation, or suggest improvements to existing docs.
title: '[Docs] - <title>'
labels: ['documentation']
body:
- type: dropdown
id: issue-type
attributes:
label: 'Issue Type'
description: What type of documentation issue is this?
options:
- New Documentation Request
- Documentation Improvement
- Documentation Bug/Error
- Documentation Change Request
validations:
required: true
- type: textarea
id: description
attributes:
label: 'Description'
description: Please describe the documentation issue, request, or improvement
placeholder: Provide a clear and detailed description...
validations:
required: true
- type: input
id: doc-url
attributes:
label: 'Documentation URL'
description: If this relates to existing documentation, please provide the URL
placeholder: ex. https://actualbudget.org/docs/budgeting/categories or https://github.com/actualbudget/actual/blob/master/packages/docs/...
validations:
required: false
- type: dropdown
id: category
attributes:
label: 'Documentation Category'
description: What category does this relate to?
multiple: true
options:
- Accounts
- Backup & Restore
- Budgeting
- Development
- Installation & Configuration
- Overview
- Reports
- Troubleshooting
- Other
validations:
required: false
- type: textarea
id: expected-behavior
attributes:
label: 'Expected/Desired Content'
description: If applicable, describe what you expect to see or what should be documented
placeholder: What should the documentation say or include?
validations:
required: false
- type: textarea
id: screenshot
attributes:
label: 'Screenshots or Examples'
description: If applicable, add screenshots or examples to help explain your request
value: |
![DESCRIPTION](LINK.png)
render: bash
validations:
required: false

View File

@@ -2,9 +2,9 @@ name: Feature request
description: Request a missing feature
title: '[Feature] '
labels: ['feature']
type: Feature
body:
- type: markdown
id: intro-md
attributes:
value: |
Thanks for taking the time to fill out this feature request! Please ensure you provide as much information as possible so we can better understand what youre proposing so we can come up with the best solution for everyone.
@@ -16,8 +16,6 @@ body:
options:
- label: 'I have searched and found no existing issue'
required: true
validations:
required: true
- type: checkboxes
attributes:
label: '💻'

View File

@@ -1 +1 @@
<!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes -->
<!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. -->

View File

@@ -0,0 +1,75 @@
#!/usr/bin/env node
import { Octokit } from '@octokit/rest';
import fs from 'fs';
const token = process.env.GITHUB_TOKEN;
const repo = process.env.GITHUB_REPOSITORY;
const issueNumber = process.env.GITHUB_EVENT_ISSUE_NUMBER;
const commentId = process.env.GITHUB_EVENT_COMMENT_ID;
if (!token || !repo || !issueNumber || !commentId) {
console.log('Missing required environment variables');
process.exit(1);
}
const [owner, repoName] = repo.split('/');
const octokit = new Octokit({ auth: token });
function setOutput(name, value) {
fs.appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`);
}
async function checkFirstComment() {
try {
console.log('Fetching comments with Octokit...');
// Get all comments with automatic pagination
const comments = await octokit.paginate(octokit.rest.issues.listComments, {
owner,
repo: repoName,
issue_number: issueNumber,
});
console.log(`Total comments found: ${comments.length}`);
// Filter for CodeRabbit summary comments (containing the specific marker)
const coderabbitSummaryComments = comments.filter(comment => {
const isCodeRabbit = comment.user.login === 'coderabbitai[bot]';
const hasSummaryMarker = comment.body.includes(
'<!-- This is an auto-generated comment: summarize by coderabbit.ai -->',
);
if (isCodeRabbit) {
console.log(
`CodeRabbit comment found (ID: ${comment.id}), has summary marker: ${hasSummaryMarker}`,
);
}
return isCodeRabbit && hasSummaryMarker;
});
const isFirstSummaryComment =
coderabbitSummaryComments.length === 1 &&
coderabbitSummaryComments[0].id == commentId;
console.log(
`CodeRabbit summary comments found: ${coderabbitSummaryComments.length}`,
);
console.log(`Current comment ID: ${commentId}`);
console.log(`Is first summary comment: ${isFirstSummaryComment}`);
setOutput('result', isFirstSummaryComment);
} catch (error) {
console.log('Error checking CodeRabbit comment:', error.message);
console.log('Stack:', error.stack);
setOutput('result', 'false');
process.exit(1);
}
}
checkFirstComment().catch(error => {
console.log('Unhandled error:', error.message);
console.log('Stack:', error.stack);
setOutput('result', 'false');
process.exit(1);
});

View File

@@ -0,0 +1,76 @@
#!/usr/bin/env node
import { Octokit } from '@octokit/rest';
import fs from 'fs';
const token = process.env.GITHUB_TOKEN;
const repo = process.env.GITHUB_REPOSITORY;
const issueNumber = process.env.GITHUB_EVENT_ISSUE_NUMBER;
const prDetailsJson = process.env.PR_DETAILS;
if (!token || !repo || !issueNumber || !prDetailsJson) {
console.log('Missing required environment variables');
process.exit(1);
}
const [owner, repoName] = repo.split('/');
const octokit = new Octokit({ auth: token });
function setOutput(name, value) {
fs.appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`);
}
async function checkReleaseNotesExists() {
try {
const prDetails = JSON.parse(prDetailsJson);
if (!prDetails) {
console.log('No PR details available, skipping file check');
setOutput('result', 'false');
return;
}
const fileName = `upcoming-release-notes/${prDetails.number}.md`;
// Get PR info to get head SHA
const { data: pr } = await octokit.rest.pulls.get({
owner,
repo: repoName,
pull_number: issueNumber,
});
const prHeadSha = pr.head.sha;
console.log(
`Checking for file on PR branch: ${pr.head.ref} (${prHeadSha})`,
);
// Check if file exists
try {
await octokit.rest.repos.getContent({
owner,
repo: repoName,
path: fileName,
ref: prHeadSha,
});
console.log(
`Release notes file already exists on PR branch: ${fileName}`,
);
setOutput('result', 'true');
} catch (error) {
if (error.status === 404) {
console.log(
`No existing release notes file found on PR branch: ${fileName}`,
);
setOutput('result', 'false');
} else {
console.log('Error checking file existence:', error.message);
setOutput('result', 'false');
}
}
} catch (error) {
console.log('Error in file existence check:', error.message);
setOutput('result', 'false');
}
}
checkReleaseNotesExists();

View File

@@ -0,0 +1,77 @@
#!/usr/bin/env node
import { Octokit } from '@octokit/rest';
const token = process.env.GITHUB_TOKEN;
const repo = process.env.GITHUB_REPOSITORY;
const issueNumber = process.env.GITHUB_EVENT_ISSUE_NUMBER;
const summaryDataJson = process.env.SUMMARY_DATA;
const category = process.env.CATEGORY;
if (!token || !repo || !issueNumber || !summaryDataJson || !category) {
console.log('Missing required environment variables');
process.exit(1);
}
const [owner, repoName] = repo.split('/');
const octokit = new Octokit({ auth: token });
async function commentOnPR() {
try {
const summaryData = JSON.parse(summaryDataJson);
if (!summaryData) {
console.log('No summary data available, skipping comment');
return;
}
if (!category || category === 'null') {
console.log('No valid category available, skipping comment');
return;
}
// Clean category for display
const cleanCategory =
typeof category === 'string'
? category.replace(/^["']|["']$/g, '')
: category;
// Get PR info for the file URL
const { data: pr } = await octokit.rest.pulls.get({
owner,
repo: repoName,
pull_number: issueNumber,
});
const prBranch = pr.head.ref;
const headOwner = pr.head.repo.owner.login;
const headRepo = pr.head.repo.name;
const fileUrl = `https://github.com/${headOwner}/${headRepo}/blob/${prBranch}/upcoming-release-notes/${summaryData.prNumber}.md`;
const commentBody = [
'🤖 **Auto-generated Release Notes**',
'',
`Hey @${summaryData.author}! I've automatically created a release notes file based on CodeRabbit's analysis:`,
'',
`**Category:** ${cleanCategory}`,
`**Summary:** ${summaryData.summary}`,
`**File:** [upcoming-release-notes/${summaryData.prNumber}.md](${fileUrl})`,
'',
// 'The release notes file has been committed to the repository. You can edit it if needed before merging.',
"If you're happy with this release note, you can add it to your pull request. If not, you'll need to add your own before a maintainer can review your change.",
].join('\n');
await octokit.rest.issues.createComment({
owner,
repo: repoName,
issue_number: issueNumber,
body: commentBody,
});
console.log('✅ Successfully commented on PR');
} catch (error) {
console.log('Error commenting on PR:', error.message);
}
}
commentOnPR();

View File

@@ -0,0 +1,96 @@
#!/usr/bin/env node
import { Octokit } from '@octokit/rest';
const token = process.env.GITHUB_TOKEN;
const repo = process.env.GITHUB_REPOSITORY;
const issueNumber = process.env.GITHUB_EVENT_ISSUE_NUMBER;
const summaryDataJson = process.env.SUMMARY_DATA;
const category = process.env.CATEGORY;
if (!token || !repo || !issueNumber || !summaryDataJson || !category) {
console.log('Missing required environment variables');
process.exit(1);
}
const [owner, repoName] = repo.split('/');
const octokit = new Octokit({ auth: token });
async function createReleaseNotesFile() {
try {
const summaryData = JSON.parse(summaryDataJson);
console.log('Debug - Category value:', category);
console.log('Debug - Category type:', typeof category);
console.log('Debug - Category JSON stringified:', JSON.stringify(category));
if (!summaryData) {
console.log('No summary data available, cannot create file');
return;
}
if (!category || category === 'null') {
console.log('No valid category available, cannot create file');
return;
}
// Create file content - ensure category is not quoted
const cleanCategory =
typeof category === 'string'
? category.replace(/^["']|["']$/g, '')
: category;
console.log('Debug - Clean category:', cleanCategory);
const fileContent = `---
category: ${cleanCategory}
authors: [${summaryData.author}]
---
${summaryData.summary}`;
const fileName = `upcoming-release-notes/${summaryData.prNumber}.md`;
console.log(`Creating release notes file: ${fileName}`);
console.log('File content:');
console.log(fileContent);
// Get PR info
const { data: pr } = await octokit.rest.pulls.get({
owner,
repo: repoName,
pull_number: issueNumber,
});
const prBranch = pr.head.ref;
const headOwner = pr.head.repo.owner.login;
const headRepo = pr.head.repo.name;
console.log(
`Committing to PR branch: ${headOwner}/${headRepo}:${prBranch}`,
);
// Create the file via GitHub API on the PR branch
await octokit.rest.repos.createOrUpdateFileContents({
owner: headOwner,
repo: headRepo,
path: fileName,
message: `Add release notes for PR #${summaryData.prNumber}`,
content: Buffer.from(`${fileContent}\n\n`).toString('base64'),
branch: prBranch,
committer: {
name: 'github-actions[bot]',
email: 'github-actions[bot]@users.noreply.github.com',
},
author: {
name: 'github-actions[bot]',
email: 'github-actions[bot]@users.noreply.github.com',
},
});
console.log(`✅ Successfully created release notes file: ${fileName}`);
} catch (error) {
console.log('Error creating release notes file:', error.message);
}
}
createReleaseNotesFile();

View File

@@ -0,0 +1,118 @@
#!/usr/bin/env node
const https = require('https');
const fs = require('fs');
const commentBody = process.env.GITHUB_EVENT_COMMENT_BODY;
const prDetailsJson = process.env.PR_DETAILS;
const summaryDataJson = process.env.SUMMARY_DATA;
const openaiApiKey = process.env.OPENAI_API_KEY;
if (!commentBody || !prDetailsJson || !summaryDataJson || !openaiApiKey) {
console.log('Missing required environment variables');
process.exit(1);
}
function setOutput(name, value) {
fs.appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`);
}
try {
const prDetails = JSON.parse(prDetailsJson);
const summaryData = JSON.parse(summaryDataJson);
if (!summaryData || !prDetails) {
console.log('Missing data for categorization');
setOutput('result', 'null');
process.exit(0);
}
const data = JSON.stringify({
model: 'gpt-4o-mini',
messages: [
{
role: 'system',
content:
'You are categorizing pull requests for release notes. You must respond with exactly one of these categories: "Features", "Enhancements", "Bugfix", or "Maintenance". No other text or explanation.',
},
{
role: 'user',
content: `PR Title: ${prDetails.title}\n\nGenerated Summary: ${summaryData.summary}\n\nCodeRabbit Analysis:\n${commentBody}\n\nCategories:\n- Features: New functionality or capabilities\n- Bugfix: Fixes for broken or incorrect behavior\n- Enhancements: Improvements to existing functionality\n- Maintenance: Code cleanup, refactoring, dependencies, etc.\n\nWhat category does this PR belong to?`,
},
],
max_tokens: 10,
temperature: 0.1,
});
const options = {
hostname: 'api.openai.com',
path: '/v1/chat/completions',
method: 'POST',
headers: {
Authorization: `Bearer ${openaiApiKey}`,
'Content-Type': 'application/json',
},
};
const req = https.request(options, res => {
let responseData = '';
res.on('data', chunk => (responseData += chunk));
res.on('end', () => {
if (res.statusCode !== 200) {
console.log('OpenAI API error for categorization');
setOutput('result', 'null');
return;
}
try {
const response = JSON.parse(responseData);
console.log('OpenAI raw response:', JSON.stringify(response, null, 2));
const rawContent = response.choices[0].message.content.trim();
console.log('Raw content from OpenAI:', rawContent);
let category;
try {
category = JSON.parse(rawContent);
console.log('Parsed category:', category);
} catch (parseError) {
console.log(
'JSON parse error, using raw content:',
parseError.message,
);
category = rawContent;
}
// Validate the category response
const validCategories = [
'Features',
'Bugfix',
'Enhancements',
'Maintenance',
];
if (validCategories.includes(category)) {
console.log('OpenAI categorized as:', category);
setOutput('result', category);
} else {
console.log('Invalid category from OpenAI:', category);
console.log('Valid categories are:', validCategories);
setOutput('result', 'null');
}
} catch (error) {
console.log('Error parsing OpenAI response:', error.message);
setOutput('result', 'null');
}
});
});
req.on('error', error => {
console.log('Error in categorization:', error.message);
setOutput('result', 'null');
});
req.write(data);
req.end();
} catch (error) {
console.log('Error in categorization:', error.message);
setOutput('result', 'null');
}

View File

@@ -0,0 +1,97 @@
#!/usr/bin/env node
const https = require('https');
const fs = require('fs');
const commentBody = process.env.GITHUB_EVENT_COMMENT_BODY;
const prDetailsJson = process.env.PR_DETAILS;
const openaiApiKey = process.env.OPENAI_API_KEY;
if (!commentBody || !prDetailsJson || !openaiApiKey) {
console.log('Missing required environment variables');
process.exit(1);
}
function setOutput(name, value) {
fs.appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`);
}
try {
const prDetails = JSON.parse(prDetailsJson);
if (!prDetails) {
console.log('No PR details available, cannot generate summary');
setOutput('result', 'null');
process.exit(0);
}
console.log('CodeRabbit comment body:', commentBody);
const data = JSON.stringify({
model: 'gpt-4o-mini',
messages: [
{
role: 'system',
content:
'You are a technical writer helping to create concise release notes. Generate a maximum 15-word summary that describes what this PR does. Focus on the user-facing changes or bug fixes. Do not include "This PR" or similar phrases - just describe the change directly. Start with a base form verb (e.g., "Add" not "Adds", "Fix" not "Fixes", "Introduce" not "Introduces").',
},
{
role: 'user',
content: `PR Title: ${prDetails.title}\n\nCodeRabbit Analysis:\n${commentBody}\n\nPlease provide a concise summary (max 15 words) of what this PR accomplishes.`,
},
],
max_tokens: 50,
temperature: 0.3,
});
const options = {
hostname: 'api.openai.com',
path: '/v1/chat/completions',
method: 'POST',
headers: {
Authorization: `Bearer ${openaiApiKey}`,
'Content-Type': 'application/json',
},
};
const req = https.request(options, res => {
let responseData = '';
res.on('data', chunk => (responseData += chunk));
res.on('end', () => {
if (res.statusCode !== 200) {
console.log(`OpenAI API error: ${res.statusCode} ${res.statusMessage}`);
setOutput('result', 'null');
return;
}
try {
const response = JSON.parse(responseData);
const summary = response.choices[0].message.content.trim();
console.log('Generated summary:', summary);
const result = {
summary: summary,
prNumber: prDetails.number,
author: prDetails.author,
};
setOutput('result', JSON.stringify(result));
} catch (error) {
console.log('Error parsing OpenAI response:', error.message);
setOutput('result', 'null');
}
});
});
req.on('error', error => {
console.log('Error generating summary:', error.message);
setOutput('result', 'null');
});
req.write(data);
req.end();
} catch (error) {
console.log('Error generating summary:', error.message);
setOutput('result', 'null');
}

View File

@@ -0,0 +1,59 @@
#!/usr/bin/env node
import { Octokit } from '@octokit/rest';
import fs from 'fs';
const token = process.env.GITHUB_TOKEN;
const repo = process.env.GITHUB_REPOSITORY;
const issueNumber = process.env.GITHUB_EVENT_ISSUE_NUMBER;
if (!token || !repo || !issueNumber) {
console.log('Missing required environment variables');
process.exit(1);
}
const [owner, repoName] = repo.split('/');
const octokit = new Octokit({ auth: token });
function setOutput(name, value) {
fs.appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`);
}
async function getPRDetails() {
try {
console.log(
`Fetching PR details for ${owner}/${repoName}#${issueNumber}...`,
);
const { data: pr } = await octokit.rest.pulls.get({
owner,
repo: repoName,
pull_number: issueNumber,
});
console.log('PR details fetched successfully');
console.log('- PR Number:', pr.number);
console.log('- PR Author:', pr.user.login);
console.log('- PR Title:', pr.title);
const result = {
number: pr.number,
author: pr.user.login,
title: pr.title,
};
setOutput('result', JSON.stringify(result));
} catch (error) {
console.log('Error getting PR details:', error.message);
console.log('Stack:', error.stack);
setOutput('result', 'null');
process.exit(1);
}
}
getPRDetails().catch(error => {
console.log('Unhandled error:', error.message);
console.log('Stack:', error.stack);
setOutput('result', 'null');
process.exit(1);
});

17
.github/actions/docs-spelling/README.md vendored Normal file
View File

@@ -0,0 +1,17 @@
# check-spelling/check-spelling configuration
| File | Purpose | Format | Info |
| -------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| [dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary) |
| [allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) |
| [reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) |
| [excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes) |
| [only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only) |
| [patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) |
| [candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns) |
| [line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) |
| [expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) |
| [advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) |
Note: you can replace any of these files with a directory by the same name (minus the suffix)
and then include multiple files inside that directory (with that suffix) to merge multiple files together.

24
.github/actions/docs-spelling/advice.md vendored Normal file
View File

@@ -0,0 +1,24 @@
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
<details>
<summary>If the flagged items are :exploding_head: false positives</summary>
If items relate to a ...
- binary file (or some other file you wouldn't want to check at all).
Please add a file path to the `excludes.txt` file matching the containing file.
File paths are Perl 5 Regular Expressions - you can [test](https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](../tree/HEAD/README.md) (on whichever branch you're using).
- well-formed pattern.
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
try adding it to the `patterns.txt` file.
Patterns are Perl 5 Regular Expressions - you can [test](https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
Note that patterns can't match multiline strings.
</details>

View File

@@ -0,0 +1,8 @@
trevdor
Farlow
Matiss
Aboltins
jlongster
howell
evequefou
Fiddaman

View File

@@ -0,0 +1,144 @@
ABANCA
actualbudget
addtransactions
Akahu
AMZN
Andelskassen
AQL
Authelia
autocompletes
Blix
bnp
BSCHESMM
BTC
CAGLESMM
Caju
caniuse
Cardless
CAROOT
categorygroup
Cembra
Certbot
CLI
clickable
clsx
codemirror
Coinbase
commandlet
Coverflex
Crd
crdt
creditcards
crowdsourced
debian
dedupes
deleteaccount
DKB
dmg
easybank
Edenred
Coverfelx
emojis
emoji
escodegen
EUR
expando
Firefox
flyctl
Formik
Fortuneo
gebabebb
GEBABEBB
Greenshot
HSA
htpasswd
IBANs
iex
importtransactions
ING
invokable
iwr
jointaccounts
jwl
KBC
kcab
keyout
KREDBEBB
Kroger
kubectl
kubernetes
ldaplogin
letsencrypt
libofx
linting
Linuxes
linuxsvg
lleskassen
lte
mac
macsvg
Mariushosting
minimalistic
monkeypatch
Monobank
Morrisons
NAIAGB
NDEADKKK
Netflix
netlify
Nordea
NORDEA
nordigen
notlike
NRNBGB
nynab
offbudget
ofx
OFX
oneof
payeerule
pikaday
pikapods
playsinline
portalization
Postgresql
protobuf
publix
QFX
QIF
Quicken
returnsandreimbursements
Rezip
roadmap
RUpdate
sankey
SANTANDER
screenshots
SEB
subfolders
subreaper
subtransaction
subtransactions
Suisse
Sztup
tini
traefik
Trafico
Trumf
Upstash
useb
usernames
valign
Venmo
Weblate
winsvg
WSL
Xxxxx
ynab
Ynab
YNAB
ZKB
Zsolt
IDBy
isapprox
isbetween

View File

@@ -0,0 +1,76 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
(?:^|/)(?i)COPYRIGHT
(?:^|/)(?i)LICEN[CS]E
(?:^|/)3rdparty/
(?:^|/)go\.sum$
(?:^|/)package(?:-lock|)\.json$
(?:^|/)pyproject.toml
(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$
(?:^|/)vendor/
ignore$
\.a$
\.ai$
\.avi$
\.bmp$
\.bz2$
\.class$
\.coveragerc$
\.crt$
\.css$
\.dll$
\.docx?$
\.drawio$
\.DS_Store$
\.eot$
\.exe$
\.gif$
\.git-blame-ignore-revs$
\.gitattributes$
\.graffle$
\.gz$
\.icns$
\.ico$
\.jar$
\.jks$
\.jpe?g$
\.key$
\.lib$
\.lock$
\.map$
\.min\..
\.mod$
\.mp[34]$
\.o$
\.ocf$
\.otf$
\.pdf$
\.pem$
\.png$
\.psd$
\.pyc$
\.pylintrc$
\.s$
\.svgz?$
\.tar$
\.tiff?$
\.ttf$
\.wav$
\.webm$
\.webp$
\.woff2?$
\.xlsx?$
\.zip$
^\.github/actions/spelling/
^\.github/ISSUE_TEMPLATE/
^\Q.github/workflows/spelling.yml\E$
^\.yarn/
^\Qnode_modules/\E$
^\Qsrc/\E$
^\Qstatic/\E$
^\Q.github/\E$
(?:^|/)package(?:-lock|)\.json$
(?:^|/)yarn\.lock$
(?:^|/)(?i)docusaurus.config.js
(?:^|/)(?i)README.md
^\static/
\.tsx$

152
.github/actions/docs-spelling/expect.txt vendored Normal file
View File

@@ -0,0 +1,152 @@
Abanca
ABNAMRO
ABNANL
Activo
AESUDEF
ALZEY
Anglais
aql
AUR
Authentik
BANKA
BANKINTER
BAWAATWW
Belfius
Biedenkopf
BIGBPLPW
Bizum
BKBKESMM
BOFIIE
Bourso
Boursobank
Boursorama
BPER
BPMOIT
brexplpw
BYLADEM
Caddyfile
CAGLPTPL
Caixa
CAMT
cashflow
Cetelem
cimode
Citi
Citibank
Cloudflare
CMCIFRPAXXX
COBADEFF
CODEOWNERS
commerzbank
Copiar
CREGBEBB
crt
Danske
datadir
Depositos
DIREKT
Dockerfiles
Dominguez
DUSSDEDDXXX
DUSSELDORF
ENTERCARD
Entra
EUA
Eurocard
fidd
Fineco
Finicity
Fintro
Finverse
Flathub
FORTUNEO
FTNOFRP
Gemeinschaftsbank
Geral
gernes
Globecard
GLS
gocardless
Grafana
HABAL
Hampel
HELADEF
INDUSTRIEL
INGBPLPW
Ingo
INR
Intesa
INVSTMTMSGSRS
ISYBANK
ITBBITMM
jfdoming
JMD
KBCBE
Keycloak
Khurozov
KORT
Kreditbank
lage
LHV
LHVBEE
LKR
mbank
mdc
modals
Moldovan
murmurhash
nginx
OIDC
overbudgeted
overbudgeting
Paribas
passwordless
pluggyai
Poste
PPABPLPK
prefs
Primoco
Priotecs
proactively
pwa
Qatari
QNTOFRP
QONTO
Raiffeisen
revolut
RIED
RSchedule
RSD
SEK
simplefin
SKHSFI
Sparkasse
SPK
sseldorf
SSK
Stadtsparkasse
statestore
SUBASKBX
SVGR
swc
SWEDBANK
SWEDNOKK
Synology
systemctl
tada
taskbar
templating
THB
touchscreen
triaging
UAH
ubuntu
userinfo
Userscripts
UZS
vrt
VUB
websecure
Widiba
WOR
youngcw

View File

@@ -0,0 +1,62 @@
# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
# \bm_data\b
# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
# to use this:
#\bfit\(
# s.b. GitHub
#\bGithub\b
# s.b. GitLab
\bGitlab\b
# s.b. JavaScript
\bJavascript\b
# s.b. Microsoft
\bMicroSoft\b
# s.b. another
\ban[- ]other\b
# s.b. greater than
\bgreater then\b
# s.b. into
#\sin to\s
# s.b. opt-in
\sopt in\s
# s.b. less than
\bless then\b
# s.b. otherwise
\bother[- ]wise\b
# s.b. nonexistent
\bnon existing\b
\b[Nn]o[nt][- ]existent\b
# s.b. preexisting
[Pp]re[- ]existing
# s.b. preempt
[Pp]re[- ]empt\b
# s.b. preemptively
[Pp]re[- ]emptively
# s.b. reentrancy
[Rr]e[- ]entrancy
# s.b. reentrant
[Rr]e[- ]entrant
# s.b. workaround(s)
\bwork[- ]arounds?\b
# Reject duplicate words
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s

View File

@@ -0,0 +1,3 @@
# Only check files in the packages/docs directory
^packages/docs/

View File

@@ -0,0 +1,81 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
# Questionably acceptable forms of `in to`
# Personally, I prefer `log into`, but people object
# https://www.tprteaching.com/log-into-log-in-to-login/
\b[Ll]og in to\b
# acceptable duplicates
# ls directory listings
[-bcdlpsw](?:[-r][-w][-Ssx]){3}\s+\d+\s+\S+\s+\S+\s+\d+\s+
# C types and repeated CSS values
\s(center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?: \g{-1})+\s
# go templates
\s(\w+)\s+\g{-1}\s+\`(?:graphql|json|yaml):
# javadoc / .net
(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
# Commit message -- Signed-off-by and friends
^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
# Autogenerated revert commit message
^This reverts commit [0-9a-f]{40}\.$
# ignore long runs of a single character:
\b([A-Za-z])\g{-1}{3,}\b
# Automatically suggested patterns
# hit-count: 1255 file-count: 51
# https/http/file urls
(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
# hit-count: 1174 file-count: 33
# GitHub SHAs (markdown)
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
# hit-count: 6 file-count: 4
# version suffix <word>v#
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
# hit-count: 6 file-count: 2
# URL escaped characters
\%[0-9A-F][A-F]
# hit-count: 5 file-count: 4
# hex runs
\b[0-9a-fA-F]{16,}\b
# hit-count: 4 file-count: 2
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
# hit-count: 3 file-count: 2
# discord
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
# hit-count: 2 file-count: 2
# Contributor
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
@[^$\W]*-?\w+
# hit-count: 1 file-count: 1
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
# YouTube url
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
# hit-count: 1 file-count: 1
# Google Fonts
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
# hit-count: 1 file-count: 1
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
# docusaurus image paths, URLs
[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?
# eliminate words like [`nvm`] or [`asdf`] or [heidiSQL] without backquotes
\[.+?]
# allowlist specific non-English words with non-ASCII characters
\b(Länsförsäkringar|München|Złoty)\b

View File

@@ -0,0 +1,10 @@
^attache$
benefitting
occurences?
^dependan.*
^oer$
Sorce
^[Ss]pae.*
^untill$
^untilling$
^wether.*

View File

@@ -1,19 +1,59 @@
name: Setup
description: Setup the environment for the project
inputs:
working-directory:
description: 'Working directory to run in, default .'
required: false
default: '.'
download-translations:
description: 'Whether to download translations as part of setup, default true'
required: false
default: 'true'
runs:
using: composite
steps:
- name: Install node
uses: actions/setup-node@v4
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: 18.16.0
node-version: 22
- name: Install yarn
run: npm install -g yarn
shell: bash
if: ${{ env.ACT }}
- name: Get Node version
id: get-node
run: echo "version=$(node -v)" >> "$GITHUB_OUTPUT"
shell: bash
- name: Cache
uses: actions/cache@v4
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: cache
with:
path: '**/node_modules'
key: yarn-v1-${{ runner.os }}-${{ hashFiles('.nvmrc') }}-${{ hashFiles('**/yarn.lock') }}
path: ${{ format('{0}/**/node_modules', inputs.working-directory) }}
key: yarn-v1-${{ runner.os }}-${{ steps.get-node.outputs.version }}-${{ hashFiles(format('{0}/**/yarn.lock', inputs.working-directory)) }}
- name: Ensure Lage cache directory exists
run: mkdir -p ${{ format('{0}/.lage', inputs.working-directory) }}
shell: bash
- name: Cache Lage
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ format('{0}/.lage', inputs.working-directory) }}
key: lage-${{ runner.os }}-${{ github.sha }}
restore-keys: |
lage-${{ runner.os }}-
- name: Install
working-directory: ${{ inputs.working-directory }}
run: yarn --immutable
shell: bash
if: steps.cache.outputs.cache-hit != 'true'
- name: Download translations
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
repository: actualbudget/translations
path: ${{ inputs.working-directory }}/packages/desktop-client/locale
if: ${{ inputs.download-translations == 'true' }}
- name: Remove untranslated languages
run: packages/desktop-client/bin/remove-untranslated-languages
shell: bash
if: ${{ inputs.download-translations == 'true' }}

357
.github/scripts/count-points.mjs vendored Normal file
View File

@@ -0,0 +1,357 @@
import { Octokit } from '@octokit/rest';
import { minimatch } from 'minimatch';
import pLimit from 'p-limit';
const limit = pLimit(50);
const CONFIG = {
POINTS_PER_ISSUE_TRIAGE_ACTION: 1,
POINTS_PER_ISSUE_CLOSING_ACTION: 1,
POINTS_PER_RELEASE_PR: 4, // Awarded to whoever merges the release PR
// Point tiers for code changes (non-docs)
CODE_PR_REVIEW_POINT_TIERS: [
{ minChanges: 500, points: 8 },
{ minChanges: 100, points: 6 },
{ minChanges: 10, points: 2 },
{ minChanges: 0, points: 1 },
],
// Point tiers for docs changes (packages/docs/**)
DOCS_PR_REVIEW_POINT_TIERS: [
{ minChanges: 2000, points: 6 },
{ minChanges: 200, points: 4 },
{ minChanges: 0, points: 2 },
],
EXCLUDED_FILES: [
'yarn.lock',
'.yarn/**/*',
'packages/component-library/src/icons/**/*',
'release-notes/**/*',
'upcoming-release-notes/**/*',
],
DOCS_FILES_PATTERN: 'packages/docs/**/*',
};
/**
* Get the start and end dates for the last month.
* @returns {Object} An object containing the start and end dates.
*/
function getLastMonthDates() {
// Get data relating to the last month
const now = new Date();
// Always use UTC for calculations
const firstDayOfLastMonth = new Date(
Date.UTC(now.getUTCFullYear(), now.getUTCMonth() - 1, 1, 0, 0, 0, 0),
);
const since = process.env.START_DATE
? new Date(Date.parse(process.env.START_DATE))
: firstDayOfLastMonth;
// Calculate the end of the month for the since date in UTC
const until = new Date(
Date.UTC(
since.getUTCFullYear(),
since.getUTCMonth() + 1,
0,
23,
59,
59,
999,
),
);
return { since, until };
}
/**
* Used for calculating the monthly points each core contributor has earned.
* These are used for payouts depending.
* @returns {Map} A map of contributor logins to their total points earned
*/
async function countContributorPoints() {
const octokit = new Octokit({
auth: process.env.GITHUB_TOKEN,
});
const owner = 'actualbudget';
const repo = 'actual';
const { since, until } = getLastMonthDates();
// Get organization members
const { data: orgMembers } = await octokit.orgs.listMembers({
org: owner,
});
const orgMemberLogins = new Set(orgMembers.map(member => member.login));
// Initialize stats map with all org members
const stats = new Map(
Array.from(orgMemberLogins).map(login => [
login,
{
codeReviews: [], // Will store objects with PR number and points for main repo changes
docsReviews: [], // Will store objects with PR number and points for docs changes
labelRemovals: [],
issueClosings: [],
points: 0,
},
]),
);
// Helper function to print statistics
const printStats = (title, getValue, formatLine) => {
console.log(`\n${title}:`);
console.log('='.repeat(title.length + 1));
const entries = Array.from(stats.entries())
.map(([user, userStats]) => [user, getValue(userStats)])
.filter(([, count]) => count > 0)
.sort((a, b) => b[1] - a[1]);
if (entries.length === 0) {
console.log(`No ${title.toLowerCase()} found in the last month.`);
} else {
entries.forEach(([user, count]) => {
console.log(formatLine(user, count));
});
}
};
// Get all PRs using search
const searchQuery = `repo:${owner}/${repo} is:pr is:merged merged:${since.toISOString()}..${until.toISOString()}`;
const recentPRs = await octokit.paginate(
'GET /search/issues',
{
q: searchQuery,
per_page: 100,
advanced_search: true,
},
response => response.data.filter(pr => pr.number),
);
// Get reviews and PR details for each PR
await Promise.all(
recentPRs.map(pr =>
limit(async () => {
const [reviews, modifiedFiles] = await Promise.all([
octokit.pulls.listReviews({ owner, repo, pull_number: pr.number }),
octokit.paginate(
octokit.pulls.listFiles,
{
owner,
repo,
pull_number: pr.number,
per_page: 100,
},
res => res.data,
),
]);
const filteredFiles = modifiedFiles.filter(
file =>
!CONFIG.EXCLUDED_FILES.some(pattern =>
minimatch(file.filename, pattern, { dot: true }),
),
);
const docsFiles = filteredFiles.filter(file =>
minimatch(file.filename, CONFIG.DOCS_FILES_PATTERN, { dot: true }),
);
const codeFiles = filteredFiles.filter(
file =>
!minimatch(file.filename, CONFIG.DOCS_FILES_PATTERN, { dot: true }),
);
const docsChanges = docsFiles.reduce(
(sum, file) => sum + file.additions + file.deletions,
0,
);
const codeChanges = codeFiles.reduce(
(sum, file) => sum + file.additions + file.deletions,
0,
);
const docsPoints =
docsChanges > 0
? (CONFIG.DOCS_PR_REVIEW_POINT_TIERS.find(
t => docsChanges >= t.minChanges,
)?.points ?? 0)
: 0;
const codePoints =
codeChanges > 0 || docsChanges === 0
? (CONFIG.CODE_PR_REVIEW_POINT_TIERS.find(
t => codeChanges >= t.minChanges,
)?.points ?? 0)
: 0;
const isReleasePR = pr.title.match(/🔖.*\d+\.\d+\.\d+/);
if (isReleasePR) {
// release PRs are created by the github-actions bot so we attribute points to the merger
const { data: prDetails } = await octokit.pulls.get({
owner,
repo,
pull_number: pr.number,
});
if (prDetails.merged_by && stats.has(prDetails.merged_by.login)) {
const mergerStats = stats.get(prDetails.merged_by.login);
mergerStats.codeReviews.push({
pr: pr.number.toString(),
points: CONFIG.POINTS_PER_RELEASE_PR,
isReleaseMerger: true,
});
mergerStats.points += CONFIG.POINTS_PER_RELEASE_PR;
}
} else {
const uniqueReviewers = new Set();
reviews.data.forEach(review => {
if (
review.state === 'APPROVED' &&
stats.has(review.user?.login) &&
!uniqueReviewers.has(review.user?.login)
) {
const reviewer = review.user.login;
uniqueReviewers.add(reviewer);
const userStats = stats.get(reviewer);
if (docsPoints > 0) {
userStats.docsReviews.push({
pr: pr.number.toString(),
points: docsPoints,
});
userStats.points += docsPoints;
}
if (codePoints > 0) {
userStats.codeReviews.push({
pr: pr.number.toString(),
points: codePoints,
});
userStats.points += codePoints;
}
}
});
}
}),
),
);
// Get all issues with label events in the last month
const issues = await octokit.paginate(octokit.issues.listForRepo, {
owner,
repo,
state: 'all',
sort: 'updated',
direction: 'desc',
per_page: 100,
since: since.toISOString(),
});
// Get label events for each issue
await Promise.all(
issues.map(issue =>
limit(async () => {
const { data: events } = await octokit.issues.listEventsForTimeline({
owner,
repo,
issue_number: issue.number,
});
events
.filter(event => {
const createdAt = new Date(event.created_at);
return (
createdAt.getTime() > since.getTime() &&
createdAt.getTime() <= until.getTime() &&
stats.has(event.actor?.login)
);
})
.forEach(event => {
if (
event.event === 'unlabeled' &&
event.label?.name.toLowerCase() === 'needs triage'
) {
const remover = event.actor.login;
const userStats = stats.get(remover);
userStats.labelRemovals.push(issue.number.toString());
userStats.points += CONFIG.POINTS_PER_ISSUE_TRIAGE_ACTION;
}
if (
event.event === 'closed' &&
event.state_reason === 'not_planned'
) {
const closer = event.actor.login;
const userStats = stats.get(closer);
userStats.issueClosings.push(issue.number.toString());
userStats.points += CONFIG.POINTS_PER_ISSUE_CLOSING_ACTION;
}
});
}),
),
);
// Print all statistics
printStats(
'Code Review Statistics',
stats => stats.codeReviews.length,
(user, count) =>
`${user}: ${count} (PRs: ${stats
.get(user)
.codeReviews.map(r => {
if (r.isReleaseMerger) {
return `#${r.pr} (${r.points}pts - Release Merger)`;
}
return `#${r.pr} (${r.points}pts)`;
})
.join(', ')})`,
);
printStats(
'Docs Review Statistics',
stats => stats.docsReviews.length,
(user, count) =>
`${user}: ${count} (PRs: ${stats
.get(user)
.docsReviews.map(r => `#${r.pr} (${r.points}pts)`)
.join(', ')})`,
);
printStats(
'"Needs Triage" Label Removal Statistics',
stats => stats.labelRemovals.length,
(user, count) =>
`${user}: ${count} (Issues: ${stats.get(user).labelRemovals.join(', ')})`,
);
printStats(
'Issue Closing Statistics',
stats => stats.issueClosings.length,
(user, count) =>
`${user}: ${count} (Issues: ${stats.get(user).issueClosings.join(', ')})`,
);
// Print points summary
printStats(
'Points Summary',
stats => stats.points,
(user, userPoints) => `${user}: ${userPoints}`,
);
// Calculate and print total points
const totalPoints = Array.from(stats.values()).reduce(
(sum, userStats) => sum + userStats.points,
0,
);
console.log(`\nTotal points earned: ${totalPoints}`);
// Return the points
return new Map(
Array.from(stats.entries()).map(([login, userStats]) => [
login,
userStats.points,
]),
);
}
// Run the calculations
countContributorPoints().catch(console.error);

View File

@@ -0,0 +1,89 @@
name: Generate Release Notes from CodeRabbit summary
on:
issue_comment:
types: [created]
jobs:
generate-release-notes:
# Only run on PR comments from CodeRabbit bot
if: github.event.issue.pull_request && github.event.comment.user.login == 'coderabbitai[bot]'
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Check if this is CodeRabbit's first comment
id: check-first-comment
run: node .github/actions/ai-generated-release-notes/check-first-comment.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
- name: Get PR details
if: steps.check-first-comment.outputs.result == 'true'
id: pr-details
run: node .github/actions/ai-generated-release-notes/pr-details.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
- name: Check if release notes file already exists
if: steps.check-first-comment.outputs.result == 'true' && steps.pr-details.outputs.result != 'null'
id: check-release-notes-exists
run: node .github/actions/ai-generated-release-notes/check-release-notes-exists.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
PR_DETAILS: ${{ steps.pr-details.outputs.result }}
- name: Generate summary with OpenAI
if: steps.check-first-comment.outputs.result == 'true' && steps.check-release-notes-exists.outputs.result == 'false'
id: generate-summary
run: node .github/actions/ai-generated-release-notes/generate-summary.js
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_EVENT_COMMENT_BODY: ${{ github.event.comment.body }}
PR_DETAILS: ${{ steps.pr-details.outputs.result }}
- name: Determine category with OpenAI
if: steps.check-first-comment.outputs.result == 'true' && steps.check-release-notes-exists.outputs.result == 'false' && steps.generate-summary.outputs.result != 'null'
id: determine-category
run: node .github/actions/ai-generated-release-notes/determine-category.js
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_EVENT_COMMENT_BODY: ${{ github.event.comment.body }}
PR_DETAILS: ${{ steps.pr-details.outputs.result }}
SUMMARY_DATA: ${{ steps.generate-summary.outputs.result }}
- name: Create and commit release notes file via GitHub API
if: steps.check-first-comment.outputs.result == 'true' && steps.check-release-notes-exists.outputs.result == 'false' && steps.generate-summary.outputs.result != 'null' && steps.determine-category.outputs.result != 'null' && steps.determine-category.outputs.result != ''
run: node .github/actions/ai-generated-release-notes/create-release-notes-file.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
SUMMARY_DATA: ${{ steps.generate-summary.outputs.result }}
CATEGORY: ${{ steps.determine-category.outputs.result }}
- name: Comment on PR
if: steps.check-first-comment.outputs.result == 'true' && steps.check-release-notes-exists.outputs.result == 'false' && steps.generate-summary.outputs.result != 'null' && steps.determine-category.outputs.result != 'null' && steps.determine-category.outputs.result != ''
run: node .github/actions/ai-generated-release-notes/comment-on-pr.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
SUMMARY_DATA: ${{ steps.generate-summary.outputs.result }}
CATEGORY: ${{ steps.determine-category.outputs.result }}

23
.github/workflows/autofix.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: autofix.ci
defaults:
run:
shell: bash
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
contents: read
jobs:
autofix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Format code
run: yarn lint:fix
- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27

View File

@@ -12,6 +12,7 @@ on:
branches:
- master
pull_request:
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -21,31 +22,42 @@ jobs:
api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Build API
run: cd packages/api && yarn build
- name: Create package tgz
run: cd packages/api && yarn pack && mv package.tgz actual-api.tgz
- name: Prepare bundle stats artifact
run: cp packages/api/app/stats.json api-stats.json
- name: Upload Build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-api
path: packages/api/actual-api.tgz
- name: Upload API bundle stats
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: api-build-stats
path: api-stats.json
crdt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Build CRDT
run: cd packages/crdt && yarn build
- name: Create package tgz
run: cd packages/crdt && yarn pack && mv package.tgz actual-crdt.tgz
- name: Upload Build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-crdt
path: packages/crdt/actual-crdt.tgz
@@ -53,18 +65,34 @@ jobs:
web:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Web
run: ./bin/package-browser
run: yarn build:browser
- name: Upload Build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-web
path: packages/desktop-client/build
- name: Upload Build Stats
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: build-stats
path: packages/desktop-client/build-stats
server:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Build Server
run: yarn workspace @actual-app/sync-server build
- name: Upload Build
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: sync-server
path: packages/sync-server/build

View File

@@ -5,6 +5,7 @@ on:
branches:
- master
pull_request:
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -14,25 +15,43 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Lint
run: yarn lint
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Typecheck
run: yarn typecheck
validate-cli:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Build Web
run: yarn build:server
- name: Check that the built CLI works
run: node packages/sync-server/build/bin/actual-server.js --version
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Test
run: yarn test
@@ -40,9 +59,9 @@ jobs:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: '19'
node-version: 22
- name: Check migrations
run: node ./.github/actions/check-migrations.js

View File

@@ -22,7 +22,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Initialize CodeQL
uses: github/codeql-action/init@v3

26
.github/workflows/count-points.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Count points
on:
schedule:
# Run at 00:00 on the first day of every month
- cron: '0 0 1 * *'
workflow_dispatch:
inputs:
startDate:
description: 'Start date for point counter (YYYY-MM-DD)'
required: true
type: string
jobs:
count-points:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Count points
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
START_DATE: ${{ inputs.startDate }}
run: node .github/scripts/count-points.mjs

104
.github/workflows/docker-edge.yml vendored Normal file
View File

@@ -0,0 +1,104 @@
name: Build Edge Docker Image
# Edge Docker images are built for every push to master
on:
push:
branches:
- master
workflow_dispatch:
concurrency:
group: docker-edge-build
cancel-in-progress: true
permissions:
contents: read
packages: write
env:
IMAGES: |
${{ !github.event.repository.fork && 'actualbudget/actual-server' || '' }}
ghcr.io/${{ github.repository_owner }}/actual-server
ghcr.io/${{ github.repository_owner }}/actual
# Creates the following tags:
# - actual-server:edge
TAGS: |
type=edge,value=edge
type=sha
jobs:
build:
if: github.event_name == 'workflow_dispatch' || !github.event.repository.fork
name: Build Docker image
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu, alpine]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up QEMU
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Docker meta
id: meta
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
with:
# Push to both Docker Hub and Github Container Registry
images: ${{ env.IMAGES }}
flavor: ${{ matrix.os != 'ubuntu' && format('suffix=-{0}', matrix.os) || '' }}
tags: ${{ env.TAGS }}
- name: Login to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
if: github.event_name != 'pull_request' && !github.event.repository.fork
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
# Building outside of the docker image allows us to build once and push to multiple platforms
# This is faster and avoids yarn memory issues
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Web
run: yarn build:server
- name: Build image for testing
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
push: false
load: true
file: packages/sync-server/docker/${{ matrix.os }}.Dockerfile
tags: actualbudget/actual-server-testing
- name: Test that the docker image boots
run: |
docker run --detach --network=host actualbudget/actual-server-testing
sleep 5
curl --fail -sS -LI -w '%{http_code}\n' --retry 10 --retry-delay 1 --retry-connrefused localhost:5006
# This will use the cache from the earlier build step and not rebuild the image
# https://docs.docker.com/build/ci/github-actions/test-before-push/
- name: Build and push images
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: packages/sync-server/docker/${{ matrix.os }}.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7${{ matrix.os == 'alpine' && ',linux/arm/v6' || '' }}
tags: ${{ steps.meta.outputs.tags }}
build-args: |
GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}

96
.github/workflows/docker-release.yml vendored Normal file
View File

@@ -0,0 +1,96 @@
name: Build Stable Docker Image
# Stable Docker images are built for every new tag
on:
push:
tags:
- 'v*.*.*'
paths-ignore:
- README.md
- LICENSE.txt
env:
IMAGES: |
actualbudget/actual-server
ghcr.io/actualbudget/actual-server
ghcr.io/actualbudget/actual
# Creates the following tags:
# - actual-server:latest (see docker/metadata-action flavor inputs, below)
# - actual-server:1.3
# - actual-server:1.3.7
# - actual-server:sha-90dd603
TAGS: |
type=semver,pattern={{version}}
jobs:
build:
name: Build Docker image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up QEMU
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Docker meta
id: meta
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
with:
# Push to both Docker Hub and Github Container Registry
images: ${{ env.IMAGES }}
# Automatically update :latest
flavor: latest=true
tags: ${{ env.TAGS }}
- name: Docker meta for Alpine image
id: alpine-meta
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
with:
images: ${{ env.IMAGES }}
# Automatically update :latest
flavor: |
latest=true
suffix=-alpine,onlatest=true
tags: ${{ env.TAGS }}
- name: Login to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
# Building outside of the docker image allows us to build once and push to multiple platforms
# This is faster and avoids yarn memory issues
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Web
run: yarn build:server
- name: Build and push ubuntu image
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
push: true
file: packages/sync-server/docker/ubuntu.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ${{ steps.meta.outputs.tags }}
- name: Build and push alpine image
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
push: true
file: packages/sync-server/docker/alpine.Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
tags: ${{ steps.alpine-meta.outputs.tags }}

164
.github/workflows/docs-spelling.yml vendored Normal file
View File

@@ -0,0 +1,164 @@
name: Check Spelling (Docs)
# Comment management is handled through a secondary job, for details see:
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
#
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
# it needs `contents: write` in order to add a comment.
#
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
# it needs `pull-requests: write` in order to manipulate those comments.
# Updating pull request branches is managed via comment handling.
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
#
# These elements work together to make it happen:
#
# `on.issue_comment`
# This event listens to comments by users asking to update the metadata.
#
# `jobs.update`
# This job runs in response to an issue_comment and will push a new commit
# to update the spelling metadata.
#
# `with.experimental_apply_changes_via_bot`
# Tells the action to support and generate messages that enable it
# to make a commit to update the spelling metadata.
#
# `with.ssh_key`
# In order to trigger workflows when the commit is made, you can provide a
# secret (typically, a write-enabled github deploy key).
#
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
on:
push:
branches:
- '**'
tags-ignore:
- '**'
paths:
- 'packages/docs/**'
- '.github/workflows/docs-spelling.yml'
- '.github/actions/docs-spelling/**'
pull_request_target:
branches:
- '**'
tags-ignore:
- '**'
paths:
- 'packages/docs/**'
- '.github/workflows/docs-spelling.yml'
- '.github/actions/docs-spelling/**'
types:
- 'opened'
- 'reopened'
- 'synchronize'
issue_comment:
types:
- 'created'
jobs:
spelling:
name: Check Spelling
permissions:
contents: read
pull-requests: read
actions: read
security-events: write
outputs:
followup: ${{ steps.spelling.outputs.followup }}
runs-on: ubuntu-latest
if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
concurrency:
group: spelling-${{ github.event.pull_request.number || github.ref }}
# note: If you use only_check_changed_files, you do not want cancel-in-progress
cancel-in-progress: true
steps:
- name: check-spelling
id: spelling
uses: check-spelling/check-spelling@main
with:
suppress_push_for_open_pull_request: 1
checkout: true
check_file_names: 1
spell_check_this: check-spelling/spell-check-this@prerelease
post_comment: 0
use_magic_file: 1
experimental_apply_changes_via_bot: 1
use_sarif: 1
extra_dictionary_limit: 12
check_extra_dictionaries: ''
extra_dictionaries: cspell:cpp/src/cpp.txt
cspell:software-terms/src/software-terms.txt
cspell:python/src/python/python-lib.txt
cspell:node/node.txt
cspell:filetypes/filetypes.txt
cspell:aws/aws.txt
cspell:typescript/dict/typescript.txt
cspell:npm/dict/npm.txt
cspell:fullstack/dict/fullstack.txt
cspell:html/dict/html.txt
cspell:css/dict/css.txt
config: .github/actions/docs-spelling
comment-push:
name: Report (Push)
# If your workflow isn't running on push, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
contents: write
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
steps:
- name: comment
uses: check-spelling/check-spelling@main
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
config: .github/actions/docs-spelling
comment-pr:
name: Report (PR)
# If you workflow isn't running on pull_request*, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
pull-requests: write
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps:
- name: comment
uses: check-spelling/check-spelling@main
with:
checkout: true
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
experimental_apply_changes_via_bot: 1
config: .github/actions/docs-spelling
update:
name: Update PR
permissions:
contents: write
pull-requests: write
actions: read
runs-on: ubuntu-latest
if: ${{
github.event_name == 'issue_comment' &&
github.event.issue.pull_request &&
contains(github.event.comment.body, '@check-spelling-bot apply')
}}
concurrency:
group: spelling-update-${{ github.event.issue.number }}
cancel-in-progress: false
steps:
- name: apply spelling updates
uses: check-spelling/check-spelling@main
with:
experimental_apply_changes_via_bot: 1
checkout: true
ssh_key: '${{ secrets.CHECK_SPELLING }}'
config: .github/actions/docs-spelling

View File

@@ -1,6 +1,7 @@
name: E2E Tests
on: [pull_request]
on:
pull_request:
env:
GITHUB_PR_NUMBER: ${{github.event.pull_request.number}}
@@ -16,7 +17,7 @@ jobs:
outputs:
netlify_url: ${{ steps.netlify.outputs.url }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Wait for Netlify build to finish
@@ -31,37 +32,62 @@ jobs:
needs: netlify
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
image: mcr.microsoft.com/playwright:v1.56.0-jammy
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Trust the repository directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run E2E Tests on Netlify URL
run: yarn e2e
env:
E2E_START_URL: ${{ needs.netlify.outputs.netlify_url }}
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: desktop-client-test-results
path: packages/desktop-client/test-results/
retention-days: 30
overwrite: true
functional-desktop-app:
name: Functional Desktop App
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.56.0-jammy
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Trust the repository directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Run Desktop app E2E Tests
run: |
xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" -- yarn e2e:desktop
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: desktop-app-test-results
path: packages/desktop-electron/e2e/test-results/
retention-days: 30
overwrite: true
vrt:
name: Visual regression
needs: netlify
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.41.1-jammy
image: mcr.microsoft.com/playwright:v1.56.0-jammy
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Run VRT Tests on Netlify URL
run: yarn vrt
env:
E2E_START_URL: ${{ needs.netlify.outputs.netlify_url }}
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: desktop-client-test-results

View File

@@ -24,12 +24,12 @@ jobs:
strategy:
matrix:
os:
- ubuntu-latest
- ubuntu-22.04
- windows-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
@@ -40,35 +40,106 @@ jobs:
python3 -m pip install setuptools
- if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
sudo apt-get update
sudo apt-get install flatpak -y
sudo apt-get install flatpak-builder -y
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install org.freedesktop.Sdk/x86_64/23.08 -y
sudo flatpak install org.freedesktop.Platform/x86_64/23.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp/x86_64/23.08 -y
sudo flatpak install org.freedesktop.Sdk//24.08 -y
sudo flatpak install org.freedesktop.Platform//24.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp//24.08 -y
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Electron
- name: Build Electron for Mac
if: ${{ startsWith(matrix.os, 'macos') }}
run: ./bin/package-electron
env:
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.CSC_LINK }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
- name: Build Electron
if: ${{ ! startsWith(matrix.os, 'macos') }}
run: ./bin/package-electron
- name: Upload Build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-electron-${{ matrix.os }}
path: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
!packages/desktop-electron/dist/Actual-windows.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak
- name: Add to Release
uses: softprops/action-gh-release@v2
- name: Upload Windows Store Build
if: ${{ startsWith(matrix.os, 'windows') }}
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-electron-${{ matrix.os }}-appx
path: |
packages/desktop-electron/dist/*.appx
- name: Process release version
id: process_version
run: |
echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Add to new release
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
with:
draft: true
body: |
:link: [View release notes](https://actualbudget.org/blog/release-${{ steps.process_version.outputs.version }})
## Desktop releases
Please note: Microsoft store updates can sometimes lag behind the main release by a couple of days while they verify the new version.
<a href="https://apps.microsoft.com/detail/9p2hmlhsdbrm?cid=Github+Releases&mode=direct">
<img src="https://get.microsoft.com/images/en-us%20dark.svg" width="200"/>
</a>
files: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
!packages/desktop-electron/dist/Actual-windows.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak
publish-microsoft-store:
needs: build
runs-on: windows-latest
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }}
steps:
- name: Install StoreBroker
shell: powershell
run: |
Install-Module -Name StoreBroker -AcceptLicense -Force -Scope CurrentUser -Verbose
- name: Download Microsoft Store artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: actual-electron-windows-latest-appx
- name: Submit to Microsoft Store
shell: powershell
run: |
# Disable telemetry
$global:SBDisableTelemetry = $true
# Authenticate against the store
$pass = ConvertTo-SecureString -String '${{ secrets.MICROSOFT_STORE_CLIENT_SECRET }}' -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ${{ secrets.MICROSOFT_STORE_CLIENT_ID }},$pass
Set-StoreBrokerAuthentication -TenantId '${{ secrets.MICROSOFT_STORE_TENANT_ID }}' -Credential $cred
# Zip and create metadata files
$artifacts = Get-ChildItem -Path . -Filter *.appx | Select-Object -ExpandProperty FullName
New-StoreBrokerConfigFile -Path "$PWD/config.json" -AppId ${{ secrets.MICROSOFT_STORE_PRODUCT_ID }}
New-SubmissionPackage -ConfigPath "$PWD/config.json" -DisableAutoPackageNameFormatting -AppxPath $artifacts -OutPath "$PWD" -OutName submission
# Submit the app
# See https://github.com/microsoft/StoreBroker/blob/master/Documentation/USAGE.md#the-easy-way
Update-ApplicationSubmission `
-AppId ${{ secrets.MICROSOFT_STORE_PRODUCT_ID }} `
-SubmissionDataPath "submission.json" `
-PackagePath "submission.zip" `
-ReplacePackages `
-NoStatus `
-AutoCommit `
-Force

View File

@@ -19,12 +19,12 @@ jobs:
strategy:
matrix:
os:
- ubuntu-latest
- ubuntu-22.04
- windows-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
@@ -35,22 +35,78 @@ jobs:
python3 -m pip install setuptools
- if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
sudo apt-get update
sudo apt-get install flatpak -y
sudo apt-get install flatpak-builder -y
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install org.freedesktop.Sdk/x86_64/23.08 -y
sudo flatpak install org.freedesktop.Platform/x86_64/23.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp/x86_64/23.08 -y
sudo flatpak install org.freedesktop.Sdk//24.08 -y
sudo flatpak install org.freedesktop.Platform//24.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp//24.08 -y
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Electron
run: ./bin/package-electron
- name: Upload Build
uses: actions/upload-artifact@v4
- name: Upload Linux x64 AppImage
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-electron-${{ matrix.os }}
name: Actual-linux-x86_64.AppImage
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-linux-x86_64.AppImage
- name: Upload Linux arm64 AppImage
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-linux-arm64.AppImage
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-linux-arm64.AppImage
- name: Upload Linux x64 flatpak
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-linux-x86_64.flatpak
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-linux-x86_64.flatpak
- name: Upload Windows x32 exe
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-windows-ia32.exe
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-windows-ia32.exe
- name: Upload Windows x64 exe
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-windows-x64.exe
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-windows-x64.exe
- name: Upload Windows arm64 exe
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-windows-arm64.exe
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-windows-arm64.exe
- name: Upload Mac x64 dmg
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-mac-x64.dmg
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-mac-x64.dmg
- name: Upload Mac arm64 dmg
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-mac-arm64.dmg
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-mac-arm64.dmg
- name: Upload Windows Store Build
if: ${{ startsWith(matrix.os, 'windows') }}
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-electron-${{ matrix.os }}-appx
path: |
packages/desktop-electron/dist/*.dmg
packages/desktop-electron/dist/*.exe
packages/desktop-electron/dist/*.AppImage
packages/desktop-electron/dist/*.flatpak
packages/desktop-electron/dist/*.appx

View File

@@ -0,0 +1,56 @@
name: Generate release PR
on:
workflow_dispatch:
inputs:
ref:
description: 'Commit or branch to release'
required: true
default: 'master'
version:
description: 'Version number for the release (optional)'
required: false
default: ''
jobs:
generate-release-pr:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ github.event.inputs.ref }}
- name: Bump package versions
id: bump_package_versions
shell: bash
run: |
declare -A packages=(
[web]="desktop-client"
[electron]="desktop-electron"
[sync]="sync-server"
[api]="api"
)
for key in "${!packages[@]}"; do
pkg="${packages[$key]}"
if [[ -n "${{ github.event.inputs.version }}" ]]; then
version="${{ github.event.inputs.version }}"
else
version=$(node ./packages/ci-actions/bin/get-next-package-version.js \
--package-json "./packages/$pkg/package.json" \
--type auto \
--update)
fi
eval "NEW_${key^^}_VERSION=\"$version\""
done
echo "version=$NEW_WEB_VERSION" >> "$GITHUB_OUTPUT"
- name: Create PR
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: '🔖 (${{ steps.bump_package_versions.outputs.version }})'
title: '🔖 (${{ steps.bump_package_versions.outputs.version }})'
body: 'Generated by [generate-release-pr.yml](../tree/master/.github/workflows/generate-release-pr.yml)'
branch: 'release/v${{ steps.bump_package_versions.outputs.version }}'

View File

@@ -0,0 +1,87 @@
name: Extract and upload i18n strings
on:
schedule:
# 4am UTC
- cron: '0 4 * * *'
workflow_dispatch:
jobs:
extract-and-upload-i18n-strings:
runs-on: ubuntu-latest
if: github.repository == 'actualbudget/actual'
steps:
- name: Check out main repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
path: actual
- name: Set up environment
uses: ./actual/.github/actions/setup
with:
working-directory: actual
download-translations: false # As we'll manually clone instead
- name: Configure Git config
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Configure i18n client
run: |
pip install wlc
- name: Lock translations
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
lock \
actualbudget/actual
- name: Update VCS with latest translations
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
push \
actualbudget/actual
- name: Check out updated translations
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ssh-key: ${{ secrets.STRING_IMPORT_DEPLOY_KEY }}
repository: actualbudget/translations
path: translations
- name: Generate i18n strings
working-directory: actual
run: |
mkdir -p packages/desktop-client/locale/
cp ../translations/en.json packages/desktop-client/locale/
yarn generate:i18n
if [[ ! -f packages/desktop-client/locale/en.json ]]; then
echo "File packages/desktop-client/locale/en.json not found. Ensure the file was generated correctly."
exit 1
fi
- name: Check in new i18n strings
working-directory: translations
run: |
cp ../actual/packages/desktop-client/locale/en.json .
git add .
if git commit -m "Update source strings"; then
git push
else
echo "No changes to commit"
fi
- name: Update Weblate with latest translations
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
pull \
actualbudget/actual
- name: Unlock translations
if: always() # Clean up even on failure
run: |
wlc \
--url https://hosted.weblate.org/api/ \
--key "${{ secrets.WEBLATE_API_KEY_CI_STRINGS }}" \
unlock \
actualbudget/actual

View File

@@ -9,22 +9,23 @@ jobs:
if: ${{ github.event.label.name == 'feature' }}
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
- uses: actions-ecosystem/action-add-labels@bd52874380e3909a1ac983768df6976535ece7f8 # v1.1.0
with:
labels: needs votes
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Add reactions
uses: aidan-mundy/react-to-issue@v1.1.1
uses: aidan-mundy/react-to-issue@109392cac5159c2df6c47c8ab3b5d6b708852fe5 # v1.1.2
with:
issue-number: ${{ github.event.issue.number }}
reactions: '+1'
- name: Create comment
uses: peter-evans/create-or-update-comment@v3
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
with:
issue-number: ${{ github.event.issue.number }}
body: |
:sparkles: Thanks for sharing your idea! :sparkles:
This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesnt mean we dont accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).
This repository uses a voting-based system for feature requests. While enhancement issues are automatically closed, we still welcome feature requests! The voting system helps us gauge community interest in potential features. We also encourage community contributions for any feature requests marked as needing votes (just post a comment first so we can help guide you toward a successful contribution).
The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+

View File

@@ -24,10 +24,10 @@ jobs:
runs-on: ubuntu-latest
steps:
# This is not a security concern because we have approved & merged the PR
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: '19'
node-version: 22
- name: Handle feature requests
run: node .github/actions/handle-feature-requests.js
env:

View File

@@ -9,6 +9,6 @@ jobs:
if: ${{ !contains(github.event.issue.labels.*.name, 'feature') && contains(github.event.issue.labels.*.name, 'help wanted') }}
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-remove-labels@v1
- uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0
with:
labels: help wanted

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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Install Netlify
run: npm install netlify-cli@17.10.1 -g
- name: Build Actual
run: yarn build: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

@@ -0,0 +1,131 @@
name: Publish nightly desktop app
# Publish nightly version of desktop app - Runs every day at midnight
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
defaults:
run:
shell: bash
env:
CI: true
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
build:
strategy:
matrix:
os:
- ubuntu-22.04
- windows-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- if: ${{ startsWith(matrix.os, 'windows') }}
run: pip.exe install setuptools
- if: ${{ ! startsWith(matrix.os, 'windows') }}
run: |
mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install setuptools
- if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
sudo apt-get update
sudo apt-get install flatpak -y
sudo apt-get install flatpak-builder -y
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install org.freedesktop.Sdk//24.08 -y
sudo flatpak install org.freedesktop.Platform//24.08 -y
sudo flatpak install org.electronjs.Electron2.BaseApp//24.08 -y
- name: Set up environment
uses: ./.github/actions/setup
- name: Update package versions
run: |
# Get new nightly version
NEW_DESKTOP_APP_VERSION=$(node ./packages/ci-actions/bin/get-next-package-version.js --package-json ./packages/desktop-electron/package.json --type nightly)
# Set package version
npm version $NEW_DESKTOP_APP_VERSION --no-git-tag-version --workspace=desktop-electron --no-workspaces-update
- name: Build Electron for Mac
if: ${{ startsWith(matrix.os, 'macos') }}
run: ./bin/package-electron
env:
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.CSC_LINK }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
- name: Build Electron
if: ${{ ! startsWith(matrix.os, 'macos') }}
run: ./bin/package-electron
- name: Upload Linux x64 AppImage
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-linux-x86_64.AppImage
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-linux-x86_64.AppImage
- name: Upload Linux arm64 AppImage
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-linux-arm64.AppImage
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-linux-arm64.AppImage
- name: Upload Windows x32 exe
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-windows-ia32.exe
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-windows-ia32.exe
- name: Upload Windows x64 exe
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-windows-x64.exe
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-windows-x64.exe
- name: Upload Windows arm64 exe
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-windows-arm64.exe
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-windows-arm64.exe
- name: Upload Mac x64 dmg
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-mac-x64.dmg
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-mac-x64.dmg
- name: Upload Mac arm64 dmg
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: Actual-mac-arm64.dmg
if-no-files-found: ignore
path: packages/desktop-electron/dist/Actual-mac-arm64.dmg
- name: Upload Windows Store Build
if: ${{ startsWith(matrix.os, 'windows') }}
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: actual-electron-${{ matrix.os }}-appx
path: |
packages/desktop-electron/dist/*.appx

View File

@@ -0,0 +1,95 @@
name: Publish nightly npm packages
# Nightly npm packages are built daily
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
build-and-pack:
runs-on: ubuntu-latest
name: Build and pack npm packages
if: github.event.repository.fork == false
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Update package versions
run: |
# Get new nightly versions
NEW_WEB_VERSION=$(node ./packages/ci-actions/bin/get-next-package-version.js --package-json ./packages/desktop-client/package.json --type nightly)
NEW_SYNC_VERSION=$(node ./packages/ci-actions/bin/get-next-package-version.js --package-json ./packages/sync-server/package.json --type nightly)
NEW_API_VERSION=$(node ./packages/ci-actions/bin/get-next-package-version.js --package-json ./packages/api/package.json --type nightly)
# Set package versions
npm version $NEW_WEB_VERSION --no-git-tag-version --workspace=@actual-app/web --no-workspaces-update
npm version $NEW_SYNC_VERSION --no-git-tag-version --workspace=@actual-app/sync-server --no-workspaces-update
npm version $NEW_API_VERSION --no-git-tag-version --workspace=@actual-app/api --no-workspaces-update
- name: Yarn install
run: |
yarn install
- name: Build Server & Web
run: yarn build:server
- name: Pack the web and server packages
run: |
yarn workspace @actual-app/web pack --filename @actual-app/web.tgz
yarn workspace @actual-app/sync-server pack --filename @actual-app/sync-server.tgz
- name: Build API
run: yarn build:api
- name: Pack the api package
run: |
yarn workspace @actual-app/api pack --filename @actual-app/api.tgz
- name: Upload package artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: npm-packages
path: |
packages/desktop-client/@actual-app/web.tgz
packages/sync-server/@actual-app/sync-server.tgz
packages/api/@actual-app/api.tgz
publish:
runs-on: ubuntu-latest
name: Publish Nightly npm packages
needs: build-and-pack
permissions:
contents: read
packages: write
steps:
- name: Download the artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: npm-packages
- name: Setup node and npm registry
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Publish Web
run: |
npm publish desktop-client/@actual-app/web.tgz --access public --tag nightly
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish Sync-Server
run: |
npm publish sync-server/@actual-app/sync-server.tgz --access public --tag nightly
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish API
run: |
npm publish api/@actual-app/api.tgz --access public --tag nightly
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -0,0 +1,78 @@
name: Publish npm packages
# # Npm packages are published for every new tag
on:
push:
tags:
- 'v*.*.*'
jobs:
build-and-pack:
runs-on: ubuntu-latest
name: Build and pack npm packages
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Build Web
run: yarn build:server
- name: Pack the web and server packages
run: |
yarn workspace @actual-app/web pack --filename @actual-app/web.tgz
yarn workspace @actual-app/sync-server pack --filename @actual-app/sync-server.tgz
- name: Build API
run: yarn build:api
- name: Pack the api package
run: |
yarn workspace @actual-app/api pack --filename @actual-app/api.tgz
- name: Upload package artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: npm-packages
path: |
packages/desktop-client/@actual-app/web.tgz
packages/sync-server/@actual-app/sync-server.tgz
packages/api/@actual-app/api.tgz
publish:
runs-on: ubuntu-latest
name: Publish npm packages
needs: build-and-pack
permissions:
contents: read
packages: write
steps:
- name: Download the artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: npm-packages
- name: Setup node and npm registry
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
- name: Publish Web
run: |
npm publish desktop-client/@actual-app/web.tgz --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish Sync-Server
run: |
npm publish sync-server/@actual-app/sync-server.tgz --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish API
run: |
npm publish api/@actual-app/api.tgz --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -12,10 +12,21 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check release notes
if: startsWith(github.head_ref, 'release/') == false
uses: actualbudget/actions/release-notes/check@main
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
- name: Get changed files
id: changed-files
run: |
git fetch origin ${{ github.base_ref }}
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
NON_DOCS_FILES=$(echo "$CHANGED_FILES" | grep -v -e "^packages/docs/" -e "^\.github/actions/docs-spelling/" || true)
if [ -z "$NON_DOCS_FILES" ] && [ -n "$CHANGED_FILES" ]; then
echo "only_docs=true" >> $GITHUB_OUTPUT
echo "only documentation files changed, skipping release notes check"
else
echo "only_docs=false" >> $GITHUB_OUTPUT
fi
- name: Generate release notes
if: startsWith(github.head_ref, 'release/') == true
uses: actualbudget/actions/release-notes/generate@main

View File

@@ -13,6 +13,9 @@ name: Compare Sizes
on:
pull_request_target:
paths:
- 'packages/**'
- '!packages/sync-server/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -23,63 +26,120 @@ jobs:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- name: Wait for ${{github.base_ref}} build to succeed
uses: fountainhead/action-wait-for-check@v1.1.0
id: master-build
- name: Checkout base branch
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ github.base_ref }}
- name: Set up environment
uses: ./.github/actions/setup
with:
download-translations: 'false'
- name: Wait for ${{github.base_ref}} web build to succeed
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: master-web-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: web
ref: ${{github.base_ref}}
- name: Wait for ${{github.base_ref}} API build to succeed
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: master-api-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: api
ref: ${{github.base_ref}}
- name: Wait for PR build to succeed
uses: fountainhead/action-wait-for-check@v1.1.0
id: wait-for-build
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: wait-for-web-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: web
ref: ${{github.event.pull_request.head.sha}}
- name: Wait for API PR build to succeed
uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0
id: wait-for-api-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: api
ref: ${{github.event.pull_request.head.sha}}
- name: Report build failure
if: steps.wait-for-build.outputs.conclusion == 'failure'
if: steps.wait-for-web-build.outputs.conclusion == 'failure' || steps.wait-for-api-build.outputs.conclusion == 'failure'
run: |
echo "Build failed on PR branch or ${{github.base_ref}}"
exit 1
- name: Download build artifact from ${{github.base_ref}}
uses: dawidd6/action-download-artifact@v3
id: pr-build
- name: Download web build artifact from ${{github.base_ref}}
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
id: pr-web-build
with:
branch: ${{github.base_ref}}
workflow: build.yml
workflow_conclusion: '' # ignore the conclusion of the workflow, since we already checked it
name: build-stats
path: base
- name: Download build artifact from PR
uses: dawidd6/action-download-artifact@v3
- name: Download API build artifact from ${{github.base_ref}}
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
id: pr-api-build
with:
branch: ${{github.base_ref}}
workflow: build.yml
workflow_conclusion: '' # ignore the conclusion of the workflow, since we already checked it
name: api-build-stats
path: base
- name: Download build stats from PR
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
with:
pr: ${{github.event.pull_request.number}}
workflow: build.yml
workflow_conclusion: '' # ignore the conclusion of the workflow, since we already checked it
name: build-stats
path: head
allow_forks: true
- name: Download API stats from PR
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
with:
pr: ${{github.event.pull_request.number}}
workflow: build.yml
workflow_conclusion: '' # ignore the conclusion of the workflow, since we already checked it
name: api-build-stats
path: head
allow_forks: true
- name: Strip content hashes from stats files
run: |
sed -i -E 's/index\.[0-9a-zA-Z_-]{8,}\./index./g' ./head/web-stats.json
sed -i -E 's/\.[0-9a-zA-Z_-]{8,}\.chunk\././g' ./head/web-stats.json
sed -i -E 's/\.[0-9a-f]{8,}\././g' ./head/*.json
sed -i -E 's/index\.[0-9a-zA-Z_-]{8,}\./index./g' ./base/web-stats.json
sed -i -E 's/\.[0-9a-zA-Z_-]{8,}\.chunk\././g' ./base/web-stats.json
sed -i -E 's/\.[0-9a-f]{8,}\././g' ./base/*.json
- uses: twk3/rollup-size-compare-action@v1.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
current-stats-json-path: ./head/web-stats.json
base-stats-json-path: ./base/web-stats.json
title: desktop-client
- uses: github/webpack-bundlesize-compare-action@v1.8.2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
current-stats-json-path: ./head/loot-core-stats.json
base-stats-json-path: ./base/loot-core-stats.json
title: loot-core
if [ -f ./head/web-stats.json ]; then
sed -i -E 's/index\.[0-9a-zA-Z_-]{8,}\./index./g' ./head/web-stats.json
sed -i -E 's/\.[0-9a-zA-Z_-]{8,}\.chunk\././g' ./head/web-stats.json
fi
if [ -f ./base/web-stats.json ]; then
sed -i -E 's/index\.[0-9a-zA-Z_-]{8,}\./index./g' ./base/web-stats.json
sed -i -E 's/\.[0-9a-zA-Z_-]{8,}\.chunk\././g' ./base/web-stats.json
fi
for file in ./head/*.json ./base/*.json; do
if [ -f "$file" ]; then
sed -i -E 's/\.[0-9a-f]{8,}\././g' "$file"
fi
done
- name: Generate combined bundle stats comment
run: |
node packages/ci-actions/bin/bundle-stats-comment.mjs \
--base desktop-client=./base/web-stats.json \
--base loot-core=./base/loot-core-stats.json \
--base api=./base/api-stats.json \
--head desktop-client=./head/web-stats.json \
--head loot-core=./head/loot-core-stats.json \
--head api=./head/api-stats.json \
--identifier combined > bundle-stats-comment.md
- name: Post combined bundle stats comment
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
node packages/ci-actions/bin/update-bundle-stats-comment.mjs \
--comment-file bundle-stats-comment.md \
--identifier '<!--- bundlestats-action-comment key:combined --->'

View File

@@ -2,15 +2,41 @@ name: 'Close stale PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch: # Allow manual triggering
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
close-pr-message: 'This PR was closed because it has been stalled for 5 days with no activity.'
days-before-stale: 30
days-before-close: 5
days-before-issue-stale: -1
stale-wip:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
stale-pr-message: ':wave: Hi! It looks like this PR has not had any changes for a week now. Would you like someone to review this PR? If so - please remove the "[WIP]" prefix from the PR title. That will let the community know that this PR is open for a review.'
days-before-stale: 7
any-of-labels: ':construction: WIP'
days-before-close: -1
days-before-issue-stale: -1
stale-needs-info:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
stale-issue-label: 'needs info'
days-before-stale: -1
days-before-close: 7
close-issue-message: 'This issue has been automatically closed because there have been no comments for 7 days after the "needs info" label was added. If you still need help, please feel free to reopen the issue with the requested information.'
remove-stale-when-updated: false
stale-pr-message: '' # Disable PR processing
close-pr-message: '' # Disable PR processing
days-before-pr-stale: -1 # Disable PR processing
days-before-pr-close: -1 # Disable PR processing

151
.github/workflows/vrt-update-apply.yml vendored Normal file
View File

@@ -0,0 +1,151 @@
name: VRT Update - Apply
# SECURITY: This workflow runs in trusted base repo context.
# It treats the patch artifact as untrusted data, validates it contains only PNGs,
# and safely applies it to the contributor's fork branch.
on:
workflow_run:
workflows: ['VRT Update - Generate']
types:
- completed
permissions:
contents: write
pull-requests: write
jobs:
apply-vrt-updates:
name: Apply VRT Updates
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Download patch artifact
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
pattern: vrt-patch-*
path: /tmp/artifacts
- name: Download metadata artifact
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
pattern: vrt-metadata-*
path: /tmp/metadata
- name: Extract metadata
id: metadata
run: |
if [ ! -f "/tmp/metadata/pr-number.txt" ]; then
echo "No metadata found, skipping..."
exit 0
fi
PR_NUMBER=$(cat "/tmp/metadata/pr-number.txt")
HEAD_REF=$(cat "/tmp/metadata/head-ref.txt")
HEAD_REPO=$(cat "/tmp/metadata/head-repo.txt")
echo "pr_number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
echo "head_ref=$HEAD_REF" >> "$GITHUB_OUTPUT"
echo "head_repo=$HEAD_REPO" >> "$GITHUB_OUTPUT"
echo "Found PR #$PR_NUMBER: $HEAD_REPO @ $HEAD_REF"
- name: Checkout fork branch
if: steps.metadata.outputs.pr_number != ''
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
repository: ${{ steps.metadata.outputs.head_repo }}
ref: ${{ steps.metadata.outputs.head_ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Validate and apply patch
if: steps.metadata.outputs.pr_number != ''
id: apply
run: |
PATCH_FILE="/tmp/artifacts/vrt-update.patch"
if [ ! -f "$PATCH_FILE" ]; then
echo "No patch file found"
exit 0
fi
echo "Found patch file: $PATCH_FILE"
# Validate patch only contains PNG files
echo "Validating patch contains only PNG files..."
if grep -E '^(\+\+\+|---) [ab]/' "$PATCH_FILE" | grep -v '\.png$'; then
echo "ERROR: Patch contains non-PNG files! Rejecting for security."
echo "applied=false" >> "$GITHUB_OUTPUT"
echo "error=Patch validation failed: contains non-PNG files" >> "$GITHUB_OUTPUT"
exit 1
fi
# Extract file list for verification
FILES_CHANGED=$(grep -E '^\+\+\+ b/' "$PATCH_FILE" | sed 's/^+++ b\///' | wc -l)
echo "Patch modifies $FILES_CHANGED PNG file(s)"
# Configure git
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# Apply patch
echo "Applying patch..."
if git apply --check "$PATCH_FILE" 2>&1; then
git apply "$PATCH_FILE"
# Stage only PNG files (extra safety)
git add "**/*.png"
if git diff --staged --quiet; then
echo "No changes after applying patch"
echo "applied=false" >> "$GITHUB_OUTPUT"
exit 0
fi
# Commit
git commit -m "Update VRT screenshots" -m "Auto-generated by VRT workflow" -m "PR: #${{ steps.metadata.outputs.pr_number }}"
echo "applied=true" >> "$GITHUB_OUTPUT"
else
echo "Patch could not be applied cleanly"
echo "applied=false" >> "$GITHUB_OUTPUT"
echo "error=Patch conflicts with current branch state" >> "$GITHUB_OUTPUT"
exit 1
fi
- name: Push changes
if: steps.apply.outputs.applied == 'true'
env:
HEAD_REF: ${{ steps.metadata.outputs.head_ref }}
HEAD_REPO: ${{ steps.metadata.outputs.head_repo }}
run: |
git push origin "HEAD:refs/heads/$HEAD_REF"
echo "Successfully pushed VRT updates to $HEAD_REPO@$HEAD_REF"
- name: Comment on PR - Success
if: steps.apply.outputs.applied == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
await github.rest.issues.createComment({
issue_number: ${{ steps.metadata.outputs.pr_number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: '✅ VRT screenshots have been automatically updated.'
});
- name: Comment on PR - Failure
if: failure() && steps.metadata.outputs.pr_number != ''
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const error = `${{ steps.apply.outputs.error }}` || 'Unknown error occurred';
await github.rest.issues.createComment({
issue_number: ${{ steps.metadata.outputs.pr_number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: `❌ Failed to apply VRT updates: ${error}\n\nPlease check the workflow logs for details.`
});

View File

@@ -0,0 +1,105 @@
name: VRT Update - Generate
# SECURITY: This workflow runs in untrusted fork context with no write permissions.
# It only generates VRT patch artifacts that are later applied by vrt-update-apply.yml
on:
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'packages/**'
- '.github/workflows/vrt-update-generate.yml'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
generate-vrt-updates:
name: Generate VRT Updates
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.56.0-jammy
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up environment
uses: ./.github/actions/setup
- name: Run VRT Tests on Desktop app
continue-on-error: true
run: |
xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" -- yarn e2e:desktop --update-snapshots
- name: Wait for Netlify build to finish
id: netlify
env:
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/actions/netlify-wait-for-build
- name: Run VRT Tests on Netlify URL
continue-on-error: true
run: yarn vrt --update-snapshots
env:
E2E_START_URL: ${{ steps.netlify.outputs.url }}
- name: Create patch with PNG changes only
id: create-patch
run: |
# Trust the repository directory (required for container environments)
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# Stage only PNG files
git add "**/*.png"
# Check if there are any changes
if git diff --staged --quiet; then
echo "has_changes=false" >> "$GITHUB_OUTPUT"
echo "No VRT changes to commit"
exit 0
fi
echo "has_changes=true" >> "$GITHUB_OUTPUT"
# Create commit and patch
git commit -m "Update VRT screenshots"
git format-patch -1 HEAD --stdout > vrt-update.patch
# Validate patch only contains PNG files
if grep -E '^(\+\+\+|---) [ab]/' vrt-update.patch | grep -v '\.png$'; then
echo "ERROR: Patch contains non-PNG files!"
exit 1
fi
echo "Patch created successfully with PNG changes only"
- name: Upload patch artifact
if: steps.create-patch.outputs.has_changes == 'true'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: vrt-patch-${{ github.event.pull_request.number }}
path: vrt-update.patch
retention-days: 5
- name: Save PR metadata
if: steps.create-patch.outputs.has_changes == 'true'
run: |
mkdir -p pr-metadata
echo "${{ github.event.pull_request.number }}" > pr-metadata/pr-number.txt
echo "${{ github.event.pull_request.head.ref }}" > pr-metadata/head-ref.txt
echo "${{ github.event.pull_request.head.repo.full_name }}" > pr-metadata/head-repo.txt
- name: Upload PR metadata
if: steps.create-patch.outputs.has_changes == 'true'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: vrt-metadata-${{ github.event.pull_request.number }}
path: pr-metadata/
retention-days: 5

View File

@@ -1,27 +0,0 @@
name: Add WIP
on:
pull_request_target:
types:
- opened
jobs:
add_wip_prefix:
if: |
join(github.event.pull_request.requested_reviewers) == ''
&& !contains(github.event.pull_request.title, 'WIP')
&& !contains(github.event.pull_request.labels.*.name, 'WIP')
&& github.event.pull_request.draft != true
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Add WIP
env:
TITLE: ${{ github.event.pull_request.title }}
shell: bash
run: |
echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token
gh pr edit ${{ github.event.pull_request.number }} -t "[WIP] ${TITLE}"

25
.gitignore vendored
View File

@@ -3,12 +3,10 @@
!data/.gitkeep
/data2
Actual-*
!actual-server.js
**/xcuserdata/*
export-2020-01-10.csv
# Secrets
.secret-tokens
# MacOS
.DS_Store
@@ -21,9 +19,12 @@ 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
packages/desktop-client/service-worker
packages/plugins-service/dist
bundle.desktop.js
bundle.desktop.js.map
bundle.mobile.js
@@ -46,3 +47,21 @@ bundle.mobile.js.map
# Misc
.#*
# Local Netlify folder
.netlify
# build output
package.tgz
# Fly.io configuration
fly.toml
# TypeScript cache
build/
# .d.ts files aren't type-checked with skipLibCheck set to true
*.d.ts
# Lage cache
.lage/

1
.husky/pre-commit Normal file
View File

@@ -0,0 +1 @@
yarn lint-staged

2
.nvmrc
View File

@@ -1 +1 @@
v18.16.0
v22/*

View File

@@ -1 +1,36 @@
sync_pb.*
packages/api/app/bundle.api.js
packages/api/app/stats.json
packages/api/dist
packages/api/@types
packages/api/migrations
packages/crdt/dist
packages/component-library/src/icons/**/*
packages/desktop-client/bundle.browser.js
packages/desktop-client/stats.json
packages/desktop-client/.swc/
packages/desktop-client/build/
packages/desktop-client/dev-dist/
packages/desktop-client/locale/
packages/desktop-client/build-electron/
packages/desktop-client/build-stats/
packages/desktop-client/public/kcab/
packages/desktop-client/public/data/
packages/desktop-client/**/node_modules/*
packages/desktop-client/node_modules/
packages/desktop-client/test-results/
packages/desktop-client/playwright-report/
packages/desktop-electron/client-build/
packages/desktop-electron/build/
packages/desktop-electron/dist/
packages/loot-core/**/node_modules/*
packages/loot-core/**/lib-dist/*
packages/loot-core/**/proto/*
packages/sync-server/coverage/
packages/sync-server/user-files/
packages/sync-server/server-files/
.yarn/*
upcoming-release-notes/*
# temporary
packages/docs/*

View File

@@ -1,2 +0,0 @@
export APPLE_ID=example@email.com
export APPLE_APP_SPECIFIC_PASSWORD=password

View File

@@ -0,0 +1,10 @@
diff --git a/methods/inflater.js b/methods/inflater.js
index 8769e66e82b25541aba80b1ac6429199c9a8179f..1d4402402f0e1aaf64062c1f004c3d6e6fe93e76 100644
--- a/methods/inflater.js
+++ b/methods/inflater.js
@@ -1,4 +1,4 @@
-const version = +(process.versions ? process.versions.node : "").split(".")[0] || 0;
+const version = +(process?.versions?.node ?? "").split(".")[0] || 0;
module.exports = function (/*Buffer*/ inbuf, /*number*/ expectedLength) {
var zlib = require("zlib");

File diff suppressed because one or more lines are too long

942
.yarn/releases/yarn-4.10.3.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -2,6 +2,8 @@ compressionLevel: mixed
enableGlobalCache: false
enableTransparentWorkspaces: false
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.0.2.cjs
yarnPath: .yarn/releases/yarn-4.10.3.cjs

585
AGENTS.md Normal file
View File

@@ -0,0 +1,585 @@
# AGENTS.md - Guide for AI Agents Working with Actual Budget
This guide provides comprehensive information for AI agents (like Cursor) working with the Actual Budget codebase.
## Project Overview
**Actual Budget** is a local-first personal finance tool written in TypeScript/JavaScript. It's 100% free and open-source with synchronization capabilities across devices.
- **Repository**: https://github.com/actualbudget/actual
- **Community Docs**: https://github.com/actualbudget/actual/tree/master/packages/docs or https://actualbudget.org/docs
- **License**: MIT
- **Primary Language**: TypeScript (with React)
- **Build System**: Yarn 4 workspaces (monorepo)
## Quick Start Commands
### Essential Commands (Run from Root)
```bash
# Type checking (ALWAYS run before committing)
yarn typecheck
# Linting and formatting (with auto-fix)
yarn lint:fix
# Run all tests
yarn test
# Start development server (browser)
yarn start
# Start with sync server
yarn start:server-dev
# Start desktop app development
yarn start:desktop
```
### Important Rules
- **ALWAYS run yarn commands from the root directory** - never run them in child workspaces
- Use `yarn workspace <workspace-name> run <command>` for workspace-specific tasks
- Tests run once and exit by default (using `vitest --run`)
### Task Orchestration with Lage
The project uses **[lage](https://microsoft.github.io/lage/)** (a task runner for JavaScript monorepos) to efficiently run tests and other tasks across multiple workspaces:
- **Parallel execution**: Runs tests in parallel across workspaces for faster feedback
- **Smart caching**: Caches test results to skip unchanged packages (cached in `.lage/` directory)
- **Dependency awareness**: Understands workspace dependencies and execution order
- **Continues on error**: Uses `--continue` flag to run all packages even if one fails
**Lage Commands:**
```bash
# Run all tests across all packages
yarn test # Equivalent to: lage test --continue
# Run tests without cache (for debugging/CI)
yarn test:debug # Equivalent to: lage test --no-cache --continue
```
Configuration is in `lage.config.js` at the project root.
## Architecture & Package Structure
### Core Packages
#### 1. **loot-core** (`packages/loot-core/`)
The core application logic that runs on any platform.
- Business logic, database operations, and calculations
- Platform-agnostic code
- Exports for both browser and node environments
- Test commands:
```bash
# Run all loot-core tests
yarn workspace loot-core run test
# Or run tests across all packages using lage
yarn test
```
#### 2. **desktop-client** (`packages/desktop-client/` - aliased as `@actual-app/web`)
The React-based UI for web and desktop.
- React components using functional programming patterns
- E2E tests using Playwright
- Vite for bundling
- Commands:
```bash
# Development
yarn workspace @actual-app/web start:browser
# Build
yarn workspace @actual-app/web build
# E2E tests
yarn workspace @actual-app/web e2e
# Visual regression tests
yarn workspace @actual-app/web vrt
```
#### 3. **desktop-electron** (`packages/desktop-electron/`)
Electron wrapper for the desktop application.
- Window management and native OS integration
- E2E tests for Electron-specific features
#### 4. **api** (`packages/api/` - aliased as `@actual-app/api`)
Public API for programmatic access to Actual.
- Node.js API
- Designed for integrations and automation
- Commands:
```bash
# Build
yarn workspace @actual-app/api build
# Run tests
yarn workspace @actual-app/api test
# Or use lage to run all tests
yarn test
```
#### 5. **sync-server** (`packages/sync-server/` - aliased as `@actual-app/sync-server`)
Synchronization server for multi-device support.
- Express-based server
- Currently transitioning to TypeScript (mostly JavaScript)
- Commands:
```bash
yarn workspace @actual-app/sync-server start
```
#### 6. **component-library** (`packages/component-library/` - aliased as `@actual-app/components`)
Reusable React UI components.
- Shared components like Button, Input, Menu, etc.
- Theme system and design tokens
- Icons (375+ icons in SVG/TSX format)
#### 7. **crdt** (`packages/crdt/` - aliased as `@actual-app/crdt`)
CRDT (Conflict-free Replicated Data Type) implementation for data synchronization.
- Protocol buffers for serialization
- Core sync logic
#### 8. **plugins-service** (`packages/plugins-service/`)
Service for handling plugins/extensions.
#### 9. **eslint-plugin-actual** (`packages/eslint-plugin-actual/`)
Custom ESLint rules specific to Actual.
- `no-untranslated-strings`: Enforces i18n usage
- `prefer-trans-over-t`: Prefers Trans component over t() function
- `prefer-logger-over-console`: Enforces using logger instead of console
- `typography`: Typography rules
- `prefer-if-statement`: Prefers explicit if statements
## Development Workflow
### 1. Making Changes
When implementing changes:
1. Read relevant files to understand current implementation
2. Make focused, incremental changes
3. Run type checking: `yarn typecheck`
4. Run linting: `yarn lint:fix`
5. Run relevant tests
6. Fix any linter errors that are introduced
### 2. Testing Strategy
**Unit Tests (Vitest)**
The project uses **lage** for running tests across all workspaces efficiently.
```bash
# Run all tests across all packages (using lage)
yarn test
# Run tests without cache (for debugging)
yarn test:debug
# Run tests for a specific package
yarn workspace loot-core run test
# Run a specific test file (watch mode)
yarn workspace loot-core run test path/to/test.test.ts
```
**E2E Tests (Playwright)**
```bash
# Run E2E tests for web
yarn e2e
# Desktop Electron E2E (includes full build)
yarn e2e:desktop
# Visual regression tests
yarn vrt
# Visual regression in Docker (consistent environment)
yarn vrt:docker
# Run E2E tests for a specific package
yarn workspace @actual-app/web e2e
```
**Testing Best Practices:**
- Minimize mocked dependencies - prefer real implementations
- Use descriptive test names
- Vitest globals are available: `describe`, `it`, `expect`, `beforeEach`, etc.
- For sync-server tests, globals are explicitly defined in config
### 3. Type Checking
TypeScript configuration uses:
- Incremental compilation
- Strict type checking with `typescript-strict-plugin`
- Platform-specific exports in `loot-core` (node vs browser)
Always run `yarn typecheck` before committing.
### 4. Internationalization (i18n)
- Use `Trans` component instead of `t()` function when possible
- All user-facing strings must be translated
- Generate i18n files: `yarn generate:i18n`
- Custom ESLint rules enforce translation usage
## Code Style & Conventions
### TypeScript Guidelines
**Type Usage:**
- Use TypeScript for all code
- Prefer `type` over `interface`
- Avoid `enum` - use objects or maps
- Avoid `any` or `unknown` unless absolutely necessary
- Look for existing type definitions in the codebase
- Avoid type assertions (`as`, `!`) - prefer `satisfies`
- Use inline type imports: `import { type MyType } from '...'`
**Naming:**
- Use descriptive variable names with auxiliary verbs (e.g., `isLoaded`, `hasError`)
- Named exports for components and utilities (avoid default exports except in specific cases)
**Code Structure:**
- Functional and declarative programming patterns - avoid classes
- Use the `function` keyword for pure functions
- Prefer iteration and modularization over code duplication
- Structure files: exported component/page, helpers, static content, types
- Create new components in their own files
**React Patterns:**
- Don't use `React.FunctionComponent` or `React.FC` - type props directly
- Don't use `React.*` patterns - use named imports instead
- Use `<Link>` instead of `<a>` tags
- Use custom hooks from `src/hooks` (not react-router directly):
- `useNavigate()` from `src/hooks` (not react-router)
- `useDispatch()`, `useSelector()`, `useStore()` from `src/redux` (not react-redux)
- Avoid unstable nested components
- Use `satisfies` for type narrowing
**JSX Style:**
- Declarative JSX, minimal and readable
- Avoid unnecessary curly braces in conditionals
- Use concise syntax for simple statements
- Prefer explicit expressions (`condition && <Component />`)
### Import Organization
Imports are automatically organized by ESLint with the following order:
1. React imports (first)
2. Built-in Node.js modules
3. External packages
4. Actual packages (`loot-core`, `@actual-app/components` - legacy pattern `loot-design` may appear in old code)
5. Parent imports
6. Sibling imports
7. Index imports
Always maintain newlines between import groups.
### Platform-Specific Code
- Don't directly reference platform-specific imports (`.api`, `.web`, `.electron`)
- Use conditional exports in `loot-core` for platform-specific code
- Platform resolution happens at build time via package.json exports
### Restricted Patterns
**Never:**
- Use `console.*` (use logger instead - enforced by ESLint)
- Import from `uuid` without destructuring: use `import { v4 as uuidv4 } from 'uuid'`
- Import colors directly - use theme instead
- Import `@actual-app/web/*` in `loot-core`
**Git Commands:**
- Never update git config
- Never run destructive git operations (force push, hard reset) unless explicitly requested
- Never skip hooks (--no-verify, --no-gpg-sign)
- Never force push to main/master
- Never commit unless explicitly asked
## File Structure Patterns
### Typical Component File
```typescript
import { type ComponentType } from 'react';
// ... other imports
type MyComponentProps = {
// Props definition
};
export function MyComponent({ prop1, prop2 }: MyComponentProps) {
// Component logic
return (
// JSX
);
}
```
### Test File
```typescript
import { describe, it, expect, beforeEach } from 'vitest';
// ... imports
describe('ComponentName', () => {
it('should behave as expected', () => {
// Test logic
expect(result).toBe(expected);
});
});
```
## Important Directories & Files
### Configuration Files
- `/package.json` - Root workspace configuration, scripts
- `/lage.config.js` - Lage task runner configuration
- `/eslint.config.mjs` - ESLint configuration (flat config format)
- `/tsconfig.json` - Root TypeScript configuration
- `/.cursorignore`, `/.gitignore` - Ignored files
- `/yarn.lock` - Dependency lockfile (Yarn 4)
### Documentation
- `/README.md` - Project overview
- `/CONTRIBUTING.md` - Points to community docs
- `/upcoming-release-notes/` - Release notes for next version
- `/CODEOWNERS` - Code ownership definitions
### Build Artifacts (Don't Edit)
- `packages/*/lib-dist/` - Built output
- `packages/*/dist/` - Built output
- `packages/*/build/` - Built output
- `packages/desktop-client/playwright-report/` - Test reports
- `packages/desktop-client/test-results/` - Test results
- `.lage/` - Lage task runner cache (improves test performance)
### Key Source Directories
- `packages/loot-core/src/client/` - Client-side core logic
- `packages/loot-core/src/server/` - Server-side core logic
- `packages/loot-core/src/shared/` - Shared utilities
- `packages/loot-core/src/types/` - Type definitions
- `packages/desktop-client/src/components/` - React components
- `packages/desktop-client/src/hooks/` - Custom React hooks
- `packages/desktop-client/e2e/` - End-to-end tests
- `packages/component-library/src/` - Reusable components
- `packages/component-library/src/icons/` - Icon components (auto-generated, don't edit)
## Common Development Tasks
### Running Specific Tests
```bash
# Run all tests across all packages (recommended)
yarn test
# Unit test for a specific file in loot-core (watch mode)
yarn workspace loot-core run test src/path/to/file.test.ts
# E2E test for a specific file
yarn workspace @actual-app/web run playwright test accounts.test.ts --browser=chromium
```
### Building for Production
```bash
# Browser build
yarn build:browser
# Desktop build
yarn build:desktop
# API build
yarn build:api
# Sync server build
yarn build:server
```
### Type Checking Specific Packages
TypeScript uses project references. Run `yarn typecheck` from root to check all packages.
### Debugging Tests
```bash
# Run tests in debug mode (without parallelization)
yarn test:debug
# Run specific E2E test with headed browser
yarn workspace @actual-app/web run playwright test --headed --debug accounts.test.ts
```
### Working with Icons
Icons in `packages/component-library/src/icons/` are auto-generated. Don't manually edit them.
## Troubleshooting
### Type Errors
1. Run `yarn typecheck` to see all type errors
2. Check if types are imported correctly
3. Look for existing type definitions in `packages/loot-core/src/types/`
4. Use `satisfies` instead of `as` for type narrowing
### Linter Errors
1. Run `yarn lint:fix` to auto-fix many issues
2. Check ESLint output for specific rule violations
3. Custom rules:
- `actual/no-untranslated-strings` - Add i18n
- `actual/prefer-trans-over-t` - Use Trans component
- `actual/prefer-logger-over-console` - Use logger
- Check `eslint.config.mjs` for complete rules
### Test Failures
1. Check if test is running in correct environment (node vs web)
2. For Vitest: check `vitest.config.ts` or `vitest.web.config.ts`
3. For Playwright: check `playwright.config.ts`
4. Ensure mock minimization - prefer real implementations
5. **Lage cache issues**: Clear cache with `rm -rf .lage` if tests behave unexpectedly
6. **Tests continue on error**: With `--continue` flag, all packages run even if one fails
### Import Resolution Issues
1. Check `tsconfig.json` for path mappings
2. Check package.json `exports` field (especially for loot-core)
3. Verify platform-specific imports (`.web`, `.electron`, `.api`)
4. Use absolute imports in `desktop-client` (enforced by ESLint)
### Build Failures
1. Clean build artifacts: `rm -rf packages/*/dist packages/*/lib-dist packages/*/build`
2. Reinstall dependencies: `yarn install`
3. Check Node.js version (requires >=20)
4. Check Yarn version (requires ^4.9.1)
## Testing Patterns
### Unit Tests
- Located alongside source files or in `__tests__` directories
- Use `.test.ts`, `.test.tsx`, `.spec.js` extensions
- Vitest is the test runner
- Minimize mocking - prefer real implementations
### E2E Tests
- Located in `packages/desktop-client/e2e/`
- Use Playwright test runner
- Visual regression snapshots in `*-snapshots/` directories
- Page models in `e2e/page-models/` for reusable page interactions
- Mobile tests have `.mobile.test.ts` suffix
### Visual Regression Tests (VRT)
- Snapshots stored per test file in `*-snapshots/` directories
- Use Docker for consistent environment: `yarn vrt:docker`
## Additional Resources
- **Community Documentation**: https://actualbudget.org/docs/contributing/
- **Discord Community**: https://discord.gg/pRYNYr4W5A
- **GitHub Issues**: https://github.com/actualbudget/actual/issues
- **Feature Requests**: Label "needs votes" sorted by reactions
## Code Quality Checklist
Before committing changes, ensure:
- [ ] `yarn typecheck` passes
- [ ] `yarn lint:fix` has been run
- [ ] Relevant tests pass
- [ ] No new console.\* usage (use logger)
- [ ] User-facing strings are translated
- [ ] Prefer `type` over `interface`
- [ ] Named exports used (not default exports)
- [ ] Imports are properly ordered
- [ ] Platform-specific code uses proper exports
- [ ] No unnecessary type assertions
## Pull Request Guidelines
When creating pull requests:
- **AI-Generated PRs**: If you create a PR using AI assistance, add the **"AI generated"** label to the pull request. This helps maintainers understand the nature of the contribution.
## Performance Considerations
- **Bundle Size**: Check with rollup-plugin-visualizer
- **Type Checking**: Uses incremental compilation
- **Testing**: Tests run in parallel by default
- **Linting**: ESLint caches results for faster subsequent runs
## Workspace Commands Reference
```bash
# List all workspaces
yarn workspaces list
# Run command in specific workspace
yarn workspace <workspace-name> run <command>
# Run command in all workspaces
yarn workspaces foreach --all run <command>
# Install production dependencies only (for server deployment)
yarn install:server
```
## Environment Requirements
- **Node.js**: >=20
- **Yarn**: ^4.9.1 (managed by packageManager field)
- **Browser Targets**: Electron >= 35.0, modern browsers (see browserslist)
## Migration Notes
The codebase is actively being migrated:
- **JavaScript → TypeScript**: sync-server is in progress
- **Classes → Functions**: Prefer functional patterns
- **React.\* → Named Imports**: Legacy React.\* patterns being removed
When working with older code, follow the newer patterns described in this guide.

10
CODEOWNERS Normal file
View File

@@ -0,0 +1,10 @@
# CODEOWNERS file for Actual Budget
# Please add your name to code-paths that you feel especially
# passionate about. You will be notified for any PRs there.
/packages/api/ @MatissJanis
/packages/component-library/ @MatissJanis
/packages/desktop-client/src/components/mobile @joel-jeremy
/packages/desktop-electron/ @MikesGlitch
/packages/loot-core/src/server/budget @youngcw
/packages/sync-server/ @matt-fidd

View File

@@ -5,7 +5,7 @@
# you are doing.
###################################################
FROM node:18-bullseye as dev
FROM node:22-bookworm as dev
RUN apt-get update -y && apt-get upgrade -y && apt-get install -y openssl
WORKDIR /app
CMD ["sh", "./bin/docker-start"]

View File

@@ -14,22 +14,40 @@ Want to say thanks? Click the ⭐ at the top of the page.
- Actual [discord](https://discord.gg/pRYNYr4W5A) community.
- Actual [Community Documentation](https://actualbudget.org/docs)
- [Frequently asked questions](https://actualbudget.org/docs/faq)
## Installation
If you are only interested in running the latest version and not contributing to the source code, you don't need to clone this repo. You can get the latest version through npm.
There are four ways to deploy Actual:
### The easy way: using a server (recommended)
1. One-click deployment [via PikaPods](https://www.pikapods.com/pods?run=actual) (~1.40 $/month) - recommended for non-technical users
1. Managed hosting [via Fly.io](https://actualbudget.org/docs/install/fly) (~1.50 $/month)
1. Self-hosted by using [a Docker image](https://actualbudget.org/docs/install/docker)
1. Local-only apps - [downloadable Windows, Mac and Linux apps](https://actualbudget.org/download/) you can run on your device
The easiest way to get Actual running is to use the [actual-server](https://github.com/actualbudget/actual-server) project. That is the server for syncing changes across devices, and it comes with the latest version of Actual. The server will provide both the web project and a server for syncing.
Learn more in the [installation instructions docs](https://actualbudget.org/docs/install/).
You can get up and running quickly and easily by following our [Running Actual Locally Guide](https://actualbudget.org/docs/install/local)
## Ready to Start Budgeting?
Read about [Envelope budgeting](https://actualbudget.org/docs/getting-started/envelope-budgeting) to know more about the idea behind Actual Budget.
### Are you new to budgeting or want to start fresh?
Check out the community's [Starting Fresh](https://actualbudget.org/docs/getting-started/starting-fresh) guide so you can quickly get up and running!
### Are you migrating from other budgeting apps?
Check out the community's [Migration](https://actualbudget.org/docs/migration/) guide to start jumping on the Actual Budget train!
## Documentation
We have a wide range of documentation on how to use Actual, this is all available in our [Community Documentation](https://actualbudget.org/docs), this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
## Code structure
## Contributing
Actual is a community driven product. Learn more about [contributing to Actual](https://actualbudget.org/docs/contributing/).
### Code structure
The Actual app is split up into a few packages:
@@ -39,15 +57,27 @@ The Actual app is split up into a few packages:
More information on the project structure is available in our [community documentation](https://actualbudget.org/docs/contributing/project-details).
## Feature Requests
### Feature Requests
Current feature requests can be seen [here](https://github.com/actualbudget/actual/issues?q=is%3Aissue+label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc).
Vote for your favorite requests by reacting :+1: to the top comment of the request.
To add new feature requests, open a new Issue of the "Feature Request" type.
### Translation
Make Actual Budget accessible to more people by helping with the [Internationalization](https://actualbudget.org/docs/contributing/i18n/) of Actual. We are using a crowd sourcing tool to manage the translations, see our [Weblate Project](https://hosted.weblate.org/projects/actualbudget/). Weblate proudly supports open-source software projects through their [Libre plan](https://weblate.org/en/hosting/#libre).
<a href="https://hosted.weblate.org/engage/actualbudget/">
<img src="https://hosted.weblate.org/widget/actualbudget/actual/287x66-grey.png" alt="Translation status" />
</a>
## Repo Activity
![Alt](https://repobeats.axiom.co/api/embed/e20537dd8b74956f86736726ccfbc6f0565bec22.svg 'Repobeats analytics image')
## Sponsors
Thanks to our wonderful sponsors who make Actual budget possible!
Thanks to our wonderful sponsors who make Actual Budget possible!
<a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-accent.svg" alt="Deploys by Netlify" /> </a>

View File

@@ -4,6 +4,19 @@ ROOT=`dirname $0`
cd "$ROOT/.."
echo "Updating translations..."
if ! [ -d packages/desktop-client/locale ]; then
git clone https://github.com/actualbudget/translations packages/desktop-client/locale
fi
pushd packages/desktop-client/locale > /dev/null
git checkout .
git pull
popd > /dev/null
packages/desktop-client/bin/remove-untranslated-languages
export NODE_OPTIONS="--max-old-space-size=4096"
yarn workspace plugins-service build
yarn workspace loot-core build:browser
yarn workspace @actual-app/web build:browser

View File

@@ -6,8 +6,8 @@ RELEASE=""
CI=${CI:-false}
cd "$ROOT/.."
POSITIONAL=()
SKIP_EXE_BUILD=false
while [[ $# -gt 0 ]]; do
key="$1"
@@ -16,29 +16,39 @@ while [[ $# -gt 0 ]]; do
RELEASE="production"
shift
;;
--skip-exe-build)
SKIP_EXE_BUILD=true
shift
;;
*)
POSITIONAL+=("$1")
shift
;;
esac
done
set -- "${POSITIONAL[@]}"
if [ "$OSTYPE" == "msys" ]; then
if [ $CI != true ]; then
read -s -p "Windows certificate password: " -r CSC_KEY_PASSWORD
export CSC_KEY_PASSWORD
elif [ -n "$CIRCLE_TAG" ]; then
# We only want to run this on CircleCI as Github doesn't have the CSC_KEY_PASSWORD secret set.
certutil -f -p ${CSC_KEY_PASSWORD} -importPfx ~/windows-shift-reset-llc.p12
fi
# Get translations
echo "Updating translations..."
if ! [ -d packages/desktop-client/locale ]; then
git clone https://github.com/actualbudget/translations packages/desktop-client/locale
fi
pushd packages/desktop-client/locale > /dev/null
git pull
popd > /dev/null
packages/desktop-client/bin/remove-untranslated-languages
yarn rebuild-electron
export NODE_OPTIONS="--max-old-space-size=4096"
yarn workspace plugins-service build
yarn workspace loot-core build:node
yarn workspace @actual-app/web build --mode=desktop # electron specific build
yarn workspace @actual-app/web build
# required for running the sync-server server
yarn workspace loot-core build:browser
yarn workspace @actual-app/web build:browser
yarn workspace @actual-app/sync-server build
yarn workspace desktop-electron update-client
@@ -46,14 +56,17 @@ yarn workspace desktop-electron update-client
cd packages/desktop-electron;
yarn clean;
if [ "$RELEASE" == "production" ]; then
if [ -f ../../.secret-tokens ]; then
source ../../.secret-tokens
fi
yarn build --publish never --arm64 --x64
echo "\nCreated release"
if [ $SKIP_EXE_BUILD == true ]; then
echo "Building the dist"
yarn build:dist
echo "Skipping exe build"
else
SKIP_NOTARIZATION=true yarn build --publish never --x64
if [ "$RELEASE" == "production" ]; then
yarn build
echo "Created release"
else
yarn build
fi
fi
)

View File

@@ -0,0 +1,182 @@
import { exec } from 'node:child_process';
import { existsSync, writeFile } from 'node:fs';
import { exit } from 'node:process';
import prompts from 'prompts';
async function run() {
const username = await execAsync(
// eslint-disable-next-line actual/typography
"gh api user --jq '.login'",
'To avoid having to enter your username, consider installing the official GitHub CLI (https://github.com/cli/cli) and logging in with `gh auth login`.',
);
const activePr = await getActivePr(username);
if (activePr) {
console.log(
`Found potentially matching PR ${activePr.number}: ${activePr.title}`,
);
}
const initialPrNumber = activePr?.number ?? (await getNextPrNumber());
const result = await prompts([
{
name: 'githubUsername',
message: 'Comma-separated GitHub username(s)',
type: 'text',
initial: username,
},
{
name: 'pullRequestNumber',
message: 'PR Number',
type: 'number',
initial: initialPrNumber,
},
{
name: 'releaseNoteType',
message: 'Release Note Type',
type: 'select',
choices: [
{ title: '✨ Features', value: 'Features' },
{ title: '👍 Enhancements', value: 'Enhancements' },
{ title: '🐛 Bugfix', value: 'Bugfix' },
{ title: '⚙️ Maintenance', value: 'Maintenance' },
],
},
{
name: 'oneLineSummary',
message: 'Brief Summary',
type: 'text',
initial: activePr?.title,
},
]);
if (
!result.githubUsername ||
!result.oneLineSummary ||
!result.releaseNoteType ||
!result.pullRequestNumber
) {
console.log('All questions must be answered. Exiting');
exit(1);
}
const fileContents = getFileContents(
result.releaseNoteType,
result.githubUsername,
result.oneLineSummary,
);
const prNumber = result.pullRequestNumber;
const filepath = `./upcoming-release-notes/${prNumber}.md`;
if (existsSync(filepath)) {
const { confirm } = await prompts({
name: 'confirm',
type: 'confirm',
message: `This will overwrite the existing release note ${filepath} Are you sure?`,
});
if (!confirm) {
console.log('Exiting');
exit(1);
}
}
writeFile(filepath, fileContents, err => {
if (err) {
console.error('Failed to write release note file:', err);
exit(1);
} else {
console.log(`Release note generated successfully: ${filepath}`);
}
});
}
// makes an attempt to find an existing open PR from <username>:<branch>
async function getActivePr(
username: string,
): Promise<{ number: number; title: string } | undefined> {
if (!username) {
return undefined;
}
const branchName = await execAsync('git rev-parse --abbrev-ref HEAD');
if (!branchName) {
return undefined;
}
const forkHead = `${username}:${branchName}`;
return getPrNumberFromHead(forkHead);
}
async function getPrNumberFromHead(
head: string,
): Promise<{ number: number; title: string } | undefined> {
try {
// head is a weird query parameter in this API call. If nothing matches, it
// will return as if the head query parameter doesn't exist. To get around
// this, we make the page size 2 and only return the number if the length.
const resp = await fetch(
'https://api.github.com/repos/actualbudget/actual/pulls?state=open&per_page=2&head=' +
head,
);
if (!resp.ok) {
console.warn('error fetching from github pulls api:', resp.status);
return undefined;
}
const ghResponse = await resp.json();
if (ghResponse?.length === 1) {
return ghResponse[0];
} else {
return undefined;
}
} catch (e) {
console.warn('error fetching from github pulls api:', e);
}
}
async function getNextPrNumber(): Promise<number> {
try {
const resp = await fetch(
'https://api.github.com/repos/actualbudget/actual/issues?state=all&per_page=1',
);
if (!resp.ok) {
throw new Error(`API responded with status: ${resp.status}`);
}
const ghResponse = await resp.json();
const latestPrNumber = ghResponse?.[0]?.number;
if (!latestPrNumber) {
console.error(
'Could not find latest issue number in GitHub API response',
ghResponse,
);
exit(1);
}
return latestPrNumber + 1;
} catch (error) {
console.error('Failed to fetch next PR number:', error);
exit(1);
}
}
function getFileContents(type: string, username: string, summary: string) {
return `---
category: ${type}
authors: [${username}]
---
${summary}
`;
}
// simple exec that fails silently and returns an empty string on failure
async function execAsync(cmd: string, errorLog?: string): Promise<string> {
return new Promise<string>(res => {
exec(cmd, (error, stdout) => {
if (error) {
console.log(errorLog);
res('');
} else {
res(stdout.trim());
}
});
});
}
run();

32
bin/run-vrt Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/sh
# See here for more information: https://github.com/actualbudget/actual/tree/master/packages/desktop-client#visual-regression
if [ ! -d "node_modules" ] || [ "$(ls -A node_modules)" = "" ]; then
yarn
fi
E2E_START_URL="${E2E_START_URL:-https://localhost:3001}"
VRT_ARGS=""
# Loop through all arguments
while [ $# -gt 0 ]; do
key="$1"
case $key in
--e2e-start-url)
E2E_START_URL="$2"
shift
;;
*)
VRT_ARGS="$VRT_ARGS $1"
;;
esac
shift
done
echo "Running VRT tests with the following parameters:"
echo "E2E_START_URL: $E2E_START_URL"
echo "VRT_ARGS: $VRT_ARGS"
MSYS_NO_PATHCONV=1 docker run --rm --network host -v "$(pwd)":/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.56.0-jammy /bin/bash \
-c "E2E_START_URL=$E2E_START_URL yarn vrt $VRT_ARGS"

View File

@@ -15,4 +15,3 @@ services:
volumes:
- '.:/app'
restart: 'no'

814
eslint.config.mjs Normal file
View File

@@ -0,0 +1,814 @@
import tsParser from '@typescript-eslint/parser';
import { defineConfig } from 'eslint/config';
import pluginImport from 'eslint-plugin-import';
import pluginJSXA11y from 'eslint-plugin-jsx-a11y';
import pluginReact from 'eslint-plugin-react';
import pluginReactHooks from 'eslint-plugin-react-hooks';
import pluginTypescriptPaths from 'eslint-plugin-typescript-paths';
import globals from 'globals';
import pluginTypescript from 'typescript-eslint';
// eslint-disable-next-line import/extensions
import pluginActual from './packages/eslint-plugin-actual/lib/index.js';
const confusingBrowserGlobals = [
// https://github.com/facebook/create-react-app/tree/main/packages/confusing-browser-globals
'addEventListener',
'blur',
'close',
'closed',
'confirm',
'defaultStatus',
'defaultstatus',
'event',
'external',
'find',
'focus',
'frameElement',
'frames',
'history',
'innerHeight',
'innerWidth',
'length',
'location',
'locationbar',
'menubar',
'moveBy',
'moveTo',
'name',
'onblur',
'onerror',
'onfocus',
'onload',
'onresize',
'onunload',
'open',
'opener',
'opera',
'outerHeight',
'outerWidth',
'pageXOffset',
'pageYOffset',
'parent',
'print',
'removeEventListener',
'resizeBy',
'resizeTo',
'screen',
'screenLeft',
'screenTop',
'screenX',
'screenY',
'scroll',
'scrollbars',
'scrollBy',
'scrollTo',
'scrollX',
'scrollY',
'status',
'statusbar',
'stop',
'toolbar',
'top',
];
export default defineConfig(
{
ignores: [
//temporary
'packages/docs',
'packages/api/app/bundle.api.js',
'packages/api/app/stats.json',
'packages/api/@types',
'packages/api/migrations',
'packages/component-library/src/icons/**/*',
'packages/desktop-client/bundle.browser.js',
'packages/desktop-client/dev-dist/',
'packages/desktop-client/service-worker/*',
'packages/desktop-client/build-electron/',
'packages/desktop-client/build-stats/',
'packages/desktop-client/public/kcab/',
'packages/desktop-client/public/data/',
'packages/desktop-client/test-results/',
'packages/desktop-client/playwright-report/',
'packages/desktop-electron/client-build/',
'packages/loot-core/**/lib-dist/*',
'packages/loot-core/**/proto/*',
'packages/sync-server/user-files/',
'packages/sync-server/server-files/',
'.yarn/*',
'.github/*',
'**/build/',
'**/dist/',
'**/node_modules/',
],
},
{
// Temporary until the sync-server is migrated to TypeScript
files: [
'packages/sync-server/**/*.spec.{js,jsx}',
'packages/sync-server/**/*.test.{js,jsx}',
],
languageOptions: {
globals: {
vi: true,
describe: true,
expect: true,
it: true,
beforeAll: true,
beforeEach: true,
afterAll: true,
afterEach: true,
test: true,
},
},
},
{
linterOptions: {
reportUnusedDisableDirectives: true,
},
languageOptions: {
globals: {
...globals.browser,
...globals.commonjs,
...globals.node,
globalThis: false,
vi: true,
},
},
settings: {
react: {
version: 'detect',
},
'import/resolver': {
typescript: {
alwaysTryTypes: true,
},
},
},
},
pluginReact.configs.flat.recommended,
pluginReact.configs.flat['jsx-runtime'],
pluginTypescript.configs.recommended,
pluginImport.flatConfigs.recommended,
{
plugins: {
actual: pluginActual,
},
rules: {
'actual/no-untranslated-strings': 'error',
'actual/prefer-trans-over-t': 'error',
},
},
{
files: ['**/*.{js,ts,jsx,tsx,mjs,mts}'],
plugins: {
'jsx-a11y': pluginJSXA11y,
'react-hooks': pluginReactHooks,
},
rules: {
// http://eslint.org/docs/rules/
'array-callback-return': 'warn',
'default-case': [
'warn',
{
commentPattern: '^no default$',
},
],
curly: ['warn', 'multi-line', 'consistent'],
'dot-location': ['warn', 'property'],
eqeqeq: ['warn', 'smart'],
'new-parens': 'warn',
'no-array-constructor': 'warn',
'no-caller': 'warn',
'no-cond-assign': ['warn', 'except-parens'],
'no-const-assign': 'warn',
'no-control-regex': 'warn',
'no-delete-var': 'warn',
'no-dupe-args': 'warn',
'no-dupe-class-members': 'warn',
'no-dupe-keys': 'warn',
'no-duplicate-case': 'warn',
'no-empty-character-class': 'warn',
'no-empty-pattern': 'warn',
'no-eval': 'warn',
'no-ex-assign': 'warn',
'no-extend-native': 'warn',
'no-extra-bind': 'warn',
'no-extra-label': 'warn',
'no-fallthrough': 'warn',
'no-func-assign': 'warn',
'no-implied-eval': 'warn',
'no-invalid-regexp': 'warn',
'no-iterator': 'warn',
'no-label-var': 'warn',
'no-labels': [
'warn',
{
allowLoop: true,
allowSwitch: false,
},
],
'no-lone-blocks': 'warn',
'no-mixed-operators': [
'warn',
{
groups: [
['&', '|', '^', '~', '<<', '>>', '>>>'],
['==', '!=', '===', '!==', '>', '>=', '<', '<='],
['&&', '||'],
['in', 'instanceof'],
],
allowSamePrecedence: false,
},
],
'no-multi-str': 'warn',
'no-global-assign': 'warn',
'no-unsafe-negation': 'warn',
'no-new-func': 'warn',
'no-new-object': 'warn',
'no-new-symbol': 'warn',
'no-new-wrappers': 'warn',
'no-obj-calls': 'warn',
'no-octal': 'warn',
'no-octal-escape': 'warn',
'no-redeclare': 'warn',
'no-regex-spaces': 'warn',
'no-script-url': 'warn',
'no-self-assign': 'warn',
'no-self-compare': 'warn',
'no-sequences': 'warn',
'no-shadow-restricted-names': 'warn',
'no-sparse-arrays': 'warn',
'no-template-curly-in-string': 'warn',
'no-this-before-super': 'warn',
'no-throw-literal': 'warn',
'no-undef': 'error',
'no-unreachable': 'warn',
'no-unused-expressions': [
'error',
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true,
},
],
'no-unused-labels': 'warn',
'no-use-before-define': [
'warn',
{
functions: false,
classes: false,
variables: false,
},
],
'no-useless-computed-key': 'warn',
'no-useless-concat': 'warn',
'no-useless-constructor': 'warn',
'no-useless-escape': 'warn',
'no-useless-rename': [
'warn',
{
ignoreDestructuring: false,
ignoreImport: false,
ignoreExport: false,
},
],
'no-with': 'warn',
'no-whitespace-before-property': 'warn',
'require-yield': 'warn',
'rest-spread-spacing': ['warn', 'never'],
strict: ['warn', 'never'],
'unicode-bom': ['warn', 'never'],
'use-isnan': 'warn',
'valid-typeof': 'warn',
'no-restricted-properties': [
'error',
{
object: 'require',
property: 'ensure',
message:
'Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting',
},
{
object: 'System',
property: 'import',
message:
'Please use import() instead. More info: https://facebook.github.io/create-react-app/docs/code-splitting',
},
],
'getter-return': 'warn',
// https://github.com/benmosher/eslint-plugin-import/tree/master/docs/rules
'import/first': 'error',
'import/no-amd': 'error',
'import/no-anonymous-default-export': 'warn',
'import/no-webpack-loader-syntax': 'error',
'import/extensions': [
'warn',
'never',
{
json: 'always',
},
],
'import/no-useless-path-segments': 'warn',
'import/no-duplicates': [
'warn',
{
'prefer-inline': true,
},
],
'import/order': [
'warn',
{
alphabetize: {
caseInsensitive: true,
order: 'asc',
},
groups: ['builtin', 'external', 'parent', 'sibling', 'index'],
'newlines-between': 'always',
pathGroups: [
{
// Enforce that React (and react-related packages) is the first import
group: 'builtin',
pattern: 'react?(-*)',
position: 'before',
},
{
// Separate imports from Actual from "real" external imports
group: 'external',
pattern: 'loot-{core,design}/**/*',
position: 'after',
},
],
pathGroupsExcludedImportTypes: ['react'],
},
],
// https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules
'react/forbid-foreign-prop-types': [
'warn',
{
allowInPropTypes: true,
},
],
'react/jsx-no-comment-textnodes': 'warn',
'react/jsx-no-duplicate-props': 'warn',
'react/jsx-no-target-blank': 'warn',
'react/jsx-no-undef': 'error',
'react/jsx-pascal-case': [
'warn',
{
allowAllCaps: true,
ignore: [],
},
],
'react/no-danger-with-children': 'warn',
// Disabled because of undesirable warnings
// See https://github.com/facebook/create-react-app/issues/5204 for
// blockers until its re-enabled
// 'react/no-deprecated': 'warn',
'react/no-direct-mutation-state': 'warn',
'react/no-is-mounted': 'warn',
'react/no-typos': 'error',
'react/require-render-return': 'error',
'react/style-prop-object': 'warn',
'react/jsx-no-useless-fragment': 'warn',
'react/self-closing-comp': 'warn',
'react/jsx-filename-extension': [
'warn',
{
extensions: ['.jsx', '.tsx'],
allow: 'as-needed',
},
],
'react/no-unstable-nested-components': [
'warn',
{
allowAsProps: true,
customValidators: ['formatter'],
},
],
// Don't need this as we're using TypeScript
'react/prop-types': 'off',
// https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules
'jsx-a11y/alt-text': 'warn',
'jsx-a11y/anchor-has-content': 'warn',
'jsx-a11y/anchor-is-valid': [
'warn',
{
aspects: ['noHref', 'invalidHref'],
},
],
'jsx-a11y/aria-activedescendant-has-tabindex': 'warn',
'jsx-a11y/aria-props': 'warn',
'jsx-a11y/aria-proptypes': 'warn',
'jsx-a11y/aria-role': [
'warn',
{
ignoreNonDOM: true,
},
],
'jsx-a11y/aria-unsupported-elements': 'warn',
'jsx-a11y/heading-has-content': 'warn',
'jsx-a11y/iframe-has-title': 'warn',
'jsx-a11y/img-redundant-alt': 'warn',
'jsx-a11y/no-access-key': 'warn',
'jsx-a11y/no-distracting-elements': 'warn',
'jsx-a11y/no-redundant-roles': 'warn',
'jsx-a11y/role-has-required-aria-props': 'warn',
'jsx-a11y/role-supports-aria-props': 'warn',
'jsx-a11y/scope': 'warn',
// https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': [
'warn',
{
additionalHooks: '(useQuery|useEffectAfterMount)',
},
],
'actual/typography': 'warn',
'actual/prefer-if-statement': 'warn',
'actual/prefer-logger-over-console': 'error',
// Note: base rule explicitly disabled in favor of the TS one
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'warn',
{
varsIgnorePattern: '^(_|React)',
argsIgnorePattern: '^(_|React)',
ignoreRestSiblings: true,
caughtErrors: 'none',
},
],
'no-restricted-globals': ['warn', ...confusingBrowserGlobals],
// https://github.com/eslint/eslint/issues/16954
// https://github.com/eslint/eslint/issues/16953
'no-loop-func': 'off',
// TODO: re-enable these rules
'react/react-in-jsx-scope': 'off',
'no-var': 'warn',
'react/jsx-curly-brace-presence': 'warn',
'object-shorthand': ['warn', 'properties'],
'no-restricted-syntax': [
'warn',
{
// forbid React.* as they are legacy https://twitter.com/dan_abramov/status/1308739731551858689
selector:
":matches(MemberExpression[object.name='React'], TSQualifiedName[left.name='React'])",
message:
'Using default React import is discouraged, please use named exports directly instead.',
},
{
// forbid <a> in favor of <Link>
selector: 'JSXOpeningElement[name.name="a"]',
message: 'Using <a> is discouraged, please use <Link> instead.',
},
],
'no-restricted-imports': [
'warn',
{
paths: [
{
name: 'react-router',
importNames: ['useNavigate'],
message:
"Please import Actual's useNavigate() hook from `src/hooks` instead.",
},
{
name: 'react-redux',
importNames: ['useDispatch'],
message:
"Please import Actual's useDispatch() hook from `src/redux` instead.",
},
{
name: 'react-redux',
importNames: ['useSelector'],
message:
"Please import Actual's useSelector() hook from `src/redux` instead.",
},
{
name: 'react-redux',
importNames: ['useStore'],
message:
"Please import Actual's useStore() hook from `src/redux` instead.",
},
],
patterns: [
{
group: ['*.api', '*.web', '*.electron'],
message: "Don't directly reference imports from other platforms",
},
{
group: ['uuid'],
importNames: ['*'],
message: "Use `import { v4 as uuidv4 } from 'uuid'` instead",
},
{
group: ['**/style', '**/colors'],
importNames: ['colors'],
message: 'Please use themes instead of colors',
},
{
group: ['@actual-app/web/*'],
message: 'Please do not import `@actual-app/web` in `loot-core`',
},
],
},
],
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-ignore': 'allow-with-description',
},
],
// Rules disabled during TS migration
'@typescript-eslint/no-var-requires': 'off',
'prefer-const': 'warn',
'prefer-spread': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-require-imports': 'off',
'import/no-default-export': 'warn',
},
},
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
parser: tsParser,
ecmaVersion: 2018,
sourceType: 'module',
parserOptions: {
projectService: true,
ecmaFeatures: {
jsx: true,
},
// typescript-eslint specific options
warnOnUnsupportedTypeScriptVersion: true,
},
},
// If adding a typescript-eslint version of an existing ESLint rule,
// make sure to disable the ESLint rule here.
rules: {
// TypeScript's `noFallthroughCasesInSwitch` option is more robust (#6906)
'default-case': 'off',
// 'tsc' already handles this (https://github.com/typescript-eslint/typescript-eslint/issues/291)
'no-dupe-class-members': 'off',
// 'tsc' already handles this (https://github.com/typescript-eslint/typescript-eslint/issues/477)
'no-undef': 'off',
// TypeScript already handles these (https://typescript-eslint.io/troubleshooting/typed-linting/performance/#eslint-plugin-import)
'import/named': 'off',
'import/namespace': 'off',
'import/default': 'off',
'import/no-named-as-default-member': 'off',
'import/no-unresolved': 'off',
// Add TypeScript specific rules (and turn off ESLint equivalents)
'@typescript-eslint/consistent-type-assertions': 'warn',
'no-array-constructor': 'off',
'@typescript-eslint/no-array-constructor': 'warn',
'no-redeclare': 'off',
'@typescript-eslint/no-redeclare': 'warn',
'no-use-before-define': 'off',
'@typescript-eslint/no-use-before-define': [
'warn',
{
functions: false,
classes: false,
variables: false,
typedefs: false,
},
],
'no-unused-expressions': 'off',
'@typescript-eslint/no-unused-expressions': [
'error',
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true,
},
],
'no-useless-constructor': 'off',
'@typescript-eslint/no-useless-constructor': 'warn',
},
},
{
files: ['packages/desktop-client/**/*.{js,ts,jsx,tsx}'],
plugins: {
'typescript-paths': pluginTypescriptPaths,
},
rules: {
'typescript-paths/absolute-parent-import': [
'error',
{ preferPathOverBaseUrl: true },
],
'typescript-paths/absolute-import': ['error', { enableAlias: false }],
},
},
{
files: [
'packages/desktop-client/**/*.{ts,tsx}',
'packages/loot-core/src/client/**/*.{ts,tsx}',
],
rules: {
// enforce import type
'@typescript-eslint/consistent-type-imports': [
'warn',
{
prefer: 'type-imports',
fixStyle: 'inline-type-imports',
},
],
'@typescript-eslint/no-restricted-types': [
'warn',
{
types: {
// forbid FC as superfluous
FunctionComponent: {
message:
'Type the props argument and let TS infer or use ComponentType for a component prop',
},
FC: {
message:
'Type the props argument and let TS infer or use ComponentType for a component prop',
},
},
},
],
},
},
{
files: [
'packages/loot-core/src/types/**/*',
'packages/loot-core/src/client/state-types/**/*',
'**/icons/**/*',
'**/{mocks,__mocks__}/**/*',
// can't correctly resolve usages
'**/*.{testing,electron,browser,web,api}.ts',
],
rules: {
'import/no-unused-modules': 'off',
},
},
{
files: ['packages/api/migrations/*', 'packages/loot-core/migrations/*'],
rules: {
'import/no-default-export': 'off',
},
},
{
files: ['packages/api/index.ts'],
rules: {
'import/no-unresolved': 'off',
},
},
// Allow configuring vitest with default exports (recommended as per vitest docs)
{
files: [
'**/vitest.config.{ts,mts}',
'**/vitest.web.config.ts',
'**/vite.config.{ts,mts}',
'eslint.config.mjs',
],
rules: {
'import/no-anonymous-default-export': 'off',
'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/budget/BudgetCategories.jsx',
'packages/desktop-client/src/components/budget/BudgetSummaries.tsx',
'packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx',
'packages/desktop-client/src/components/budget/index.tsx',
'packages/desktop-client/src/components/budget/MobileBudget.tsx',
'packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx',
'packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx',
'packages/component-library/src/Menu.tsx',
'packages/desktop-client/src/components/FinancesApp.tsx',
'packages/desktop-client/src/components/GlobalKeys.ts',
'packages/desktop-client/src/components/LoggedInUser.tsx',
'packages/desktop-client/src/components/manager/ManagementApp.jsx',
'packages/desktop-client/src/components/manager/subscribe/common.tsx',
'packages/desktop-client/src/components/ManageRules.tsx',
'packages/desktop-client/src/components/mobile/MobileAmountInput.jsx',
'packages/desktop-client/src/components/mobile/MobileNavTabs.tsx',
'packages/desktop-client/src/components/Modals.tsx',
'packages/desktop-client/src/components/modals/EditRule.jsx',
'packages/desktop-client/src/components/modals/ImportTransactions.jsx',
'packages/desktop-client/src/components/modals/MergeUnusedPayees.jsx',
'packages/desktop-client/src/components/Notifications.tsx',
'packages/desktop-client/src/components/payees/ManagePayees.jsx',
'packages/desktop-client/src/components/payees/ManagePayeesWithData.jsx',
'packages/desktop-client/src/components/payees/PayeeTable.tsx',
'packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx',
'packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx',
'packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx',
'packages/desktop-client/src/components/reports/reports/CustomReport.jsx',
'packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx',
'packages/desktop-client/src/components/reports/SaveReportName.tsx',
'packages/desktop-client/src/components/reports/useReport.ts',
'packages/desktop-client/src/components/schedules/ScheduleDetails.jsx',
'packages/desktop-client/src/components/schedules/SchedulesTable.tsx',
'packages/desktop-client/src/components/select/DateSelect.tsx',
'packages/desktop-client/src/components/sidebar/Tools.tsx',
'packages/desktop-client/src/components/sort.tsx',
],
rules: {
'react-hooks/exhaustive-deps': 'off',
},
},
{
files: [
'eslint.config.mjs',
'**/*.test.js',
'**/*.test.ts',
'**/*.test.jsx',
'**/*.test.tsx',
'**/*.spec.js',
],
rules: {
'actual/typography': 'off',
'actual/no-untranslated-strings': 'off',
'actual/prefer-logger-over-console': 'off',
},
},
{
files: [
'packages/desktop-client/**/*.{ts,tsx}',
'packages/loot-core/src/client/**/*.{ts,tsx}',
],
ignores: ['**/**/globals.d.ts'],
rules: {
// enforce type over interface
'@typescript-eslint/consistent-type-definitions': ['warn', 'type'],
},
},
{
files: ['packages/sync-server/**/*'],
// TODO: fix the issues in these files
rules: {
'import/extensions': 'off',
'actual/typography': 'off',
},
},
{
files: ['packages/sync-server/src/app-gocardless/banks/*.js'],
rules: {
'import/no-anonymous-default-export': 'off',
'import/no-default-export': 'off',
},
},
);

30
lage.config.js Normal file
View File

@@ -0,0 +1,30 @@
/** @type {import('lage').ConfigOptions} */
module.exports = {
pipeline: {
test: {
type: 'npmScript',
options: {
outputGlob: [
'coverage/**',
'**/test-results/**',
'**/playwright-report/**',
],
},
},
build: {
type: 'npmScript',
cache: true,
options: {
outputGlob: ['lib-dist/**', 'dist/**', 'build/**'],
},
},
},
cacheOptions: {
cacheStorageConfig: {
provider: 'local',
outputGlob: ['lib-dist/**', 'dist/**', 'build/**'],
},
},
npmClient: 'yarn',
concurrency: 2,
};

View File

@@ -19,54 +19,93 @@
},
"scripts": {
"start": "yarn start:browser",
"start:desktop": "yarn rebuild-electron && npm-run-all --parallel 'start:desktop-*'",
"start:server": "yarn workspace @actual-app/sync-server start",
"start:server-monitor": "yarn workspace @actual-app/sync-server start-monitor",
"start:server-dev": "NODE_ENV=development BROWSER_OPEN=localhost:5006 yarn npm-run-all --parallel 'start:server-monitor' 'start'",
"start:desktop": "yarn desktop-dependencies && npm-run-all --parallel 'start:desktop-*'",
"start:docs": "yarn workspace docs start",
"desktop-dependencies": "npm-run-all --parallel rebuild-electron build:browser-backend build:plugins-service",
"start:desktop-node": "yarn workspace loot-core watch:node",
"start:desktop-client": "yarn workspace @actual-app/web watch",
"start:desktop-server-client": "yarn workspace @actual-app/web build:browser",
"start:desktop-electron": "yarn workspace desktop-electron watch",
"start:electron": "yarn start:desktop",
"start:browser": "npm-run-all --parallel 'start:browser-*'",
"start:browser": "yarn workspace plugins-service build-dev && npm-run-all --parallel 'start:browser-*'",
"start:service-plugins": "yarn workspace plugins-service watch",
"start:browser-backend": "yarn workspace loot-core watch:browser",
"start:browser-frontend": "yarn workspace @actual-app/web start:browser",
"build:browser-backend": "yarn workspace loot-core build:browser",
"build:server": "yarn build:browser && yarn workspace @actual-app/sync-server build",
"build:browser": "./bin/package-browser",
"build:desktop": "./bin/package-electron",
"build:plugins-service": "yarn workspace plugins-service build",
"build:api": "yarn workspace @actual-app/api build",
"test": "yarn workspaces foreach --all --parallel --verbose run test",
"test:debug": "yarn workspaces foreach --all --verbose run test",
"e2e": "yarn workspaces foreach --all --parallel --verbose run e2e",
"vrt": "yarn workspaces foreach --all --parallel --verbose run vrt",
"rebuild-electron": "./node_modules/.bin/electron-rebuild -f -m ./packages/loot-core",
"build:docs": "yarn workspace docs build",
"generate:i18n": "yarn workspace @actual-app/web generate:i18n",
"generate:release-notes": "ts-node ./bin/release-note-generator.ts",
"test": "lage test --continue",
"test:debug": "lage test --no-cache --continue",
"e2e": "yarn workspace @actual-app/web run e2e",
"e2e:desktop": "yarn build:desktop --skip-exe-build && yarn workspace desktop-electron e2e",
"playwright": "yarn workspace @actual-app/web run playwright",
"vrt": "yarn workspace @actual-app/web run vrt",
"vrt:docker": "./bin/run-vrt",
"rebuild-electron": "./node_modules/.bin/electron-rebuild -m ./packages/loot-core",
"rebuild-node": "yarn workspace loot-core rebuild",
"lint": "eslint . --max-warnings 0 --ext .js,.jsx,.ts,.tsx",
"lint:verbose": "DEBUG=eslint:cli-engine eslint . --max-warnings 0",
"typecheck": "yarn tsc && tsc-strict",
"jq": "./node_modules/node-jq/bin/jq"
"lint": "prettier --check . && eslint . --max-warnings 0",
"lint:fix": "prettier --check --write . && eslint . --max-warnings 0 --fix",
"install:server": "yarn workspaces focus @actual-app/sync-server --production",
"typecheck": "yarn tsc --incremental && tsc-strict",
"jq": "./node_modules/node-jq/bin/jq",
"prepare": "husky"
},
"devDependencies": {
"cross-env": "^7.0.3",
"eslint": "^8.37.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-react-app": "7.0.1",
"eslint-import-resolver-typescript": "3.5.5",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-prettier": "5.1.3",
"eslint-plugin-react": "7.32.2",
"eslint-plugin-rulesdir": "^0.2.2",
"node-jq": "^4.0.1",
"@octokit/rest": "^22.0.1",
"@types/node": "^22.19.1",
"@types/prompts": "^2.4.9",
"@typescript-eslint/parser": "^8.46.4",
"cross-env": "^10.1.0",
"eslint": "^9.39.1",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-typescript-paths": "^0.0.33",
"globals": "^16.5.0",
"html-to-image": "^1.11.13",
"husky": "^9.1.7",
"lage": "^2.14.15",
"lint-staged": "^16.2.6",
"minimatch": "^10.1.1",
"node-jq": "^6.3.1",
"npm-run-all": "^4.1.5",
"prettier": "3.2.4",
"p-limit": "^7.2.0",
"prettier": "^3.6.2",
"prompts": "^2.4.2",
"source-map-support": "^0.5.21",
"typescript": "^5.0.2",
"typescript-strict-plugin": "^2.2.2-beta.2"
"ts-node": "^10.9.2",
"typescript": "^5.9.3",
"typescript-eslint": "^8.46.4",
"typescript-strict-plugin": "^2.4.4"
},
"resolutions": {
"rollup": "4.9.4"
"rollup": "4.40.1",
"socks": ">=2.8.3"
},
"engines": {
"node": ">=18.0.0"
"node": ">=22",
"yarn": "^4.9.1"
},
"packageManager": "yarn@4.0.2",
"lint-staged": {
"*.{js,mjs,jsx,ts,tsx,md,json,yml}": [
"eslint --fix",
"prettier --write"
]
},
"packageManager": "yarn@4.10.3",
"browserslist": [
"electron 24.0",
"electron >= 35.0",
"defaults"
]
}

View File

@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`API setup and teardown successfully loads budget 1`] = `
Array [
exports[`API setup and teardown > successfully loads budget 1`] = `
[
"2016-10",
"2016-11",
"2016-12",

View File

@@ -1,8 +1,7 @@
import type {
RequestInfo as FetchInfo,
RequestInit as FetchInit,
// @ts-ignore: false-positive commonjs module error on build until typescript 5.3
} from 'node-fetch'; // with { 'resolution-mode': 'import' };
} from 'node-fetch';
// loot-core types
import type { InitConfig } from 'loot-core/server/main';
@@ -16,9 +15,6 @@ import { validateNodeVersion } from './validateNodeVersion';
let actualApp: null | typeof bundle.lib;
export const internal = bundle.lib;
// DEPRECATED: remove the next line in @actual-app/api v7
export * as methods from './methods';
export * from './methods';
export * as utils from './utils';
@@ -46,7 +42,11 @@ export async function init(config: InitConfig = {}) {
export async function shutdown() {
if (actualApp) {
await actualApp.send('sync');
try {
await actualApp.send('sync');
} catch (e) {
// most likely that no budget is loaded, so the sync failed
}
await actualApp.send('close-budget');
actualApp = null;
}

View File

@@ -1,24 +0,0 @@
module.exports = {
moduleFileExtensions: [
'testing.js',
'testing.ts',
'api.js',
'api.ts',
'api.tsx',
'electron.js',
'electron.ts',
'mjs',
'js',
'ts',
'tsx',
'json',
],
testEnvironment: 'node',
testPathIgnorePatterns: ['/node_modules/'],
watchPathIgnorePatterns: ['<rootDir>/mocks/budgets/'],
setupFilesAfterEnv: ['<rootDir>/../loot-core/src/mocks/setup.ts'],
transformIgnorePatterns: ['/node_modules/'],
transform: {
'^.+\\.(t|j)sx?$': '@swc/jest',
},
};

View File

@@ -1,15 +1,15 @@
// @ts-strict-ignore
import * as fs from 'fs/promises';
import * as path from 'path';
import { type RuleEntity } from 'loot-core/types/models';
import * as api from './index';
const budgetName = 'test-budget';
beforeEach(async () => {
// we need real datetime if we are going to mix new timestamps with our mock data
global.restoreDateNow();
global.IS_TESTING = true;
beforeEach(async () => {
const budgetPath = path.join(__dirname, '/mocks/budgets/', budgetName);
await fs.rm(budgetPath, { force: true, recursive: true });
@@ -58,6 +58,19 @@ describe('API CRUD operations', () => {
await api.loadBudget(budgetName);
});
// api: getBudgets
test('getBudgets', async () => {
const budgets = await api.getBudgets();
expect(budgets).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: 'test-budget',
name: 'Default Test Db',
}),
]),
);
});
// apis: getCategoryGroups, createCategoryGroup, updateCategoryGroup, deleteCategoryGroup
test('CategoryGroups: successfully update category groups', async () => {
const month = '2023-10';
@@ -68,28 +81,22 @@ describe('API CRUD operations', () => {
expect(groups).toEqual(
expect.arrayContaining([
expect.objectContaining({
hidden: 0,
hidden: false,
id: 'fc3825fd-b982-4b72-b768-5b30844cf832',
is_income: 0,
is_income: false,
name: 'Usual Expenses',
sort_order: 16384,
tombstone: 0,
}),
expect.objectContaining({
hidden: 0,
hidden: false,
id: 'a137772f-cf2f-4089-9432-822d2ddc1466',
is_income: 0,
is_income: false,
name: 'Investments and Savings',
sort_order: 32768,
tombstone: 0,
}),
expect.objectContaining({
hidden: 0,
hidden: false,
id: '2E1F5BDB-209B-43F9-AF2C-3CE28E380C00',
is_income: 1,
is_income: true,
name: 'Income',
sort_order: 32768,
tombstone: 0,
}),
]),
);
@@ -251,7 +258,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 },
@@ -272,8 +279,11 @@ 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.closeAccount(accountId1, accountId2);
await api.deleteAccount(accountId2);
// accounts successfully updated, and one of them deleted
@@ -346,13 +356,233 @@ 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',
} satisfies RuleEntity;
expect(await api.updateRule(updatedRule)).toEqual(updatedRule);
expect(await api.getRules()).toEqual(
expect.arrayContaining([
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee',
}),
]),
conditionsOp: 'or',
id: rule.id,
stage: 'post',
}),
expect.objectContaining({
actions: expect.arrayContaining([
expect.objectContaining({
field: 'category',
op: 'set',
type: 'id',
value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
}),
]),
conditions: expect.arrayContaining([
expect.objectContaining({
field: 'payee',
op: 'is',
type: 'id',
value: 'test-payee2',
}),
]),
conditionsOp: 'and',
id: rule2.id,
stage: 'pre',
}),
]),
);
// delete rules
await api.deleteRule(rules[1].id);
expect(await api.getRules()).toHaveLength(1);
await api.deleteRule(rules[0].id);
expect(await api.getRules()).toHaveLength(0);
});
// apis: addTransactions, getTransactions, importTransactions, updateTransaction, deleteTransaction
test('Transactions: successfully update transactions', async () => {
const accountId = await api.createAccount({ name: 'test-account' }, 0);
let newTransaction = [
{ date: '2023-11-03', imported_id: '11', amount: 100 },
{ date: '2023-11-03', imported_id: '11', amount: 100 },
{
account: accountId,
date: '2023-11-03',
imported_id: '11',
amount: 100,
notes: 'notes',
},
{
account: accountId,
date: '2023-11-03',
imported_id: '12',
amount: 100,
notes: '',
},
];
const addResult = await api.addTransactions(accountId, newTransaction, {
@@ -361,6 +591,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,
@@ -375,8 +610,27 @@ 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 },
{
account: accountId,
date: '2023-12-03',
imported_id: '11',
amount: 100,
notes: 'notes',
},
{
account: accountId,
date: '2023-12-03',
imported_id: '12',
amount: 100,
notes: 'notes',
},
{
account: accountId,
date: '2023-12-03',
imported_id: '22',
amount: 200,
notes: '',
},
];
const reconciled = await api.importTransactions(accountId, newTransaction);
@@ -392,9 +646,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);
@@ -417,4 +684,179 @@ describe('API CRUD operations', () => {
);
expect(transactions).toHaveLength(1);
});
test('Transactions: import notes are preserved when importing', async () => {
const accountId = await api.createAccount({ name: 'test-account' }, 0);
// Test with notes
const transactionsWithNotes = [
{
date: '2023-11-03',
imported_id: '11',
amount: 100,
notes: 'test note',
},
];
const addResultWithNotes = await api.addTransactions(
accountId,
transactionsWithNotes,
{
learnCategories: true,
runTransfers: true,
},
);
expect(addResultWithNotes).toBe('ok');
let transactions = await api.getTransactions(
accountId,
'2023-11-01',
'2023-11-30',
);
expect(transactions[0].notes).toBe('test note');
// Clear transactions
await api.deleteTransaction(transactions[0].id);
// Test without notes
const transactionsWithoutNotes = [
{ date: '2023-11-03', imported_id: '11', amount: 100 },
];
const addResultWithoutNotes = await api.addTransactions(
accountId,
transactionsWithoutNotes,
{
learnCategories: true,
runTransfers: true,
},
);
expect(addResultWithoutNotes).toBe('ok');
transactions = await api.getTransactions(
accountId,
'2023-11-01',
'2023-11-30',
);
expect(transactions[0].notes).toBeNull();
});
});
//apis: createSchedule, getSchedules, updateSchedule, deleteSchedule
test('Schedules: successfully complete schedules operations', async () => {
await api.loadBudget(budgetName);
//test a schedule with a recuring configuration
const ScheduleId1 = await api.createSchedule({
name: 'test-schedule 1',
posts_transaction: true,
// amount: -5000,
amountOp: 'is',
date: {
frequency: 'monthly',
interval: 1,
start: '2025-06-13',
patterns: [],
skipWeekend: false,
weekendSolveMode: 'after',
endMode: 'never',
},
});
//test the creation of non recurring schedule
const ScheduleId2 = await api.createSchedule({
name: 'test-schedule 2',
posts_transaction: false,
amount: 4000,
amountOp: 'is',
date: '2025-06-13',
});
let schedules = await api.getSchedules();
// Schedules successfully created
expect(schedules).toEqual(
expect.arrayContaining([
expect.objectContaining({
name: 'test-schedule 1',
posts_transaction: true,
// amount: -5000,
amountOp: 'is',
date: {
frequency: 'monthly',
interval: 1,
start: '2025-06-13',
patterns: [],
skipWeekend: false,
weekendSolveMode: 'after',
endMode: 'never',
},
}),
expect.objectContaining({
name: 'test-schedule 2',
posts_transaction: false,
amount: 4000,
amountOp: 'is',
date: '2025-06-13',
}),
]),
);
//check getIDByName works on schedules
expect(await api.getIDByName('schedules', 'test-schedule 1')).toEqual(
ScheduleId1,
);
expect(await api.getIDByName('schedules', 'test-schedule 2')).toEqual(
ScheduleId2,
);
//check getIDByName works on accounts
const schedAccountId1 = await api.createAccount(
{ name: 'sched-test-account1', offbudget: true },
1000,
);
expect(await api.getIDByName('accounts', 'sched-test-account1')).toEqual(
schedAccountId1,
);
//check getIDByName works on payees
const schedPayeeId1 = await api.createPayee({ name: 'sched-test-payee1' });
expect(await api.getIDByName('payees', 'sched-test-payee1')).toEqual(
schedPayeeId1,
);
await api.updateSchedule(ScheduleId1, {
amount: -10000,
account: schedAccountId1,
});
await api.deleteSchedule(ScheduleId2);
// schedules successfully updated, and one of them deleted
await api.updateSchedule(ScheduleId1, {
amount: -10000,
account: schedAccountId1,
payee: schedPayeeId1,
});
await api.deleteSchedule(ScheduleId2);
schedules = await api.getSchedules();
expect(schedules).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: ScheduleId1,
posts_transaction: true,
amount: -10000,
account: schedAccountId1,
payee: schedPayeeId1,
amountOp: 'is',
date: {
frequency: 'monthly',
interval: 1,
start: '2025-06-13',
patterns: [],
skipWeekend: false,
weekendSolveMode: 'after',
endMode: 'never',
},
}),
expect.not.objectContaining({ id: ScheduleId2 }),
]),
);
});

View File

@@ -1,5 +1,18 @@
// @ts-strict-ignore
import type { Handlers } from 'loot-core/src/types/handlers';
import type {
APIAccountEntity,
APICategoryEntity,
APICategoryGroupEntity,
APIFileEntity,
APIPayeeEntity,
APIScheduleEntity,
} from 'loot-core/server/api-models';
import type { Query } from 'loot-core/shared/query';
import type { Handlers } from 'loot-core/types/handlers';
import type {
ImportTransactionEntity,
RuleEntity,
TransactionEntity,
} from 'loot-core/types/models';
import * as injected from './injected';
@@ -12,8 +25,11 @@ function send<K extends keyof Handlers, T extends Handlers[K]>(
return injected.send(name, args);
}
export async function runImport(name, func) {
await send('api/start-import', { budgetName: name });
export async function runImport(
budgetName: APIFileEntity['name'],
func: () => Promise<void>,
) {
await send('api/start-import', { budgetName });
try {
await func();
} catch (e) {
@@ -23,19 +39,32 @@ export async function runImport(name, func) {
await send('api/finish-import');
}
export async function loadBudget(budgetId) {
export async function loadBudget(budgetId: string) {
return send('api/load-budget', { id: budgetId });
}
export async function downloadBudget(syncId, { password }: { password? } = {}) {
export async function downloadBudget(
syncId: string,
{ password }: { password?: string } = {},
) {
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 batchBudgetUpdates(func) {
export async function runBankSync(args?: {
accountId: APIAccountEntity['id'];
}) {
return send('api/bank-sync', args);
}
export async function batchBudgetUpdates(func: () => Promise<void>) {
await send('api/batch-budget-start');
try {
await func();
@@ -44,7 +73,15 @@ export async function batchBudgetUpdates(func) {
}
}
export function runQuery(query) {
/**
* @deprecated Please use `aqlQuery` instead.
* This function will be removed in a future release.
*/
export function runQuery(query: Query) {
return send('api/query', { query: query.serialize() });
}
export function aqlQuery(query: Query) {
return send('api/query', { query: query.serialize() });
}
@@ -52,22 +89,33 @@ export function getBudgetMonths() {
return send('api/budget-months');
}
export function getBudgetMonth(month) {
export function getBudgetMonth(month: string) {
return send('api/budget-month', { month });
}
export function setBudgetAmount(month, categoryId, value) {
export function setBudgetAmount(
month: string,
categoryId: APICategoryEntity['id'],
value: number,
) {
return send('api/budget-set-amount', { month, categoryId, amount: value });
}
export function setBudgetCarryover(month, categoryId, flag) {
export function setBudgetCarryover(
month: string,
categoryId: APICategoryEntity['id'],
flag: boolean,
) {
return send('api/budget-set-carryover', { month, categoryId, flag });
}
export function addTransactions(
accountId,
transactions,
{ learnCategories = false, runTransfers = false } = {},
accountId: APIAccountEntity['id'],
transactions: Omit<ImportTransactionEntity, 'account'>[],
{
learnCategories = false,
runTransfers = false,
}: { learnCategories?: boolean; runTransfers?: boolean } = {},
) {
return send('api/transactions-add', {
accountId,
@@ -77,19 +125,43 @@ export function addTransactions(
});
}
export function importTransactions(accountId, transactions) {
return send('api/transactions-import', { accountId, transactions });
export interface ImportTransactionsOpts {
defaultCleared?: boolean;
dryRun?: boolean;
}
export function getTransactions(accountId, startDate, endDate) {
export function importTransactions(
accountId: APIAccountEntity['id'],
transactions: ImportTransactionEntity[],
opts: ImportTransactionsOpts = {
defaultCleared: true,
dryRun: false,
},
) {
return send('api/transactions-import', {
accountId,
transactions,
isPreview: opts.dryRun,
opts,
});
}
export function getTransactions(
accountId: APIAccountEntity['id'],
startDate: string,
endDate: string,
) {
return send('api/transactions-get', { accountId, startDate, endDate });
}
export function updateTransaction(id, fields) {
export function updateTransaction(
id: TransactionEntity['id'],
fields: Partial<TransactionEntity>,
) {
return send('api/transaction-update', { id, fields });
}
export function deleteTransaction(id) {
export function deleteTransaction(id: TransactionEntity['id']) {
return send('api/transaction-delete', { id });
}
@@ -97,15 +169,25 @@ export function getAccounts() {
return send('api/accounts-get');
}
export function createAccount(account, initialBalance?) {
export function createAccount(
account: Omit<APIAccountEntity, 'id'>,
initialBalance?: number,
) {
return send('api/account-create', { account, initialBalance });
}
export function updateAccount(id, fields) {
export function updateAccount(
id: APIAccountEntity['id'],
fields: Partial<APIAccountEntity>,
) {
return send('api/account-update', { id, fields });
}
export function closeAccount(id, transferAccountId?, transferCategoryId?) {
export function closeAccount(
id: APIAccountEntity['id'],
transferAccountId?: APIAccountEntity['id'],
transferCategoryId?: APICategoryEntity['id'],
) {
return send('api/account-close', {
id,
transferAccountId,
@@ -113,27 +195,37 @@ export function closeAccount(id, transferAccountId?, transferCategoryId?) {
});
}
export function reopenAccount(id) {
export function reopenAccount(id: APIAccountEntity['id']) {
return send('api/account-reopen', { id });
}
export function deleteAccount(id) {
export function deleteAccount(id: APIAccountEntity['id']) {
return send('api/account-delete', { id });
}
export function getAccountBalance(id: APIAccountEntity['id'], cutoff?: Date) {
return send('api/account-balance', { id, cutoff });
}
export function getCategoryGroups() {
return send('api/category-groups-get');
}
export function createCategoryGroup(group) {
export function createCategoryGroup(group: Omit<APICategoryGroupEntity, 'id'>) {
return send('api/category-group-create', { group });
}
export function updateCategoryGroup(id, fields) {
export function updateCategoryGroup(
id: APICategoryGroupEntity['id'],
fields: Partial<APICategoryGroupEntity>,
) {
return send('api/category-group-update', { id, fields });
}
export function deleteCategoryGroup(id, transferCategoryId?) {
export function deleteCategoryGroup(
id: APICategoryGroupEntity['id'],
transferCategoryId?: APICategoryEntity['id'],
) {
return send('api/category-group-delete', { id, transferCategoryId });
}
@@ -141,30 +233,113 @@ export function getCategories() {
return send('api/categories-get', { grouped: false });
}
export function createCategory(category) {
export function createCategory(category: Omit<APICategoryEntity, 'id'>) {
return send('api/category-create', { category });
}
export function updateCategory(id, fields) {
export function updateCategory(
id: APICategoryEntity['id'],
fields: Partial<APICategoryEntity>,
) {
return send('api/category-update', { id, fields });
}
export function deleteCategory(id, transferCategoryId?) {
export function deleteCategory(
id: APICategoryEntity['id'],
transferCategoryId?: APICategoryEntity['id'],
) {
return send('api/category-delete', { id, transferCategoryId });
}
export function getCommonPayees() {
return send('api/common-payees-get');
}
export function getPayees() {
return send('api/payees-get');
}
export function createPayee(payee) {
export function createPayee(payee: Omit<APIPayeeEntity, 'id'>) {
return send('api/payee-create', { payee });
}
export function updatePayee(id, fields) {
export function updatePayee(
id: APIPayeeEntity['id'],
fields: Partial<APIPayeeEntity>,
) {
return send('api/payee-update', { id, fields });
}
export function deletePayee(id) {
export function deletePayee(id: APIPayeeEntity['id']) {
return send('api/payee-delete', { id });
}
export function mergePayees(
targetId: APIPayeeEntity['id'],
mergeIds: APIPayeeEntity['id'][],
) {
return send('api/payees-merge', { targetId, mergeIds });
}
export function getRules() {
return send('api/rules-get');
}
export function getPayeeRules(id: RuleEntity['id']) {
return send('api/payee-rules-get', { id });
}
export function createRule(rule: Omit<RuleEntity, 'id'>) {
return send('api/rule-create', { rule });
}
export function updateRule(rule: RuleEntity) {
return send('api/rule-update', { rule });
}
export function deleteRule(id: RuleEntity['id']) {
return send('api/rule-delete', id);
}
export function holdBudgetForNextMonth(month: string, amount: number) {
return send('api/budget-hold-for-next-month', { month, amount });
}
export function resetBudgetHold(month: string) {
return send('api/budget-reset-hold', { month });
}
export function createSchedule(schedule: Omit<APIScheduleEntity, 'id'>) {
return send('api/schedule-create', schedule);
}
export function updateSchedule(
id: APIScheduleEntity['id'],
fields: Partial<APIScheduleEntity>,
resetNextDate?: boolean,
) {
return send('api/schedule-update', {
id,
fields,
resetNextDate,
});
}
export function deleteSchedule(scheduleId: APIScheduleEntity['id']) {
return send('api/schedule-delete', scheduleId);
}
export function getSchedules() {
return send('api/schedules-get');
}
export function getIDByName(
type: 'accounts' | 'schedules' | 'categories' | 'payees',
name: string,
) {
return send('api/get-id-by-name', { type, name });
}
export function getServerVersion() {
return send('api/get-server-version');
}

View File

@@ -1,38 +1,37 @@
{
"name": "@actual-app/api",
"version": "6.7.0",
"version": "25.11.0",
"license": "MIT",
"description": "An API for Actual",
"engines": {
"node": ">=18.12.0"
"node": ">=20"
},
"main": "dist/index.js",
"types": "@types/index.d.ts",
"files": [
"dist"
"dist",
"@types"
],
"scripts": {
"build:app": "yarn workspace loot-core build:api",
"build:crdt": "yarn workspace @actual-app/crdt build",
"build:node": "tsc --p tsconfig.dist.json && tsc-alias -p tsconfig.dist.json",
"build:migrations": "cp migrations/*.sql dist/migrations",
"build:default-db": "cp default-db.sqlite dist/",
"build": "yarn run clean && yarn run build:app && yarn run build:node && yarn run build:migrations && yarn run build:default-db",
"test": "yarn run build:app && jest -c jest.config.js",
"test": "yarn run build:app && yarn run build:crdt && vitest --run",
"clean": "rm -rf dist @types"
},
"dependencies": {
"better-sqlite3": "^9.3.0",
"compare-versions": "^6.1.0",
"@actual-app/crdt": "workspace:^",
"better-sqlite3": "^12.4.1",
"compare-versions": "^6.1.1",
"node-fetch": "^3.3.2",
"uuid": "^9.0.1"
"uuid": "^13.0.0"
},
"devDependencies": {
"@swc/core": "^1.3.105",
"@swc/jest": "^0.2.31",
"@types/jest": "^27.5.2",
"@types/uuid": "^9.0.2",
"jest": "^27.5.1",
"tsc-alias": "^1.8.8",
"typescript": "^5.0.2"
"tsc-alias": "^1.8.16",
"typescript": "^5.9.3",
"vitest": "^4.0.9"
}
}

View File

@@ -5,15 +5,15 @@
// the latest Node 16.x release supports all of the features
"target": "ES2021",
"module": "CommonJS",
"moduleResolution": "node10",
"noEmit": false,
"declaration": true,
"outDir": "dist",
"declarationDir": "@types",
"paths": {
"loot-core/src/*": ["./loot-core/*"],
"loot-core/*": ["./@types/loot-core/*"],
"loot-core/*": ["./@types/loot-core/src/*"]
}
},
"include": ["."],
"exclude": ["**/node_modules/*", "dist", "@types"]
"exclude": ["**/node_modules/*", "dist", "@types", "*.test.ts"]
}

View File

@@ -1,7 +0,0 @@
export function amountToInteger(n) {
return Math.round(n * 100);
}
export function integerToAmount(n) {
return parseFloat((n / 100).toFixed(2));
}

6
packages/api/utils.ts Normal file
View File

@@ -0,0 +1,6 @@
// @ts-ignore: bundle not available until we build it
// eslint-disable-next-line import/extensions
import * as bundle from './app/bundle.api.js';
export const amountToInteger = bundle.lib.amountToInteger;
export const integerToAmount = bundle.lib.integerToAmount;

View File

@@ -0,0 +1,10 @@
export default {
test: {
globals: true,
onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
// print only console.error
return type === 'stderr';
},
maxWorkers: 2,
},
};

View File

@@ -0,0 +1,678 @@
#!/usr/bin/env node
/**
* Generates a combined bundle stats comment for GitHub Actions.
* Heavily inspired by https://github.com/twk3/rollup-size-compare-action (MIT).
*/
import { readFile } from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
const REQUIRED_ARGS = new Map([
['base', 'Mapping of bundle names to base stats JSON'],
['head', 'Mapping of bundle names to head stats JSON'],
]);
function parseRawArgs(argv) {
const args = new Map();
for (let index = 2; index < argv.length; index += 1) {
const key = argv[index];
if (!key?.startsWith('--')) {
throw new Error(
`Unexpected argument “${key ?? ''}”. Use --key value pairs.`,
);
}
const values = [];
while (index + 1 < argv.length && !argv[index + 1].startsWith('--')) {
values.push(argv[index + 1]);
index += 1;
}
if (values.length === 0) {
throw new Error(`Missing value for argument “${key}”.`);
}
const keyName = key.slice(2);
// Accumulate values if the key already exists
if (args.has(keyName)) {
args.set(keyName, [...args.get(keyName), ...values]);
} else {
args.set(keyName, values);
}
}
return args;
}
function getSingleValue(args, key) {
const values = args.get(key);
if (!values) {
return undefined;
}
if (values.length !== 1) {
throw new Error(`Argument “--${key}” must have exactly one value.`);
}
return values[0];
}
function parseMapping(values, key, description) {
if (!values || values.length === 0) {
throw new Error(`Missing required argument “--${key}” (${description}).`);
}
if (values.length === 1) {
const [rawValue] = values;
const trimmed = rawValue.trim();
if (trimmed.startsWith('{')) {
try {
const parsed = JSON.parse(trimmed);
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
throw new Error('Value must be a JSON object.');
}
return new Map(
Object.entries(parsed).map(([name, pathValue]) => {
if (typeof pathValue !== 'string') {
throw new Error(
`Value for “${name}” in “--${key}” must be a string path.`,
);
}
return [name, pathValue];
}),
);
} catch (error) {
const message =
error instanceof Error ? error.message : 'Unknown parsing error';
throw new Error(
`Failed to parse “--${key}” value as JSON object: ${message}`,
);
}
}
}
const entries = new Map();
for (const value of values) {
const [rawName, ...rawPathParts] = value.split('=');
if (!rawName || rawPathParts.length === 0) {
throw new Error(
`Argument “--${key}” must be provided as name=path pairs or a JSON object.`,
);
}
const name = rawName.trim();
const pathValue = rawPathParts.join('=').trim();
if (!name) {
throw new Error(`Argument “--${key}” contains an empty bundle name.`);
}
if (!pathValue) {
throw new Error(
`Argument “--${key}” for bundle “${name}” must include a non-empty path.`,
);
}
entries.set(name, pathValue);
}
if (entries.size === 0) {
throw new Error(`Argument “--${key}” must define at least one bundle.`);
}
return entries;
}
function parseArgs(argv) {
const args = parseRawArgs(argv);
const baseMap = parseMapping(
args.get('base'),
'base',
REQUIRED_ARGS.get('base'),
);
const headMap = parseMapping(
args.get('head'),
'head',
REQUIRED_ARGS.get('head'),
);
const sections = [];
for (const [name, basePath] of baseMap.entries()) {
const headPath = headMap.get(name);
if (!headPath) {
throw new Error(
`Bundle “${name}” is missing a corresponding “--head” entry.`,
);
}
sections.push({
name,
basePath,
headPath,
});
}
for (const name of headMap.keys()) {
if (!baseMap.has(name)) {
throw new Error(
`Bundle “${name}” is missing a corresponding “--base” entry.`,
);
}
}
return {
sections,
identifier: getSingleValue(args, 'identifier') ?? 'bundle-stats',
};
}
async function loadStats(filePath) {
try {
const absolutePath = path.resolve(process.cwd(), filePath);
const fileContents = await readFile(absolutePath, 'utf8');
const parsed = JSON.parse(fileContents);
// Validate that we got a meaningful stats object
if (!parsed || typeof parsed !== 'object') {
throw new Error('Stats file does not contain a valid JSON object');
}
return parsed;
} catch (error) {
const message =
error instanceof Error
? error.message
: 'Unknown error while parsing stats file';
console.error(`[bundle-stats] Failed to parse “${filePath}”: ${message}`);
throw new Error(`Failed to load stats file “${filePath}”: ${message}`);
}
}
function findAllChildren(node = {}) {
if (Array.isArray(node.children)) {
return node.children.flatMap(findAllChildren);
}
return [node];
}
function trimPath(input) {
if (!input) {
return '';
}
return input.replace(/.*node_modules/, '/node_modules');
}
function assetNameToSizeMap(statAssets = {}) {
const children = statAssets?.tree?.children;
if (!Array.isArray(children) || children.length === 0) {
return new Map();
}
return new Map(
children.map(asset => {
const descendants = findAllChildren(asset);
let size = 0;
let gzipSize = statAssets?.options?.gzip ? 0 : null;
for (const mod of descendants) {
const nodePart = statAssets?.nodeParts?.[mod.uid];
if (!nodePart) {
continue;
}
size += nodePart.renderedLength ?? 0;
if (gzipSize !== null) {
gzipSize += nodePart.gzipLength ?? 0;
}
}
return [trimPath(asset.name), { size, gzipSize }];
}),
);
}
function chunkModuleNameToSizeMap(statChunks = {}) {
if (!statChunks?.tree) {
return new Map();
}
return new Map(
findAllChildren(statChunks.tree).map(mod => {
const modInfo = statChunks?.nodeParts?.[mod.uid] ?? {};
const meta = statChunks?.nodeMetas?.[modInfo.metaUid] ?? {};
const id = trimPath(meta.id ?? '');
return [
id,
{
size: modInfo.renderedLength ?? 0,
gzipSize: statChunks?.options?.gzip
? (modInfo.gzipLength ?? 0)
: null,
},
];
}),
);
}
function sortDiffDescending(items) {
return items.sort((a, b) => Math.abs(b.diff) - Math.abs(a.diff));
}
function normaliseGzip(value) {
if (value == null || Number.isNaN(value)) {
return NaN;
}
return value;
}
function getAssetDiff(name, oldSize, newSize) {
const diff = newSize.size - oldSize.size;
const percent =
oldSize.size === 0
? newSize.size === 0
? 0
: Infinity
: +((1 - newSize.size / oldSize.size) * -100).toFixed(5) || 0;
return {
name,
new: {
size: newSize.size,
gzipSize: normaliseGzip(newSize.gzipSize),
},
old: {
size: oldSize.size,
gzipSize: normaliseGzip(oldSize.gzipSize),
},
diff,
diffPercentage: percent,
};
}
function webpackStatsDiff(oldAssets, newAssets) {
const added = [];
const removed = [];
const bigger = [];
const smaller = [];
const unchanged = [];
let newSizeTotal = 0;
let oldSizeTotal = 0;
let newGzipSizeTotal = 0;
let oldGzipSizeTotal = 0;
for (const [name, oldAssetSizes] of oldAssets) {
oldSizeTotal += oldAssetSizes.size;
oldGzipSizeTotal += oldAssetSizes.gzipSize ?? NaN;
const newAsset = newAssets.get(name);
if (!newAsset) {
removed.push(getAssetDiff(name, oldAssetSizes, { size: 0, gzipSize: 0 }));
continue;
}
const diff = getAssetDiff(name, oldAssetSizes, newAsset);
if (diff.diffPercentage > 0) {
bigger.push(diff);
} else if (diff.diffPercentage < 0) {
smaller.push(diff);
} else {
unchanged.push(diff);
}
}
for (const [name, newAssetSizes] of newAssets) {
newSizeTotal += newAssetSizes.size;
newGzipSizeTotal += newAssetSizes.gzipSize ?? NaN;
if (!oldAssets.has(name)) {
added.push(getAssetDiff(name, { size: 0, gzipSize: 0 }, newAssetSizes));
}
}
const oldFilesCount = oldAssets.size;
const newFilesCount = newAssets.size;
return {
added: sortDiffDescending(added),
removed: sortDiffDescending(removed),
bigger: sortDiffDescending(bigger),
smaller: sortDiffDescending(smaller),
unchanged,
total: getAssetDiff(
oldFilesCount === newFilesCount
? `${newFilesCount}`
: `${oldFilesCount}${newFilesCount}`,
{ size: oldSizeTotal, gzipSize: oldGzipSizeTotal },
{ size: newSizeTotal, gzipSize: newGzipSizeTotal },
),
};
}
function getStatsDiff(oldStats, newStats) {
return webpackStatsDiff(
assetNameToSizeMap(oldStats),
assetNameToSizeMap(newStats),
);
}
function getChunkModuleDiff(oldStats, newStats) {
const diff = webpackStatsDiff(
chunkModuleNameToSizeMap(oldStats),
chunkModuleNameToSizeMap(newStats),
);
if (
diff.added.length === 0 &&
diff.removed.length === 0 &&
diff.bigger.length === 0 &&
diff.smaller.length === 0
) {
return null;
}
return diff;
}
const BYTES_PER_KILOBYTE = 1024;
const FILE_SIZE_DENOMINATIONS = [
'B',
'kB',
'MB',
'GB',
'TB',
'PB',
'EB',
'ZB',
'YB',
'BB',
];
function formatFileSizeIEC(bytes, precision = 2) {
if (bytes == null || Number.isNaN(bytes)) {
return 'N/A';
}
if (bytes === 0) {
return `0 ${FILE_SIZE_DENOMINATIONS[0]}`;
}
const absBytes = Math.abs(bytes);
const denominationIndex = Math.floor(
Math.log(absBytes) / Math.log(BYTES_PER_KILOBYTE),
);
const value = absBytes / Math.pow(BYTES_PER_KILOBYTE, denominationIndex);
const stripped = parseFloat(value.toFixed(precision));
return `${stripped} ${FILE_SIZE_DENOMINATIONS[denominationIndex]}`;
}
function conditionalPercentage(number) {
if (number === Infinity || number === -Infinity) {
return '-';
}
const absValue = Math.abs(number);
if (absValue === 0 || absValue === 100) {
return `${number}%`;
}
const value = Number.isFinite(absValue) ? absValue.toFixed(2) : absValue;
return `${signFor(number)}${value}%`;
}
function capitalize(text) {
if (!text) return '';
return `${text[0].toUpperCase()}${text.slice(1)}`;
}
function makeHeader(columns) {
const header = columns.join(' | ');
const separator = columns
.map(column =>
Array.from({ length: column.length })
.map(() => '-')
.join(''),
)
.join(' | ');
return `${header}\n${separator}`;
}
const TOTAL_HEADERS = makeHeader([
'Files count',
'Total bundle size',
'% Changed',
]);
const TABLE_HEADERS = makeHeader(['Asset', 'File Size', '% Changed']);
const CHUNK_TABLE_HEADERS = makeHeader(['File', 'Δ', 'Size']);
function signFor(num) {
if (num === 0) return '';
return num > 0 ? '+' : '-';
}
function toFileSizeDiff(oldSize, newSize, diff) {
const diffLine = [
`${formatFileSizeIEC(oldSize)}${formatFileSizeIEC(newSize)}`,
];
if (typeof diff !== 'undefined') {
diffLine.push(`(${signFor(diff)}${formatFileSizeIEC(diff)})`);
}
return diffLine.join(' ');
}
function toFileSizeDiffCell(asset) {
const lines = [];
if (asset.diff === 0) {
lines.push(formatFileSizeIEC(asset.new.size));
if (asset.new.gzipSize) {
lines.push(formatFileSizeIEC(asset.new.gzipSize));
}
} else {
lines.push(toFileSizeDiff(asset.old.size, asset.new.size, asset.diff));
if (asset.old.gzipSize || asset.new.gzipSize) {
lines.push(
`${toFileSizeDiff(asset.old.gzipSize, asset.new.gzipSize)} (gzip)`,
);
}
}
return lines.join('<br />');
}
function printAssetTableRow(asset) {
return [
asset.name,
toFileSizeDiffCell(asset),
conditionalPercentage(asset.diffPercentage),
].join(' | ');
}
function printAssetTablesByGroup(statsDiff) {
const statsFields = ['added', 'removed', 'bigger', 'smaller', 'unchanged'];
return statsFields
.map(field => {
const assets = statsDiff[field] ?? [];
if (assets.length === 0) {
return `**${capitalize(field)}**\nNo assets were ${field}`;
}
return `**${capitalize(field)}**\n${TABLE_HEADERS}\n${assets
.map(asset => printAssetTableRow(asset))
.join('\n')}`;
})
.join('\n\n');
}
function getDiffEmoji(diff) {
if (diff.diffPercentage === Infinity) return '🆕';
if (diff.diffPercentage <= -100) return '🔥';
if (diff.diffPercentage > 0) return '📈';
if (diff.diffPercentage < 0) return '📉';
return ' ';
}
function getTrimmedChunkName(chunkModule) {
const chunkName = chunkModule.name ?? '';
if (chunkName.startsWith('./')) {
return chunkName.substring(2);
}
if (chunkName.startsWith('/')) {
return chunkName.substring(1);
}
return chunkName;
}
function printChunkModuleRow(chunkModule) {
const emoji = getDiffEmoji(chunkModule);
const chunkName = getTrimmedChunkName(chunkModule);
const diffPart = `${chunkModule.diff >= 0 ? '+' : '-'}${formatFileSizeIEC(chunkModule.diff)}`;
const percentPart = Number.isFinite(chunkModule.diffPercentage)
? ` (${conditionalPercentage(chunkModule.diffPercentage)})`
: '';
return [
`\`${chunkName}\``,
`${emoji} ${diffPart}${percentPart}`,
`${formatFileSizeIEC(chunkModule.old.size)}${formatFileSizeIEC(chunkModule.new.size)}`,
].join(' | ');
}
function printChunkModulesTable(statsDiff) {
if (!statsDiff) {
return '';
}
const changedModules = [
...(statsDiff.added ?? []),
...(statsDiff.removed ?? []),
...(statsDiff.bigger ?? []),
...(statsDiff.smaller ?? []),
].sort((a, b) => b.diffPercentage - a.diffPercentage);
if (changedModules.length === 0) {
return `<details>\n<summary>Changeset</summary>\nNo files were changed\n</details>`;
}
const rows = changedModules
.slice(0, 100)
.map(chunkModule => printChunkModuleRow(chunkModule))
.join('\n');
const summarySuffix =
changedModules.length > 100 ? ' (largest 100 files by percent change)' : '';
return `<details>\n<summary>Changeset${summarySuffix}</summary>\n\n${CHUNK_TABLE_HEADERS}\n${rows}\n</details>`;
}
function printTotalAssetTable(statsDiff) {
return `**Total**\n${TOTAL_HEADERS}\n${printAssetTableRow(statsDiff.total)}`;
}
function renderSection(title, statsDiff, chunkModuleDiff) {
const { total, ...groups } = statsDiff;
const parts = [`#### ${title}`, '', printTotalAssetTable({ total })];
const chunkTable = printChunkModulesTable(chunkModuleDiff);
if (chunkTable) {
parts.push('', chunkTable);
}
parts.push(
'',
`<details>\n<summary>View detailed bundle breakdown</summary>\n<div>\n\n${printAssetTablesByGroup(
groups,
)}\n</div>\n</details>`,
);
return parts.join('\n');
}
async function main() {
const args = parseArgs(process.argv);
console.error(
`[bundle-stats] Found ${args.sections.length} sections to process`,
);
args.sections.forEach((section, index) => {
console.error(
`[bundle-stats] Section ${index + 1}: ${section.name} (base: ${section.basePath}, head: ${section.headPath})`,
);
});
const sections = [];
for (const section of args.sections) {
console.error(`[bundle-stats] Processing section: ${section.name}`);
console.error(
`[bundle-stats] Loading base stats from: ${section.basePath}`,
);
const baseStats = await loadStats(section.basePath);
console.error(
`[bundle-stats] Loading head stats from: ${section.headPath}`,
);
const headStats = await loadStats(section.headPath);
const statsDiff = getStatsDiff(baseStats, headStats);
const chunkDiff = getChunkModuleDiff(baseStats, headStats);
console.error(
`[bundle-stats] Section ${section.name}: ${statsDiff.total.name} files, total size ${statsDiff.total.old.size}${statsDiff.total.new.size}`,
);
sections.push({
name: section.name,
statsDiff,
chunkDiff,
});
}
const identifier = `<!--- bundlestats-action-comment key:${args.identifier} --->`;
const comment = [
'### Bundle Stats',
'',
sections
.map(section =>
renderSection(section.name, section.statsDiff, section.chunkDiff),
)
.join('\n\n---\n\n'),
'',
identifier,
'',
].join('\n');
process.stdout.write(comment);
}
main().catch(error => {
console.error(error);
process.exitCode = 1;
});

View File

@@ -0,0 +1,73 @@
#!/usr/bin/env node
// This script is used in GitHub Actions to get the next version based on the current package.json version.
// It supports three types of versioning: nightly, hotfix, and monthly.
import fs from 'node:fs';
import { parseArgs } from 'node:util';
// eslint-disable-next-line import/extensions
import { getNextVersion } from '../src/versions/get-next-package-version.js';
const args = process.argv;
const options = {
'package-json': {
type: 'string',
short: 'p',
},
type: {
type: 'string', // nightly, hotfix, monthly, auto
short: 't',
},
update: {
type: 'boolean',
short: 'u',
default: false,
},
};
const { values } = parseArgs({
args,
options,
allowPositionals: true,
});
if (!values['package-json']) {
console.error(
'Please specify the path to package.json using --package-json or -p option.',
);
process.exit(1);
}
try {
const packageJsonPath = values['package-json'];
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
const currentVersion = packageJson.version;
let newVersion;
try {
newVersion = getNextVersion({
currentVersion,
type: values.type,
currentDate: new Date(),
});
} catch (e) {
console.error(e.message);
process.exit(1);
}
process.stdout.write(newVersion);
if (values.update) {
packageJson.version = newVersion;
fs.writeFileSync(
packageJsonPath,
JSON.stringify(packageJson, null, 2) + '\n',
'utf8',
);
}
} catch (error) {
console.error('Error:', error.message);
process.exit(1);
}

View File

@@ -0,0 +1,151 @@
#!/usr/bin/env node
/**
* Updates (or creates) a bundle stats comment on a pull request.
* Requires the following environment variables to be set:
* - GITHUB_TOKEN
* - GITHUB_REPOSITORY (owner/repo)
* - PR_NUMBER
*/
import { readFile } from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import { Octokit } from '@octokit/rest';
function parseArgs(argv) {
const args = {
commentFile: null,
identifier: null,
};
for (let i = 2; i < argv.length; i += 2) {
const key = argv[i];
const value = argv[i + 1];
if (!key?.startsWith('--')) {
throw new Error(
`Unexpected argument “${key ?? ''}”. Use --key value pairs.`,
);
}
if (typeof value === 'undefined') {
throw new Error(`Missing value for argument “${key}”.`);
}
switch (key) {
case '--comment-file':
args.commentFile = value;
break;
case '--identifier':
args.identifier = value;
break;
default:
throw new Error(`Unknown argument “${key}”.`);
}
}
if (!args.commentFile) {
throw new Error('Missing required argument “--comment-file“.');
}
if (!args.identifier) {
throw new Error('Missing required argument “--identifier“.');
}
return args;
}
async function loadCommentBody(commentFile) {
const absolutePath = path.resolve(process.cwd(), commentFile);
return readFile(absolutePath, 'utf8');
}
function getRepoInfo() {
const repository = process.env.GITHUB_REPOSITORY;
if (!repository) {
throw new Error('GITHUB_REPOSITORY environment variable is required.');
}
const [owner, repo] = repository.split('/');
if (!owner || !repo) {
throw new Error(`Invalid GITHUB_REPOSITORY value “${repository}”.`);
}
return { owner, repo };
}
function getPullRequestNumber() {
const rawNumber = process.env.PR_NUMBER ?? '';
const prNumber = Number.parseInt(rawNumber, 10);
if (!Number.isInteger(prNumber) || prNumber <= 0) {
throw new Error(
'PR_NUMBER environment variable must be a positive integer.',
);
}
return prNumber;
}
function assertGitHubToken() {
const token = process.env.GITHUB_TOKEN;
if (!token) {
throw new Error('GITHUB_TOKEN environment variable is required.');
}
return token;
}
async function listComments(octokit, owner, repo, issueNumber) {
return octokit.paginate(octokit.rest.issues.listComments, {
owner,
repo,
issue_number: issueNumber,
per_page: 100,
});
}
function isGitHubActionsBot(comment) {
return comment.user?.login === 'github-actions[bot]';
}
async function main() {
const { commentFile, identifier } = parseArgs(process.argv);
const commentBody = await loadCommentBody(commentFile);
const token = assertGitHubToken();
const { owner, repo } = getRepoInfo();
const issueNumber = getPullRequestNumber();
const octokit = new Octokit({ auth: token });
const comments = await listComments(octokit, owner, repo, issueNumber);
const existingComment = comments.find(
comment =>
isGitHubActionsBot(comment) && comment.body?.includes(identifier),
);
if (existingComment) {
await octokit.rest.issues.updateComment({
owner,
repo,
comment_id: existingComment.id,
body: commentBody,
});
console.log('Updated existing bundle stats comment.');
} else {
await octokit.rest.issues.createComment({
owner,
repo,
issue_number: issueNumber,
body: commentBody,
});
console.log('Created new bundle stats comment.');
}
}
main().catch(error => {
console.error(error);
process.exitCode = 1;
});

View File

@@ -0,0 +1,11 @@
{
"name": "@actual-app/ci-actions",
"private": true,
"type": "module",
"devDependencies": {
"vitest": "^4.0.9"
},
"scripts": {
"test": "vitest --run"
}
}

View File

@@ -0,0 +1,72 @@
function parseVersion(version) {
const [y, m, p] = version.split('.');
return {
versionYear: parseInt(y, 10),
versionMonth: parseInt(m, 10),
versionHotfix: parseInt(p, 10),
};
}
function computeNextMonth(versionYear, versionMonth) {
// Create date and add 1 month
const versionDate = new Date(2000 + versionYear, versionMonth - 1, 1); // month is 0-indexed
const nextVersionMonthDate = new Date(
versionDate.getFullYear(),
versionDate.getMonth() + 1,
1,
);
// Format back to YY.M format
const fullYear = nextVersionMonthDate.getFullYear();
const nextVersionYear = fullYear.toString().slice(fullYear < 2100 ? -2 : -3);
const nextVersionMonth = nextVersionMonthDate.getMonth() + 1; // Convert back to 1-indexed
return { nextVersionYear, nextVersionMonth };
}
// Determine logical type from 'auto' based on the current date and version
function resolveType(type, currentDate, versionYear, versionMonth) {
if (type !== 'auto') return type;
const inPatchMonth =
currentDate.getFullYear() === 2000 + versionYear &&
currentDate.getMonth() + 1 === versionMonth;
if (inPatchMonth && currentDate.getDate() <= 25) return 'hotfix';
return 'monthly';
}
export function getNextVersion({
currentVersion,
type,
currentDate = new Date(),
}) {
const { versionYear, versionMonth, versionHotfix } =
parseVersion(currentVersion);
const { nextVersionYear, nextVersionMonth } = computeNextMonth(
versionYear,
versionMonth,
);
const resolvedType = resolveType(
type,
currentDate,
versionYear,
versionMonth,
);
// Format date stamp once for nightly
const currentDateString = currentDate
.toISOString()
.split('T')[0]
.replaceAll('-', '');
switch (resolvedType) {
case 'nightly':
return `${nextVersionYear}.${nextVersionMonth}.0-nightly.${currentDateString}`;
case 'hotfix':
return `${versionYear}.${versionMonth}.${versionHotfix + 1}`;
case 'monthly':
return `${nextVersionYear}.${nextVersionMonth}.0`;
default:
throw new Error(
'Invalid type specified. Use “auto”, “nightly”, “hotfix”, or “monthly”.',
);
}
}

View File

@@ -0,0 +1,85 @@
import { describe, it, expect } from 'vitest';
import { getNextVersion } from './get-next-package-version';
describe('getNextVersion (lib)', () => {
it('hotfix increments patch', () => {
expect(
getNextVersion({
currentVersion: '25.8.1',
type: 'hotfix',
currentDate: new Date('2025-08-10'),
}),
).toBe('25.8.2');
});
it('monthly advances month same year', () => {
expect(
getNextVersion({
currentVersion: '25.8.3',
type: 'monthly',
currentDate: new Date('2025-08-15'),
}),
).toBe('25.9.0');
});
it('monthly wraps year December -> January', () => {
expect(
getNextVersion({
currentVersion: '25.12.3',
type: 'monthly',
currentDate: new Date('2025-12-05'),
}),
).toBe('26.1.0');
});
it('nightly format with date stamp', () => {
expect(
getNextVersion({
currentVersion: '25.8.1',
type: 'nightly',
currentDate: new Date('2025-08-22'),
}),
).toBe('25.9.0-nightly.20250822');
});
it('auto before 25th -> hotfix', () => {
expect(
getNextVersion({
currentVersion: '25.8.4',
type: 'auto',
currentDate: new Date('2025-08-20'),
}),
).toBe('25.8.5');
});
it('auto after 25th (same month) -> monthly', () => {
expect(
getNextVersion({
currentVersion: '25.8.4',
type: 'auto',
currentDate: new Date('2025-08-27'),
}),
).toBe('25.9.0');
});
it('auto after 25th (next month) -> monthly', () => {
expect(
getNextVersion({
currentVersion: '25.8.4',
type: 'auto',
currentDate: new Date('2025-09-02'),
}),
).toBe('25.9.0');
});
it('invalid type throws', () => {
expect(() =>
getNextVersion({
currentVersion: '25.8.4',
type: 'unknown',
currentDate: new Date('2025-08-10'),
}),
).toThrow(/Invalid type/);
});
});

View File

@@ -0,0 +1,11 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
include: ['src/**/*.test.(js|jsx|ts|tsx)'],
environment: 'node',
maxWorkers: 1,
isolate: false,
},
});

View File

@@ -0,0 +1,58 @@
{
"name": "@actual-app/components",
"version": "0.0.1",
"license": "MIT",
"peerDependencies": {
"react": ">=18.2",
"react-dom": ">=18.2"
},
"dependencies": {
"@emotion/css": "^11.13.5",
"react-aria-components": "^1.13.0",
"usehooks-ts": "^3.1.1"
},
"devDependencies": {
"@svgr/cli": "^8.1.0",
"@types/react": "^19.2.5",
"react": "19.2.0",
"react-dom": "19.2.0",
"vitest": "^4.0.9"
},
"exports": {
"./hooks/*": "./src/hooks/*.ts",
"./icons/logo": "./src/icons/logo/index.ts",
"./icons/v0": "./src/icons/v0/index.ts",
"./icons/v1": "./src/icons/v1/index.ts",
"./icons/v2": "./src/icons/v2/index.ts",
"./icons/AnimatedLoading": "./src/icons/AnimatedLoading.tsx",
"./icons/Loading": "./src/icons/Loading.tsx",
"./aligned-text": "./src/AlignedText.tsx",
"./block": "./src/Block.tsx",
"./button": "./src/Button.tsx",
"./card": "./src/Card.tsx",
"./form-error": "./src/FormError.tsx",
"./initial-focus": "./src/InitialFocus.ts",
"./inline-field": "./src/InlineField.tsx",
"./input": "./src/Input.tsx",
"./label": "./src/Label.tsx",
"./menu": "./src/Menu.tsx",
"./paragraph": "./src/Paragraph.tsx",
"./popover": "./src/Popover.tsx",
"./select": "./src/Select.tsx",
"./space-between": "./src/SpaceBetween.tsx",
"./styles": "./src/styles.ts",
"./text": "./src/Text.tsx",
"./text-one-line": "./src/TextOneLine.tsx",
"./theme": "./src/theme.ts",
"./tokens": "./src/tokens.ts",
"./toggle": "./src/Toggle.tsx",
"./tooltip": "./src/Tooltip.tsx",
"./view": "./src/View.tsx",
"./color-picker": "./src/ColorPicker.tsx"
},
"scripts": {
"generate:icons": "rm src/icons/*/*.tsx; cd src/icons && svgr --template template.ts --index-template index-template.ts --typescript --expand-props start -d . .",
"test": "npm-run-all -cp 'test:*'",
"test:web": "ENV=web vitest --run -c vitest.web.config.ts"
}
}

View File

@@ -1,6 +1,4 @@
import { type ComponentProps, type ReactNode } from 'react';
import { type CSSProperties } from '../../style';
import { type ComponentProps, type ReactNode, type CSSProperties } from 'react';
import { Block } from './Block';
import { View } from './View';

View File

@@ -0,0 +1,17 @@
import { type HTMLProps, type Ref } from 'react';
import { css, cx } from '@emotion/css';
import { type CSSProperties } from './styles';
type BlockProps = HTMLProps<HTMLDivElement> & {
innerRef?: Ref<HTMLDivElement>;
style?: CSSProperties;
};
export function Block(props: BlockProps) {
const { className = '', style, innerRef, ...restProps } = props;
return (
<div {...restProps} ref={innerRef} className={cx(className, css(style))} />
);
}

View File

@@ -0,0 +1,235 @@
import React, {
forwardRef,
useMemo,
type ComponentPropsWithoutRef,
type ReactNode,
type CSSProperties,
} from 'react';
import { Button as ReactAriaButton } from 'react-aria-components';
import { css, cx } from '@emotion/css';
import { AnimatedLoading } from './icons/AnimatedLoading';
import { styles } from './styles';
import { theme } from './theme';
import { View } from './View';
const backgroundColor: {
[key in ButtonVariant | `${ButtonVariant}Disabled`]?: string;
} = {
normal: theme.buttonNormalBackground,
normalDisabled: theme.buttonNormalDisabledBackground,
primary: theme.buttonPrimaryBackground,
primaryDisabled: theme.buttonPrimaryDisabledBackground,
bare: theme.buttonBareBackground,
bareDisabled: theme.buttonBareDisabledBackground,
menu: theme.buttonMenuBackground,
menuSelected: theme.buttonMenuSelectedBackground,
};
const backgroundColorHover: Record<
ButtonVariant | `${ButtonVariant}Disabled`,
CSSProperties['backgroundColor']
> = {
normal: theme.buttonNormalBackgroundHover,
primary: theme.buttonPrimaryBackgroundHover,
bare: theme.buttonBareBackgroundHover,
menu: theme.buttonMenuBackgroundHover,
menuSelected: theme.buttonMenuSelectedBackgroundHover,
normalDisabled: 'transparent',
primaryDisabled: 'transparent',
bareDisabled: 'transparent',
menuDisabled: 'transparent',
menuSelectedDisabled: 'transparent',
};
const borderColor: {
[key in
| ButtonVariant
| `${ButtonVariant}Disabled`]?: CSSProperties['borderColor'];
} = {
normal: theme.buttonNormalBorder,
normalDisabled: theme.buttonNormalDisabledBorder,
primary: theme.buttonPrimaryBorder,
primaryDisabled: theme.buttonPrimaryDisabledBorder,
menu: theme.buttonMenuBorder,
menuSelected: theme.buttonMenuSelectedBorder,
};
const textColor: {
[key in ButtonVariant | `${ButtonVariant}Disabled`]?: CSSProperties['color'];
} = {
normal: theme.buttonNormalText,
normalDisabled: theme.buttonNormalDisabledText,
primary: theme.buttonPrimaryText,
primaryDisabled: theme.buttonPrimaryDisabledText,
bare: theme.buttonBareText,
bareDisabled: theme.buttonBareDisabledText,
menu: theme.buttonMenuText,
menuSelected: theme.buttonMenuSelectedText,
};
const textColorHover: {
[key in ButtonVariant]?: string;
} = {
normal: theme.buttonNormalTextHover,
primary: theme.buttonPrimaryTextHover,
bare: theme.buttonBareTextHover,
menu: theme.buttonMenuTextHover,
menuSelected: theme.buttonMenuSelectedTextHover,
};
const _getBorder = (
variant: ButtonVariant,
variantWithDisabled: keyof typeof borderColor,
): string => {
switch (variant) {
case 'bare':
return 'none';
default:
return '1px solid ' + borderColor[variantWithDisabled];
}
};
const _getPadding = (variant: ButtonVariant): string => {
switch (variant) {
case 'bare':
return '5px';
default:
return '5px 10px';
}
};
const _getHoveredStyles = (variant: ButtonVariant): CSSProperties => ({
...(variant !== 'bare' && styles.shadow),
backgroundColor: backgroundColorHover[variant],
color: textColorHover[variant],
cursor: 'pointer',
});
const _getActiveStyles = (
variant: ButtonVariant,
bounce: boolean,
): CSSProperties => {
switch (variant) {
case 'bare':
return { backgroundColor: theme.buttonBareBackgroundActive };
default:
return {
transform: bounce ? 'translateY(1px)' : undefined,
boxShadow: `0 1px 4px 0 ${
variant === 'primary'
? theme.buttonPrimaryShadow
: theme.buttonNormalShadow
}`,
transition: 'none',
};
}
};
type ButtonProps = ComponentPropsWithoutRef<typeof ReactAriaButton> & {
variant?: ButtonVariant;
bounce?: boolean;
children?: ReactNode;
};
type ButtonVariant = 'normal' | 'primary' | 'bare' | 'menu' | 'menuSelected';
export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
(props, ref) => {
const { children, variant = 'normal', bounce = true, ...restProps } = props;
const variantWithDisabled: ButtonVariant | `${ButtonVariant}Disabled` =
props.isDisabled ? `${variant}Disabled` : variant;
const defaultButtonClassName: string = useMemo(
() =>
css({
alignItems: 'center',
justifyContent: 'center',
flexShrink: 0,
padding: _getPadding(variant),
margin: 0,
overflow: 'hidden',
display: 'flex',
borderRadius: 4,
backgroundColor: backgroundColor[variantWithDisabled],
border: _getBorder(variant, variantWithDisabled),
color: textColor[variantWithDisabled],
transition: 'box-shadow .25s',
WebkitAppRegion: 'no-drag',
...styles.smallText,
'&[data-hovered]': _getHoveredStyles(variant),
'&[data-pressed]': _getActiveStyles(variant, bounce),
}),
[bounce, variant, variantWithDisabled],
);
const className = restProps.className;
return (
<ReactAriaButton
ref={ref}
{...restProps}
className={
typeof className === 'function'
? renderProps => cx(defaultButtonClassName, className(renderProps))
: cx(defaultButtonClassName, className)
}
>
{children}
</ReactAriaButton>
);
},
);
Button.displayName = 'Button';
type ButtonWithLoadingProps = ButtonProps & {
isLoading?: boolean;
};
export const ButtonWithLoading = forwardRef<
HTMLButtonElement,
ButtonWithLoadingProps
>((props, ref) => {
const { isLoading, children, style, ...buttonProps } = props;
return (
<Button
{...buttonProps}
ref={ref}
style={buttonRenderProps => ({
position: 'relative',
...(typeof style === 'function' ? style(buttonRenderProps) : style),
})}
>
{isLoading && (
<View
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
alignItems: 'center',
justifyContent: 'center',
}}
>
<AnimatedLoading style={{ width: 20, height: 20 }} />
</View>
)}
<View
style={{
opacity: isLoading ? 0 : 1,
flexDirection: 'row',
alignItems: 'center',
}}
>
{children}
</View>
</Button>
);
});
ButtonWithLoading.displayName = 'ButtonWithLoading';

View File

@@ -1,7 +1,6 @@
import { type ComponentProps, forwardRef } from 'react';
import { theme } from '../../style';
import { theme } from './theme';
import { View } from './View';
type CardProps = ComponentProps<typeof View>;

View File

@@ -0,0 +1,180 @@
import { ChangeEvent, ReactNode } from 'react';
import {
ColorPicker as AriaColorPicker,
ColorPickerProps as AriaColorPickerProps,
Dialog,
DialogTrigger,
ColorSwatch as AriaColorSwatch,
ColorSwatchProps,
ColorSwatchPicker as AriaColorSwatchPicker,
ColorSwatchPickerItem,
ColorField,
parseColor,
} from 'react-aria-components';
import { css } from '@emotion/css';
import { Input } from './Input';
import { Popover } from './Popover';
function ColorSwatch(props: ColorSwatchProps) {
return (
<AriaColorSwatch
{...props}
style={({ color }) => ({
background: color.toString('hex'),
width: '32px',
height: '32px',
borderRadius: '4px',
boxShadow: 'inset 0 0 0 1px rgba(0, 0, 0, 0.1)',
})}
/>
);
}
// colors from https://materialui.co/colors
const DEFAULT_COLOR_SET = [
'#690CB0',
'#D32F2F',
'#C2185B',
'#7B1FA2',
'#512DA8',
'#303F9F',
'#1976D2',
'#0288D1',
'#0097A7',
'#00796B',
'#388E3C',
'#689F38',
'#AFB42B',
'#FBC02D',
'#FFA000',
'#F57C00',
'#E64A19',
'#5D4037',
'#616161',
'#455A64',
];
interface ColorSwatchPickerProps {
columns?: number;
colorset?: string[];
}
function ColorSwatchPicker({
columns = 5,
colorset = DEFAULT_COLOR_SET,
}: ColorSwatchPickerProps) {
const pickers = [];
for (let l = 0; l < colorset.length / columns; l++) {
const pickerItems = [];
for (let c = 0; c < columns; c++) {
const color = colorset[columns * l + c];
if (!color) {
break;
}
pickerItems.push(
<ColorSwatchPickerItem
key={color}
color={color}
className={css({
position: 'relative',
outline: 'none',
borderRadius: '4px',
width: 'fit-content',
forcedColorAdjust: 'none',
cursor: 'pointer',
'&[data-selected]::after': {
// eslint-disable-next-line actual/typography
content: '""',
position: 'absolute',
inset: 0,
border: '2px solid black',
outline: '2px solid white',
outlineOffset: '-4px',
borderRadius: 'inherit',
},
})}
>
<ColorSwatch />
</ColorSwatchPickerItem>,
);
}
pickers.push(
<AriaColorSwatchPicker
key={`colorset-${l}`}
style={{
display: 'flex',
gap: '8px',
flexWrap: 'wrap',
}}
>
{pickerItems}
</AriaColorSwatchPicker>,
);
}
return pickers;
}
const isColor = (value: string) => /^#[0-9a-fA-F]{6}$/.test(value);
interface ColorPickerProps extends AriaColorPickerProps {
children?: ReactNode;
columns?: number;
colorset?: string[];
}
export function ColorPicker({
children,
columns,
colorset,
...props
}: ColorPickerProps) {
const onInput = (value: string) => {
if (!isColor(value)) {
return;
}
const color = parseColor(value);
if (color) {
props.onChange?.(color);
}
};
return (
<AriaColorPicker defaultValue={props.defaultValue ?? '#690CB0'} {...props}>
<DialogTrigger>
{children}
<Popover>
<Dialog
style={{
outline: 'none',
padding: '15px',
display: 'flex',
flexDirection: 'column',
gap: '8px',
minWidth: '192px',
maxHeight: 'inherit',
boxSizing: 'border-box',
overflow: 'auto',
}}
>
<ColorSwatchPicker columns={columns} colorset={colorset} />
<ColorField
onInput={({ target: { value } }: ChangeEvent<HTMLInputElement>) =>
onInput(value)
}
>
<Input placeholder="#RRGGBB" style={{ width: '100px' }} />
</ColorField>
</Dialog>
</Popover>
</DialogTrigger>
</AriaColorPicker>
);
}

View File

@@ -0,0 +1,14 @@
import { type ReactNode, type CSSProperties } from 'react';
import { View } from './View';
type FormErrorProps = {
style?: CSSProperties;
children?: ReactNode;
};
export function FormError({ style, children }: FormErrorProps) {
return (
<View style={{ color: 'red', fontSize: 13, ...style }}>{children}</View>
);
}

Some files were not shown because too many files have changed in this diff Show More