* Add help modal for keyboard shortcuts.
* add release note
* fix linter
* fix typecheck
* fix linter
* use component syntax for GroupHeading
* use component syntax for Shortcut
* fix linter
* use component syntax for KeyIcon
* refactor to support different dialogs
* show different help based on current page
* fix linter
* reword help
* capitalize letters
* show cmd on mac
* stop event propagation
* dont show if a modal is already open
* remove unused import
* rename modal
* move where location check happens
* dont stop event
* allow typing '?' in inputs
* better filter
* extract function
* fix linter
* dont show if filter popover is visible
* fix linter
* fix wrong shortcut, support SHIFT
* fix linter
* fix conditional
* Disable interactivity on preview statuses
These have no click action but have a focus effect of a purple circle
(residual from the "Cleared" checkbox styling) that looks a bit glitchy.
* Add release notes
* Exclude status field from keyboard navigation
* Add computed padding for handling clipped Net worth amounts
* Add comment, early handle 5 character case
* Add release note
* Update packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx
Co-authored-by: Robert Dyer <rdyer@unl.edu>
* Update vrt snapshots
* Fix NetWorthGraph cutoff when `compact` is true
This happens in case of `ReportCard`
* Update VRT snapshots to revert to original
* Revert snapshots to original
* vrt
---------
Co-authored-by: Robert Dyer <rdyer@unl.edu>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Adds ability to resize sidebar
* Adds release notes
* Changes to feature
* lint
* change translateX to use % for both states
* vrt
* set max sidebar width, cleanup
* set min and max widths
* min width to 200px
* changes resizable sidebar to use re-resizable instead off css resize
* vrt
* vrt
* Remove the trafico pr review triggers
- We loose triggers for Approved and Changes Requested
- They weren't working on forks anyways
* Add release note
* Reapply rules to split transactions when the parent changes
Concretely, this enables the "standard" workflow for
split-transaction-entry on desktop, where you enter the payee first, and
then edit the amount afterwards (and expect splits in a rule to apply when
you edit the amount).
* Add release notes
* Fix bug in first field below parent transaction
* Update vrt
* FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average'. This fix solves this issue
* added 2862.md
* Ajustments for category menu not closing properly and fix to negative values for income category copy budget
* fix lint
* changed variable name without changing references after lint ajust
* retrigger checks
* smaller 2862.md
* Update main.ts - Handle Null Org Domain in SimpleFIN
SimpleFIN (currently) uses the org domain as the bank ID. According to SimpleFIN docs, this can possibly be a null value, as can the org name. However, at least one of the two must be present.
In Actual, org name is set to "Unknown" if it comes in as null, but the bank_id (previously just set to the org domain) was not, resulting in a null bank_id value at times.
* Create 2836.md
* Fix release notes format.
* Small change to release note.
* Change to use new org Id as fallback for bank_id
* Add orgId property, for new org id from SimpleFIN
* Make balance movement menus only appear on relevant conditions
* Release notes
* Hide to be budgeted when covering overbudgeted
* Fix typecheck error
* Added Year comparsion feature. Also fixed bug with greater than 28 days.
* Removed comments and console.logs
* Create 2806.md
* Cleaned up code
* Hide's graph if no data, and hides average, last month or last year if no data.
* Apply suggestions from code review
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
* Fixed spent MTD and last MTD. Added in all suggestions from carkom.
* Update 2806.md
* Added changes required by carkom #2
* Couple more fixes, only show graph if have data for last month (as requested by carkom)
* Removed console.log that was mistakenly added.
* removed useEffect
* Add files via upload
* Remove async function
* lint fix
* fixed carkom requests & added in fix for YAxis issues
* Fixed couple of mistakes. Removed Y Axis fix (new PR will be created)
* Cleanup code
* Fix mode buttons
* Removed console.log...
* Update showAverage Logic
* Update switch logic
default should be default for everyone other part of the graph.
* Add Math.abs
* lint fix
---------
Co-authored-by: Neil <55785687+carkom@users.noreply.github.com>
* fix(#2562): Prevent transaction deduplication for imported transactions
* chore(): eslint fixes
* chore(): Add release note file
* fix(#2562): Allow transaction deduplication if transaction being imported is null
* chore: Rename release note, add strazto as author
* test(loot-core): Add test case for new logic
* docs(release-notes.loot-core): Add pmoon00 as author
* test(loot-core): Update test case to not be affected by unrelated bug
* test(loot-core): fix linter
---------
Co-authored-by: Mohamed El Mahdali <mohamed.elmahdali.developer@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Use amount input on rules page instead of plain text field
* Add release notes
* Remove unneeded attributes
* Support percent formatting
* Lint + typecheck
* Fix latent bug
* Handle existing data correctly
* PR feedback: naming
* PR feedback: force percent to a positive number
* PR feedback: reset percent to 100 upon changing input type
* Fix input clamping behaviour
* Empty commit to bump ci
* PR feedback: prop cleanup
* PR feedback: no default number format
* PR feedback: cosmetic refactor
* Show account notes in tooltip on sidebar
* add release note
* Only show tooltip for accounts
* Split account name and note into separate nodes
* Add padding inside tooltip
* Move tooltip to the right
* remove commented code
* Tweak the visual design
* Fix lint
* adjust padding
* Update packages/desktop-client/src/components/sidebar/Account.tsx
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* refactor to avoid function
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Update filter amount to filter incoming and outgoing transactions
* Add test and fix logic
* Added release note
* Update with linter fixes
* Update new ammount filter to apply to all ops
* Fix lint
* Add API for working with rules
* Add release note
* Change 'payees-get-rules' return type to RuleEntity[]
* Reuse existing handlers, make names not have 'payee', add two getters
* fix linter
* fix bad handler name
* fix broken handler name
* add test cases for 'getPayeeRules'
* fix broken test
* Remove unused locals
* Update packages/loot-core/src/types/api-handlers.d.ts
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Update packages/loot-core/src/types/server-handlers.d.ts
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Strict types and slightly improved return interface
* update test comment to match new API names
* fix linter issues
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* [Mobile] Add schedule name and date to scheduled transaction modal
* useRef to prevent rerenders
* Release notes
* Fix typecheck error
* Fix lint errors
* Update schedule font
* Heavier font weight
* Create types for the external versions of entities meant for the API
- Otherwise the types used in the API were actually wrong vs the data we were sending
* Add release note
* Fix some additional incorrect types
- This is part of working towards having enough correct types to be able to run tsc on our packed api without error.
- Working towards being able to ship types for the api in the package
* Add release note
* monthly Spending
* Add Average
* notes
* title
* date filter
* TS fixes and hide average when no data
* fix average tooltip and relabel x-axis
* Wording/verbiage
* filters changes
* feature flag
* networth card fix
* 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?
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>
~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.

- Enforce that imports from the same package are merged into a single
import
- In `loot-core`, require that imports of other `loot-core` files use a
relative import (like the vast majority of such imports) rather than
specifiers starting with `loot-core/` (probably a result of moving files
out of other packages into `loot-core`)
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.
Adds support for [devcontainers](https://containers.dev/), this should
make onboarding easier and should allow (especially simpler)
contributions entirely online via Github Codespaces 🚀
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>
Run the feature request management action when adding "feature" label.
This will allow us to..
1. remove "feature" label
2. add back "feature" label
Thus execute the workflow on the existing issues.
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 <>
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
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!
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.
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.

I got some feedback in the discord that this behavior was disruptive
when zooming in.
- I’ve reduced the breakpoint so hopefully the disruption of the
transition is matched by a significant improvement in available space
now.
- Also the 2 places in the app that use window width (including here)
now check for the width of the `<html>` tag, not the width of the
viewport (those 2 values can be different when doing a pinch-zoom,
causing undesirable layout shifts.)
- Most of the logic has been rewritten to improve the transitions
Mobile & desktop experience
https://user-images.githubusercontent.com/25517624/233653721-b13c5e22-ae11-4bdf-a494-a6916556d05e.movhttps://user-images.githubusercontent.com/25517624/233654784-b6cc1006-44ea-4066-be7a-8d0dd786fb5b.mov
(I’d like tapping on something to close the sidebar on mobile, but that
can be approached in a future PR)
It turns out that `event.key` for ctrl/cmd+Z is `z`, and it’s `Z` for
ctrl/cmd+shift+Z.
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
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.
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.
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...
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.
2023-04-07 15:54:14 -04:00
3227 changed files with 131290 additions and 409724 deletions
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.'
body:`:tada: This feature has been implemented in #${process.env.PR_NUMBER} and will be released in the next version. Thanks for sharing your idea! :tada:\n\n<!-- feature-implemented-comment -->`,
name:Close feature requests with automated message
on:
issues:
types:[labeled]
jobs:
needs-votes:
if:${{ github.event.label.name == 'feature' }}
runs-on:ubuntu-latest
steps:
- uses:actions-ecosystem/action-add-labels@v1
with:
labels:needs votes
- name:Add reactions
uses:aidan-mundy/react-to-issue@v1.1.1
with:
issue-number:${{ github.event.issue.number }}
reactions:'+1'
- name:Create comment
uses:peter-evans/create-or-update-comment@v3
with:
issue-number:${{ github.event.issue.number }}
body:|
:sparkles: Thanks for sharing your idea! :sparkles:
This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This 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+
Don’t forget to upvote the top comment with 👍!
<!-- feature-auto-close-comment -->
- name:Close Issue
run:gh issue close "https://github.com/actualbudget/actual/issues/${{ github.event.issue.number }}"
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)
-@j-f1
-@jlongster
-@MatissJanis
-@trevdor
## Alumni
(sorted alphabetically)
-@rich-howell
## 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)".
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,22 +23,28 @@ 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
The Actual app is split up into a few packages:
- loot-core - The core application that runs on any platform
- loot-design - The generic design components that make up the UI
- 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.
To add new feature requests, open a new Issue of the "Feature Request" type.
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:
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.