* 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
* 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>
* 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
* 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>
* 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>
* update flatpak sdk and platform
* release notes
* flatpak version config
* going to 24.08 to support as many distros as possible
* remove unneded file
* 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>
* 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
* 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
* 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>
* 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.
* 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>
* 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
* 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
* 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>
* 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>
* 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>
* 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
* 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
* 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>
* 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
* 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
* 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
* 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.
- 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.
* 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>
* 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>
* 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>
* 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
* 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
* 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>
* 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>
* 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
* 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>
* 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
* 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>
* 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
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>
* 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>
* 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>
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`
* 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.
* 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
* 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>
* 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>
* 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>
* 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>
* 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
* 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>
* 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>
* 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>
* 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.
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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
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>
* 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>
* 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
* 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
* 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>
* 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
* 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>
* 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>
* Update gocardless-service.js
* Allow account selection during requisition based on institution support
* lint
* note
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* 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>
* 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
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* 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>
* 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>
* 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>
* 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
* 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>
* 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>
* 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
* 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
* 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
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
* 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>
* 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>
* 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>
* 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
* 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>
* 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>
* 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>
* 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
* 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
* 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>
* 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>
* 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
* Use dvh to determine height of modal based on dynamic visual viewport
* Apply to dialog instead of another div
* Remove modal transition
* Release notes
* [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
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.
@@ -23,8 +22,6 @@ body:
options:
- label:'I have searched and found no existing issue'
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 you’re 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'
<!-- 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. -->
// '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');
awaitoctokit.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);
'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,
});
constoptions={
hostname:'api.openai.com',
path:'/v1/chat/completions',
method:'POST',
headers:{
Authorization:`Bearer ${openaiApiKey}`,
'Content-Type':'application/json',
},
};
constreq=https.request(options,res=>{
letresponseData='';
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{
constresponse=JSON.parse(responseData);
console.log('OpenAI raw response:',JSON.stringify(response,null,2));
'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,
});
constoptions={
hostname:'api.openai.com',
path:'/v1/chat/completions',
method:'POST',
headers:{
Authorization:`Bearer ${openaiApiKey}`,
'Content-Type':'application/json',
},
};
constreq=https.request(options,res=>{
letresponseData='';
res.on('data',chunk=>(responseData+=chunk));
res.on('end',()=>{
if(res.statusCode!==200){
console.log(`OpenAI API error: ${res.statusCode}${res.statusMessage}`);
:sparkles: Thanks for sharing your idea! :sparkles:
This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesn’t mean we don’t 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+
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.'
# 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.
- **Community Docs**: https://github.com/actualbudget/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
- **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
@@ -66,7 +66,11 @@ 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).
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).
'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`.',
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.