- Jun 04, 2023
-
-
Jed Fox authored
Previously, this would fail with a confusing “cannot read property of `undefined`” error.
-
- Jun 03, 2023
-
-
shall0pass authored
There was one more location where the cleanup script could generate an error. This should fully resolve the error, along with https://github.com/actualbudget/actual/pull/1084.
-
- Jun 02, 2023
-
-
Jed Fox authored
-
- Jun 01, 2023
-
-
shall0pass authored
-
youngcw authored
-
- May 30, 2023
-
-
shall0pass authored
This adds back the functionality, which was inadvertantly removed, that includes the already spent column in the calculation when the template is run. Some transactions may be posted to the account prior to running the templates and would result incorrect budgeted amounts. --------- Co-authored-by:
Jed Fox <git@jedfox.com>
-
shall0pass authored
~This is really just a proof of concept. I have no delusions that this might get included. I'm sure others might have a much cleaner implementation.~ I'm now delusional. Resolves https://github.com/actualbudget/actual/issues/508 Taking @youngcw 's advice, I changed the keyword to #cleanup for the end of month script to keep it separated. This screen video shows two categories that are sources of funds. At the end of the month, any excess in these funds can be redistributed to your highest priorities. Three categories are set as sinks, or recipients, of excess funds. #cleanup source -> Move 'extra' funds to To Budget #cleanup sink -> Fund category with To Budget funds, default weight = 1 #cleanup sink 2 -> Fund category with To Budget funds, weight = 2 Steps of the script: 1. Return funds from any category marked 'source' 2. Fund overspent categories fully if negative carryover is not allowed. 3. Fund each 'sink' category by the desired weight. I run through the script twice. Once to show that if there is a debt category that has a rolling negative balance, it will skip funding that category first and once to show how if a rolling negative balance isn't allowed, it will fund it before applying the weighted remainder. The example shown uses weights of 60, 20, and 20; therefore, the Debt category will receive 60% of the To Budget funds while General and Bills receive 20% each. The weights could have been changed to 6, 2, and 2 or 3 for the Debt category with no additional value for General and Bills to achieve the same result. 
-
- May 27, 2023
-
-
Jack authored
-
- May 25, 2023
-
-
youngcw authored
-
- May 24, 2023
-
-
shall0pass authored
-
youngcw authored
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.
-
- May 17, 2023
-
-
Alberto Gasparin authored
Another batch of components in `desktop-client` converted to TS
-
- May 15, 2023
-
-
SudoCerb authored
# 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.
-
- May 13, 2023
-
-
youngcw authored
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.
-
shall0pass authored
-
- May 09, 2023
-
-
Jed Fox authored
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.
-
- May 07, 2023
-
-
youngcw authored
-
Davis Silverman authored
-
- May 02, 2023
-
-
Jed Fox authored
-
Jed Fox authored
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.
-
shall0pass authored
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>
-
- May 01, 2023
-
-
Matiss Janis Aboltins authored
-
- Apr 30, 2023
-
-
Trevor Farlow authored
Switch to TS version of `no-unused-vars` rule.
-
- Apr 29, 2023
-
-
Alberto Gasparin authored
This is the last PR with lots of renaming for `loot-core`!
-
- Apr 23, 2023
-
-
Aaron Eiche authored
-
Henrik Maaland authored
-
Alberto Gasparin authored
Another batch of `loot-core` migrated.
-
Davis Silverman authored
Hi there, `Peg.js` is unmaintained, so I figure you all would appreciate if I replaced it with the drop-in replacement of Peggy. This is work I am breaking out of #918. Peggy adds new features like source map support that we could use, although I do not include that in this change-set. It may be useful for debugging changes to the .pegjs file we have.e
-
- Apr 22, 2023
-
-
Davis Silverman authored
Hi there, I try to tackle #798 here. It was suggested to throw this behind a feature flag, so here it is! this does its best to import the problem file in #767. I am working on this because it would make my work on #918 easier :) Feel free to set the feature flag to true and try the new importer. The date parser is not as sophisticated as the one in `node-libofx`, but I tried 3 different OFX files, one from my bank, one from the mocks, and one from #767. They all seem to work well enough on that front, but this is definitely the weak point of the new implementation. Let me know what you think!
-
shall0pass authored
This is an initial concept for adding percent based goal targets. This version works by using a string in the form of: #template 10% of Income <- Income is an income category name. Only income category names will work here currently. or #template 10% of all income<- 'all income' is a keyword in this context and will base the calculation on the total income for the month. Some of the nicer touches like Jed's polite notification that the syntax isn't correct is not implemented here yet.
-
shall0pass authored
I've changed the method of calculating the budgeted amount. There may be a more efficient way of writing the loop, so I'm looking forward to the review. This change implements the mathematics of (Target1+Target2+TargetN-Last_months_category_balance) / (MonthsRemaing1 + MonthsRemaining2 + MonthsRemaingN) * N. This is an averaged approach for multiple templates in the same category. It will appear to overbudget or underbudget some months compared to multiple single targets in different categories, yet there should always be enough saved in the category to satisfy the target due. Setting a target, it's assumed that money will be spent in the appropriate month, When a target reaches maturity, the money in the category associated with that target should be spent or moved so the remaining targets continue to be funded. I don't see an easy way of fixing that, but I hope this change will be of some help. Current method: Notice how the Bills (flexible) category reduces each month, resulting in larger budgeted amounts later in the goal cycle.  Proposed method: **Note: The fact that the initial fill in this example equals the expected fill is a coincidence based on the template values I chose. The initial fills can be different from expected fill. 
-
- Apr 16, 2023
-
-
Pol Eyschen authored
Co-authored-by:
Jed Fox <git@jedfox.com>
-
- Apr 13, 2023
-
-
shall0pass authored
This improves the error reporting when issues are found with Goal Templates. Before these changes, the only error that would be reported is the "Bills" error in the image while the other issues would be ignored and not funded.
-
- Apr 12, 2023
-
-
Alberto Gasparin authored
Another batch of files from `loot-core` migrated to TS (loose mode)
-
shall0pass authored
Resolves issue https://github.com/actualbudget/actual/issues/888
-
- Apr 10, 2023
-
-
Alberto Gasparin authored
This PR converts everything (aside from electron) from CommonJS to ESM. It is needed to reduce the changes that will happen during the migration to Typescript (as TS does not play nice with CJS). Basically: - rewrite `require()` to `import` - rewrite `module.exports` to `exports` - introduce `ts-node` to run importers so we can convert them to TS too Lastly, sorry for this larg-ish PR, not my preference but when I tried to reduce its scope, I would end up with mixed commons/esm that was even more tricky to handle.
-
- Apr 07, 2023
-
-
Jakub Kuczys authored
Fixes #840 by creating application-defined SQL functions (https://www.sqlite.org/appfunc.html) for Unicode-aware implementations of `LOWER()` and `UPPER()`. This uses `String.prototype.toLower/UpperCase()` JS method. I initially wanted to just redefine `LOWER()` and `UPPER()` but due to [sql.js not supporting the definition of deterministic functions](https://github.com/sql-js/sql.js/issues/551), I had to just define them as separate functions and use that in the appropriate places. It's probably better like that anyway...
-
shall0pass authored
I believe this change allows for having multiple 'by' rules in the same category. It seems to be working well for my purposes, but I would appreciate further testing to assure there aren't regressions. Example: #template 300 by 2023-06 #template 3000 by 2023-08 Before this PR, having these two lines in the notes would only budget funds for the earliest of the two strings and ignore the 3000 funding target. With this PR, the sum of the two funding targets will be respected.
-
- Apr 06, 2023
-
-
Jed Fox authored
<!-- 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 -->
-
- Apr 03, 2023
-
-
Alberto Gasparin authored
Part 1 of the conversion. Mostly renaming js to ts and making sure things make still sense. Added also handy TS ESLint rules. In order to support the various .web/.electron/... I ended up adopting `index.d.ts` as pattern to share type definition. Let me know if that makes sense for you too. Right now the function type definition is duplicated, but the solution will be importing from `index.d.ts` and using `const fn: FnDef = () => ...` that way we can keep all variants in sync from a single type file. Such rewrite however is better done in another PR otherwise we risk confusing git and loosing history (rename + too many changes). Another thing that might do in the next PR is convert all files to ESModules, as things get confusing between CJS exports, ESM default/named and TS adds extra complains.
-