* Fix menuItemTextHeader contrast in dark mode
* release note
* darken menu background and change accent colour to purple in dark theme
* change menu keybind accept colour to purple in midnight theme
* update release note
* fix menuBorder colour
* Add To Be Budgeted category to cover and transfer modal
* Release notes
* Fix To Be Budgeted input selection
* Fix typecheck error
* Fix duplicate modals in firefox
* Fix lint error
* Add UI test for validating that split transaction rules work as expected
* Apply suggestions from code review
Renames split-transactions-add to add-split-transactions
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* Define id for finding splitactions on the page wher its used
---------
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* add flatpack to electron build
* note
* add to workflow
* try to fix workflow
* typos
* workflow
* work
* update
* add repo
* update other electron workflow
* stable doesn't work
* fix version
* Mobile collapsible budget groups
* Release notes
* VRT updates
* No tap highlight when clicking collapse/uncollapse button
* Income group no tap highlight
* No highlight on hover
* Dim categories hidden by their groups
* Dim hidden cats on mobile view
* Do not show hide/show menu on mobile for categories in hidden groups
* Rename catGroup to categoryGroup
* Fix lint issue
* Hide menu line
* Pass in categoryGroup instead of isHidden
* avoid need for extra local
* fix lint issues
* Do not allow hiding income category group
* add release note
* rename file
* Migrate DB so income groups are not hidden
* Update migration to explicitly match on is_income = 1
* Use desktop colors for mobile autocomplete modals
* Release notes
* Color updates
* Color updates
* Update close button
* Fix typecheck
* Rename to ModalCloseButton
* Update ModalTitle
* added green700 (g3) to highlight text in PayeeAutocomplete and CategoryAutocomplete
* added upcoming release note doc for Isuee 2488
* modified background and text to meet WCAG AA compliance for contrast
* updated code for autocomplete highlight on menu items
* fixed linting errors and renamed release note
* updated release note category from 'bug' to 'bugfix'
* fixing the light theme
---------
Co-authored-by: Jenn Cox <jenncox@Jenns-MacBook-Air.local>
* add group enhancement
* warnings
* note
* add more group functions
* add Global: to differentiate warning from group warnings
* weights not properly recorded for sinking groups, safeNumber error
* modify exiting LineGraph to track budget items over time
* linter pass 1
* increase line weight, add sorting and colour to tooltip
* second lint pass
* add release note
* use new disabledLists, format tooltip, other nits from review
* add margins to LineGraph
* adding missed linting
* remove new line icon, add disable options for split, legend, label
* Update ReportTopbar.jsx
Remove unneeded lines
* lint fix
* SVGChart
---------
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
All banks are supposed to provide at least 90 days of access.
As of July 2023 EEA banks are required to allow access for up to 180
days[0], but this does not apply to UK banks, and apparently there might
still be EEA banks which don't comply with the new regulations.
We should consider eventually defaulting to 180 days and allowing
per-bank and maybe per-country overrides, but bumping it to 90 days
immediately provides a better user experience.
[0]: https://nordigen.zendesk.com/hc/en-gb/articles/13239212055581-EEA-180-day-access
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* sort of working
* fix null condition, move buttons up
* visual and workflow updates
* update colors on hover
* release note
* fix another condition that inserted null
* when custom reports were cold-reloaded, the selections would be null crashing the page
* add release notes for PR
* fix typo in release note file name
* cleanup: Move account sync indicators to the left on mobile
* cleanup: account sync indicators on mobile should show pending/failed syncs
* feature: show account sync indicator when viewing account on mobile
* fix lint issues
* add release note
* Fix flaky transfer e2e test
- If tests ran too fast, the transactions wouldn't finish rendering
before the select of the transactions was attempted.
* Add release note
* Fix mobile UX, issue #2079
* upcoming-release-notes
* Fix navigation bar buttons not fully displayed
* pill size changed, exported nav bar height
* Edit navigation bar const
Edit nav bar pill color
* Removed export
* Fixes release notes
* Fixed formatting
* Fix mobile UX, issue #2079
* upcoming-release-notes
* Fix navigation bar buttons not fully displayed
* pill size changed, exported nav bar height
* Edit navigation bar const
Edit nav bar pill color
* Removed export
* Fixes release notes
* Fixed formatting
* Test schedules and mobile images created
* Reverted schedules checks test images
* add log messages to schedule templates
* log the included schedules
* more log output
* use a negate filter for sinking funds
* carve out a top out exception if no sinking funds
* note
* Adds option to make a transfer from two selected transactions
- Transactions amount must match
- Transactions must be from different accounts
- Split transactions not eligible
* Add plugin for offline PWA support
* Add release notes
* Attempt to fix kcab fetch issue
* Fix type errors
* Cache more file types
* Empty commit to try to bump action
* Attempt to fix fonts
* Add split creation UI to rule creation modal
* Support applying splits when rules execute
* fix: deserialize transaction before running rules
According to how rules are run in other places in the app, we should be
supplying a "deserialized" (i.e., integer-for-amount and ISO date)
transaction rather than a "serialized" (amount-plus-formatted-date) one.
This fixes a crash in how split transactions are applied, as well as
date-based rules not applying correctly previously (any rule with a date
condition would never match on mobile).
* Add release notes
* Fix missing types pulled in from master
* PR feedback: use `getActions`
* PR feedback: use `flatMap`
* Fix action deletion
* Don't flicker upon split deletion
* Let users specify parent transaction actions (e.g. linking schedules)
* Support empty splits
* Revert adding `no-op` action type
* Support splits by percent
* Fix types
* Fix crash on transactions page when posting a transaction
The crash would probably have occurred in other places too with
auto-posting schedules :/
* Fix a bug where schedules wouldn't be marked as completed
This was because the query that we previously used didn't select parent
transactions, so no transaction was marked as being scheduled (since
only parent transactions have schedule IDs).
* Add feature flag
* Limit set actions within splits to fewer fields
* Fix merge conflict
* Don't run split rules if feature is disabled
* Fix percent-based splits not applying
* Fix crash when editing parent transaction amount
* Auto-format
* Attempt to fix failing tests
* More test/bug fixes
* Add an extra split at the end if there is a remaining amount
* Make sure split has correct values for dynamic remainder
* Remove extraneous console.log
* feat: Don't allow duplicate cat-groups in budget
* Add release notes
* fix: error message
* pass group instead of name for accurate error message
* improve error message
* Some initial UI work for adding SimpleFin.
* SimpleFin proof of concept working.
* Adds linking & unlinking to existing accounts through the account menu UI.
* Added loading and lint fixes.
* Lint changes.
* Added release notes.
* Typecheck cleanup.
* Import, lint, typecheck cleanups.
* More typecheck cleanup.
* Refactored language for consistency.
* Added default institution name.
* Lint cleanup.
* Addressed change requests.
* Added a default to migration, made variables consistent, added feature flag.
* Added account_sync_source to server schema.
* Adds account_sync_source to test.
* Fix for typecheck.
* Attempt to make typecheck happy.
* Added strict ignore.
* Moved account_sync_source to the right model (face palm).
* Hotfix for institution format.
* Lint cleanup.
* Removed unnecessary promise.all.
* Lint cleanup.
* Bundle loot-core types into the API
So we can have loot-core be the source of truth
for some types that get passed through
- Improves downstream development with API by including types
- Use path aliases for dist vs dev tsconfigs
- Convert api index to typescript as example
- Permit ts-ignore for issues with our version of typescript
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Restore ability to use console.log in vite
- Swap our swc plugin to remove-react-properties
- Configure remove-react-properties to preserve our testids
* Change the vite chunk filename hash usage
- Change to more closely match the . syntax we use with webpack
- This should fix some issues with our size compare as well
* Account for chunks being base64
* Allow case insensitive ynab5 import for special 'starting balance' payee
* set upcoming release number to related github issue
* extract string comparison into separate function
and reuse when checking starting balance/s on ynab4 import
* make all category group checks case insensitive
when importing from ynab5 to make the check strategy consistent when importing from ynab5
* extract findById into sreusable function
to 'simplify' usage
* Add null check
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
---------
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* Proof of concept for switching desktop-client to vite
* Fix other packages ts tests issues
* Update jsx tests to use vitest instead of jest
* Inject our global shims properly
* Add comment regarding new plugin
* Cleanup unnessary change after rebase
* Fix inter fonts pathing
* Remove manual chunks sizes for now
Just set the limit higher
* Bring back size compare
* Suppress victory warnings
* Remove craco config now that it's not used
* Add vite basic ssl plugin
- This autogenerates self-signed certs in dev mode when HTTPS env is set
- Made to match the CRA behaviour
* Add release note
* Remove warning suppression for victory
- Updated to a rollup version that includes the fix
* Add proper types to runHandler
- Args and return values from runHandler should now work within loot core
- Updated some of the handler types to be more accurate
* Request active edit on focus
* Release notes
* Track previous focus state
* use inputRef to focus
* Focus total amount effect
* Run active edit action synchronously
* Revert unneeded changes
* Run cleanup synchronously
* Cleanup
* runAction
* Space
* Negate schedule amount to budget if income
* Release notes
* Determine sign at initial calc
To ensure no unintended impact to remainder calcs etc.
* Lint fixes
* Add "end" field with date/count options
* Use "end" field to generate schedule
* Show "end" field in recurring description
* Disable weekend before/after picker when not enabled
* Add release notes
* Fix failing typechecks
* Add some description tests
* PR feedback
* 'Features', not 'Feature'
* Fix goal templates infinite loop
* Empty commit to bump ci
* Fix bug where schedule templates in the past would apply incorrectly
For example, if you had a schedule which started in November 2023 for
1.00, and you applied the schedule in October 2023, then you would end
up with a value of 0.50 applied in October.
* Fix handling of schedules with an end date
This commit also includes a refactor of the skip-weekend logic: rather
than referring only to dates with skipped weekends (which requires
checking whether the "next date" request worked correctly), we track a
"base date" which is the previous value of the schedule according to the
rrule, excluding any weekend-skipping. This lets us use `addDays(baseDate, 1)`
to get the next occurrence, regardless of the weekend behaviour.
Doing things this way ensures that the loop will always make progress.
* Only compute skipped weekend if weekend skips were requested
* Fix typo in iterate-schedule-occurrences code
We should be using `nextBaseDate` to derive the next base date, not
`nextDate`; this is because we want the base date to be guaranteed to
make progress in each loop iteration, so we can finish in at most 30
iterations without duplicate base dates.
* Use const
* Revert const -> let for one mutable variable
* Use Page component for mobile pages
* Release notes
* Use Button instead of Link in MobileBackButton
* Update mobile budget table to use Page component
* Settings page cleanup
* Fix lint error
* Updates + small font size increase in page headings
* Fix rebase error
* Button height
* Revert payees navtab
* Fix failure to create category with deleted name
I'm not 100% familiar with the design of the data model so may have
misinterpreted what's going on here, but how I read this:
- The tombstone flag is used to soft delete categories.
- When creating a new category, duplicate names within a group are
prevented.
- When checking for duplicate names, the tombstone flag was unchecked
which meant deleted categories were falsely blocking creation.
I had a look at category deleteion logic to verify that simply including
the tombstone flag in this check is sane and see that there's a category
mapping being maintained to redirect one category to another on
deletion. So from what I can tell the correct behaviour here is to allow
a new category with the previously deleted name, rather than to revive
the old category (to preserve that old mapping lineage).
* Add release note
* Add regression test
* Remove author from electron package.json
* Don't allow dupes in cat names (per group)
* Release Notes
* Handle reorders and moves
* Fix linter warnings
* Fix typecheck
* Show the name of the duplicate category
* missed func call
* Upper case before compare
* lint fixes
---------
Co-authored-by: Shazib Hussain <contact@shazib.com>
* Mobile Color Consistency
* VRT updates
* color updates
* notes
* Sync Text
* Adjust header font smaller
* color and format adjustments
* tidying header buttons
* color and button adjustments
* Header Text color
* VRT updates
* back button changes
* VRT changes
* adjust buttons
* lint fix
* darkTheme header background
* VRT updates
* VRT updates
* added sankey plot
* fix sankey
* formatting
* formatting
* lint
* reduce margin
* experimental flag
* update location of recharts install
* truncate tooltip
* add titles to node and sizing
* better filtering
* comments, types, and check if data exists
* don't log
* clean up extra views
* responsive container, and fix label in graph
* change back
* fix bug and font
* static tooltip
* update overview to fit both sankey and category spending
* overview sankey
* increase iterations, fix right text, and release notes
* remove is out
* lint
* fix tooltip space
* fix margins
* format and efficient sql payees query
* restructure category sum value
* add tooltip names...again
* conditionally use container
* use useCategories
* first pass at progress bar
* db migration / enter goal in db
* add getGoal function
* stabilize
* whoops
* TS
* reset goal in db if no template found
* reconfirm
* release note
* typo
* rename migration
* to ms
* move priority logic, consistent variable names,
* fixup
* clear goal if template removed
* Visual goals (#40)
* 🔥 removing privacyMode feature flag (#1688)
* 🎨 fix multiline label in schedules modal (#1687)
* Update Visual Regression README File (#1689)
* Fix typo in GoCardlessLink.js (#1684)
happend -> happened
* queried cleared balance for tooltip (#1678)
* Dark Theme Reports/Settings (#1512)
* 🐛 Mobile account transaction list: Fix sticky date section headers (#1698)
* 👷 do not cancel github ci jobs on master branch (#1692)
* Sidebar Account Fix (#1703)
* Dark Theme Final (#1513)
* Category autocomplete should only search selectable categories (#1681)
* set colors based on a goal value
* extra comment
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
* update release note
* lint
* use null as cleared state
* show goal status via colors (#41)
* cleanup
* I think its working
* lint
* fix report budget, by adding in the goal coloring
* fix the error by adding colors to the report side (#42)
* [refactor] Migrate Schedules Table to typescript (#1691)
* 🔧 removing unnecessary manual module resolution (#1707)
* 🐛 (mobile) scrolling in lists with pull-to-refresh (#1706)
* 💄 (mobile) updating apple home-screen icon (#1705)
* Enhance Y-Axis Scaling on Net Worth Graph (#1709)
* fix report budget, by adding in the goal coloring
---------
Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
* report budget database updates
* Goal progress bar (#1734)
* first pass at progress bar
* db migration / enter goal in db
* add getGoal function
* stabilize
* whoops
* TS
* reset goal in db if no template found
* reconfirm
* release note
* typo
* rename migration
* to ms
* move priority logic, consistent variable names,
* fixup
* clear goal if template removed
* Visual goals (#40)
* 🔥 removing privacyMode feature flag (#1688)
* 🎨 fix multiline label in schedules modal (#1687)
* Update Visual Regression README File (#1689)
* Fix typo in GoCardlessLink.js (#1684)
happend -> happened
* queried cleared balance for tooltip (#1678)
* Dark Theme Reports/Settings (#1512)
* 🐛 Mobile account transaction list: Fix sticky date section headers (#1698)
* 👷 do not cancel github ci jobs on master branch (#1692)
* Sidebar Account Fix (#1703)
* Dark Theme Final (#1513)
* Category autocomplete should only search selectable categories (#1681)
* set colors based on a goal value
* extra comment
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
* update release note
* lint
* use null as cleared state
* show goal status via colors (#41)
* cleanup
* I think its working
* lint
* fix the error by adding colors to the report side (#42)
* [refactor] Migrate Schedules Table to typescript (#1691)
* 🔧 removing unnecessary manual module resolution (#1707)
* 🐛 (mobile) scrolling in lists with pull-to-refresh (#1706)
* 💄 (mobile) updating apple home-screen icon (#1705)
* Enhance Y-Axis Scaling on Net Worth Graph (#1709)
* fix report budget, by adding in the goal coloring
---------
Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
* report budget database updates
* Fix schedule searchbar (#1729)
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
* working dynamic colors. Need to figure out what changes are actually needed
* cleanup
* more cleanup
* lint
* reset the goal when applying a single template
* make getCategory function
* remove some unneeded changes
* actually remove the changes, not just comment
* cleanup some unneeded code that was causing some bugs. Works for me, but should be vetted more
* lint
* add json definitions to database
* use template feature flag to enable colors
* some fixes
* don't set goals for remainders, remove unneeded change
* lint
* release note
* lint again
* fix mobile crash
* undo changes in CellValue.tsx
* lint
* use getStyle
* move status calc to helper
* lint
* recommendations
* suggestion
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
---------
Co-authored-by: shall0pass <20625555+shall0pass@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Crazypkr1099 <nicholas.lacasse430@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Shaan Khosla <35707672+shaankhosla@users.noreply.github.com>
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
Co-authored-by: Mohamed Muhsin <62111075+muhsinkamil@users.noreply.github.com>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* Inline mobile category and group edit
* Release notes
* Allow one edit at any time
* Mobile: long press to edit category/group
* Mobile: set userSelect: 'none'
* Move getLongPressEvents
* Add role to prevent tap-to-search
* Add role to text
* Prevent default on longpress
* Add tabIndex to disable tap-to-search
* Add back userSelect
* Role updates
* Remove userSelect
* Revert long press category name
* Remove unused import
* Fix lint error
* Edit mode
* Do not allow to start an edit when another field is currenty being edited
* Fix blur event not firing
* Grey out zero spent or balance values
* VRT update
* Fix budget cell being zero on click
* Delete useLongPress
* Hide mobile nav tabs on scroll
* Release notes
* Reduced navbar bottom padding
* Make hide transition a bit faster
* Update scroll defaults
* VRT snapshots
* Fix: safari scroll bounce effect disrupting the show/hide of bottom nav
* Update release notes
* No tap highlight on MobileNavTabs
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* More mobile functionalities
* Cleanup
* Remove close button on mobile budget summary modal
* Release notes
* Close mobile inputs on enter
* Fix mobile budget row header color
* Fix income group hidden
* Add validation + close button on category tooltip
* Add mobile budget visual cues
* More mobile visual cues
* Error message fix
* Update blank category name behavior
* Cleanup
* Cleanup
* Fix mobile group deletion and category tooltip behavior
* Zero sign for AmountInput
* VRT snapshot updates
* Handle null values in must-category-transfer
* fix percent goals in the same priority level not compounding but overwritting
* release note
* don't show hidden groups on mobile view
* cleanup
* cleanup2
* cleanup3
* release note
* desktopc-client swc-loader
* More swc
* Jest swc + upgrades
* Revert @swc/jest usage for now
* SWC minify
* Remove setupFilesAfterEnv in package.json as per warning message in CI
* Release notes
* Minify on CI
* swc helpers in loot-core
* @swc/jest
* Upgrade webpack
* Add @swc/core to crdt
* Use yarn cache in github actions
* Cleanup
* Fix electron
* Revert "Fix electron"
This reverts commit 787af1980648fa30788a1d1678dcda534716f31d.
* Revert action.yml cache changes
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Previously we would default to only show transfer payees in the payee
selection dropdown for child transactions. This is confusing and there
doesn't seem to be any obvious reason for this, so this commit removes
that behavior.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* Added clear transactions on import option
* Added release note
* Added cleared column to csv export
* fixed Manually entered split transactions are not cleared on import
* Revert "Added cleared column to csv export"
This reverts commit 2952bc3e7d.
* added release note
* Copied same code to Gocardless
* Updated var name
* Updated to only query changed transactions instead of all
Most banks allow up to 90 days of transactions, and so we try to fetch
up to 90 days of transactions or transactions since the first
transaction in the Actual account, whichever is shortest. This lets
users get a clean start based on their selected starting balances date.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* allow schedules to skip weekends
* wording
* release note
* skip weekend in upcoming dates as well
* Clean UI
* Move switch to the date selection modal
Because different banks use the date fields in vastly different ways we
now let the server's bank integrations decide which date we should use.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* 🐛 (reports) fix incorrect cashflow balance
Fixing a small typo here where multiple transfers across different payees on the same day fail to be summed up resulting in significant balance errors.
* release notes
* Update 1518.md
* Fix re-rendering all rows on hover
* release note
* Removing isHover logic in place of css :hover
---------
Co-authored-by: biohzrddd <10577752+biohzrddd@users.noreply.github.com>
This breaks fetching transactions where the valueDate is in the future.
While the GoCardless documentation says this should never happen, it's
what happens with at least Bank Norwegian due to them using the interest
date as valueDate. (C.f. #1392)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* Set `role="button"` on downshift autocomplete items
This avoids content observation behavior in WebKit on touch devices that delays the onClick event (and therefore reaction to user input).
* Disable split transaction editing for now
The 'interval' value from the schedules is not set if the schedule is
monthly. This change will check for a valid number for the interval
value and if it does not exist will default to 1 (monthly).
References discord discussion starting here:
https://discord.com/channels/937901803608096828/940290142579605514/1133523705063030824
Currently the schedule keyword won't fill any future budget cells if the
category balance already satisfies the schedule. This PR is an attempt
to improve the behavior by allowing budget fills regardless of the
category balance.
This is a drastic rewrite of the schedule keyword. Though I've tried not
to have any regressions, it is possible because of how different the
logic is. I've tested compounding using a simple template, so a small
change in the 'by' keyword was also made.
This PR has no functional changes. Only types are changing and getting
improved (more stricter).
A follow-up PR will come next that does a few functional changes to make
this package fully strict.
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
Updating other menus to sentence case so that it is consistent with the
other menus throughout the app
The current link in the README directs to a github page that has a link
to the documentation page on how to write release notes. I've updated
the link here to just go straight to the documenation page on how to
write good release notes.
Eye.js is currently set to a static color (black). This PR allows you to
change the color of the icon with the style element - mimicing all other
icons in Actual.
Includes a few typographical improvements I PR’d.
(since the workflow is a `pull_request_target` one, the changes won’t
show up in the comments till this PR is merged)
Closes#1415
Fix number formatter not listening to state changes. This is not a fully
comprehensive solution. We will need to run a migration campaign to port
over from direct usage of `format` util to `useFormat`, but this is a
first step that solves the most glaring issue.
This is a more elegant way of implementing a month ahead version of the
percent goals. To use it add the `previous` flag to the percent goal, ex
`#template 10% of previous Paycheck`.
Reverts actualbudget/actual#1204
Closes https://github.com/actualbudget/actual/issues/1293
This is way more complicated than originally anticipated. Reverting the
change to fix the prod build. Someone can work on re-introducing this in
a later build, but we need to be sure it doesn't break once more.
There's no new code here, just a reorg. Had to change some import calls
in some files to make it all work properly.
Having just done a lot of work in the accounts directory I figured it
could do with some organization. I've broken out all the Header
functions into a different file in order to cut down on the size of the
account.js file.
I also moved the transactions files into a new directory since they are
used by other pages. Also makes them easier to find with this structure.
This PR adds types to the `crdt` directory to make the structure of the
merkle tree (really a merkle radix trie) clearer.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Bringing back asset caching. This means we won't need to do a full
re-build for every change.
I had previously disabled caching because the backend changes (kcab)
were not picked up properly. But now that should be fixed too.
- Remove unused CSS files
- Set up the `.wasm` files to be automatically copied in
- `sql-wasm-debug.wasm` is removed entirely since we never use the
debug/dev build of sql.js. This reduces the app download size by 1MB on
the server side. It may be worth enabling the debug build automatically
in the future?
I noticed that:
- The web and electron versions of our `uuid` module both looked exactly
the same…
- …and deferred to the `uuid` package…
- …and the async version just called the sync API.
So now we will just use the `uuid` package directly everywhere.
This PR moves the size comparison action back to a separate workflow
which now uses the `pull_request_target` event. This event is triggered
at all the same times as the `pull_request` action, except that the
workflow file content comes from the target branch of the PR, and it is
run in the context of the repo owning the target branch. Practically,
this means that it will still have access to post a comment even if the
PR comes from a fork.
We don’t want the build actions to be run in a `pull_request_target`
workflow because they would get access to the secrets and be able to
perform arbitrary actions on the repository, even from fork PRs.
See the current version failing here:
https://github.com/actualbudget/actual/actions/runs/5395184895/jobs/9797388016?pr=1122
This significantly speeds up `yarn lint` for me. It also ensures we’re
listing all source files in the project, including the `.eslintrc` files
and any other files that may be present.
It me it seems the monkey patch is no longer necessary.. At least I'm
not able to reproduce any `escape` key related issues. But LMK what you
think.
The `@reach/listbox` component is used for the custom select component
(for example: for filters).
I've updated the return values in `sync/index` to sensible values based
on how they're being called.
I've updated the type of `msg.value` to be `string | number | null` to
match the values expected by `serializeValue`
- New linter rules are now added
- Perhaps the `createPayee` method i've tagged with a disable should be
deleted.
- I have ignored unused methods in Plaid/Mobile as this stuff is still
WIP/experimental?
None of this code is relevant to people who have used the open source
app. I initially wanted to leave it in so it could be used for major new
features in the future, but as it falls further and further out of date
I think it’s best to just delete it in a clean PR that can be referenced
later if desired.
Closes#1069
I've not actually tested this change. Which is why I'm not changing it
to direct links (as they might not work).
Instead I'm just applying a very quick patch so the message would not be
misleading anymore.
This PR is for the first item listed in #559: `Expand All / Collapse All
Categories`
For the expand / collapse all categories functionality, I was choosing
between having a single `Expand / collapse all categories` button or one
for each: `Expand all categories` and `Collapse all categories` buttons.
For the initial implementation, I have opted with the latter. Please let
me know which one is the right way to go or if there are other
suggestions and I'll just accordingly.

actual-server does not need to import the full actual-app/api package.
It can import only the CRDT stuff.. so I'm extracting it into a new
package to reduce the size of actual-server and make the link between
things more transparent.
Continuing on from #1139 this PR deletes all function that are not used
anywhere.
The next PR will include all the entire files that are unused & deleted.
This reverts #1029. As raised in #1097, the formatting chosen doesn’t
work well when doing math. There may be a way to balance compatibility
with multiple format styles with handling non-currency amounts
correctly, but it will require some more careful consideration. Re-opens
#894.
URLs with the trailing slash don’t work well — requests end up being
made to `https://example.com//sync/sync` and such which can 404
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
As discussed in #1126 creating separate PRs.
The linter rule isn't actually part of this first PR and will likely be
in the final PR as otherwise it will just fail because all the issues
aren't resolved.
The code is 'ready' though so as soon as this is merged I will open next
one(s)
Closes#1125
Disables (hides) the "all payees" checkbox when schedules are loading.
Reproduction:
1. open `/schedule/discover`
2. while the data is still loading - click on the checkbox in the table
header
3. after loading finishes - the page crashes with an error
Previously, the frontend would attempt to make real requests to
`https://not-configured/`, which of course failed. I’ve changed the
internal structure to have the lack of a server expressed as a `null`
server. A new `did-bootstrap` browser-level setting has been added to
track if the user clicked “Don’t use a server.”
Finally, I updated the auth logic for methods that call out to the
server to make them consistent and use the early return style which
reduces indentation.
This adds an option to the month drop down to check all the template
lines. If there are errors the offending line is shown with its
category.
I also modified the wording on the regular template return to be more
accurate. Fixes#1100
After #1115, new Node.js versions will be able to be used for
development of the frontend. This PR changes the recommended Node.js
version to 18 (the current LTS version). I have also tested with 16 and
20 and it works.
I also took the opportunity to:
- move the build script that was at the project root to the `bin/`
folder
- update the `browserslist` to target Electron 24 (which is the version
we currently build against). This results in a slightly smaller bundle
due to no longer having to transpile optional chaining.
Draft because it is untested, maybe tonight I will test it! Just wanted
to get some code out cause i had a spare 5 minutes.
The new parser isn't immediately good enough to replace the old parser,
and I sadly lost the time to contribute more! Sorry! If someone else
wants to take maintenance burden of this code, we can not merge this.
Otherwise, it should go the way of the Dodo it seems.
Thanks!
Closes#1044
Good catch @Jackenmen in
https://github.com/actualbudget/actual/pull/948#issuecomment-1580501909
— I’ve also added a CI check to ensure bad migrations aren’t introduced
in the future.
I think if you have a budget that has managed to have this migration
applied successfully, you’ll need to manually patch
`getAppliedMigrations` in
`packages/loot-core/src/server/migrate/migrations.ts` and inject a query
to remove the old migration ID and insert the new one.
Closes#944, closes#532. ~WIP because something is causing the test
budget to fail to create because it’s using INSERT instead of UPDATE sql
queries. (Or not? I have no idea)~
Added the option to add a remainder goal template. This will use the
remaining available funds and dump them into the respective category.
There is optional weighting. The remainder templates will be forced to
the lowest priority as to run after all other templates.
Usage: `#template remainder <weight>` Add the template line to any
categories you want to catch any remaining funds such as savings. The
amount added to the category will equal
`remaining_budget/total_of_weights*weight`. The default weight is 1.
- Fix socket connection issues when reloading
- Fix external url clicking & middle clicking internal links
- Remove broken menu option. Easier for now than refactoring the
settings panel it now lives in. We can add it back later if needed?
description:File a bug report also known as an issue or problem.
title: '[Bug]:'
labels: ['bug', 'needs triage']
labels: ['bug']
body:
- type:markdown
id:intro-md
attributes:
value:|
Thanks for taking the time to fill out this bug report! Please ensure you provide as much information as possible to better assist in confirming and identifying a fix for the bug.
- type:markdown
id:intro-md
attributes:
value:|
**IMPORTANT:** we use Github Issues only for BUG REPORTS and FEATURE REQUESTS. If you are looking for help/support - please reach out to the [community on Discord](https://discord.gg/pRYNYr4W5A). All non-bug and non-feature-request issues will be closed.
**Bank-sync problems (SimpleFin / GoCardless)?** Reach out via the [community Discord](https://discord.gg/pRYNYr4W5A) first and open an issue only if the community deems the issue to be a legitimate bug in Actual.
- type:checkboxes
id:existing-issue
attributes:
@@ -16,6 +23,8 @@ 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
@@ -27,13 +36,6 @@ body:
value:'A bug happened!'
validations:
required:true
- type:textarea
id:errors-received
attributes:
label:'What error did you receive?'
description:'If you received an error or a message on the screen, please provide that here.'
:sparkles: Thanks for sharing your idea! :sparkles:
This repository is now using lodash style issue management for enhancements. This means enhancement issues will now be closed instead of leaving them open. 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 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).
The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+
For smaller improvements or features - feel free to submit a PR or an issue if you don't have the necessary skills to build it yourself. For larger features we would recommend first opening an issue to discuss it with the team.
We aren't going to take every single little change. Don't be offended if we close your PR. In order for the project to stay healthy, we need to guard our bandwidth and also only take changes that align with Actual.
Here are some initial guidelines for how contributions will be treated:
- The mental health of the maintainers will be prioritized above all else. If this means some things get lost and PRs are unreviewed because maintainers are spending time with family or on themselves, we celebrate that.
- Multiple maintainers are key to this being a healthy project. Currently a few people have maintainer rights (see list below). We are actively looking for more people to come on as maintainers. If nobody steps up, expect less activity on this project.
- An open PR does not automatically deserve time for a full review and acceptance. It's up to the PR author to convince the maintainers that the change is good and worth reviewing. This involves a clear description for why the the change is being made, detailing the tradeoffs.
- We especially welcome improvements in automation: creating github actions to automatically generate builds, making the release process easier, etc.
## Main contributors
(sorted alphabetically)
-@albertogasparin
-@j-f1
-@jlongster
-@MatissJanis
-@rich-howell
-@trevdor
## Project ideas
We welcome all contributions from the community. If you have an idea for a feature you want to build - please go ahead and submit a PR with the implementation or if it's a larger feature - open a new issue so we can discuss it.
If you do not have ideas what to build: the issue list is always a good starting point. Look for issues labeled with "[help wanted](https://github.com/actualbudget/actual/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)".
For first time contributions you can also filter the issues labeled with "[good first issue](https://github.com/actualbudget/actual/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)".
## Development Environment
If you would like to contribute you can fork this repository and create a branch specific to the project you are working on.
There are three options for developing:
1. Yarn
- This is the traditional way to get an environment stood up. Run `yarn` to install the dependencies followed by `yarn start:browser` to start the development server. You will then be able to access Actual at `localhost:3001`.
2. Docker Compose
- If you prefer to work with docker containers, a `docker-compose.yml` file is included. Run `docker compose up -d` to start Actual. It will be accessible at `localhost:3001`.
3. Dev container
- Directly integrated in some IDEs, dependencies will be installed automatically as you enter the container.
- Use your preferred method to `npm start` the project, your IDE should expose the project on your `localhost` for you.
Both options above will dynamically update as you make changes to files. If you are making changes to the front end UI, you may have to reload the page to see any changes you make.
Please review the contributing documentation on our website: https://actualbudget.org/docs/contributing/
Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting.
If you are interested in contributing, or want to know how development works, see [CONTRIBUTING.md](https://github.com/actualbudget/actual/blob/master/CONTRIBUTING.md) we would love to have you.
If you are interested in contributing, or want to know how development works, see our [contributing](https://actualbudget.org/docs/contributing/) document we would love to have you.
Want to say thanks? Click the ⭐ at the top of the page.
## Key Links
- Actual [discord](https://discord.gg/pRYNYr4W5A) community.
- Actual [Community Documentation](https://actualbudget.github.io/docs)
- Actual [Community Documentation](https://actualbudget.org/docs)
## Installation
@@ -23,11 +23,11 @@ If you are only interested in running the latest version and not contributing to
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.
You can get up and running quickly and easily by following our [Running Actual Locally Guide](https://actualbudget.github.io/docs/Installing/Local/your-own-machine)
You can get up and running quickly and easily by following our [Running Actual Locally Guide](https://actualbudget.org/docs/install/local)
## Documentation
We have a wide range of documentation on how to use Actual, this is all available in our [Community Documentation](https://actualbudget.github.io/docs), this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
We have a wide range of documentation on how to use Actual, this is all available in our [Community Documentation](https://actualbudget.org/docs), this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
## Code structure
@@ -37,9 +37,10 @@ The Actual app is split up into a few packages:
- desktop-client - The desktop UI
- desktop-electron - The desktop app
More information on the project structure is available in our [community documentation](https://actualbudget.github.io/docs/Developers/project-layout).
More information on the project structure is available in our [community documentation](https://actualbudget.org/docs/contributing/project-details).
## Feature Requests
Current feature requests can be seen [here](https://github.com/actualbudget/actual/issues?q=is%3Aissue+label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc).
Vote for your favorite requests by reacting :+1: to the top comment of the request.
This package contains the core CRDT logic that enables Actual’s syncing. It is shared between the client and server. We may or may not follow semver when updating this package; any usage of it outside Actual is undocumented and at your own risk.
## protobuf
We use [protobuf](https://developers.google.com/protocol-buffers/) to encode messages as binary data to send across the network.
### Generating protobuf
The protobuf is generated by using the [protoc](https://github.com/protocolbuffers/protobuf) compiler.
This can be installed by downloading one of the [pre-built binaries](https://github.com/protocolbuffers/protobuf/releases/) and placing it in your `$PATH`. The version used to build the current protobuf is [v3.20.1](https://github.com/protocolbuffers/protobuf/releases/tag/v3.20.1). You’ll also need to [download the latest version of `protoc-gen-js`](https://github.com/protocolbuffers/protobuf-javascript/releases/latest). For convenience, you can put both of these binaries in `./bin`.
Once installed, the protobuf can be generated by running `./bin/generate-proto`.
However there is one very important thing to remember! The default output includes this near the top:
```
var global = (function() { return this || window || global || self || Function('return this')(); }).call(null);
```
This will not work with our CSP directives. You must manually modify this to this:
E2E (end-to-end) tests use [Playwright](https://playwright.dev/). Running them requires an Actual server to be running either locally or on a remote server.
### Functional
Running against the local server:
```sh
# Start the development server
yarn start:browser
yarn start
# Run against the local server (localhost:3001)
yarn e2e
@@ -19,3 +21,50 @@ Running against a remote server:
Visual regression tests (also known as screenshot tests) check that the visual appearance of the product has not regressed. Each environment has slightly different colors, fonts etc. Mac differs from Windows which differs from Linux. In order to have a stable test environment for visual comparisons - you must use a standartised docker container. This ensures that the tests are always ran in a consistent environment.
Prerequisites:
- Docker installed
#### Running against the local server
First start a dev instance:
```sh
HTTPS=true yarn start
```
or using the dev container:
```
HTTPS=true docker compose up --build
```
Note the network IP address and port the dev instance is listening on.
Next, navigate to the root of your project folder, run the standartised docker container, and launch the visual regression tests from within it.
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.