Add option to schedule templates to budget the full amount only in the
needed month. Default behavior stays the same of spreading the expense
out over the available range.
To use the option, use a template like `#template schedule full
SCHEDULE_NAME`
Also some minor cleanup.
The payee autocomplete was always using cached accounts. Added a check
to see if accounts was already passed in as a parameter - only using
cached if it wasnt.
Updates to the latest version of electron and moves the backend-frontend
communication from node-ipc to websockets. This resolves the previous
roadblock regarding `nodeIntegration` .
Done
- Remove node-ipc in favour of websockets.
- Move file copying out of `preload.js` to avoid importing module `fs`
there
- Bump all electron pacakge versions to the latest
- Added new package for finding open ports as node-ipc is gone
- Tweaked webpack config for above changes
Partially fixes#468
Questions/ Pending:
- Literally every single test fails for me, presumably some issue with
my setup/environment.
- The websocket communication is not using TLS. I'm not sure how to
enable this, or if we even need to as its all local.
- Still need to create the CI for building/deploying but I'm not sure
where start in this regard as i have no exp with it. Presumably we will
need to point the electron auto-updater to the github releases url's. If
people are happy with this PR I will look at adding the CI before its
merged.
- In dev mode only, I have disabled TLS security becuase my docker
container's cert is not signed. I _assume_ this will be true for other
people who spin up the server on thier own hardware. Perhaps I just need
to change my cert to one from letsencrypt or something...
Notes.
I have not touched javascript in eons so my apologies if the commit
trail is a bit fragmented. I tried to keep them fairly contained and
then there is a slightly gnarly final commit fixing all the linter
issues... Please let me know if you want me to squash some commits etc.
I initially tried to move this to web workers the same way the web app
does it but this was unsuccessful. I have found no way to spin up a
worker in one place (frontend/backend) and then pass this worker to the
other. The electron ipc channels don't allow you to directly pass
objects such as workers, everything is cloned/serialised. Passing a port
number so the other end can spin up its own socket works fine.
---------
Co-authored-by: Shazib Hussain <contact@shazib.com>
Co-authored-by: Jed Fox <git@jedfox.com>
Introduces a **ResponsiveProvider** as the sole location that tracks
window size and makes that info available to the entire app. This can be
used for media queries and size-based component switching.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
# Add ability to filter the Manage Payees screen to show orphaned payees
only.
I aimed to modify as little code as possible - we now have a button on
the Manage Payees screen that will filter the table to show orphaned
payees only.
I believe I found the infinite loop problem in the repeat goal.
This doesn't mess things up if you are budgeting the same month that the
goal starts, that's probably why we didn't see it before.
Side note: The logic always starts at the start date in the template,
then increments until falling in the right month window. If this
template gets used for, say, a few years, it will start to bog down the
processing. If someone has a good quick fix I can add that.
The regex for the "space-dot" format was incorrect.
When entering the amount on a schedule, the number was incorrectly read
(12.34 became 1234.00)
Strangely, it was not an issue with transactions...
Multi-line `if`/`for` statements in JS can be confusing since there
aren’t braces to indicate which code is enclosed in the statement. I set
the configuration to `multi-line` to enforce usage of braces for
multi-line statement bodies, but still allow things like `if (foo)
return;`. I additionally added the `consistent` option to require braces
for all elements of an if/else chain if one element has it. As you can
see, this set of options pretty closely matches the existing code style.
I was going to comment in #1008 about this stylistic change but realized
that it’s (IMO) a little impolite to ask for code style changes unless
they can be automatically enforced.
Note that `if (foo) { \n return; \n }` is still valid and won’t be
collapsed. I tried to automatically collapse all such cases but it was a
lot of files and I didn’t want to pick out the useful from the useless
differences.
Fixes#615. I would appreciate double-checking that I didn’t
accidentally delete anything that is important.
Since I’m removing the related API methods, this is technically a
breaking change (even if people would have no reason to remove this
stuff), so we should probably do a major release of the API package.
This attempts to add priorities for goal templates and addresses most of
https://github.com/actualbudget/actual/issues/959.
I couldn't find a good way to preserve both "Apply" and "Overwrite"
operations, so this PR does away with the current "Apply" action
behavior. Every box with a budgeted value will be overwritten if a
template goal is present.
The added syntax to define priorities is as follows:
#template -- priority 0, highest priority
#template-1 --priority 1, 2nd highest priority
#template-2 --priority 2, 3rd highest priority
#template-N --priority N, as many as you'd like.
~~Leaving as a draft as this may not be the preferred implementation but
I wanted others to be able to try it with netlify.~~
---------
Co-authored-by: Caleb Young <cwy@rincon.com>
Improving error handling for Nordigen.
Before: if loading banks failed - a loading indicator would be shown
forever.
After: is loading banks fails - an error message is shown.
Closes#935
Before: we render all the pages (even the inactive ones in some cases)
After: we render only the visible pages. Thus the topbar color is set
only 1x.. thus the settings page topbar has the correct color.
<!-- 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 -->
Resolves issue #844 .
---------
Co-authored-by: biohzrddd <>