* Added Global Synced Prefs
* [autofix.ci] apply automated fixes
* Add release notes for PR #6234
* typecheck
* lint fix
* Refactor global synced preferences to server preferences
- Removed global synced preferences implementation and related files.
- Introduced server preferences with a new slice and hooks for managing user settings.
- Updated components and hooks to utilize server preferences instead of global synced preferences.
- Adjusted Redux store and mock configurations to reflect the changes.
- Enhanced user settings consistency across devices with the new server preferences structure.
* Implement server preferences for feature flags and enhance admin permissions
- Updated the Experimental component to conditionally display based on user permissions and login method.
- Refactored feature flag handling to use 'flags.plugins' instead of 'plugins'.
- Introduced server-side checks to restrict access to server preferences for admin users only.
- Added comprehensive tests for server preferences management, ensuring proper handling of user roles and preferences.
* Enhance error handling in saveServerPrefs thunk
- Updated the saveServerPrefs async thunk to handle potential errors from the server response.
- Added a check for the presence of an error in the result and return it accordingly.
- Ensured that preferences are still dispatched to the store upon successful save.
* Feedback: strict "flags.plugins" typing
* Feedback: move state slice
* Feedback: localstorage pref
* Feedback: move serverPrefsSlide into prefsSlice
* Refactor: Remove duplicate import of PostError in app.ts
* Rename serverPrefs state slice property to server (#6596)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Add matching light tints to color picker
* Update ColorPicker light colors
* Update light colors to color wheel
* Update P.10
* Update light theme tag colors
* Create 6396.md Add light tints to tag color picker.
* Update development.ts to match light.ts
Because the Code bunny wanted them to match.
* Update palette.ts
* Update development.ts
* Update light.ts
* Update ColorPicker.tsx
Moved light colors under original dark colors.
* [autofix.ci] apply automated fixes
* Update ColorPicker.tsx
Remove comment.
* Update colors.ts
* Update useTagCSS.ts
* [autofix.ci] apply automated fixes
* Update useTagCSS.ts
* Adjust color mix percentages and add !important to text
* [autofix.ci] apply automated fixes
* Refactor color mix logic in useTagCSS hook
* Change noteTagBackgroundHover color back to purple150
* Remove purple75 from palette
Remove unused purple75 color definition. No longer needed.
* Change noteTagBackgroundHover back to color to purple150
* [autofix.ci] apply automated fixes
* Modify color mixing logic in useTagCSS hook
updated the percentage for the color-mix function - light theme. Added text comment for later reference.
* [autofix.ci] apply automated fixes
* Add release notes for tag color picker enhancements
* [autofix.ci] apply automated fixes
* Add purple125 color to palette
* Update color value for purple tint in ColorPicker
* Change noteTagDefault color to purple125
* Change noteTagDefault color to purple125
* Fix syntax for purple125 color definition
* Update noteTagBackground color to purple125
* Update noteTagBackground color to purple125
* Delete upcoming-release-notes/6396.md
#6396 was closed in favor of #6448
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* fix: remove responsive prop from StackedBarGraph to prevent infinite loop
Fixes#6406
The 'responsive' prop on BarChart was conflicting with explicit width/height
props provided by AutoSizer, causing recharts' useElementOffset hook to
trigger an infinite re-render loop. This manifested as React Error #185
(Maximum update depth exceeded) when displaying stacked bar graphs with
many months of data.
Removing the redundant 'responsive' prop resolves the issue since explicit
dimensions are already provided by the Container component.
* docs: add release notes for #6406
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Salva <spenamedina@Salvas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Add custom checks to CodeRabbit configuration
- Add settings check to evaluate new setting toggles against core design principles
- Add linting check to prevent oxlint-disable lines
- Add typecheck check to prevent @ts-strict-ignore in new components/utilities
* Add release notes for custom checks in CodeRabbit configuration
* Refactor custom checks in CodeRabbit configuration for clarity and consistency
- Consolidate custom checks under a single list format for better readability
- Maintain existing checks for settings, linting, and typecheck with unchanged instructions
* fix: move saved filters to end of dropdown with separator
- Reorganized filter menu items to place 'saved filters' at the end
- Added separator before 'saved filters' to distinguish from regular filters
- Maintained alphabetical sorting for regular filter options
Fixes#6535
* docs: add release notes
* [autofix.ci] apply automated fixes
* fixing typos
* fix: use Menu.line for proper separator rendering
* refactor: remove duplication by extracting saved filter from array
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Salva <spenamedina@Salvas-MacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Fix iOS keyboard suddenly hiding while editing budget amounts
The react-aria-components Buttons calls the onHoverStart even if there
is no fine pointing device attached to the client (iOS 26+), causing the
amount input to loose its focus.
This commits checks if there is any input with focus before auto focus
the menu Container.
* [autofix.ci] apply automated fixes
* Fix menu aria pattern by making excluding menu buttons from tab order
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Refactor keyboard shortcuts in KeyboardShortcutModal
Updated keyboard shortcuts for various actions in the KeyboardShortcutModal component. Changed shortcut names and IDs for better clarity and organization.
* Update keyboard shortcuts modal text from 'General' to 'Global'
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6573
* Add release notes for bugfix in KeybordShortcutModal
Update KeybordShortcutModal.tsx to set date for selected transactions and reorganize the list to match documentation.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Add Wallos schedule importer to community repos
Added a new entry for Wallos schedule importer with a brief description.
* Add Wallos to expected words
* Update CodeRabbit configuration with review workflow and labeling
* Add release notes for PR #6582
* Update CodeRabbit configuration to change label descriptions to instructions and modify release notes category from Enhancements to Maintenance.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix LHV bank adapter not being loaded due to filename mismatch
The bank-factory.js loads bank adapters by filtering for files containing
underscores, but lhv-lhvbee22.js used a hyphen. This caused the LHV adapter
to never be loaded, falling back to the generic IntegrationBank handler
which doesn't extract payee names from card transaction remittance info.
Rename lhv-lhvbee22.js to lhv_lhvbee22.js to match the naming convention
used by all other bank adapters.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add release notes for PR #6533🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(web): Close popover on second Escape press when autocomplete options are closed
* [autofix.ci] apply automated fixes
* fix(web): use more accurate approach with isOpen
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Add target income adjustment factor to crossover report
Allow the user to specify an adjustment factor to apply to their target
retirement income. This allows them to be a little more conservative
or aggressive on their retirement goals rather than relying only on the
calculated expense projection.
For example, if you want to spend more in retirement (or are simply more
risk-averse), you could set the target income adjustment to 120%. Or if
you expect some retirement income from a defined-benefit pension and
don't need to rely only on the income sources in your budget, you could
set this to 80% to account for that external income.
Originally discussed at https://github.com/actualbudget/actual/issues/6134#issuecomment-3608247467
Co-authored-by: Claude <noreply@anthropic.com>
* [autofix.ci] apply automated fixes
* Add null check in crossover report
Review finding from PR
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
---------
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
The month filter edit popup was always displaying dates in mm/yyyy format
regardless of user's date format preference. Now respects the configured
date format setting.
Fixes#6341
* fix: prevent renaming category groups to existing names
* fix: prevent category group duplication by ignoring current group in checks
* fix: rename 6498.md to 6499.md to reflect updated content
* Update goal templates documentation for clarity
Add updated images for category and group dropdown. Update docs to reflect actual behavior.
* Add files via upload
* Delete packages/docs/static/img/goal-template/apply-template-group.webp
Remove replaced images
* Refine goal templates documentation
Removed unnecessary note and clarified template behavior.
* Fix formatting and warning notes.
* Fix typos and improve clarity in goal templates
Resolving (some of) the AI bunny's suggestions.
* Delete packages/docs/static/img/goal-template/apply-template-category.webp
* Update note on 'up to' template limits
Clarified the note about category limits for templates using 'up to'.
* lint: clean up unnecessary config and disables
* fix: update package import path in browser preload script
* lint: create custom ESLint rules for rules not in oxlint
- Add object-shorthand-properties rule (replaces object-shorthand)
- Add prefer-const rule (replaces prefer-const)
- Add no-anchor-tag rule (replaces no-restricted-syntax for <a> tags)
- Add no-react-default-import rule (replaces no-restricted-syntax for React.*)
These custom rules are needed because oxlint doesn't support these rules yet.
All rules are properly tested and integrated into the ESLint config.
* refactor: enhance prefer-const rule to track variable reassignments by scope
- Introduced a mapping of scopes to reassigned variable names, improving the accuracy of the prefer-const rule.
- Added helper functions to determine variable scopes and reassignment status.
- Updated logic to check variable reassignments during declaration analysis.
- Adjusted test cases to reflect changes in variable handling.
* fix-nginx-header-collision
Added a note on Cross-Origin Isolation and header collisions for Nginx configuration, including a sample Nginx configuration to prevent header duplication.
* Fix formatting of headers in NGINX documentation
* Add new terms to spelling expectations
* Fix placement of 'COOP' in expect.txt
* Update reverse-proxies.md doc display
* 🔖 (26.1.0)
* Trigger CI
* Remove used release notes
* Add release notes for version 26.1.0
This commit introduces the release notes for version 26.1.0, highlighting notable improvements such as currency display in the budget, mobile schedules functionality, link detection in transaction notes, and an extension of historical data. The release also includes various enhancements, bug fixes, and maintenance updates, acknowledging contributions from multiple developers.
* Update spelling expectations and release notes for version 26.1.0
This commit adds new terms to the spelling expectations file and updates the release notes to reflect changes in the documentation, including formatting improvements for clarity. Notable contributions from various developers are acknowledged.
* Add new terms to spelling expectations file
This commit updates the spelling expectations by adding new terms, enhancing the accuracy of the documentation spell-checking process. The changes include the addition of 'jws' and 'oxc' to the list of expected terms.
* Update release notes for version 26.1.0 to include Flathub availability for Linux users
* Update release notes to reflect Docker tag for version 26.1.0 in documentation
---------
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Initial plan
* Fix crash when switching filter from 'is' to 'one of'
- Add logic to convert single values to arrays when switching to oneOf/notOneOf operators
- Add comprehensive tests for the fix
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Add type assertions to fix TypeScript errors
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Keep first element when switching from 'one of' to 'is', use strict comparison
- When switching from array operators (oneOf/notOneOf) to single-value operators (is/isNot), keep the first element instead of clearing
- Use strict equality operators (=== instead of ==)
- Add comprehensive tests for array-to-single conversion
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Add release notes for PR #6491
* Fix crash due to filter value conversion issue
* Address PR feedback: remove notes test, preserve single values between operators
- Remove test for notes field exclusion (issue #6325 handles notes separately)
- Only clear values when converting FROM arrays, not between single-value operators
- Add test to verify single values are preserved when switching between single-value operators (e.g., 'is' to 'contains')
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Update value handling in updateFilterReducer
Handle value conversion for single-value operators and clear value for certain type switches.
* Refactor value assignment for single-value operators
* Refactor value assignment logic in updateFilterReducer
Simplify the handling of value assignment for single-value operators by consolidating conditions. Ensure proper conversion between arrays and single values while maintaining type integrity.
* Remove redundant array checks in updateFilterReducer tests
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Initial plan
* Add permission checks for budget deletion
- Server-side: Check if user is file owner or admin before allowing deletion
- Client-side: Hide "Delete from all devices" button for non-owners
- Add comprehensive tests for permission checking
- Non-owners see message that only owner can delete from server
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Add release notes for PR #6338
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6338
* Fix: Change unauthorized to forbidden in delete-user-file
Co-authored-by: matiss <matiss@mja.lv>
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6338
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6338
* Fix: Update error reason from 'unauthorized' to 'forbidden' in delete-user-file response
* Update VRT screenshot for date filter test case
* [autofix.ci] apply automated fixes
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: matiss <matiss@mja.lv>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* fix(mobile): close modals after cover overspending action
When covering overspending on mobile, the category selection modal would
remain open with stale data after the cover action completed. This fix
dispatches closeModal() after the cover action to return the user to the
budget view with the updated overspending banner.
Fixes#6487
* fix: rename release notes file to match PR number
* fix(mobile): fix stale overspending amounts in cover modal
Fixes#6487
* Fix date handling for CrossoverCard report. Make consistent with Crossover main report.
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Fix number formatting of intlFormatter with a wrapper to handle -0 edge case (#1253)
* Fix Normalize integer currency values in makeBalanceAmountStyle function based on formatting user prefs (#1253)
* [autofix.ci] apply automated fixes
* Add release notes for budget balancing issue when "Hide decimal places" is enabled
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Add a name to the eslint plugin.
* Add release note.
* Also update the no-restricted-imports patterns in .oxlintrc.json.
The glob library is different from what ESLint uses, so the globs need
a bit of adjustment.
* lint: move actual eslint rules to oxlint and some eslint
* Update ESLint configuration to remove test file patterns from linting
* Add review status configuration to .coderabbit.yaml
* Remove oxlint plugin from ESLint configuration and package dependencies
* Update API test script to include clean step
* Update 6455.md
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update typography rule to disallow curly quotes with auto-fix
- Reverse typography rule to detect and flag curly quotes instead of straight quotes
- Add auto-fixer that converts curly quotes to straight quotes
- Fix auto-fixer to properly escape quotes when they match string delimiters
* Fix quotation marks in error messages and formatting strings across multiple files
- Standardize quotation marks from curly to straight in error messages and string formatting for consistency.
- Update various components and utility files to ensure proper string handling and improve readability.
* Standardize quotation marks across multiple files
- Replace curly quotes with straight quotes in various documentation and code files for consistency and improved readability.
- Update error messages, comments, and documentation to ensure uniformity in string formatting.
* Standardize month formatting across multiple components
- Update month formatting strings from "MMMM 'yy" to "MMMM ''yy" in various components and utility files for consistency.
- Ensure uniformity in how months are displayed throughout the application.
* Refactor typography rule to enhance curly quote handling
- Simplify the error reporting mechanism for curly quotes by creating a shared fix function.
- Update test cases to include various curly quote scenarios for improved coverage.
- Ensure consistent handling of curly quotes in formatting functions across multiple files.
* Refactor typography handling and update tests for curly quotes
- Replace curly quotes with their Unicode equivalents in typography rule and related test cases for consistency.
- Remove unnecessary eslint-disable comments to improve code clarity.
- Ensure proper handling of quotes in arithmetic and utility tests to align with updated typography standards.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6454
* Fix: Correct typo in budget cell notification message
Co-authored-by: matiss <matiss@mja.lv>
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6454
* Temporarily disable i18n string extraction workflow
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* Update linting configuration and fix related issues
* Fix type coercion for comment ID in check-first-comment.js to ensure proper comparison with summary comment IDs
This change updates the minimum allowed date for transactions from
2000-01-01 to 1995-01-01, allowing users to enter older transaction
dates without crashes. This addresses the date validation bug that
was causing issues with old dates.
- Updated date validation in schema-helpers.ts
- Updated corresponding tests in schema-helpers.test.ts
- Use sticky-pull-request-comment action for better comment management
- Add 👀 reaction to /update-vrt comments for immediate feedback
- Add note about 50-minute duration in VRT comment
* Simplify ESLint config and add oxlint configuration
- Switch from typescript-eslint recommended to base config
- Remove redundant TypeScript-specific rules that are handled by base config
- Add oxlint configuration with appropriate rules
- Simplify globals configuration using globals package
- Add coverage directory to ESLint ignores
- Clean up various TypeScript rule configurations
* Add release notes for PR #6443
* [autofix.ci] apply automated fixes
* Refactor release note generator and update CLI argument parsing
- Adjusted the release note generator to fix string formatting.
- Refactored CLI argument parsing in migrate/cli.ts to use parseSync for improved clarity and consistency.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Fix schedule upcoming length years off-by-1 calculation
- Replace addYears with addMonths(value * 12) to preserve day precision
- Fixes issue where year-based upcoming schedules always calculated from Jan 1st
- Add test cases for mid-year dates to prevent regression
Fixes#6435
* Fix syntax error in schedules.test.ts and add release notes
* fix(transactions): preserve split categories when merging with imported uncategorized tx; avoid orphaned subtransactions
When merging a split-categorized manual transaction with an uncategorized
imported one, keep the split lines (including categoryId) and avoid leaving
orphaned subtransactions by properly transferring parent_id references.
Fixes#5801.
* docs: add release note for PR #5856
* fix: resolve lint and typecheck errors
- Rename unused variables sub1, sub2 to _sub1, _sub2 to fix lint warnings
- Fix typecheck error by using double type assertion (unknown) in merge.ts
* refactor: optimize subtransaction queries and test db access
Address code review feedback:
- Merge two SQL queries into one using IN clause for better performance
- Use db.first in test to avoid conversion path and match db.all semantics
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [autofix.ci] apply automated fixes
* refactor: apply code review feedback with stable branch logic
- Revert test to use db.getTransaction (not db.first) to preserve type conversion
- Refactor SQL query to use explicit branches (IN for 2 parents, = for 1, skip for 0)
- This approach is more stable across different SQL drivers
Addresses: #5856 (review feedback from @joel-jeremy)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore(release-notes): set category to Enhancements and shorten text; fix(merge): use shared deleteTransaction with grouped fetch + batchUpdateTransactions
* resolving lint warnings and recommendation on the test query
* switching to use the getTransaction helper
* corrected is_parent assertion to be true
* updated the PR number
---------
Co-authored-by: Golenspade <2023004079@mails.cust.edu.cn>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: fankex <2112325885@qq.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Add conditions for transfer field in dashboard for Calendar card
Adding default filter for calendar dashboard card to remove transfers
* Add release notes for calendar summary card bugfix
I'm not sure how widely-understood the term "nest egg" is,
so use a more general term like "life savings". Also, for
projected future amounts, the tooltip already contains the word
"(projected)" to indicate that this is a future value, so we don't
need the word 'target' here, which I find a bit confusing. See
https://github.com/actualbudget/actual/pull/6384#issuecomment-3649921717
for more discussion.
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
* this is a test
* [autofix.ci] apply automated fixes
* dot reporter for line by line
* [autofix.ci] apply automated fixes
* ok...
* list reporter
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6429
* fix couple of issues
* Revert "Update VRT screenshots"
This reverts commit 0124b13475.
* putting text change back
* release notes
* skipping translations on the desktop app
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Refactor how report dates are handled to more closely match pattern oin CashFlow report. Fixes issues with black screen when selecting certain Live date modes
* Add null handling for allMonths and make date clamping more consistent.
* Remove arbitray limit for at least two montsh to calculate expenses. This allows the chart to work (someone) with one previous month of expenses.
* Fix VRT comment posting for fork PRs
Use workflow_run trigger to post VRT failure comments with elevated permissions, enabling comments on PRs from fork repositories where GITHUB_TOKEN is read-only.
* Update permissions in e2e-vrt-comment workflow to allow read access for actions
* Enhance VRT comment posting in workflow by using environment variables for PR number and artifact URL
- Removed temporary ignores for the docs package.
- Updated linting rules for the docs package to improve code quality.
- Refactored variable declarations from `let` to `const` for better consistency.
- Added a new configuration file for oxlint in the docs directory.
- Made minor formatting adjustments across various components.
* fix: hide merge-and-edit-rule when not creating rule
When 'Automatically rename these payees in the future' is unchecked, no rule is created, so 'Merge and edit rule' should not be offered.
Fixes#6377
* docs: add release note for #6393
* fix: use start:browser for playwright webServer to load correct browser-preload
The playwright webServer was running 'yarn start' which doesn't set
IS_GENERIC_BROWSER, causing Vite to not resolve .browser.js files.
This resulted in browser-preload.js (empty electron stub) being loaded
instead of browser-preload.browser.js, making window.Actual undefined.
Changed to 'yarn start:browser' which properly sets IS_GENERIC_BROWSER=1
via the watch-browser script.
* chore: update Playwright configuration and add blob-report to .gitignore
- Modified Playwright config to use 'yarn start' with the correct working directory for local builds.
- Added 'blob-report' to .gitignore to exclude it from version control.
- Created release notes for running e2e tests against a local build instead of Netlify.
* chore: update transaction test snapshots for split and transfer transactions
- Updated binary snapshots for split and transfer test transactions in the e2e tests.
- Ensured that the latest visual changes are reflected in the test suite for accurate regression testing.
* chore: update transaction test snapshots for split and transfer transactions
- Updated binary snapshots for split and transfer test transactions in the e2e tests to reflect recent changes.
- Ensured visual consistency for accurate regression testing.
* refactor: change test lifecycle hooks from beforeAll/afterAll to beforeEach/afterEach
- Updated test files to use beforeEach and afterEach hooks for better isolation of tests.
- This change ensures that each test starts with a fresh state, improving reliability and reducing side effects across tests.
* chore: update e2e test workflow to disable translation downloads
- Modified the e2e test workflow to include a new input parameter `download-translations` set to 'false' for the setup action.
- This change aims to streamline the testing process by preventing unnecessary translation downloads during the test runs.
* chore: update e2e test snapshots for settings page visuals
- Updated binary snapshots for the settings page in e2e tests to reflect recent visual changes.
- Ensured that the latest visual updates are accurately represented for regression testing.
* fix: safely close page in e2e tests
- Updated all e2e test files to use optional chaining when closing the page, ensuring that the close method is only called if the page is defined.
- This change improves the robustness of the tests by preventing potential errors when the page object is not available.
* feat: trigger VRT updates via /update-vrt comment
- Change vrt-update-generate.yml to trigger on issue_comment with /update-vrt
- Update VRT failure comment to inform users about the /update-vrt command
- Add step to fetch PR details since issue_comment events don't provide them
* fix: update VRT trigger condition to use startsWith for command detection
- Modify the condition in vrt-update-generate.yml to use startsWith instead of contains for the /update-vrt command in PR comments, ensuring more accurate command detection.
* Update useTagCSS.ts light = dark
* Update useTagCSS.ts so all themes use the same color scheme
* [autofix.ci] apply automated fixes
* Improve tag readability in light theme.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
When using the @actual-app/api package, if authentication failed during
init() (e.g., wrong password, network issue), the error was silently
ignored. This led to confusing 'Could not get remote files' errors later
when calling downloadBudget().
This fix ensures init() properly throws an error when authentication
fails, providing clear feedback like 'Authentication failed: invalid-password'.
Fixes#6320
* Refactor e2e-test workflow to improve Playwright test sharding and report handling
- Restore full shard count (5 shards) for Playwright tests to enhance test coverage and performance
- Re-enable functional desktop app tests with proper xvfb setup
- Simplify Playwright test command structure for better readability
- Refactor VRT blob report merging process with improved artifact handling
- Update Playwright reporter configuration to use blob reporter in CI
- Streamline artifact paths and download/merge operations for better organization
* Remove VRT environment variable from e2e-test workflow to streamline test execution
* Update e2e-test workflow to always upload VRT blob report artifacts, ensuring consistent artifact handling regardless of job cancellation.
* Fix detection of crossover point for low expense months
Always compute the expense projection and calculate the crossover point
based on the projection instead of individual historical expense data
because otherwise a low expense month can incorrectly trigger a false
crossover point detection.
See comment at
https://github.com/actualbudget/actual/issues/6134#issuecomment-3608140098
for more information.
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6371
---------
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* adding path filters to workflows so they only run when required
* trigger them also when the workflow changes
* adding yarn lock in case packages affect e2e
* release notes
* add the package.json in case we modify the scripts
* Remove API changes from size comparison workflow
* Clarify size impact of package changes in workflow
Updated comments to clarify that certain package changes don't affect the size of the web/api.
* Fix comments for VRT update exclusions
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6364
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6364
* Fix comment formatting in VRT update workflow
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Use personal access token securely for VRT update workflow push
* Update button label from 'Apply budget template' to 'Overwrite budget template' in mobile budget menu modal for consistency with recent changes.
* Update button label from 'Overwrite budget template' to 'Overwrite with template' in mobile budget menu modal for clarity and consistency.
GITHUB_TOKEN doesn't have permission to push to fork branches. Use a PAT stored as ACTIONS_UPDATE_TOKEN instead for:
- VRT update workflow (checkout and push to contributor forks)
- AI-generated release notes (commit files to PR branches)
* Fix lint violations
* Refactor code for clarity and consistency
- Updated various components to improve readability and maintainability, including:
- Changed `while (1)` to `while (true)` for better clarity.
- Simplified conditional checks by removing unnecessary boolean casts.
- Added missing `key` props in mapped elements to ensure proper rendering in lists.
- Adjusted the handling of hidden states in budget components for clearer logic.
- Cleaned up linting rules in `.oxlintrc.json` to streamline configuration.
* Enhance accessibility and linting compliance
- Updated `.oxlintrc.json` to add a warning for `jsx-a11y/no-autofocus` and removed several disabled rules.
- Added `aria-level` attributes to improve semantic structure in `Page.tsx`, `Modal.tsx`, and `ReportCardName.tsx`.
- Replaced `<label>` elements with `<Text>` components in various modals to ensure proper accessibility.
- Added `htmlFor` attributes to labels in `ImportTransactionsModal.tsx` for better form accessibility.
- Disabled specific linting rules inline to address accessibility concerns in `Image.jsx` and `Toggle.tsx`.
* Add new keywords to spelling allowlist
- Updated `.github/actions/docs-spelling/allow/keywords.txt` to include `oxfmt` and `oxlint` for improved spell-checking in documentation and code comments.
* Disable no-autofocus rule in .oxlintrc.json
* Update Trans component usage in MergeUnusedPayeesModal
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Update importing.md
Update to include links to connecting your bank, community projects and added that AB supports CAMT imports.
* Update importing.md
* Update importing.md
* Update importing.md
Added pluggy.ai
* Apply suggestions from code review
Co-authored-by: youngcw <calebyoung94@gmail.com>
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* add tokens to replace in release pipeline for metainfo release dates/versions
* validate the metainfo in pipeline
* install appstream first
* release notes in the metainfo
* release notes for metainfo - testing pipeline
* pipeline works
* brand colors as per flathub recommendation
* picked colours following flathubs recommendations
* contrast
* contrast checked
* updating nightly flow to also work with new metainfo for testing
* replacing manifest info and creating pr
* minor improvements
* release notes
* upgrade action
* Fix lint violations
* Refactor code for clarity and consistency
- Updated various components to improve readability and maintainability, including:
- Changed `while (1)` to `while (true)` for better clarity.
- Simplified conditional checks by removing unnecessary boolean casts.
- Added missing `key` props in mapped elements to ensure proper rendering in lists.
- Adjusted the handling of hidden states in budget components for clearer logic.
- Cleaned up linting rules in `.oxlintrc.json` to streamline configuration.
* Fix unused variable warning in electronApp fixture
* Fix linting comment in fixtures.ts
* Fix English grammar in the repair transactions description. "Check if you have any budget transfers that erroneous contain a category" corrected "erroneous" to "errouneously"
* Add release note 6324.md
* Add link detection in transaction notes
* update release notes
* Fix trailing punctuation from URLs and add space between segments
* rename openFileInExplorer to openInFileManager
* Add ESM loader support and update sync-server modules
* Update TypeScript configuration and fix bank file import filter in sync-server
* Remove deprecated loader and register files, update TypeScript configuration to use ES2021, and add a new script for automatically adding import extensions to JavaScript files.
* Update test script in package.json to include a custom loader and clean up import extensions script by removing unused 'stat' import.
* feat: Add warning for unresolved imports
Co-authored-by: matiss <matiss@mja.lv>
* [autofix.ci] apply automated fixes
* Remove unused 'import/extensions' rule from ESLint configuration
* Refactor import statements in sync-server
- Updated import path for migrations to remove file extension.
- Added ESLint directive to ignore import extension rule for reset-password script.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix(reports): exclude transfers from dashboard summary cards
The income and expense summary cards were incorrectly including transfer transactions, which inflated the displayed values.
Added 'payee.transfer_acct': null filter to the AQL queries to exclude transfers.
Fixes#6258
* Add release notes for PR #6263
* Revert "fix(reports): exclude transfers from dashboard summary cards"
This reverts commit ba9baa5c6d.
* fix(reports): exclude transfers from summary cards in the default dashboard
* Update release notes for PR #6263
* Add mobile schedules pages and fix routing issues
- Add MobileSchedulesPage with list view and search functionality
- Add MobileScheduleEditPage for creating/editing schedules
- Add supporting components: SchedulesList, SchedulesListItem, AddScheduleButton
- Fix MobileNavTabs routing to include /schedules route
- Fix wide view routing: wrap schedule edit route with WideNotSupported
- Update MobileNavTabs to enable schedules navigation
- Add responsive exports for mobile schedules components
* Refactor MobileScheduleEditPage and SchedulesListItem for improved layout and navigation
- Remove modal dispatch for editing rules, replacing it with direct navigation to the rule edit page.
- Update SchedulesListItem to streamline the display of payee and account information using SpaceBetween for better alignment.
- Enhance ScheduleEditForm with responsive design adjustments for narrow widths, ensuring a more flexible layout.
- Replace Account and Payee autocomplete components with a more generic input approach for better reusability.
* Enhance MobileScheduleEditPage and ScheduleEditForm with improved footer and optional callbacks
- Add a footer to MobileScheduleEditPage with a Save button for better user interaction.
- Update ScheduleEditForm to make onSave and onCancel props optional, allowing for more flexible usage.
- Adjust layout and styling for better responsiveness and user experience.
* Improve error message styling in ScheduleEditForm by adding margin for better visibility
* Refactor ScheduleEditForm and MobileScheduleEditPage for improved layout and functionality
- Simplify the structure of ScheduleEditForm by removing unnecessary wrapper elements and enhancing responsiveness.
- Update MobileScheduleEditPage to include padding adjustments for better visual consistency.
- Introduce a footer with Save and Cancel buttons in ScheduleEditModal for improved user interaction.
- Ensure optional callbacks for onSave and onCancel in ScheduleEditForm for greater flexibility.
* Add aria-label for accessibility in PayeeAutocomplete component
- Introduced translation support for the 'Payee' label using useTranslation.
- Enhanced accessibility by adding an aria-label to the input field in PayeeAutocomplete.
* [autofix.ci] apply automated fixes
* Refactor MobileScheduleEditPage and related components for improved functionality and structure
- Simplified the MobileScheduleEditPage by removing unnecessary imports and restructuring state management with the new useScheduleEdit hook.
- Extracted updateScheduleConditions logic into a separate utility file for better reusability and clarity.
- Enhanced ScheduleEditModal to utilize the new form dispatch mechanism, improving state management and error handling.
- Updated ScheduleEditForm to streamline field management and improve overall responsiveness.
* Enhance AccountAutocomplete component with accessibility improvements
- Added aria-label for the input field in AccountAutocomplete using translation support for better accessibility.
* Refactor imports in MobileScheduleEditPage, ScheduleEditModal, and useScheduleEdit for consistency
- Reintroduced the ScheduleEditForm import in MobileScheduleEditPage and ScheduleEditModal for clarity.
- Moved the updateScheduleConditions import in useScheduleEdit to maintain a consistent import structure across components.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6158
* Refactor MobileScheduleEditPage and useScheduleEdit for improved loading state management
- Removed local loading state from MobileScheduleEditPage and integrated it into the useScheduleEdit hook for better state handling.
- Enhanced error handling by displaying a "Schedule not found" message when the schedule is null.
- Streamlined the loading state check in the component to improve user experience.
* Remove unused import of 't' from ScheduleEditModal.tsx
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6158
* Refactor schedule edit dispatch handling in MobileScheduleEditPage and ScheduleEditModal
- Replace formDispatch with a unified dispatch in MobileScheduleEditPage and ScheduleEditModal for handling form errors and transaction switches.
- Update useScheduleEdit hook to remove the formDispatch wrapper, simplifying the dispatch mechanism.
- Change the type of the date field in DiscoverScheduleEntity from ScheduleEntity['_date'] to RecurConfig for better type accuracy.
* Refactor ScheduleEditModal and useScheduleEdit for improved schedule initialization
- Utilize useMemo in ScheduleEditModal to streamline initial schedule creation based on transaction data.
- Introduce useEffectEvent in useScheduleEdit to enhance schedule loading logic on component mount.
- Simplify the handling of initial schedule conditions and actions, improving code readability and maintainability.
* Add mobile schedules functionality with comprehensive tests
- Introduced Mobile Schedules page and navigation integration.
- Created end-to-end tests for various functionalities including visual checks, empty state handling, schedule creation, editing, and search/filter capabilities.
- Added necessary page model classes to support the new features.
- Updated existing components to accommodate new mobile schedules functionality and ensure proper layout and user experience.
- Included visual regression test snapshots for the new features.
* Refactor navigation method in MobileNavigation class for improved readability
- Simplified the goToSchedulesPage method by removing unnecessary await, enhancing code clarity.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6158
* Remove deprecated test for schedule creation and associated visual regression test snapshots
* Add Schedules Page Menu Modal and enhance Mobile Schedules Page
- Introduced SchedulesPageMenuModal to the modals system.
- Updated MobileSchedulesPage to include a button that opens the new Schedules Page Menu.
- Refactored schedule filtering logic to incorporate a local preference for showing completed schedules.
- Added local preference for 'schedules.showCompleted' to manage completed schedule visibility.
- Updated SchedulesTable to utilize the new local preference for completed schedules.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6158
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix(core): handle unicode minus in number parsing
Fixes#6206. Added support for Unicode minus (U+2212) in looselyParseAmount, currencyToAmount, and stringToInteger. Added unit tests.
* Refactor: Improve currency parsing logic
Co-authored-by: matiss <matiss@mja.lv>
* Refactor: Simplify currency parsing logic
Co-authored-by: matiss <matiss@mja.lv>
* [autofix.ci] apply automated fixes
* fix: Handle Unicode minus inside parentheses correctly
Fixed bug where amounts with both parentheses and Unicode minus (e.g.,
(−3.45)) were parsed as null instead of negative numbers. The Unicode minus
is now removed from within parentheses before the parentheses-to-minus
conversion, preventing double minus signs that caused parseFloat to return NaN.
Added test cases for parenthesized amounts containing Unicode minus.
* Add release notes for PR #6247
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* docs: Add comprehensive developer documentation
- Add development-setup.md with environment setup and essential commands
- Add testing.md documenting Lage, Vitest, and Playwright workflows
- Add code-style.md with TypeScript, React, and coding conventions
- Add troubleshooting.md for common development issues
- Enhance contributing/index.md with development workflow section
- Expand project-details/index.md with detailed package descriptions
- Enhance architecture.md with technical details and remove outdated references
- Update AGENTS.md to reflect docs are now part of monorepo
- Fix outdated command examples and Node.js version references
- Update sidebar to include new documentation sections
* fix: Correct link path in code-style.md
* docs: Update documentation references and remove outdated notes
- Clarify that the documentation website is now part of the monorepo in AGENTS.md
- Remove the import organization section from code-style.md to streamline guidelines
- Update project-details/index.md to reflect the current status of the documentation website
* Update release-notes workflow to exclude AGENTS.md from non-docs file checks
* Update release-notes workflow to remove AGENTS.md exclusion and add upcoming release notes for missing information in Agents.md
* Refactor documentation to streamline testing and project structure guidelines
- Removed outdated test commands from AGENTS.md and development-setup.md for clarity.
- Updated code-style.md to correct a formatting issue in the contribution checklist.
- Consolidated package command references in project-details/index.md to focus on essential information.
- Enhanced troubleshooting documentation by removing redundant steps and clarifying solutions.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6120
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* 🔖 (25.12.0)
* force ci
* Remove used release notes
* add blog post
* fix spelling
* make netlify happy?
* last one
* fix some formatting
* remove icns from allowed spelling to avoid accidental missspellings
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6285
* force ci
* force ci
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6285
* revert flaky vrt. please don't update again...
* make the release dates match
---------
Co-authored-by: youngcw <28542559+youngcw@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Revise reconciliation instructions for clarity
Updated the reconciliation documentation to clarify the process and improve readability.
* Update button text for reconciling action
Changes wording of 'Done reconciling' button to 'Exit reconciling'.
* Modify button text for reconciliation process
Updates button wording based on reconciliation status.
* Update button wording in release notes
* Refine language in reconciliation documentation
Updated wording for clarity and consistency throughout the reconciliation documentation.
* Add files via upload
* Update reconciliation screenshots
* Update reconciliation images for 2025
* Add files via upload
* Clarify exit option in reconciliation process
Added a note about exiting reconciliation without locking transactions.
* Fix cleared transactions total in reconciliation guide
Corrected the cleared transactions total from 324.82 to -82.60 in the reconciliation instructions.
* Update reconciliation.md
* Update reconciliation.md to resolve conflicts
* Add files via upload
* Update reconciliation.md unlocking transactions
* Update 6220.md
* Update 6220.md
* make it easier to download the desktop app artifacts
* release notes
* naming the artifacts *.zip becuase zips are mandatory
* Revert "naming the artifacts *.zip becuase zips are mandatory"
This reverts commit 02f9fcaa69.
* update downloads page table to have less duplication
* color from variable
* add component to exclude for spell check
* adding workflow to docs files for release notes exclusion
* release notes
* cli tool added to the server download list
* Rename button text from 'Done reconciling' to 'Complete Reconciling'
* Change button text from 'Done' to 'Complete'
* Update button text in reconciliation test
* Update button text for reconciliation completion
* Modify reconciliation completion messages
Updated reconciliation messages to provide clearer instructions.
* Change button text from 'Complete Reconciliation' to 'Exit reconciling'
* Fix capitalization in 'Exit Reconciling' text
* [autofix.ci] apply automated fixes
* Update release notes for reconciliation changes
Changes wording for clarity and adds exit option.
* Update release notes with button wording changes
Changes wording for clarity and adds a new exit option.
* Update category and button wording in release notes
Changes the category from 'Changes' to 'Enhancements' and updates button wording.
* Clarify wording for reconciliation exit options
* Update test expectation for reconciled message
* Update test to check for reconciled message
* [autofix.ci] apply automated fixes
* Clean up reconciliation view text
Removed unnecessary line breaks and exit message from the reconciliation view.
* [autofix.ci] apply automated fixes
* Update reconciliation test for improved text matching
* [autofix.ci] apply automated fixes
* Update packages/desktop-client/src/components/accounts/Reconcile.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* [autofix.ci] apply automated fixes
* Change button click from 'Exit reconciling' to 'Lock transactions'
* Enhance release notes for reconciliation button changes
Updates authors and clarifies button wording for reconciliation.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Exclude test files from build artifacts
- Update crdt tsconfig.dist.json to exclude test files from dist output
- Update desktop-electron tsconfig.dist.json to exclude test files from build output
This prevents test files from being compiled into dist directories and
ensures they won't be picked up by test runners in CI/CD.
* Add release notes for PR #6216
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* update pwa icons to new one
* release notes
* icon
* color update for menu
* icon tiny bit smaller
* favicons as well - why not
* keeping the old icons for reference
* last icon archived
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6204
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Update index.md
New screenshots. Add new settings
* Add files via upload
New screenshots for setting page
* Update index.md
Small adjustments
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6197
* Update index.md
More small adjustments to formatting.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
- Created ScheduleEditForm component with all form fields, transactions table, and footer buttons
- Moved NoTransactionsMessage component to ScheduleEditForm
- Updated ScheduleEditModal to use the new form component
- Form component is now reusable for mobile schedules page
* Allow category to be added from sidebar group
* [autofix.ci] apply automated fixes
* Small add category adjustments
- Add tooltip on add button hover
- Fix NotesButton padding for proper border radius rendering
- Add ability to disable tooltip pointer events so that the tooltip does not float when the trigger disappears
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6110
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Combine bundle stats comments in PR
* Refactor bundle stats comment generation to use a mapping approach for base and head stats, improving argument parsing and validation in the CI action.
* Enhance size comparison workflow by adding steps to checkout the base branch and set up the environment, ensuring accurate build status checks for pull requests.
* Implement size comparison job in GitHub Actions workflow, replacing the deprecated size-compare.yml. This new job downloads build stats from both the base and head branches, processes the stats files, and generates a combined comment for pull requests, enhancing visibility into bundle size changes.
* Add release notes for bundle size stats update, consolidating workflow and PR comment generation.
* Refactor GitHub Actions workflows by removing the deprecated size comparison job from build.yml and introducing a new size-compare.yml workflow. This new workflow enhances build status checks and ensures accurate reporting of bundle size changes for pull requests.
* chore: update action versions and improve error messages in bundle stats scripts
- Updated GitHub Actions to specific commit versions for `upload-artifact` and `checkout`.
- Enhanced error messages in `bundle-stats-comment.mjs` and `update-bundle-stats-comment.mjs` for better clarity and consistency, replacing standard quotes with typographic quotes.
* fix: standardize error messages in bundle-stats-comment.mjs
- Updated error messages in `bundle-stats-comment.mjs` to remove typographic quotes for consistency and clarity.
* fix: do not clear notes field on action.op change
* [autofix.ci] apply automated fixes
* Update upcoming-release-notes/6046.md
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* feat(currency): add currency support to templates and goals
* fix: linting
* fix: add weekly guard as per coderabbit suggestion
* fix: add decimalPlaces to removeFraction
* test: add tests for JPY
* simplify currency usage in template
I am unable to upload images from my fork. They are here:
[images](https://github.com/Juulz/docs/tree/master/static/img/credit-cards)
Updated Credit Cards:
- Rewrote index.md to explain how Actual treats credit cards
- Split off Paying in Full - Within the Budget and rewrote with
screenies
- Rewrote Carrying debt with screenies
Please add Citi and Citibank to allowed words. Thank you.
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Add Crossover Report
* Fix lint and typecheck
* Use useFormat hook for formatting, make spreadsheet always return cents
* Change defaults to all categories and accounts. Return 0 when no categories selected
* Change error handling to use addNotification
* Detect if crossover has already happened before projecting
* [autofix.ci] apply automated fixes
* lint:fix. Only get first crossoverIdx
* Annualize historical return via compounding, not multiplication
Use effective monthly rate from annual return
Guard against undefined starting balance
* Optional guard in median helper for future-proofing
Use consistent rounding when checking the projected crossover
Avoid O(n^2) lookups when aggregating balances by month
* Add Crossover Report Feature Flag
* Add option to show hidden categories
* Remove estimated return placeholder text since the formatting was unclear
* Initialize defaults when widget meta is absent
* Hidden categories remain in expense totals
* [autofix.ci] apply automated fixes
* Update packages/loot-core/src/types/prefs.ts
Fix merge conflict semi-colon
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update prefs.ts
Try again to fix merge conflict.
* Fix percentage inputs showing trailing zeros for some numbers
* Fix projection not happening if crossover happens historically but then reverts
* some tweaks for consideration. Remove if undesired
* go back to original math
* Fix change in percentage formatting for CrossoverCard
* Optimize date range calculation and add cleanup to CrossoverCard
Use format utility for years to retire
Replaced hardcoded color with theme token
* [autofix.ci] apply automated fixes
* Try again to standardize display and storage of percentages without repeating decimals
* Add tooltips with descriptions to crossover chart inputs
* Refactor Crossover component to use translation for 'N/A' strings and simplify estimatedReturn assignment
* Refactor Crossover components to improve date range calculations and ensure proper handling of the latest month
* Fix typo in Crossover component: corrected "retirment" to "retirement" in user instructions
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
The current roadmap only contained a subset of the options for setting
up a server. Rather than maintain two copies of the same information (or
preferring one method over the other), I think it's best to simply link
to the relevant section.
* add ctrl/cmd + enter as shortcut to only add single transaction
* note
* add same logic to add button
* add keyboard shortcut
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6037
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix server sync file download when server-files are in .config directory on linux
* extra security
* release notes
* putting it back after testing
* also accounting for directories
* derp
* made Budgeted header to be multiline and increased font minimum font size
* added release note
* Update upcoming-release-notes/5900.md
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Quan Nguyen <quannm@Quans-MacBook-Pro.local>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* add new desktop app icons for better display on linux, and to prepare us for mac liquid glass
* png for windows
* release notes
* put old icons in archived folder
* Fix to show the notification for updating service worker
* cleanup
* Add release notes for PR #5963
* trigger pipeline
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Relates to https://github.com/actualbudget/actual/pull/5925
Documentation improvements:
* Added `balance` as a supported template variable, describing its type
and value in the template variables table.
* Updated spacing to fix some markdown lints.
* Adds balance variable to rule templates
Enables access to the account balance within rule templates. This allows for more complex rule creation based on the current account balance.
Calculates the account balance up to the transaction being processed, including transactions on the same date with lower sort order.
Handles cases where the balance is undefined gracefully, defaulting to 0 to prevent errors.
## AI disclaimer
This PR contains code that was partially or fully generated by AI and may contain errors. All suggestions for improvement are welcome.
* Add release notes
* indexed sql params not supported
* [autofix.ci] apply automated fixes
* Skip parent transactions of splits
* Uses aql for account balance
Updates transaction rule preparation to use aql instead of sql calculating it from past transactions.
The balance is defaulted to 0 if no account is set.
Refactor account balance calculation to build a proper query with date and sort_order filters
* Add block scoping to switch cases and ensure correct fallthrough handling in Action type conversions
* Corrects transaction rule sorting order
Reverses the sort order comparison in transaction rules
to ensure correct identification of prior transactions with the same date.
This ensures that the correct balance is used when
calculating balance-based rule conditions.
fixup! Corrects transaction rule sorting order
* Improves transaction rule balance calculation
Uses a more efficient query for calculating the account balance
up to a transaction when applying rules, improving performance.
This change reduces the complexity of the balance calculation.
* Apply coderabbit lessons learned
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
---
category: Enhancements
authors: [AndrewG147]
---
Transfers can now be created from split transactions (changed in
[25.9.0](https://github.com/actualbudget/actual/pull/5604)). The former
condition is not valid anymore
* update flatpak sdk and platform
* release notes
* flatpak version config
* going to 24.08 to support as many distros as possible
* remove unneded file
* enhancement: fix Cetelem bank transations
The amount coming from GoCardless has the opposite sign of what we expect.
* Cetelem bank: make code more future-proof
Change based on code review suggestion
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* budgetfilesSlice: Fix paste-o in fallback sorting by ID
* Create 5918.md
* 5918.md: Clarify
* 5918.md: Ah, those square brackets don't just indicate a placeholder
* upgrade electron-builder
* no postinstall when yarn immutable
* downgrade to last version without the bug
* fix issue with wrappy
* release notes
* regen yarn lock
* react-sprint
* hmm
* update yarn manually...
* fixing spring?
* lock
* finally
* conflict
* put package back
* add retries to electron server import
* release notes
* get rid of this menu. If its an app functionality it should be available within the app
* hide the menu - update the ui
* fix function call
* Update VRT
* release notes
* spelling mistake
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Align amount conversion utilities between api and loot-core
Updates api amount conversion utilities to align with loot-core, improving consistency and maintainability across the project.
Uses decimal places as parameters in conversion functions.
* Moves amount conversion utils to core
Moves amount conversion utilities to the core library.
This change consolidates these utilities for better code reuse
and maintainability across different parts of the application.
It removes the duplicate definition from the API package and
imports it from the core library where it is shared.
* add average per year to summary report
* note
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* initial test to trim the intervals
* bit more
* got the logic
* fix table data
* add migration for trim intervals
* release notes
* nice work rabbit
* small cleanup
* not sure how major that is but yeah why not
* add limit template
* use null to match other tempaltes
* add in directive
* handle no limit preset
* limit periods aren't optional
* make start field the right type
* fix test
* fix looping
* remove unneeded comment
Users will attempt to install actual, and connect it, but then find they
cannot sign up, so pointing this out earlier is a good thing.
Ideally in the docs page actual should stop advertising it at all, and
simply leave the instructions there for people who already have
accounts, but not mention it in the features and such.
* show net worth graph for each account page
* add release notes
* hide filter button
* fix lint
* import ReactNode type
* find selected accounts based on accountId param
* remove breaks
* can toggle account page net worth graph
* Improves account balance history graph
Refactors the balance history graph to improve its data fetching and rendering.
Removes the `selectedAccounts` state and related logic from the Account component, simplifying its state management. The `accountId` is now passed directly to the BalanceHistoryGraph.
Moves the BalanceHistoryGraph component to the accounts directory and removes the redundant BalanceHistoryGraph in the sidebar.
Updates the queries to directly use the accountId for filtering transactions, leading to more efficient data retrieval.
* mv
* min width and height only for sidebar
* move toggle chart button to account menu
* add fill gradiant to chart
* fix maxWidth
* fix chart hover offset
* responsive graph aspect ratio
* auto hide chart on short view
* revert balance position
* auto hide chart on 15% height
* remove chart boolean from internal state
* Implement account-specific net worth chart preferences
Replaced global net worth chart visibility preference with account-specific preferences. Updated components to use the new dynamic preference keys and added a toggle option in the account menus for better user customization.
* lint
* fix account groups
* Update VRT
* bump
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* minor typescript updates
* [autofix.ci] apply automated fixes
* more typescript changes
* [autofix.ci] apply automated fixes
* Another typescript
* fixes
* [autofix.ci] apply automated fixes
* fixed test
* [autofix.ci] apply automated fixes
* renaming a few things
* [autofix.ci] apply automated fixes
* a test
* test 2
* [autofix.ci] apply automated fixes
* test 3
* attempting to add a new test
* [autofix.ci] apply automated fixes
* test update
* additional typing.
* [autofix.ci] apply automated fixes
* Testing first item again
* [autofix.ci] apply automated fixes
* temporarily adding logging
* [autofix.ci] apply automated fixes
* only running rules within a schedule if exists
* swapping if
* removing unused import
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fixing typecheck
* updated test
* [autofix.ci] apply automated fixes
* Updated screenshots
* further test fixing
* changing test order
* [autofix.ci] apply automated fixes
* Almost there
* new images
* tests may be flaky
* just one image
* 🙏
* 🙏🙏
* removing all images
* Revert "removing all images"
This reverts commit 4492cb7080.
* small order change
* [autofix.ci] apply automated fixes
* Update VRT
* Update packages/desktop-client/e2e/schedules.test.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* reverting unrelated changes
* [autofix.ci] apply automated fixes
* Reverting one other typescript change
* testing completing 1 schedule
* Update VRT
* release wrote rewrite
* Making sure rule application is saved
* Cleaning up get function
* prettier and null catch
* Removed now unused schedule type
* Better falling back if rule / schedule no longer exists
* linting
* Better typing for db request
* camel case to make code rabbit happier
* slightly more accurate comment
* [autofix.ci] apply automated fixes
* Running other rules when linked rule runs
* lint / prettier
* one more lint
* Update 5414.md
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Add check that category is not hidden before copying last months budget
* Add release notes
* Add check that group is also not hidden
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Remove usage of a raw variable in CategoryAutocomplete component
* Cleanup
* Fix typecheck error
* Fix typecheck error
* Highlight first suggestion when searching instead of the split option
* Fix error
* Fix special item highligted index
* feat: add EGP and SAR currencies to supported list
* add release notes for currency support
* use yarn generate:release-notes to fix release notes
* Rename file with PR number 5698
* Introduction of APIs to handle Schedule + a bit more. Refer to updated API documentation PR2811 on documentation.
* Fixed lint Error
* Removed unused declarations
* Fixed Bug in Test module
* Avoiding type Coercion fixes and direct assignment on conditions array.
* Lint Error Fixes
* more issues fixed
* lint errors
* Remove with Mutation in Get function. Fixed quotes. updated getIDyName for error handling
* More lint errors
* Minor final fixes.
* One type coercion removed
* One type coercion removed
* Revert back to original working code
* Added Account testing for both get by ID and updating schedules
* [autofix.ci] apply automated fixes
* Added Payee tests as well
* Payee Tests
* [autofix.ci] apply automated fixes
* Optimized condition checking at the beginning of the code and avoid ambiguity in case of corrupt schedule
* Mode debug infor on error in testing
* better bug tracking
* //more trouble shooting
* Bug fixed
* [autofix.ci] apply automated fixes
* Minor mofication to satisfy code rabbit. We should be ready for review.
* [autofix.ci] apply automated fixes
* Removing type coercion from the model
* [autofix.ci] apply automated fixes
* fixed compilation error
* Fixed new bugs
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Remove usage of a raw variable in AccountAutocomplete component
* Remove usage of a raw variable in CategoryAutocomplete component
* Release notes
* Fix typecheck error
* Fix typecheck errors
* Remove CategoryAutocomplete changes
* Add helper to render automations to template notes
* Add modal to un-migrate from the automations UI
* Add import warning to automations modal
* Add release notes
* Use CSSProperties type from React directly
* Fix version bump logic to work if the month has rolled over
* Refactor script to be more testable
* Add tests for regression
* Move tests to dedicated package
* Add release notes
* Coderabbit
I could not find instructions on the [Budget
Templates](https://actualbudget.org/docs/experimental/goal-templates)
experimental feature docs page for how to enable the feature. I did not
look closely enough at the advanced settings to realize I had to click a
link, even though I had looked at the setting page.
After asking in discord, I was told how to enable the feature, and even
found that there was a parent page [Experimental
Features](https://actualbudget.org/docs/experimental/) which had the
instructions I would have needed.
This PR simply adds a short sentence with a link back to that root page
on the experimental features pages. This would have helped me find my
own solution without needing to ask.
I did not add anything to the [Pluggy.ai
Setup](https://actualbudget.org/docs/experimental/pluggyai) page because
it has the blurb `Pluggy integration is experimental at this point, so
before you can use it you need to enable it under Settings -> Advanced
Settings -> Experimental Features -> Pluggy.ai Bank Sync` in the page
and didn't have the same callout sections at the warning callout
sections as the other pages at the top.
* Enhance responsiveness of GenericInput in RuleEditor component for mobile devices
* Refactor ActionEditor layout in RuleEditor component for improved responsiveness
- Adjusted styles for the View components to enhance layout flexibility.
- Ensured the GenericInput component maintains appropriate minimum width based on method type.
- Updated Stack component to prevent shrinking, improving overall UI consistency.
- Updated the ManageRules component to use ScheduleEntity type for schedules.
- Improved the describeSchedule function to include type annotations for better clarity.
- Added a conditional check to handle cases where the schedule may not exist, ensuring robust functionality.
* Enhance CI workflows to support repository dispatch events and improve branch handling
- Added support for `repository_dispatch` events in build, check, and codeql workflows.
- Updated concurrency group to include `client_payload.pr_number` for better context.
- Modified checkout steps to reference the correct branch from `client_payload` if available.
* Add release notes for PR #5586
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* translate import transactions
* translate import transactions headers
* add relese note
* feed back
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
---------
Co-authored-by: Alex <Alex>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Completed the beginning introduction of Restoring a Backup doc
**P.S. The first screenshot illustrating where to close the finance file
needs to be updated to comply with that in the current version.**
<img width="384" height="402" alt="截屏2025-08-15 09 48 32"
src="https://github.com/user-attachments/assets/c44012df-ecc3-4d76-8280-858001c68aa8"
/>
* Fix transaction hooks and improve transactions loading experience in mobile
* Allow skipping of running balance calculation on preview transactions + recalculate running balances if there are any inversed transaction amounts
* [autofix.ci] apply automated fixes
* Disable PullToRefresh when transaction list is in loading state (See #5080)
* Cleanup
* Add calculateRunningBalancesTopDown to calculate top down from starting balance
* update balance sheet value
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: hidden category selection
* chore: add (hidden) to hidden categories and groups
* feat: add hidden category to filter
* feat: show hidden categories in mobile
* refactor: remove unused variable
I changed two docs pages - multi user and oauth (opeid provider).
There were some minor inconsistencies and errors. I also fixed the
redirect URI from `<domain>/path/openid/callback` to
`<domain>/openid/callback` as the first one was incorrect for my
keycloak instance.
---------
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
The search tool we use has always been a bit clunky for me. There's no
keyboard shortcut support, it doesn't look great, doesn't support react
19, and I had to write a theme sync function for it to work properly
with Docusaurus V3.
The package I've upgraded here fixes all those issues. I've also updated
all the packages to the latest version, and aligned the node support
with the Actual repo.
**Old (very inaccurate search):**
<img width="885" height="573" alt="image"
src="https://github.com/user-attachments/assets/eae157de-8282-412f-b89c-618f3e3e99e5"
/>
**New:**
<img width="676" height="605" alt="image"
src="https://github.com/user-attachments/assets/145db22f-8216-4e3f-9a98-a8bd469f1494"
/>
It also comes with a fancy new search page when you click _See all
results_
> [!NOTE]
> Important This will need a decent amount of testing of images, links,
sidebar, rss feed, etc
Upgrading Docusaurus to the latest.
- We can now use Mermaid diagrams
- It's supposed to have better performance
- It's actively supported (v2 wasn't)
Throughout this PR you'll notice
- Formatting updates (they are required for the build process)
- Some CSS updates - some default styling was changed in the plugins we
use. The updates I've made should make the style near identical to
what's currently live
- Some updates & fixes to bring our docs in line with the v3 way of
writing
Overall, the docs should look the same.
## Known issues:
- The top page nav is flickering when clicking links in the top page
nav. It's happening on the main Docusuarus website
https://docusaurus.io/blog
- If we upgrade we'll have to accept it until they fix it on their end
I encountered this issue when I [created a
PR](https://github.com/actualbudget/actual/pull/5479) to add a new bank
to Actual.
The docs were instructing me to first create the PR and then generate
the docs.
At the same time, when I tried to open the PR, the default template
message was instructing me to generate the release notes *before*
opening the PR.
```
<!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. -->
```
I am not sure who is telling the truth here, but given the emphasis that
the template put on *before* I am inferring that the docs had the wrong
order. If this is not the case, of course feel free to nuke this PR and
update the GitHub template instead.
* merge bump-package-versions script with get-next-package-version
* note
* appease the rabbit
* add update flag to node script
* use update flag in workflow
* not much has changed but they live underwater
* add translations for StatusLabel
* add translations for BalanceHistoryGraph (date)
* add random translations
* Update setHoveredValue update to avoid a crash
format
* add relese note
* feed back
---------
Co-authored-by: Alex <Alex>
* Have the multiple payee text overflow with ellipsis
* [autofix.ci] apply automated fixes
* Add release notes
* add minWidth to the payee text
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Use null as tag color by default (fallback to theme color) and stricter tag validation
* Set ColorPicker's defaultValue props
* Set default tag color in first position
* Make ColorSwatchPicker configurable
Easier to change colors and how they are presented
* fix: Move Add Specific Days to next line and dynamically increase the width of the numbered input box
* [autofix.ci] apply automated fixes
* Add Release Notes
* Update the release notes summary
* Update width from px to ch
* Update schedule date modal to expand when repeat every number increases
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* paginate the count points list files call
* fix tier assignment
* paginate the count points list files call
* fix tier assignment
* ensure utc dates and fix issue filtering to include issues updated in other months
Add documentation for notes tagging and how to change their colors.
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
- Fixes https://github.com/actualbudget/docs/issues/449 which was closed
early
The CLI flow for setting up a new Fly app has changed and simplified.
This PR brings the Actual docs up to date.
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
* start
* migration
* don't show deleted tags in list
* tag updates (#5389)
* upsert tag to ensure uniqueness
and insert default-tag in migration
* remove ability to change default tag color
---------
Co-authored-by: pogman-code <adrian.maurin@gmail.com>
* tags fixes (#5391)
* better tag validation
* fix typecheck issues
* update note
---------
Co-authored-by: pogman-code <adrian.maurin@gmail.com>
* Add button to import existing tag from transactions notes
* fix ##non-tag matching
* 'find' tags instead of 'import' to avoid confusion
* add link to show transaction that have given tag
* use same style as PayeeTableRow's button
When using local group cleanup, currently all funds available in To Budget are distributed into the sinks. This behaviour seems somwhat odd and also results in all later groups or the "global" cleanup run to possibly have no funds as they've been distributed before.
This patch now changes the group usage of cleanup, to only distribute funds made available by the group itself. If one also wants to sink money from To Budget into the category, a simple addtional `#cleanup sink`, will achieve this.
Fixes#5374
Signed-off-by: Christian Speich <christian@spei.ch>
Fixed an Error:
Proxy Pass & Proxy Pass reversed need the tailing / - otherwise static
assets like /static/js/ won't be accessable.
Improvement:
"ProxyPreserveHosts on" submits the host to ActualBudget (e.g.
"budget.example.com")
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Proto "443"
Preserve an loop, if the app requires to be run with SSL
* add colors to ReportTable
* Update VRT
* use default color for zero values
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* only show sidebar tooltip on desktop
* release notes
* Update upcoming-release-notes/5352.md
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* replace with media query checks
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
I wrongly thought that all the card transactions will always
have their first line with the `CARTE` identifier.
But as I have seen recently, it's not the case, and we shouldn't
rely on the ordering of the array returned by the Boursorama
GoCardless integration.
Thus, check for transaction patterns in all of the lines of the
unstructured array.
This addresses a true case (added in test) where the payee name
was wrongly extracted as being `110,04 Gbp / 1 Euro = 0,860763454`
* replace static function with useCallback
occasionally if you are editing the notes of an account and then open another account from the sidebar without first closing the popover, the note would be saved to both the current and previously opened account.
* reset tempNote on id change
* save notes only if changes are made
Previously, the notes were being saved unconditionally when closing the Notes modal. This update ensures that the save action is triggered only if the temporary notes differ from the existing note, reducing unnecessary events.
* fix: apply context menu actions to all selected transactions
when multiple transactions were selected and the user right-clicked on one transaction, context menu actions were only being applied to the right-clicked transaction instead of all selected transactions
* fix: apply context menu actions to all selected payees
when multiple payees were selected and the user right-clicked on one payee, context menu actions were only being applied to the right-clicked payee instead of all selected payees
After registering for a completely unnecessary GoCardless main account,
I found out you actually need GoCardless Bank Account Data acount. Lets
point other new users in the right direction.
* no hidden
* changes for tracking
* note and cleanup
* sentance case
* exclude income categories
* Update VRT
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* add user defined tag colors
* use DB to store tag colors
* change specific tags_colors to generic tags
* move tag customization to its own page (pt. 1)
* move tag customization to its own page (pt. 2), edit description
* move tag customization to its own page (pt. 3), better default tag mgmt
* move tag customization to its own page (pt. 4), tag creation
* move tag customization to its own page (pt. 5), remove tags settings
* Update VRT
* nitpicking & code rabbit fixing
* remove spaces from tag and better partial Tag typing
* add tag similar to transaction add
* peer review updates (live preview)
* enable keyboard navigation
* fix lint errors
* live input for color picker
* disable 3 digit hex color live input
* add context menu
* add tags link to command bar
* Update VRT
* Update VRT
* fix lint issues
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Run rules on transactions created by a transfer.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Apply PrivacyFilter to balance graph display
* Deleted empty line which was added by accident
* Added release note
* [autofix.ci] apply automated fixes
* isHovered state now conditionally deactivates PrivacyFilter if user hovers the graph
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Seray Ciftci <seri@Mac.fritz.box>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Update CRDT protobuf generation to create a .ts file
* Move remaining .d.ts files to .ts
* Fix remaining type errors
* Ignore .d.ts files so we don't accidentally use them in the future
* Add release notes
* Fixes#5228 - has tag(s) filter now takes values when typing quickly and pressing Enter
* Added release notes
* State of GenericInput now gets updated with every keystroke
---------
Co-authored-by: Seray Ciftci <seri@Mac.fritz.box>
* fixed setAverage functions to ignore hidden categories
* Add logic to ignore hidden categories in budget actions
* Modify SQL statements in setAverage functions to also exclude categoryGroups and change DbViewCategory type definition to include hidden flag of the group a category belongs to
* [autofix.ci] apply automated fixes
* Revert setZero functionality to set all budget categories and category groups to zero, including hidden ones
* Add new type DbViewCategoryWithGroupHidden which includes a flag for whether the group a category belongs to is hidden or not, and have setAvg functions use that type instead
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* start
* small fix
* clean
* working for regular transactions
* working for schedules
* cleanup
* typing
* cleanup
* cleanup
* vrt
* bunny
* use pref
* use pref right, lint
* more lint
* vrt
* pass hasInitialBalances to isLoading
* remove comment
* Add option to calculate running balances in useTransactions hook
* Fix typecheck error
* Fix lint error
* use the updated hook
* typecheck
* simplify
* don't show balances when searching
* Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from
* Add filter to usePreviewTransactions and set startingBalance to account and category preview transaction hooks
* use runningbalance from preview transactions hook
* lint
* lint;typecheck
* remove initial from preview balances
* remove unneeded type
* Apply suggestions from code review
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* typecheck; align right; change color
* types
* add a menu item
* cleanup
* fix for loot-core migrated files
* lint;type
* fix import
* only schedules need fixed
* lint
* it works
* cleanup
* make lint happy
* [autofix.ci] apply automated fixes
* simplify a bit
* fix import
* feedback
* fixed regular transaction balance calculation
* fix numbers not showing
* fix schedule running balance
* note
* attempt to update properly
* type
* remove the useEffect that I don't think should be requred
* remove old note
* cleanup
* typeing
* I FINALLY FOUND THE PROBLEM
* cleaner balance calculation
* fixes
* fix zeros
---------
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
- Was expected to only close#696: _Add information about upcoming
schedule length._
- Added sections for Managing Schedules, Schedule Length, Find
Schedules.
- Added introductory section.
- Added clarification on the approximation on amounts
- Rewrote most of the document.
- New screen shots - and deleting old ones.
- Rewrote the intro section to reflect the planning aspects of schedules
and not the automation aspect.
- Added Account Register view screen shot and moved information on
account register view under the Adjusting the Upcoming Length heading.
- Removed "Schedule Options That Are Not Supported" section and moved
information about not supporting holidays as a note under schedule
creation.
* Changed the buttonMenuText color for the light theme so that text is visible on light background as well.
* Updated the release notes.
* Change file name of release notes
* Remove button varient from use last synced total and restore light theme
values to previous.
* fix: reapply thousand separators before passing input to appendDecimals
This ensures that the input going into `appendDecimals` is not malformed when the `hideFraction` option is On, otherwise when hitting delete on the text `"1,234,567"`, it will result in the text `"1,234,56"` which the formatter will parse as `1234.56`. This doesn't happen when `hideFraction` is off since hitting delete on the text `"12,345.67"` results in `"12,345.6"`, which `appendDecimals` will happily handle in a separate case to provide `"1234.56"` as the input into `currencyToAmount`.
* Handle edge cases for reapplyThousandSeparators
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* [autofix.ci] apply automated fixes
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Added a gocardless bank parser for Raiffeisen AT bank
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* speedy
* bunny, fill in missing data
* small cleanup
* Update packages/desktop-client/src/components/sidebar/BalanceHistoryGraph.tsx
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* handle some edge cases, fix the month check
* better date formatting
* one more edge case
* fix
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
- Introduced a new document for Cursor IDE, detailing setup, automation,
and custom rules.
- Updated the new core contributors guide to include a link to the
Cursor IDE documentation for additional tips.
* Fix Boursobank transfer parsing
As per the comments on https://github.com/actualbudget/actual/pull/4958#issuecomment-2988814739,
the Boursobank transfer parsing was not working correctly.
Indeed, the array returned by GoCardless for transfers is randomly
ordered. So we cannot rely on the first line to know its type.
To work around this, the code gets a bit more complex by:
- Checking the first line for known types (card, loan, atm withdrawal)
and handling them accordingly.
- If it's not one of these, we iterate through all the lines by checking
if the array contains a line with the transfer type.
* Add credit note type for BoursoBank
An `Avoir` is a refund made to the credit card.
Adds the proper payee / notes parsing for it.
* Improve Boursobank card transaction parsing
Some Boursobank transactions have an unknown number attached to the
payee name. Remove it from the payee name to ensure consistency across
transactions.
For instance, `CARTE 19/03/25 Github 4 CB*0494` (notice the `4`).
* Improve Boursobank payee name backslashes handling
After more testing, I found that the backslashes present are for the
pending transactions, and indicating the localization of the payment.
To keep the payee name consistent, remove what follows the backslashes.
For instance `PICARD SA 1234\\PARIS\\ FR` is for a pending transaction
whereas `PICARD SA 1234` is what we receive for a completed one.
* Set notes with date for Boursobank card transactions
@mistyque requested to see the data of the card transaction in this
comment: https://github.com/actualbudget/actual/pull/4958#issuecomment-2981459622
* Add 5202 release note
* [autofix.ci] apply automated fixes
* refactor loops and match
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* start
* small fix
* clean
* working for regular transactions
* working for schedules
* cleanup
* typing
* cleanup
* cleanup
* vrt
* bunny
* use pref
* use pref right, lint
* more lint
* vrt
* pass hasInitialBalances to isLoading
* remove comment
* Add option to calculate running balances in useTransactions hook
* Fix typecheck error
* Fix lint error
* use the updated hook
* typecheck
* simplify
* don't show balances when searching
* Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from
* Add filter to usePreviewTransactions and set startingBalance to account and category preview transaction hooks
* use runningbalance from preview transactions hook
* lint
* lint;typecheck
* remove initial from preview balances
* remove unneeded type
* Apply suggestions from code review
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* typecheck; align right; change color
* types
* add a menu item
* cleanup
* fix for loot-core migrated files
* lint;type
* fix import
* only schedules need fixed
* lint
* it works
* cleanup
* make lint happy
* [autofix.ci] apply automated fixes
* simplify a bit
* fix import
* feedback
---------
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* add Belfius and KBC to banks with limited history
* Update upcoming-release-notes/5183.md
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update `processBankSyncDownload` to store synced balance in `balance_current`
* Display last synced balance in `MoreBalances`
* Add "Use last synced balance" to reconcile
* Remove logs
* Release notes
* Fix lint
* Add missing useEffect dep
* Restore console.log and fix type for id
* Last synced total
* Fix lint
* lint
* Made requested changes from maintainers.
* Added my name to authors note and updated description of feature.
---------
Co-authored-by: Spencer Sawyer <spencer@spencersawyer.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Move more .d.ts files to .ts
* Add release notes
* Some errors with templates snuck in
* Fix API build
* CodeRabbit feedback
* Move budget templates to new directory
* Fix type errors in library module
My Monzo bank appears to return 'name' through the GoCardless getDetails and getMetadata calls, but the value in the getMetadata response is an empty string! Merging metadata values over detail values therefore risks losing values, that are useful to have & to present to the user.
To solve this, we can make getDetailedAccount smarter about merging the two objects. We could swap the object splattening around so details has priority over metadata, but I'm not at all confident there won't be other banks doing strange things with additional properties that might suffer similar bugs in the reverse scenario.
Instead, we loop through all keys in both objects and construct a new merged object, continuing to prioritise metadata over details but changing it to a truthy-based comparison (with the `||` operator).
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
- Desktop electron works with self hosted out of the box now.
- Made Sync Server a third level header for consistency since it's no
longer in a separate repo.
* add workflow for publishing edge npm packages
* release notes
* alright mr rabbit
* never trust the wabbit
* changing tag to nightly as per maintainer feedback
* fix hotfix script version
* rename workflow
* wabbit
* exit process
* fix reference to package json
* variable scoping
* change nightly version number to yyyymmdd (#17)
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Fix net worth graph gradient conflict
Ensures that the net worth graph's gradient ID is unique to prevent conflicts when multiple graphs are rendered on the same page.
Fixes#3965
* Apply review suggestion
Current documentation includes ActualTap-Py which is a fork of
https://github.com/MattFaz/actualtap *(which I use/maintain)*.
Adding in the original ActualTap repo and updating ActualTap-Py to
clarify differences.
* use build directory in dockerfiles
* add release notes
* add test
* Add test for cli, try to fix image test
* - fail
* try again
* try again to fail
* done testing
* Code review
* publish is unecessary
* Enhance transaction import functionality with new Transaction type and type annotations
* release notes
* fixes for PR
* move transaction type as requested by @MatissJanis
* type importTransaction return value
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Include parent transactions in select-all when all of their children are selected
* Added release notes
* Fix release notes file name
* Make function return type explicit
* add spreadsheet logic
* separate to own cell
* add selection cell
* fix selection
* added button
* arrow
* switches between the two hold options gracefully
* reset manual hold on apply auto hold
* working?
* fix
* lint
* better to budget menu logic
* type
* typing
* missing function pass
* some cleanup
* typecheck
* translation
* closer to good arrow
* lint
* prevent rollover arrow from clipping
* move to a menu; position is broken
* lint
* fix location
* lint
* standardize verbage
* right case
* fix import
* cleanup
* start of a mobile menu
* slightly better
* some cleanup
* lint
* Update packages/desktop-client/src/components/modals/EnvelopeIncomeBalanceMenuModal.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* fix styling
* types
* Update packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Apply suggestions from code review
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update bank-factory.js 90 days bank history
Add ING PL (ING_PL_INGBPLPW) to banks with limited history
* Adding a bank with limited history - alphabetical fix
adding alphabetical sorting
* note
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update gocardless-service.js
* Allow account selection during requisition based on institution support
* lint
* note
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
The last two examples for the goals have created confusion because the
template and goals line shows in one line:
https://discord.com/channels/937901803608096828/1372691110614274170/1376211790639136779
This PR makes sure that any `#template` and `#goal` lines that are meant
to go together are displayed on top of each other instead of inline.
It also makes sure that all uses of `#template` show with inline
code-formatting for overall conistency.
(Let me know if you'd rather have this in a separate PR and I'll splice
out that commit.)
There was one package in the doc (actual-appimage) but there is more
actually :D
2 Desktop clients based on the AppImage and a server based on the
@actual-app/sync-server NPM package.
* Changed 'close file' to say 'exit file' so it is more clear that the file is not being deleted (#4852)
Resolved this issue here:
https://github.com/actualbudget/actual/issues/4852#issue-3006813465
* chore(release): add release note for PR #4872
* Update BudgetName.tsx "Close file" -> "Switch file"
* Update 4872.md
* Changed 'Close budget' to 'Switch file' on mobile
* Update VRT
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* button being focused
* working
* tests
* text selection test
* allow for ref injection
* updated some of the usages
* release notes
* rename of prop
* docs
* fixed release note
* remove unnecessary test setup
* updated from comments
* removed selecttext references
* fix type error
* updated children type
* removed comment
* moved over some util functions
* moved over TransactionHeader
* Added the bulk of Transaction typing data
* moved PayeeCell into its own file
* moved StatusCell over
* added NotesCell file
* Moved over NewTransaction
* converted TransactionsTable
* Converted TransactionList to use new typed TransactionsTable
* Converted consumers of TransactionList to use TransactionList
* removed old TransactionsTable
* release notes
* fixed bug vrt found
* fixed one todo
* attempting to debug whatever is going on
* moved TransactionsTable tests up a directory and that fixes it for some reason
* removed type cast
* re-instated onScheduleAction types
* re-added old TransactionsTable.jsx file
* consolidated changes into just TransactionsTable
* deleted split files and finished moving over TransactionList
* typecheck
* typecheck
* yarn lint
* changed type casting to make it more specific
* changed warn to error
* added some todos to clean up type assumptions later
* yarn lint
---------
Co-authored-by: Alec Bakholdin <alecbakholdin@mac.myfiosgateway.com>
Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
* Move loot-core/client/modals code over to desktop-client package
* Fix lint error
* Move loot-core/client/store and loot-core/client/redux to desktop-client package
* Separate redux store into it's own file
* Import types from redux/store instead of redux
* Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from
* Add filter to usePreviewTransactions and set startingBalance to account and category preview transaction hooks
* Move loot-core/client/modals code over to desktop-client package
* Fix lint error
* Move loot-core/client/queries code over to desktop-client package
- Adding new screenshots.
- Deleting old screenshot.
- Also did some language changes on the rest of the page.
This should address @youngcw wrote in a comment on PR
https://github.com/actualbudget/docs/pull/599 _The restore page is a
little weird where it says you need to logout before you can do a
restore. That should be changed at some point._
* Move loot-core/client/modals code over to desktop-client package
* Fix lint error
* Move loot-core/client/notifications code over to desktop-client package
The privacy filer / scrambling function has so far only been briefly
mention on the first page of the tour guide.
I added some screenshots + text to the tips and tricks page.
As a bonus I also added ALT text to the existing images.
I think I got all instances where we specify a version, there seem to
only be two places in the docs.
We'll also call it out in the release notes.
https://github.com/actualbudget/actual/pull/4978
* Add a functionality to split transactions repair tool to remove categories from parent transactions and prevent adding/update parent transactions with categories
* Fix lint error
* Remove console.log
* start
* make week tests make sense
* fix
* copy
* average
* no call checks
* add rest. Still need to vet runSpend, and runBy
* fix average
* tweak spend
* updates
* cleanup
* note
* add more up to tests
* previous percentage
* hitting limit tests
* remainder
* fixes
* more fixes
* fixes, and fix remainder return value
* fix amounts in limit tests
* e2e for a category
* skip checking schedules if not needed
* lost changes
* fix null
* add goal tests
* final fix?
* lint
* lint option 2
* Add BoursoBank GoCardless Integration
The default normalization was creating new payees for each
transaction per day, as there was no specific integration
for this bank.
e.g. `Carte dd/mm/yy Payee Name Cb*1234` was taken as payee
name.
There doesn't seem to be an easy catch-all syntax for
the BoursoBank transactions, but I have put all the
ones I could find from my transactions.
* Fix comment typo
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* invert most of seb kort credit card transactions
* add release-notes
* revert package.json
---------
Co-authored-by: Vincent Giorgi <8283278+vincegio@users.noreply.github.com>
Changes made with some justification, in order of commits:
- removed port mapping for `actual-server` service since we're using
Caddy as the reverse proxy, similar to how there's no port mapping for
the Traefik example
- minor consistency changes by referring to the Traefik example:
- moved `image: caddy:alpine` to the top
- add restart policy
- swapped one inconsistent single-quoted port mapping to double quotes
* changed default amount to come from amountToCurrency to handle localized values and maintain focus
* release notes
---------
Co-authored-by: Alec Bakholdin <alecbakholdin@Alecs-Mac.local>
* Add basic modal for budget automations
* Add release notes
* Exclude TODOs from this PR for now
* Fix some rebase errors
* CodeRabbit feedback
* PR feedback: reduce nesting in automation editor
* PR feedback: reduce nesting in automation read-only state
* PR feedback: make editors feel more like part of the read-only entry
* attempt at running with typescript
* release notes
* working jest tests for TS files
* working docker image build
* remaining docker images
* cleanup
* ensure vitest is working
* get tests passing in ci
* less strict
* update release notes
* use tsc compiled assets in the published package
* scripts
* update yarn.lock
* Use build path for electron app
* PR feedback: move sync-server build out of bin/build-browser
* PR feedback: undo moduleResolution change
* extend main tsconfig and fix types
* PR feedback on scripts and when the sync-server build runs
* fix lint (unrelated change)
---------
Co-authored-by: alecbakholdin <alecbakholdin@gmail.com>
* add PayeesPage model for searching payees in e2e tests
* add navigation method to go to PayeesPage in e2e tests
* add e2e tests for Payees page
* update release notes
* Run prettier to fix lint
* clean imports
* fix imports
* Add snapshots for visual tests
* Remove unused import in payees test
* Update VRT
* Update 4766.md
Dummy commit
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* Automatically generate GitHub release text
* [TEMPORARY] Revert Electron signing changes to make this change testable
* Revert "[TEMPORARY] Revert Electron signing changes to make this change testable"
This reverts commit eeb5680b1a.
* Add release notes
* Rename AQL module's runQuery function to aqlQuery to disambiguate with DB module runQuery function
* Release notes
* Update SqlPieces
* Fix lint
* Update SqlPieces.from
* Add types
* Type result as any for now
* Fix lint
* Add types
* Fix typo
* PR feedback
* Update comment
* Fix lint error
* Fix import
Put Windows-specific step in parens to differentiate it from the rest of
the steps
Also gave clarification upfront to inform users what the end-goal is.
Hello!
I'm using [a plugin in my
browser](https://github.com/allanlw/gps-detect) to be notified when an
image contains GPS data in the metadata of images, and I noticed while
reading the latest release notes that matt-fidd.jpeg contained some GPS
coordinates, so this pull requests is just to remove those from the
image.
Have a nice day
Add instructions for creating the config.json via a single terminal
command.
Reasoning - Assisted a MacOS deploy where they had everything setup
correctly but when they made the config.json file their instance
crashed, this was due to using the default GUI text editor which saved
the file as a .rtf and they renamed to .json. Doing this will leave
metadata in the file and actual wont know what to do with it causing an
infinite restart loop.
This addition provides a simple method to create the file without the
possibility of extra formatting bits causing issues
* Update build + dependencies to work with vitest
* Update tests to use vitest
* Update snapshots to vitest format
* Update sql.js loading in tests to work with vitest
* Update crdt package loading to work with vitest
* Add release notes
ensure that modified filters are reapplied to the Custom Report when changing its interval or date range, rather than reverting to the last saved state, which could overwrite unsaved changes to the filters or their conditional operand
* Fix catch 22 problem when using In/Out with split columns already enabled
- Also changed UI and transaction amount parsing behavior to accept all options combined
- Repositioned some amount options
- Adjusted the labels of a few options
* Fix amount options triggering state resets
* Update VRT
* Revert "Update VRT"
This reverts commit 0a4b70afad.
* Update VRT
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* added transactions-merge action
* mergeTransactions now returns kept id
* merge option only shows up when amount matches
* merge now handles more errors and merges from the dropped transaction if values are present
* modified merge logic slightly to avoid duplicating imported_id
* added reconciled and cleared to merge logic
* modified canMerge logic in SelectedTransactionsButton
* made merge undoable
* added onMerge to mobile menu
* release notes
* modified testing suite slightly
* added logic for detecting bank sync vs file import
* typecheck problem
* linting errors
* attempt to clean up tests better
---------
Co-authored-by: Alec Bakholdin <abakho@icims.com>
* Alternative solution
* tests
* a bit better, but now categories can be weird
* working, I think
* almost there
* I was making it harder than it needed to be
* Update VRT
* note
* note
* Separating logic from envelope and report to keep envelope as it was
* Update VRT
* Removed checks for budgetType inside `envelope.ts` and `report.ts`
* changed code position in file
* linter
* handle initially hidden
* Fix for when tracking but is enabled
* total up everything
* Add tests for handling hidden categories and groups in budget totals
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Gatera <kevin@deployitwith.me>
* sync server as npm package
* yarn lock
* workflow
* fix yml
* fix script
* named job better
* imagine trusting an ai
* pack and publish separately
* v4 instead of v3 upload
* dependencies
* identifying the right package for uplaod
* updating references
* what
* i see
* here comes the glory
* aaaand here it comes
* perms
* hmm
* try changing scope
* owner is invalid for git so have to go to npm instead
* better names on workflow
* package the api too
* updates
* rename to play better with gitignore
* yarn
* better
* dont ignore me
* yarn
* readme
* readme
* release note
* typo
* updating to read package.json from fs rather than import to support more node versions
* more ai autocomplete more problems
* adding unlink and account name to modal
* fixing dispatch and some style updates
* release notes
* catching a few missed "bank-sync" phrases
* linting
* Addressing comments
* Addressing comments
* Linting
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Add functionality to download custom reports as an image.
* Add functionality to download custom reports as an image.
* Switched from html2canvas to html-to-image due to size considerations.
* Snapshot filename
* Add functionality to download custom reports as an image.
* Add functionality to download custom reports as an image.
* Update ReportTopbar.tsx
Fixed mistake
* Use existing date function
* fix imports
* Update VRT
* move component out of common in aid of components lib migration
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* playwright test fixture
* release notes
* update snapshots
* test
* again
* same timeout as web client
* faster
* srsly
* Update VRT
* update test
* get rid of this test for now
* updating update-vrt
* speed it up a bit
* same timeout as desktop-client
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* playwright testing for electron
* pipeline updates
* fix normal e2e scripts
* fix path to artifact
* listing out whats there
* attempt to fix ci
* umm
* again
* setting a viewport
* window size to be consistent across machine for tests
* now it work... Righhttt?
* hmm
* do it
* worflow
* will this work
* oops
* dont skip
* trust in the pipeline gods
* remove update snapshots, just do it in the pipeline
* change name of snapshot to account for os
* lint
* fix package script
* fix electron resolutions
* temp fix
* dont include build-electron in the web bundle assuming its built
* lowering size of build
* removing exports
* release notes
* adding bits back
* remove bad config
* fixed current month upcoming calculation
* added release notes
* updated test to validate the new behavior of getUpcoming
* modified one month and added more tests for leap years and months with different dates
* Fixed odd error
---------
Co-authored-by: Alec Bakholdin <abakho@icims.com>
* Added institution name to the LinkModal
* Added release notes
* removed a stray import I did not mean to leave in
* updated release note number
* Separated institution into its own column and updated sorting to sort by institution -> name
* Added tooltips to allow users to hover over institution name and account name when linking bank accounts
---------
Co-authored-by: Alec Bakholdin <abakho@icims.com>
* Extract category related server handlers from main.ts to server/budget/app.ts
* Release notes
* On DB layer, replace Entity model usage with DB models
* Fix typecheck errors
* Fix type error
* Fix types
* Fix typecheck error
* Fix lint errors
* Fix test errors
* Fix model mapping
* Use dvh to determine height of modal based on dynamic visual viewport
* Apply to dialog instead of another div
* Remove modal transition
* Release notes
* [Mobile] Drag and drop income categories to re-order
* Fix category group ID
* Update borders
* Use list item value prop
* Cleanup
* useCallback
* Remvoe usage of useListData
* Fix typecheck error
* Release notes
* Fix import
* Update DropIndicator
* Update DropIndicator
* Fix drop indicator
* Update mobile forms TapField to use the new Button component
* Release notes
* Fix typecheck error
* Cleanup
* Update VRT
* Dummy commit
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Display Goal/Target Information on Mobile
* Create 4546.md
* Fix lint issues
* change hr and div to View and modified styling
* Fix lint errors again
---------
Co-authored-by: lelemm <lelemm@gmail.com>
* Translate dates POC
* more dynamic loading of locales
* added locale
* linter
* linter and typecheck
* added md
* translated DateSelect component
* more translations and fixes
* removed redux state for locale
* linter
* typecheck fix
* fix test for schedules.ts
* linter
* fixed System Default language
* loading all locales at once
* added some fallback cases
* bugfix, linter and typecheck
* schedule description rework to have better translation labels
* fixes
* test fix
* Trigger actions
* merge of #4459
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
I created a repository with steps to deploy Actual Budget as a Cloud Run
service. I believe this is a better way to deploy in GCP and it's less
complicated.
* Extract payees related server handlers from main.ts to server/payees/app.ts
* Release notes
* Payee model mapping methods
* Re-arrange methods
* Update types
* Remove undoable because there is withUndo already
* Support meta in undoable
* Fix types
* Fix typo on test
* Extract existing "Make Transfer" functionality
* Add "Make Transfer" functionality to mobile menu
* Don't just blindly allow setting as transfer
* Update disabled colour and missing translations
* Fix import warnings
* Add release note
* Use correct translation function
* Determine whether to show the "Make Transfer" option or not based on the presence of an account
* Build list of menu options nicer
* Fix types
* Fix translations
* Use Trans component instead of t function
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* feat: add "last reconciled" timestamp to accounts
add a `last_reconciled` column to the `accounts` table, which stores a UNIX timestamp indicating when each account was last reconciled
upon initial release, all accounts will display "Not yet reconciled"; however, after completing reconciliation and pressing the "Done reconciling" button, the timestamp will be updated accordingly
* test: generate mock accounts with `last_reconciled` as `null`
generate mock accounts with the `last_reconciled` value set to `null`, to match the expected behaviour that new accounts will start with a "Not yet reconciled" status
* improvement: display "last reconciled" timestamp in tooltip
relocate the "last reconciled" timestamp from the account balances header to a tooltip displayed when hovering over the "Reconcile" button
fix issue where transactions for transfers between accounts (i.e., transactions where the payee is another account) were not properly filtered during searches
* allowing copy budget files to succeed even if cleanup fails
* release notes
* updating fs-extra
* retries in for removing dir
* better retry defaults
* defaults
* 🔖 (25.3.0)
* Empty commit to bump ci
* Remove used release notes
* Empty commit to bump ci
* Bump sync-server for web release
* Remove used release notes
* Empty commit to bump ci
---------
Co-authored-by: jfdoming <9922514+jfdoming@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix crash when deleting child transactions from an errored split
* Add tests
* Add release notes
* Add graceful fallback
Fallback: don't try to show errors on a transaction if it's not actually
a split.
* Move transaction related handlers to server/transactions folder and use the new convention
* Fix lint and typecheck
* Move server account handlers from main.ts to accounts/app.ts
* Add accounts app to main.ts
* Release notes
* Fix types
* Fix typecheck error
* Fix types
* Fix build error
* Use main app
* fix: ensure currencyToAmount works regardless of the configured number format
* chore: linting
* docs: add release note
* test: ensure correct amount is entered for debit when adding split transactions
* chore: rename variable thousandsSep to thousandsSeparator
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* chore: rename variable decimalSep to decimalSeparator
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* chore: rename decimalSep and thousandsSep variables to decimalSeparator and thousandsSeparator
---------
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* update sync mapping data for existing transactions on sync
* show payment direction dropdown regardless of sample data
* note
* ignore changes in raw_synced_data
Issue reported here: https://github.com/actualbudget/actual/issues/4377https://deploy-preview-645.www.actualbudget.org/docs/install/local
It turns out that yarn doesn't let you run scripts without first
installing dependencies, so users will have to type it in the install
manually.
The other alternative is to run the script with npm but that would add
confusion.
I think yarn workspace focus is the best option to pick but here was the
options:
- Instruct users to ```yarn install``` (which would install all deps) -
1.07GB
- Instruct users to ```yarn workspaces focus @actual-app/sync-server
--production``` (which is a long command) - 60.6MB
- Create a new shell script to run the command ```
./install-server.sh```
In future we might want to consider packaging the server up into an
executable. That way the user wont have to install node/deal with any of
this stuff.
Here's an example packager - i've never used it:
https://github.com/nexe/nexe
* feat: today button on mobile budget page
Jumps to the current month
* add release note
* cleaner onCurrentMonth
* Update VRT
* use SvgCalendar from icons/v2
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update VRT
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* making the server workflows run only when server files have changed
* release notes
* also on merge to master
* rabbit suggestion
* e2e tests and size compare dont need to run when server changes
* adding to the paths ignore
* remove non-booked transactions from import
* Add release notes
* minor fix to please the linter
* Add coderabbit suggestions
* add test file
* fix test
* add coderabbit fixes to test file
* fix mock console
* Correct consoleSpy to make linter happy
* Add mock cleanup
* save button
* release notes
* custom component shows
* custom input and saving working
* updated getUpcomingDays to handle custom values
* close modal after save
* test around getUpcomingDays
* updated to use more accurate timespan calculation
* fix for scheduled events only occurring till end of period
* add a day
* fixed input step down
* show broken transfers
* more detail
* feat: add step to fix splits for fixing transfers with categories that should not be there
* reword
* update the setting
* note
* lint
* typo
* another misspelling
* fix single notification
* note
* Update VRT
* run checks
---------
Co-authored-by: UnderKoen <koenvanstaveren@hotmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* show broken transfers
* more detail
* feat: add step to fix splits for fixing transfers with categories that should not be there
* reword
* update the setting
* note
* lint
* typo
* another misspelling
---------
Co-authored-by: UnderKoen <koenvanstaveren@hotmail.com>
* Display transaction notes on mobile, fixes#1764
* Display transaction notes on mobile, fixes#1764
* Display transaction notes on mobile, fixes#1764
* Display transaction notes on mobile, fixes#1764
* Moving the notes to the bottom
* Moving the notes to the bottom - right file.
* Updating the code as requested
* Adding conditional rendering as suggested by Bugs Bunny
* Adding conditional rendering as suggested by Bugs Bunny and lint
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Update to newer docker compose command.
From the docs: From July 2023 Compose V1 stopped receiving updates. It’s
also no longer available in new releases of Docker Desktop.
See the docs: https://docs.docker.com/compose/releases/migrate
* Spending: Fix budget comparison filters
- Previously only worked for category *is*, now should work for any category filters
* Add release notes
* Spending Report: Fix linting, remove unused filters from budget filter options
- Removed ability to select 'contains', 'doesNotContain', or 'matches' filters for budget categories
* enhance: add possibility for join between zero budget and category
---------
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
* Add support for LHV_LHVBEE22
* Add upcoming-release-notes/542.md
* Don't set bookingDate unless booked
* Add a basic spec file
* Add test case for invalid date and date validation to handle it
* Remove accessValidForDays
* fix/#3128: listen to 'sync-event' to update user data when sync status changed, so 'userData.offline' is up to date and server status displayed is valid
* add upcoming release note
* fix: use of optional chaining for 'userData.offline' to fix typecheck errors
* fix: replace 'userData?.offline' by 'userDate' in useEffect's dependencies
* fix: add error handling for 'initializeUserData' method
* fix: remove optional chaining for 'userData.offline' and directly check if userData is not null
* fix: eslint warning "`loot-core/client/actions` import should occur before import of `loot-core/src/platform/client/fetch`"
* Added ability to control auto categories per payee and globally
* Added unit test
* Changed order of Learn Categories in settings page
* Removed console log and fixed prefs type
* Added release note
* Fixed default value for global setting
* Added tooltip and context menu option
* Removed test assertion
* Refactored default value for global setting
* Added missing boolean to saveDiff and saveDiffAndApply
* Fixed default global value
* Icon and Disable payee menu hidden when globally disabled
* Moved category learning settings to payees page
* Added automatic centering for payee SVGs
* Lint changes
* Typecheck changes
* Fixed copy paste
* Added more translation
* Changed global setting to a modal
* Fixed import order
* Renamed migration
* Update packages/desktop-client/src/components/payees/CategoryLearning.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update packages/desktop-client/src/components/payees/CategoryLearning.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update packages/desktop-client/src/components/payees/ManagePayees.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update packages/desktop-client/src/components/payees/CategoryLearning.tsx
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Changed wording
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Migrate to accountSlice
* Fix lint and typecheck errors
* Update types
* Fix lint
* Fix types
* Cleanup
* Rename file
* Rename state
* Cleanup
* Fix typecheck error
* Move createAppAsyncThunk
* Queries slice
* Release notes
* Cleanup types
* Cleanup
* Fix typecheck error
* Lint
* Fix typecheck error
* Fix import
* Fix typo
* Fix typo
* Update
* Copy category list so that sorting is not applied directly on category list redux state
* Update setLastTransaction payload
* Remove optional optional chaining on unwrap
* Rename accountId
* Fix type
* Remove return value of initiallyLoadPayees since no callers use it
* No need to getPayees. Just use the already loaded payees.
* Notify on action errors
* Add language global pref
* Add setting to control language
* Add release notes
* Update VRT
* Wrap missed strings in `t`
* Update VRT
* [placeholder] Bump CI
* Fix crash on old language file
* Fix loading wrong language
* Update packages/desktop-client/src/i18n.ts
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update ConfirmCategoryDeleteModal.tsx
Added space between category name and "is"
* Create 4175.md
* added space to trigger change; cloned repo in vscode with prettier linter to fix github bot alerting about lint
* Formatted chate with Prettier
* Add YTD and last year to Reports headers
* Add release note
* lint
* fix end date picker
* remove debugger
* Update VRT
* Update VRT
* Fix year to date and last year
* remove debugger
* pr comments
* fix small size
* Update VRT
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>
* load all instances of scheduled transactions that occur within the upcoming period
* correct status in transaction table
* ts
* note
* ci
* upcoming -> forceUpcoming
* remove caveat from upcoming length setting modal
* Improve string to be clearer in other languages
Change from using ':' and no question mark to a full sentence and a question mark
* Create 4167.md
* Fix quotes
* Fix
* Fix
Adding a page to Using Actual/Budgeting to demonstrate how to implement
multi-currency using Rule Templates.
---------
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
* Cleared import changes
- Add ability to provide default for cleared field
- Add ability to skip updating cleared field
* Add release notes
* Make linter happy
* Fix optional param
* Use nullish coalescing operator
* Add GoCardless integration for COMMERZBANK_COBADEFF
* Add optional iban property to creditorAccount
* Use fallback for normalizeAccount and calculateStartingBalance
* Update src/app-gocardless/banks/commerzbank_cobadeff.js
---------
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
This is the start of getting the existing template setup ready to
mainline. We can consider making each template type its own file if this
feels too long.
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
> Off budget accounts don't effect the budget and are meant to track
stuff like investments and mortgages. Transactions in off budget
accounts can't be categorized; they simply track balances over time.
Should be `affect`, a verb, instead of `effect`, a noun.
* Pull/push strings via Git instead of via API
This is necessary because the Weblate API doesn't handle stale strings
well. In particular, it won't remove them automatically.
* Schedule workflow instead of running on every commit
This is so we can minimize downtime for Weblate translations.
* Prevent pull requests modifying translations
* Don't commit translations during the merge freeze
* Add release notes
* Undo rename
* Don't commit translations nightly, per feedback
* Include translations just-in-time in builds
* Revert "Prevent pull requests modifying translations"
This reverts commit 8c19a0ce13.
* Re-ignore translations
* Update release notes to be accurate
* Create missing directory
* Fix conditional logic
* Do not show undo notifications on desktop
* add release note
* fix linter
* Update packages/desktop-client/src/hooks/useUndo.ts
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* Update useUndo.ts
* fix code pasted on wrong line
* drive-by fix typo
* Update 4097.md
---------
Co-authored-by: Joel Jeremy Marquez <joeljeremy.marquez@gmail.com>
* add buttons for combined-account transaction pages (#2333)
* add release note for #3734
* add accessibility label to mobile combined-account header button
* increase touch targets for combined-account buttons
* remove highlight color and add bounce to header buttons
to match the feel of the other account buttons
* update vrt screenshots for actualbudget#3734
I wrote some steps on how to automate non-Dockerized Actual starting up
with Linux systems using systemd. I'm using this on my server and so far
so good.
If this is too much for this page please consider putting it on its own
page. I think it's useful info for anyone who wants to do self-hosted on
a VPS with a non-Docker instance.
---------
Co-authored-by: Brandon Fotiu <bfotiu@bgsu.edu>
* enhance: context menu on custom reports page
* chore: release note
* chore: lint
* chore: use both feature flags
* chore: use both feature flags
* chore: pr feedback
* fix: changing name with context menu
* fix: translations were not being loaded properly
* fix: support running GitHub actions locally with `act`
* feat: upload new strings on master build
* Add release notes
* PR feedback: security
When I setup my actual account, I noticed that there was no
reconciliation button as described in documentation. Found out after
hunting, that the UI has changed resulting in this issue. I have created
this PR to update that.
Let me know if the language or images need to be changed.
Caused because of: https://github.com/actualbudget/actual/pull/3684
* Initial Commit
* Create 3847.md
* Removed un-needed comment
* Changed error log text
* Moved budget name validation from DuplicateFileModal to loot-core/server
* Added translation
* Fixed linting error
* Changed delete file hack
Changed from loading and closing the budget file to just opening and closing the database to be able to delete it.
* Removed hard coded english from loot-core server
* Updated wording and style of Duplicate File Modal
* Simpler wording for Duplication text and buttons
* Filter account by on budget / off budget
* small fix
* fix eval for new operations
* code review suggestion
* suggestions
* small fix for rules table
* batch loading the accounts
* Update packages/loot-core/src/server/accounts/transaction-rules.ts
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* missed this type
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* remove use of View component
* created a release note
* rename release note to PR number not issue number
* revert changes to check e2e tests
* redo changes
* indentify exact styling issue
* use style instead of css
remove currency symbols, add note explaining how they're used, tried to
standardize how template vs #template / goal vs #goal are used, some
edits for clarity,
* bump version
* Remove used release notes
* bump web version
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Don't crash when making a txn from the uncat page
* Always navigate consistently from the txn add/edit page
* Add release notes
* Attempt to fix functional tests
* Update VRT
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
If the date column is not configured correctly the date format will not
show up if it's not one of the preconfigured ones.
I think that can help in the documentation.
* Add support for "Hanseatic Bank" (access_valid_for_days max 89)
* add PR changelog file
* fix line endings + author format
* make linter happy
* make linter happy
* use alphabetical order for import and banks list
Quick whip through to try and standardis(z)e some language, looks like
the most common English in the docs is US English so I chose that one,
but if we'd prefer the Queen's then that's okay too.
---------
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
* change the font size implementation to be simpler
* release notes
* setting the line height back
* renames
* condtion on the font changed event
* fix type check
* typecheck
* clarifying comment
* remove margin on left and right - not required
* fix import
* fix derp
* Use strict typing in useSheetValue and fix bug where query is not being updated when changed
* Release notes
* Update VRT
* Fix regression
* Update VRT
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Summary card report
* Apply suggestions from code rabbit
* Apply suggestions from code review
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* MORE CODE RABBIT SUGGESTIONS
* typecheck fix
* change view form the details page
* added privacy filter
* Apply suggestions from code review
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* debounce
* removed binary search and changed the summary page to not use the card component
* Update packages/desktop-client/src/components/reports/spreadsheets/summary-spreadsheet.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fix on recommended code rabbit commit
* added some padding to number so it fits the window better for big numbers
* accept infinite
* feedback fixes
* Update packages/desktop-client/src/components/reports/reports/SummaryCard.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* translations
* fix on the save, linter and changed "include summary date range" to "all time divisor"
* changed MD from enhancements to feature
* typo
* change card
* typecheck
* Update packages/desktop-client/src/components/reports/SummaryNumber.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* typecheck
* changes to fit the number better
* small fix
* fix on filters
* code review
* revert code to check for height
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* filter out transfers when category is none
* add filter for parent id
* fix Category is not (nothing) as well
* lint fixups
* add special case for 'category is not nothing'
* add release notes
* adding tests
* lint fix
* use $and expression for complex condition special cases
* add tests for condition special cases
* Update packages/loot-core/src/server/accounts/rules.ts
rename subExpression to and
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
* update uses of subExpression with and
* remove stray debugger rules
* Update VRT
* Revert "Update VRT"
This reverts commit a450fc7b2457bb578e53f62d5f4201e91e9a93c4.
* make and an internal op to avoid exposing it to the UI
* feedback
---------
Co-authored-by: Koen van Staveren <koenvanstaveren@hotmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: matt <matt@fiddaman.net>
I was a little confused that I couldn't see a running balance in my
accounts until I realized that it's only shown in a specific sort order.
I think it would actually be useful to be able to see the running
balance no matter the sorted order, but until then maybe we should
clarify in the documentation.
* Update scroll provider so that it only captures the scroll on div container and not the whole window
* Fix lint + release notes
* Rewrite useScroll to be more performant by being ref based instead of state to avoid re-renders when scrolling
* Check undefined
* Rename to useScrollListener
* Remove small 1px gap under mobile nav tabs when fully open
* Cleanup
* Fix lint
* Coderabbit feedback
* seperate build folders for easier switching between web and electron builds
* gitignore
* release notes
* one directory back from electron
* spelling mistake
* Update 3801.md
* test
* making it correct
* huh
* urghh
* again
* account for api bundle which uses electron bundle for some reason
* hu-
* lets go
* remove comment
* Fixes focus ring getting stuck on last column of /accounts/budgeted screen when creating a new transaction.
* Fix lint problems with the previous commit
* Changed the way the hook is made to the cancel and add button, removing the need to change Button2
* Changed the name of variables as mentioned in PR
* fix: don't clobber server pathname
The provided server URL may already include a pathname,
so all further segments need to be appended. This also
more closely matches the name `joinURL`.
* add release notes
* use `fs.join` to avoid double slashes
* Initial Commit
Moved Budget Name to its own component for a cleaner Sidebar component.
Added pencil icon for editing budget name.
Removed Rename Budget from menu.
* Create 3593.md
* Fixed Menu Dropdown Arrow shrinks with long budget name
* Changes recommended by coderabbitai
* Fixed Lint issue
* Remove Help from Menu
* Remove menu from budget name and added Actual logo with menu
* Update VRTs
* Update VRTs
* Fix logo shrinking with long budget name issue
* Update 3593.md
* Removed Logo and pencil icon
* Update VRTs
* Removed unused classnames from SideBar and BudgetName component
* revert to upstream VRTs
* Fix loading of mobile/desktop page on window resize
* Release notes
* Fix lint
* Use useWindowSize since it matches behavior of documentElement clientWidth and clientHeight
* Debounce so that components are only reloaded when user finishes the resize
* Adjust debounce delay
* allow matching null values when not equals query filter is set
* Also fix namedParameter queries with filter
* improve tests
* release note
---------
Co-authored-by: Joel Rich <joelrich@protonmail.com>
* by check
* minor changes and TS class migration
* good starting point
* very basic testing
* fix
* basic overwrite of simple templates working
* mostly working. By and schedule don't work
* some cleanup, better async
* add notifications
* add daily weekly limits
* by is working I think
* mostly working
* some fixes, make faster
* lint, note
* note
* cleanup old stuff
* fix paths
* test fixes
* fix test
* fix note
* rabbit, and fix long goal
* lint
* some fixes
* more typing
* fix save error
* last bunny fixes
* fix save, trim schedule names
* lint
* minor fixes
* last fixes
* lint
* add function to apply template to multiple category and add button to group sidebar
* add function to apply template to multiple category and add button to group sidebar
* add correct month
* clean up code
* clean up code
* clean up code
* clean up code
* add notification and clean up
* add notification and clean up
* add notification and clean up
* add notification and clean up
* add notification and clean up
* add release note
* excluded hidden categories
* removed unused method from api
* adjust template to run on already budgeted categories
* fix typecheck
* add apply multiple as budget action and remove from api
* lint clean up
* fix notification and remove log
---------
Co-authored-by: dreptschar <dreptschar@gmail.com>
* feat: context menu on transactions
* feat: context menu's on budget page
* chore: release note
* fix: losing focus on context menu
* feat: schedules context menu
* feat: payees context menu
* feat: rules context menu
* chore: update release note
* chore: lint
* fix: broken balance movement menu
* fix: placement on context menu to be closer to cursor
* feat: context menu on budget field
* chore: lint
* Update packages/desktop-client/src/components/transactions/TransactionsTable.jsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* chore: fix merge
* fix: e2e test
* fix: moving of the popover in the sidebar
* chore: lint
* chore: add feature flag
* chore: fix tsc
* chore: fix test
* Update packages/desktop-client/src/components/settings/Experimental.tsx
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
* fix: to budget button
next steps didn't work
* chore: lint
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
* adding some safety for if user has incorrect server url format
* added additional error handling for when incorrect server url has been setup
* good rabbit
This is primarily done by removing the blur effect from the overlay, and
replacing it will a translucent black.
The blur effect performs poorly on mobile devices.
* Adding a help modal for qucik reference to goal template syntax
* added release notes
* fixed misspelling of Enhancements
* fix lint errors
* Only show when Goal Template Flag is enabled
* fix lint
* Only show on Budget page
* fix lint
* Added Translation, change text formating to table (styling wip), change headers to use react-aria-component headings
* fix lint, made requested change to HelpMenuItem type
* stylized tables
* fixed type error
* Moved section headers to within Table Headers
* fix lint
* added space between last table and see more statement
* added reconcile button to account page
* add Reconcile Button in the account page
* added release note
* updated VRT snapshots
* removed Reconcile option from Account menu
* made the button minimal with tooltip and added vrt
* missing unused import
* fixed icon and button size
* fixed merge conflicts
* hide reconcile button on all account and for budget page
* fix lint from merged file
* changed reconcile button order
---------
Co-authored-by: vincenzo <dibiasev@gmail.com>
* Add tests for bug
* Add tests for unexpected behaviour
* Refactor to consistently generate valid splits with no errors
* Add release notes
* Update test names
add mention of how to access the edge build of actual, i couldn't find
it anywhere else in the documentation.
---------
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
* added info circle and box on click
* hover working
* moved title
* release notes
* updated release notes category
* split info bubble into its own component
* text longer than 500px will be split
* extracted text width into its own file
* wip tests
* wip testing
* removed separate method and tests
* added textWidth option to Info Bubble
* updated shadow
* initial poking around
* ui changes and setting
* wip
* null check
* removed more than a month
* prettier
* todo
* get status tests
* added prefs to app.ts
* updated to use LocalPrefs bc of limitation of app.ts
* updated schedules component to use localPrefs
* removed console.log
* release notes
* renamed release noted md
* eslint fixes
* import fix
* update useEffect dependencies
* removed a comment
* moved upcoming length setting to schedule page
* removed import
* made setting collapsible and moved to the top
* fixed breaking change
* updated to work with updated synced prefs methodology
* pulled preference from db
* updated tests with mock reset
* update vrt
* per coderabbit: upcoming length null value prevention
* update test to use number inputs rather than string
* aria label added to close button
* moved before/after each blocks per coderabbitai
* fixed default value typo
* updated edit button to use slimmer style
* vrt
* vrt
* vrt
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* add duplicate name validation to sidebar, and both narrow/wide Account pages
* unify error messages and styles
* keep state for the current account name on the mobile account modal
* add release notes
* remove extra validation function
* fix typo in AccountSyncSidebar params
* don't set current account name to empty string and prevent further changes on AccountMenuModal
* lint imports
* update error message to Name x already exists
* use proper translation functions
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* add a modal to say client is wrong version, accept the risks to continue using
* user friendly error
* hooking parts up - untested
* changed approach
* release notes
* removing old comments
* cleanup old code
* feedback
* Fix rules not checking "category is nothing" when reconciling
* release notes
* Apply suggestions from code review
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* move settings to the file management area
* more settings
* giving users option to automatically move files when changing dir
* trueee
* updates
* does this fix the type issue
* weird
* translating
* release notes
* release notes
* a bit extra safety
* updating wording
* parameterising backup params
* text update
* parameterise vals
* add a notification to ensure the user knows the dir has changed
* pencil icon to save real estate
* ordering
* Rename 3500.md to 3584.md
* Update packages/desktop-client/src/components/manager/BudgetList.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Added in a Known issues section for YNAB4 imports to cover an issue with
split transactions not receiving correct payee details.
Once this issue is resolved the documentation note can be removed:
https://github.com/actualbudget/actual/issues/3561
---------
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
Some minor updates to the rules page to keep it in sync with the current
UI:
- Updates the list of actions and fields so the order matches the UI.
- Adds missing `category` field to the list
- Mentions you can also append/prepend to `notes`
See:
https://deploy-preview-463.www.actualbudget.org/docs/budgeting/rules/
* Update bank-factory.js
Add "Banco ActivoBank" to list of banks with a limited history
* Update README.md
* Rename README.md to 449.md
* Update 449.md
* Remove two duplicate lines
* Privacy mode: instead of blurring, use an illegible font (#3376)
* Privacy mode: no layout shift when switching mode
* fix(Spending): update for latest PrivacyFilter
* refactor(PrivacyFilter): use CSS :hover
* chore(PrivacyFilter): no privacy mode BudgetCell height regression...
https://github.com/actualbudget/actual/pull/3377?show_full=true#issuecomment-2357385371
* chore(GroupMonth): drop no-impact PrivacyFilter styles
* Add custom handler for the German bank Rheinhessen Sparkasse to the GoCardless app.
Following the guide and using the template added the code, similar to other handlers, that should match the transaction as seen in the logs when syncing my bank through Actual.
The only thing that had to be added was the notes about the transaction are stored under remittanceInformationStructured and not under remittanceInformationUnstructured.
Testing still pending.
* FIx linting errors and add release notes
Replaced the indentation from 4 spaces to 2, to fix linting error as recommended by the yarn test.
Added the release notes file 454.md.
* FIx linting errors (second try) and fix error in the release notes
* Fix linting errors
* Update src/app-gocardless/bank-factory.js
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update src/app-gocardless/bank-factory.js
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update src/app-gocardless/banks/spk_worms_alzey_ried_malade51wor.js
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Update upcoming-release-notes/454.md
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Rename file "spk-worms-alzey-ried-malade51wor.js"
* Remove functions normalizeAccount and CalculateStartingBalance
Since no changes were made to the default functions, they should be deleted from this specific bank (SPK_WORMS_ALZEY_RIED_MALADE51WOR).
* Correct linting error
Remove import of unsed variables.
---------
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Add advanced setting to reload app from server
* Add change notes
* Automatically reload when API call is redirected
* Error on redirect so we don't use the response
* Remove setting to reload
* Update release notes
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Undo auto transfer notes + auto notes for cover
* Release notes
* Fix notes
* Fix notes undo
* Do not show clicked category on transfer or cover menus
* Fix typecheck error
* typecheck
* Fix removeCategoriesFromGroups
* restart server silently on add self signed cert and add some logging
* release notes
* fix name
* updating names to be more specific
* removing setloading
* feedback
1. Moved _Filtering_ from _Reports & Filters_ to _Accounts &
Transactions_ as it's are more natural place to have the filter
documentation.
2. Renamed _Reports & Filters_ to just _Reports_
3. Moved _Schedules_ out of _Budgeting_ to better reflect the sidebar
items in the program.
4. Based on feedback from Michael Burnside on Discord, moved the
envelope budgeting docs higher up in the menu. What he wrote on Discord:
_I think the Envelope Budgeting doc should be moved up in the list. It's
important to understand the method and the "Why" first, so that users
can make sense of the tool and the "how". I know there's a link at the
top of the Starting Fresh article, but people tend to go top to bottom
in the contents (if they're reading at all)._
5. Moved _A Tour of Actual_ out of _Getting started_ as it's marketing
and not getting started with the program.
6. Moved _Starting Fresh_ higher up to differentiate between the tech
stuff and the why stuff.
**There is no change in content - just trying to make the menu a better
place to navigate**
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
add some basic guidelines about how to write the docs so a shared voice is heard when using the documentation.
---------
Co-authored-by: Zeus\Herb <herb@win.dows>
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
Co-authored-by: Ruben Olsen Lærk <ruben@lku.no>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
docker compose down is not needed, and running it before pulling updated
images causes longer service downtime than required.
Simply running `docker compose up -d` after `docker compose pull` will
recreate all containers that changed (by either image version or other
settings in the compose file).
* hardening the file system access by added retrys
* release notees
* remove unneeded console log
* promise-retry instead of my own
* tiny bit more info
* capital U
* Update bank-factory.js
Added NORDEA_NDEADKKK (Nordea Personal Denmark) to the list BANKS_WITH_LIMITED_HISTORY
* Create 340.md
* Rename 340.md to 440.md
* Rename 440.md to 441.md
* solves the problem but creates a vulnerability
* sake...
* working but need to specify rootca.pem
* works
* being flexible on the cert names, as long as its a crt or pem
* remove console logs
* initial setup for adding cert
* caps
* comments
* fix ts strict
* rewrote it
* release notes
* remove unneeded
* https no polyfill
* removing the cert reference if it is not found
* moving full stop
* adding notarization stuff back in
* win csc settings so win build doesnt try to sign with mac stuff
* windows doesnt need to know about mac build
* teamid env var instead of config val as per docs
* for testing purposes only
* probably wont work
* yet, didnt work
* try this
* update notarize
* removing test code
* add release notes
* packaging different architectures for windows
* appx for the windows store app hosting
* remove unneeded applicationid
* adding windows store assets
* adding images
* appx added to artifacts
* add appx to release
* remove override build params
* being specific about the mac build - default is dmg
* are these all needed.. Seems so
* removing appx from the release notes as its only for the windows store
* moving appxs to a different artifact for smaller download
* Update electron-pr.yml
* update version
* update release process to remove actual-windows.exe because it can possible be the wrong arch
* Display splits in mobile previews
* Display splits in desktop previews
* UI fix: hide checkboxes on preview child transactions
* UI fix: show notes on preview transactions
* Add release notes
* Update vrt for mobile padding fix
* Fix status display
* Collapse split previews by default
* PR feedback: fix issues with split payee
* Update new VRT with spacing from this PR
* hide target category from cover overspending list
* release note
* suggestions from joel-jeremy
* useMemo and better types
* add change to mobile
* fix build
* fix mobile
* Automatically focus inputs, or the primary button, in modals.
* Set focus on more modals.
* focus mobile transaction edits
* add release note
* fix linter
* fix linter
* Added configuration to CSV importer that allows to skip lines
* Fixed several type / parser check when import is executed with a different CSV structure on accounts with transactions
* Fixed linter warning
* Reverted changes on sync.ts as initial error is not occuring anymore.
This will also fix the tests again
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
many people may not know what 'regex' is. now matches filters page. not
sure why i didn't update both places when i got the review last time,
sorry!
---------
Co-authored-by: Robert Dyer <rdyer@unl.edu>
* Remove some `any` types from the API
* Add release notes
* No backwards-incompatible changes
* Update tests to reflect API changes
* PR feedback: standardize on id for deletes
* PR feedback: restore partial updates
* add electron logging to main browser process console
* add logging
* removing old way
* release notes
* adding some logs in to test mac build
* repent satan
* i caste yeee oooott sinner
* derp
* hmmm<
* forcing nodegyprebuild
* not like this.... Not like this... 😢
* hmm
* dunno
* will it recognise it if i link it manually.. 👀
* give up
* rebuild
* merge asars fasle
* update package
* manually do it ffs work damnit
* remove the cmd
* dont rebuild cause i build it manually
* dafuq is this, two bettersqlite modules installed huhhhhh
* test
* does this work?
* bloody hell
* couple more logs
* test this out
* arch in name
* adding the rebuild step back into first build
* try rebuild before pack - so we know what arch we need
* having a laugh
* tidying up
* release notes
* move package up a bit
* exit process if no electron verison
* fix: i18n: Use 'en' as default language
Using 'cimode' as default language code will return the
translation keys verbatim without doing interpolation.
This is unwanted unless working directly on localization.
Fixes#3240
* Add release note
1. Added information about the number of syncs on the free tier (which
is 50).
2. Added link to documentation on how GoCardless counts connections.
3. Added alt-text to all images.
4. Fixed a typo in one of the numeration of the steps in how to link a
GoCardless account to AB - step 8 was repeated twice.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
* fix(#2562): Prevent transaction deduplication for imported transactions (#2770)
* 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>
* Add Handling For goCardless Fuzzy Search
* Rename Release Note File
* Rename Release Notes File
* Fix UseFuzzySearchV2 After Merge Conflict
* Update Fuzzy Search Query To Include New Columns
* Update useFuzzyMatchV2 Variable To useStrictIdChecking
* Update useStrictIdChecking To Only Be Used If It's Not Syncing From External Sources
---------
Co-authored-by: Matthew Strasiotto <39424834+strazto@users.noreply.github.com>
Co-authored-by: Mohamed El Mahdali <mohamed.elmahdali.developer@gmail.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Add "S" hotkey for viewing/linking schedules.
* Default to filtering by account name when linking a schedule to a transaction.
* Work on 'all accounts' page.
* Update help modal
* add release note
First, the way to enable it has changed so that is updated.
Second, the UI now calls it "tracking" and "envelope" budgeting, so the
text and filenames were updated to reflect the new "tracking" name.
Added link to converter from Trumf Visa PDF invoice to Actual Budget
friendly CSV import file.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Fly.io no longer offers free cloud hosting; it is pay as you go with
actual usage billed monthly. I calculated between Pikapods $1.4 per
month and Fly.io's $1.5 per month and chose Pikapods since it's one
click and it's cheaper. If there's anything wrong in my calculations,
please let me know.
* Use csv fields with name payee/notes as defaults for Payee/Notes in getInitialMappings
* Add release notes
* Run lint
* Use or instead of nullish coalesce to match other fields
* revert built in number parse
* note
* tests
* remove trivial test
* more tests
---------
Co-authored-by: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com>
Imported hidden categories had the parent category entity id (UUID)
appended to the end of the name, making the category name quite long
and somewhat hard to read.
Remove the entity id from the end, and replace the apostrophe that
divides the master category from the sub category with a forward slash.
This shortens the name, ensuring a better chance that the full
category name fits into the default table cell width.
Co-authored-by: DJ Mountney <david@twkie.net>
* update conditionExists function to compare filter options
* rename method
* array.some instead of for loop
* release note
* refactor the condition search
* 🐛 (modals) allow content to be vertically scrollable
Closes#3079
* Feedback: overfloww auto
* fix modal scrollbar style
* dont need to spread
* lint 😞
* Update 3161.md
* adding width 100% to inputwithcontent
---------
Co-authored-by: Michael Clark <5285928+MikesGlitch@users.noreply.github.com>
This adds the description about how a `goal` template line works with
some examples.
Also some minor tweaks to the page
matches actualbudget/actual#3012
* update the parser
* can set goal value, but there are errors and it still needs to look for a balance and not month amount
* fix apply budget
* un change
* note
* lint
* working processing, need to set colors based on month somehow
* add long goal option to the gui and db
* note, lint
* fix cleanup
* fix
* make mobile work, lint
* fix bindings
* more proper
* lint
* fix single category run
* don't unset goal values if they don't have a template too
* lint
* more lint
* fix check when no template exists
* rearrange to get around the issue of inconsistent colors
* lint
* typecheck
* add field to aql schema
* fixes
* cleanup
* migration date
* Autocomplete sort now ignores diacritics
* Payees tab now takes into account diacritics
* Category Autocomplete now ignores diacritics
* Schedules filter now ignore diacritics
* Added release note
* Fixed type error
* Added normalisation to manage rules filter
* Added normalisation to $like operator
* Added normalisation function to loot-core
* Fixed type error & added normalisation to notlike
* Fixed unit tests
* Changed normalise to use loot-core/shared on desktop
* Linting fix
* Use dicts to look up common information
* Show abbreviated payees in split payee section
* Update vrt
* fix: missing transfer icon
* Add release notes
* fix: update vrt again
* bugfix: failing edge cases
* fix: stale test
* fix: stale test, p2 (+ vrt)
* add idea of common payee, a top 10 frequently used payee
* add button in payee to mark as favorite
* cleanup
* minor fixes
* add release notes and make favorite optional
* fix TransactionsTable test
* lint and release notes
* rename section, resort list to ensure both are sorted
* don't show common, move bookmarked to menu
* add a limit on adding common payees
* linting
* reduce to 5 commonly used payees by default
* linting
* more linting
* update migrate timestamp
* more linting
* fix api name, bump migrate timestamp
* Add star to payee dropdown and rename section to 'Suggested Payees'
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Add computed padding for handling clipped Net worth amounts
* Add comment, early handle 5 character case
* Add release note
* Use currency decimal preference for Net Worth graph Y-axis ticks
* use number format preference for `BarLineGraph` ticks
* use number format preference for checking `NetWorthGraph` tick overflow
* prevent `numberFormatConfig` overwrite
`getNumberFormat` uses `numberFormatConfig` as the default argument;
passing just `{ hideFraction: true }` caused `numberFormatConfig.format`
to be ignored
* add release note
* use `amountToCurrencyNoDecimal` instead for `{BarLine,NetWorth}Graph` ticks
* Split transaction handling for csv export (#2973)
* refactor, zero-amt parents and add split_amount
change how child/parents are counted to remove dependence on `sort_order` being negative. for export, give parent transactions a 0 in the `amount` column, but add a new column with their `split_amount` for other programs to possibly import
---------
Co-authored-by: Zeus\Herb <herb@win.dows>
Co-authored-by: DJ Mountney <david.mountney@twkie.net>
* 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
The current Tour was lacking for people curious about what Actual looks
like, without going into "full teaching manual mode".
What I have done:
- Consistent screenshots
- Added some explanatory text and links to the actual manual pages
I am fully aware that there is a fine line between some of these pages
and manual pages.
Anyway - we should now have something to show the YNABers and MINTers of
the world :-)
Ideally, we should have a video introduction as the "tour" - but given
how much change we have in the program, this would kill the poor guy/gal
who wants to maintain such a video.
PS: I go on vacation on Saturday July 13th - so any changes I am not
able to do after that time.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
- Added links to the My Edenred Portal bank sync and Actual Task repos.
- Moved some links from Others into Various utilities to enhance
Actual's functionality, as I expect we will get more and more of these
utilities available. Let's keep Other for pure non-functional technical
stuff
Original posting:
https://discord.com/channels/937901803608096828/1027831756545609789/1260289369139580988
I did source GitHub for other interesting projects and have added those
also.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
This is a super rough start for a download page for the website. Please
make contributions since this is pretty bad so far. Can you tell Im not
a front end dev? 😆
In order for the links to always work we either need to:
* Modify our electron build to not add versions to the filename
* Add some way for the page to know the current version and use that in
the requested filename
For now they are hard coded with the version so they wont work next
month unless something changes.
For now the OS logos are colored so that they can be seen in both light
and dark modes. Im sure there is a better way than making them purple.
I have added a _Roadmaps for new users_ to help people decide on their
next step. The roadmaps are primarily aimed at non-technical people.
I saw the reason for doing this after getting a few questions for
non-techies people I know about "ehhh... where do I start?" ... "I did
install the desktop software, how to get this into my cell phone", etc.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
* 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
I have extended the PikaPods documentation to cater to non-technical
users. This should be quite straight forward.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
* 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>
update the readme to have more of a present date, clean up various small
grammar and formatting throughout the page.
clarify that the docs donʻt have release notes written in the same way
as the rest of the project. include information about what makes it to
the git commit messages to encourage people to write good PRs.
add note that screenshots should be taken in light mode
Notes and edits welcome.
---------
Co-authored-by: Zeus\Herb <herb@win.dows>
Add information about "matches" being regex.
~~PR 9/10ths of the way there, still need to update screenshots. Is
there a style policy regarding dark/light mode screenshots? It seems
like currently it swaps between the two.~~
---------
Co-authored-by: Zeus\Herb <herb@win.dows>
* 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
We now have quite a few changes - not only moving the *generic envelope
budget* stuff out.
In short:
* Added section on handling cash. The idea behind this is to give people
that are new to this kind of budgeting, an easy idea on what to do with
cash. Even seasoned Zero-Summers can forget about this simple trick :-)
* Amended Setting up your Budget Categories with a small tip.
* Added sub section Group Your Expense Categories. I have guided a lot
of people on using Zero-Sum software (Ynab, Financier - and now Actual)
- and the grouping I propose have shown to help people to not touch
category money they should not touch.
* Assigning Available Funds is a complete rewrite - this is "Tips" we
removed from the envelope-budget.md file - I will add a link back into
the getting-started document when both PRs has been done.
* Added a section on finding your budget number if you do not want, or
can use historical data
* Keep Budgeting was amended
* Added a header before text on next step.
OBSERVATIONS: I think this document is too big - and it should be split
into it's 5 parts (+ introduction).
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
I have added this page because I think the software used for envelope
budgeting should definitively have some documentation on how to actually
do envelope budgeting.
---------
Co-authored-by: Ruben Olsen Lærk <ruben.olsen@dnb.no>
from the docs on bank sync specifically, include best practices notes in
the FAQ to recommend limiting past transactions
Fixes#363
---------
Co-authored-by: Zeus\Herb <herb@win.dows>
* 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
some of the features on the homepage seemed there just to pad out the
list. The list if decently long and interesting so I removed Payees and
Split transactions. Those seem pretty expected and not that interesting
as a called out feature.
I modified the budgeting feature to be more specific. Just saying we
have budgeting is a bit redundant for a budgeting app.
This adds missing documentation for existing API calls and removes one
that does not exist.
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
fly.io pricing details have changed for new users. new users can only
sign up for a pay-as-you-go plan where usage is billed monthly. as this
is about deploying actual, it should be aimed at new users, not
returning users with maybe-existing legacy plans(like the hobby plan)
details about the legacy plans can still be found at the linked page.
Updated experimental features to match what's listed in app.
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
Co-authored-by: Robert Dyer <rdyer@unl.edu>
* 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>
This updates the home page documentation with some content enhancement
as per the style guide (mainly MSTP, Google Developer Style Guide).
Based on the feedback, i will further add more section to enhance the
home page to make it like a home for all the documentation for easier
navigation.
For now, this PR kepts the section that are necessary to address user's
query regarding getting started with Actual and understanding the
Actual's starter kit.
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* 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
* Added loginMethod config option
Added a new config option loginMethod that can be password (default) or header for header authentication. This value is returned to the client to be used on the front end
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Co-authored-by: DJ Mountney <david.mountney@twkie.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Johannes Löthberg <johannes@kyriasis.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
Co-authored-by: DJ Mountney <david@twkie.net>
* 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
* Allow setting accessValidForDays per bank
This also stops taking `accessValidForDays` from the client since it's
hardcoded there anyway and it's simpler to just have these per-bank
values in one place.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* Get the max allowed maxHistoricalDays value from the GoCardless API
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* Upgrade nordigen-node to 1.4.0
Contrary to the claims in the nordigen-node changelog 1.3.0 did *not*
fix the missing support for passing in accessValidForDays, so we have to
upgrade to 1.4.0 to actually get the fix.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
---------
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* 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
I think there is a better example than the one I've proposed here. I'm
not convinced the example I've given would even provide an expected
result to the user. I'd appreciate any feedback of those interested and
the PR #2480 could be improved to deliver more expected results.
* 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
Removed api methods that do not exist. Since they don't exist - they
should not be in the docs.
It would be nice to implement them though.. but until they are
implemented - lets not mislead people.
* 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
Reformatted the page, reworded some paragraphs, and added more
information about Docker for clarity.
After having to go through these steps myself, I found it might be
helpful to merge some of my suggested changes for others to view.
Added clarity about migrating from YNAB or Mint to Actual.
Corrected grammatical error about what Actual officially supports for
importing from other budgeting apps.
* 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
Explain advantages of setting an opening balance when starting from
scratch with Actual and Go Cardless
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Adds option to make a transfer from two selected transactions
- Transactions amount must match
- Transactions must be from different accounts
- Split transactions not eligible
This updates:
1) Dated examples to reference 2024 and 2025 (rather than 2021 and 2022)
2) Adds a warning to reproduce schedule names exactly in templates
This PR removes the migration page from Full Sync to Simple Sync.
This page was needed 16 months ago when a breaking change was merged to
resolve issues with the sync algorithm. Given that there have been over
16 releases since this change, most users will never encounter this
issue.
* 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
mostly some more detailed advice in the starting fresh doc. Im trying to
make the budgeting advice be more centralized instead of being in random
places
A few minor tweaks
A few call outs that simplefin is not just a community thing anymore
* 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.
* Initial support for SimpleFin.
* Added release notes and lint cleanup.
* Changed some notes for better context.
* Fixed logic.
* Changes per requests on PR.
* More cleanup of null checks.
* 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
While deploying with Traefik I found two small errors in the
documentation.
First is the duplicate line, the second is the missing line so that
Traefik knows on which port it should send the traffic to.
* 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
I think this fixes an issue where the links on the page don't work if
you get to the page via discord link.
The root issue is the same as
https://github.com/facebook/docusaurus/issues/2298
We may need to go through and update the links in the website, or maybe
someone can take the time to migrate the website to docusaurus v3.
We have a blog, so I wrote a post for it.
Its about how I use the goal templates in the hopes that it will inspire
some people on how they can use goals and some budgeting strategy baked
in.
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
The question of not having contains under payee in rules gets asked a
lot. I added an example for it.
I also changed the name of that page to "Rules Examples" to be more
clear on what it is.
* 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
Added a dark mode callout in the feature list.
Working on dynamically switching between dark and light screenshots when
the page switches themes.
I pulled images from the VRT tests to use for dark images. They are
pretty close to the existing images, but from a slightly larger screen.
Related to https://github.com/actualbudget/actual/issues/1695
It's pretty common for users to have self-signed certificates for
actual, but this presents some challenges for the API.
Give a little bit of guidance here, for new contributors. Really, all
the info here is just for Node.js and not for actual. (we would want to
create seperate http agents and our own certificate config system if we
wanted to have actual specific config for this).
For many of the existing api use-cases the
`NODE_TLS_REJECT_UNAUTHORIZED` option will be fine. But
`NODE_EXTRA_CA_CERTS` seems like the proper way to do things (and the
one I tested on nodejs 21, on ubuntu via asdf install). But I also made
sure to mention the option of using openssl's ca certificates, because
if you are in a situation where your node.js is configured to link to
the system openssl on Linux, it's going to be the easiest and most
familiar to Linux sysadmins. It's just not the cross-platform supported
option like `NODE_EXTRA_CA_CERTS`.
We get lots of questions about transfers involving off budget accounts.
This will hopefully alleviate some of that confusion.
It was mentioned in
[actualbudget/#1979](https://github.com/actualbudget/actual/issues/1979)
that the docs don't have a good description of this.
When importing from nYNAB `to budget` doesn't match the previous `ready
to assign` value. I added a description of why that is and how to make
the numbers match.
* 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
Hey, since I've been using Actual via Traefik for a few days now, I took
the time to add a little bit to the documentation in that regard. I hope
it fits so far. Please feel free to comment/improve anything.
Depends on #278.
Fixes#251
This adds a dedicated guide for those that are starting fresh with
Actual and aren't familiar with zero-sum budgeting. It is a step by step
that points to the existing pertinent docs pages with additional
direction.
---------
Co-authored-by: shall0pass <20625555+shall0pass@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
I added bank syncing as a feature on the home page, with a new svg to go
with it.
I also mentioned in the importers that more than ynab are available, but
not officially.
This adds a page that calls out useful and interesting community
projects that integrate with Actual. There are only a few that I know of
right now, but we can add any later that come up.
* 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>
So they point to existing implementations. The current links are broken
and Im hoping these links are correct - someone please let me know if
this is incorrect, thanks
* 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
I'm trying to deemphasize the term 'cloud' here because I think it
implies that it's going somewhere unknown. It should be clear that it's
going to a users installed server, and nowhere else. Pikapods and
fly.io, I think would be classic examples where where the term 'cloud'
makes sense but wouldn't make sense if someone had it installed on a
local PC, NAS or Raspberry Pi.
I left a lot of the document alone further down because it seems like
there may be error messages within the app that use the term 'cloud'.
Maybe add an additional explainer in the section that explains the cloud
file?
**Came up in a discord support issue.
If we don't verify that the repository ID is what we expected then we
will pull artifacts from PRs where the source branch is `master`.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* 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>
I don't have a GoCardless account to update the images.
Have the images fundamentally changed (besides saying GoCardless instead
of Nordigen)?
---------
Co-authored-by: Johannes Löthberg <johannes@kyriasis.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.
Removing env var/config file support for Nordigen secrets. These have
been migrated to the new `secrets` db table a while ago. We can now
clean up the legacy implementation for these secrets.
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`.
1. upgrade `nordigen-node` to 1.2.6 (which uses the new gocardless
domain)
2. allow accessing `nordigen` functionality via `/gocardless` to unblock
using the new API path in actual-web
Added a note regarding the dropdown arrow by "Date" and "Amount"s in
view of a recent bug report that showed that these are not always easily
discovered..
PS Sorry to keep adding changes but I am trying to respond quickly to
@shall0pass comments on another issue
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?
Updated the tagline (the hook) for the website.
For people coming in for the first time - they don't know (and care)
about the historical context of open source actual vs closed source. So
slightly changed the copy to focus on the truly important things - the
features.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
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.

Maybe these notes should form part of an existing page, but I wanted to
put some notes in about the web worker/websockets nuance and clarify the
whole frontend/backend thing as it confused me a bit at first.
Perhaps this page could be a stub for adding more 'technical' details as
we go. (stick a 'more coming soon' on the bottom?)
Or maybe it should just be called 'Technical Details'
---------
Co-authored-by: Jed Fox <git@jedfox.com>
This allows running a health check from inside the container. Usage:
`npm run health-check`. That may not work inside of Alpine containers,
so you can do `node src/scripts/health-check.js` directly instead. Fixes
#213.
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
Linked to contributing docs, replacing detail. This can't be merged
until after #176 gets merged though as the build will fail due to broken
links.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
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?
I have a suggestion for the "Updating Actual" doc page. Since fly.toml
is in .gitignore pulling changes via git won't update it. Users should
also update their fly.toml before deploying on server.
I added short info in the Fly-updating.md. However I don't know if this
info should also be updated elsewhere.
---------
Co-authored-by: Rich Howell <github@codenameowl.com>
Line 53, where it says That money will appear in next month's **To
Budget**. This isn't really happening. Should this part of the
documentation be changed?
---------
Co-authored-by: Rich Howell <github@codenameowl.com>
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>
Previously, the latest artifact list was requested unauthenticated using
`ADD "https://api.github.com/..." /tmp/artifacts.json`. While this works
locally, on GitHub’s servers it seems that the per-IP rate limit was
exceeded. There isn’t a way to get Docker to pass the `Authorization`
header that I know of, so this work has been moved to an external shell
script that pulls down the relevant data.
# 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!
Helps with actualbudget/actual#919 by adding the `all` field wit both
pending and booked transactions to the output of
`getTransactionsWithBalance()` and, by extension, the
`/nordigen/transactions` endpoint.
I could alter the `getTransactions()` to return the `all` field as well
but I figured that keeping it such that it returns the output from
Nordigen API 1:1 might be better so I left it as is. If you don't agree,
let me know and I'll update this.
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 added some non documented keyboard shortcuts for the transaction
ledger. I also standardized the capitalization of the existing
shortcuts.
I cant decide if its better to have the single letters upper or lower
case. I don't want to imply that a `Shift` press is needed. Also, in
`Ctrl + o` shortcut, the `o` was lower case maybe to try and not look
like the number. I don't think I have a preference and can change it to
upper case if that is preferred.
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.
CodeQL keeps yelling at us about this… I’m not sure if the filter is
smart enough to use this rate limit middleware to remove the warnings,
but at least we will be setting a reasonable bound on attempts to crack
the server password.
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.
Seems like we already added `tsc` to build the project, but we use the
wrong babel preset (Flow) instead of the specific TS one. This is only
used in testing to make Jest work (from what I can tell).
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.
GitHub CI log:
```
[linux/arm/v6 base 6/8] RUN yarn workspaces focus --all --production
204.6 ➤ YN0007: │ bcrypt@npm:5.1.0 must be built because it never has been before or the last one failed
204.6 ➤ YN0007: │ better-sqlite3@npm:8.2.0 must be built because it never has been before or the last one failed
...
[linux/arm/v7 base 6/8] RUN yarn workspaces focus --all --production
203.8 ➤ YN0007: │ bcrypt@npm:5.1.0 must be built because it never has been before or the last one failed
203.8 ➤ YN0007: │ better-sqlite3@npm:8.2.0 must be built because it never has been before or the last one failed
```
It seems that both armv6 and armv7 have the same issues with `bcrypt`
and `better-sqlite3` not being built. These packages are required to
build from source, luckily QEMU use armv7l for compiling.
Tested and working on RPi Zero W.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
**Actual has now been moved to a stand-alone Docker organization. If you
were previously using `jlongster/actual-server` docker image - please
update it to `actualbudget/actual-server`.**
The release has the following notable features:
- Rules can now optionally be applied when any of their conditions match
(in addition to the existing option to apply when all of their
conditions match)
- Rules: quick-create option from the transaction table (in the “X
selected” menu that shows up after selecting a transaction, choose
“Create rule”)
- Ability to hide decimal places for currencies with large numbers (in
Settings → Formatting)
- New autocomplete component (please report any bugs
[here](https://github.com/actualbudget/actual/issues/773))
- Lots of smaller improvements and bugfixes
---------
Co-authored-by: Jed Fox <git@jedfox.com>
This improves usability of narrow screen widths, and also prepares for
further optimizations that would allow us to use the sidebar largely
as-is on mobile, instead of having to have a tab bar.
---------
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
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.
...away from `jlongster`'s personal account. We're officially an org
now!
Before merging,
1. merge https://github.com/actualbudget/actual-server/pull/175
2. build and push a new image to the org repo via `actual-server` CI
Update all Docker Hub references to new `actualbudget` organization from
`jlongster` personal account.
We're officially an org now!
A bit of markdown/yaml auto-formatting snuck in, too.
Closes https://github.com/actualbudget/actual/issues/364
Corresponding update for the docs site in
https://github.com/actualbudget/docs/pull/144
Simultaneous to merging, we need to update our `DOCKER_HUB_*` GitHub
secrets in this repo.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
Users in #99 report that Actual in Docker runs on armv7 platforms,
although a bit sluggish. I confirmed that the base images for Debian and
Alpine support the linux/arm/v7 target and have added them to the
platform list in the GitHub Actions workflow.
At least one user confirms it works with the bullseye default
`Dockerfile`, but before merging it would be great if someone can
confirm it works with the Dockerfile.alpine image:
```
git clone https://github.com/jamesmortensen/actual-server.git
cd actual-server
git checkout armv7-image
docker build -t actual-server -f Dockerfile.alpine .
docker run -p 5006:5006 actual-server
```
---------
Co-authored-by: Jed Fox <git@jedfox.com>
When working on something else, I noticed that `.test.js` files were not
running due to `jest.config.json` not including them. I went ahead and
re-enabled these tests to make sure that unit tests are actually being
run.
Added onboarding and budget e2e tests. Also fixed an issue for
first-time flows using imports: currently people end up with a blank
white screen after importing. Instead they should see the budget table.
Related: https://github.com/actualbudget/actual/issues/583
Based on testing and discussion in Discord, the `edge` tag does contain
the latest `desktop-client` as well. Removes an outdated statement in
the Docker install documentation that stated otherwise.
- When parsing an amount string, consider surrounding parentheses to
mean the amount is negative.
- Ensures all input to `parseFloat()` is sanitized.
Closes: #807
This PR improves the consistency of the settings UI by moving everything
(except the budget name field on mobile) into `<Setting>` boxes.
Additionally, it adds a “Settings” option to the file dropdown menu (I
keep expecting it to be there, and I think it’s reasonable to expose it
in both locations so it’s easier to access)
This changes the behavior of configuration loading when
ACTUAL_CONFIG_PATH env var is not specified. With this change, syntax
errors in config.json will now be reported if ACTUAL_CONFIG_PATH env var
is not specified and the app will not proceed. When the config.json file
is not present or cannot be read, the behavior remains the same.
I'm not sure if this is something you want but it was a simple change so
I figured I might as well contribute it. This PR allows the user to
upload `.blob` files that they may have gotten from server's
`user-files/` folder. This can be useful if the user didn't export the
file but has server backups.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
Exposing the demo bank again in the get-banks endpoint.
Frontend implementation of the `showDemo` will come next. The demo bank
will only be available for DEV and PREVIEW builds.
Enabling the new autocomplete for dev/preview deployments.
This will allow us to spot any more issues there might be before we
release the new autocomplete.
https://github.com/actualbudget/actual/issues/773
The final `Autocomplete` refactors. After this is merged what's
remaining is to do extensive testing and address the bugs in
https://github.com/actualbudget/actual/issues/773
This PR moves `Nordigen` autocomplete to the new one without using a
feature flag. IMO this is a safe change given the simple nature of the
Nordigen autocomplete component.
Refactored all feature flags to use the new `useFeatureFlag` hook.
Also added a new functionality to this feature flag: ability to define
custom "default" value for a feature flag. This will allow us to enable
the new autocomplete component for everyone using Netlify builds
eventually (need to address some issues before doing so).
Further iterations on the new autocomplete.
1. Created `AccountAutocomplete`
2. Started using new autocomplete in `GenericInput` (used for notes
field)
3. Extracted common functionality between the three new autocompletes to
a generic component: `Autocomplete`
I noticed that the first run flow is suboptimal for people who want to
import an existing file from Actual/YNAB. I’ve moved the welcome modal
into the management app and set it up to appear when there are no
budgets available (which also has the benefit of allowing people to see
the modal again!)
I think there’s some weirdness around getting the modal to reappear when
deleting a budget file which I want to work out before merging this.
This PR also reorganizes the management app a bit to reduce usage of
modals (currently, hitting escape while the budget list is open leaves
you with a blank page).
<img width="539" alt="Screenshot_2023-03-18 08 53 54"
src="https://user-images.githubusercontent.com/25517624/226107462-b2b88791-1015-4397-b290-c64e7fcc0f41.png">
- [x] Ensure modal consistently appears when needed (no longer a modal!)
- [x] Fix e2e tests
Added an extra `waitFor` after a flaky unit test step.
I'm not really super happy with this workaround.. but it does make the
test much more stable (re-ran 5x and no failures:
https://github.com/actualbudget/actual/actions/runs/4455134799).
I think there is some internal timeout happening somewhere which is
causing this issue.. But not really sure where. And this will hopefully
get auto-fixed once we migrate to a new table. 🤞
This is not a full fix for the flakiness. One of the test cases will
still be flaky. But at least this fixes the other test cases thus
improving stability.
I am currently not working on adding support for importing to multiple
accounts, but I wanted to give anyone who takes that on a starting point
by updating the underlying C library to provide access to the account
name field.
Tests cases should be independent. You should be able to run them in
whatever order you want. And they should still pass.
Currently this is not the case. The order of the tests is very important
due to the "pseudo" randomization algorithm.
This PR makes the mock data IDs truly unique thus better exposing the
issue in our tests. Also this PR fixes the dependency issues thus making
each test case truly independent.
---------
Co-authored-by: Jed Fox <git@jedfox.com>
People contributing will now be asked to create a file containing their
PR’s entry into the release notes when opening a PR.
This approach was inspired by Prettier’s release notes approach
(https://github.com/prettier/prettier/tree/main/changelog_unreleased).
Separate files are used to avoid merge conflicts (each file is
completely separate, whereas adding lines to a file would result in
merge conflicts each time a PR is merged).
Checks will nudge people to create these files for their PRs, and PRs
created from a `release/*` branch on the main repos will have an action
run that outputs the Markdown-formatted release notes into a comment on
their PR. That action will also delete the no-longer-needed release
notes files to prep for the next release. Make sure you merge `master`
into release branch before finishing the PR to ensure the release notes
are fully generated and cleaned up. (You may encounter check failures if
you haven’t merged `master`)
See https://github.com/actualbudget/docs/pull/129 for more details. If
this is accepted, I’ll fill in release notes for the PRs that have been
submitted since the last release and submit a corresponding PR to
`actual-server`.
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
before:
```
kcab.worker.4bdc73a8d45eb2115156.js (2.1 MiB)
xfo.kcab.worker.4bdc73a8d45eb2115156.js (1010 KiB)
```
after:
```
kcab.worker.39f5fba82d7bc7477962.js (1.41 MiB)
xfo.kcab.worker.39f5fba82d7bc7477962.js (1000 KiB)
```
What’s changed:
- `loot-core` did not have a `browserslist` config, so
`@babel/preset-env` assumes we want to [transpile all the way back to
ES5](https://babeljs.io/docs/options#no-targets). I’ve removed the
`browserslist` config from each of the `package.json` files and moved it
to the root so this doesn’t happen again.
- I updated the target from `electron 3.0` to `electron 12.0` to match
our Electron dependency
- I’ve added `defaults` (currently equivalent to `> 0.5%, last 2
versions, Firefox ESR, not dead`) which is [recommended by
browserslist](https://browsersl.ist/#q=defaults). We could consider
tightening this, but it doesn’t offer a ton of space savings at this
point to just target Electron 12.
- Since much less transpilation will be happening, stack traces (dev and
prod) will be much easier to read!
I'm not a user of this feature, but I thought I could get the ball
rolling on adding some documentation. I'm not 100% sure this is how this
budget type is used, so there are likely wrong assumptions. I'm hopeful
someone will either correct me or take the reigns. There have been
several users looking for the features of this budget type, so I think
it deserves a little time to explain how it's intended to be used.
* update readme and begin img dir restructuring
* fix broken issue board link
* readme edit
* addressed RFCs : #123
* organising images
* more images organised
* more image restructuring
* img reorganisation done
* moved unused imgages to img/unusued and checked if anything broke
* typo
* move favicon and actial imgs back, deleted the rest of unused
* corrections
I recently migrated my personal usage of Actual over to the open-source
version and imported a bunch of transactions. I have a _lot_ of history
in Actual, including a lot of weird edge cases like deleted split
transactions. While reconciling I noticed that my account balance shown
at the top was incorrect, even though the running balance was current.
Digging into this, I discovered that we aren't correctly handling
aggregate queries when querying transactions in the "grouped" mode.
Aggregate queries don't make sense in the "grouped" mode. Grouped means
that you want a list of transactions that include both the parent and
child transactions (when they are split). If you are summing up all the
amount, you only want to consider non-parent transactions. So we switch
it back to "inline" mode, but the way we did this previously was to
manually stitch the query together.
Even though was add SQL to ignore deleted transactions, we still
possibly include them. A child transaction may not be marked as deleted,
even though the parent transaction is deleted. When a parent transaction
is deleted, all child transactions should be considered deleted as well,
regardless of their tombstone status. This is what the
`v_transactions_internal_alive` view does. Previously we weren't going
through this view though, so we could still potentially include split
transactions even though they've been deleted.
This is little hacky, but it fixes the immediate problem. We fall back
to the inline mode by modifying the where clause, and we also adjust the
view that it queries to use the correct one.
Check if the transaction amount is a positive 0 rather than -0.
I went for casting the string with `Number` but I could instead replace
the whole condition with `!trans.amount.startsWith('-')` or with
`trans.amount > 0 || trans.amount == '0.00'` if either of these variants
are preferred.
Fix for
https://github.com/actualbudget/actual/issues/724#issuecomment-1464907064
Sometimes accounts have the same names and the same IBAN, but different
currencies (Paypal).
This should make the account names a bit more unique.. thus easier to
distinguish.
https://github.com/actualbudget/actual/issues/724#issuecomment-1464902166
Obviously the user can choose to use different names in `Actual`. They
are not forced to use this name.
Add a small endpoint that will be used to check the configuration status
of Nordigen. If it is not configured - we should not allow people to
proceed in the account-link flow.
When Nordigen accounts are linked 2x windows get opened: 1x (initial
tab) is polling for the status; the other window is for authenticating
with bank. Once the auth is done - customer is redirected back to app:
`/nordigen/link` page. At this point we can just close the tab.
https://github.com/actualbudget/actual/issues/724#issuecomment-1462853590
People have been having issues with this. I copied it from
`docker/stable-ubuntu.Dockerfile`. We should follow up on this to remove
the duplication at some point but this will help fix the problems people
are having now.
This _slightly_ changes the interface for configuring Nordigen, but IMO
it's safe to do because
1. the nordigen support is still experimental and subject to breaking
changes
2. we released 23.3.0 only an hour ago
Set a default balance calculation logic. This will allow us to integrate
with the majority of the Nordigen supported banks without needing to
manually implement each individual bank.
Frontend change: https://github.com/actualbudget/actual/pull/727
**Important**: some banks might break.. sadly I cannot test all of the
banks. But we should successfully cover ~80-90% of the supported banks
with these defaults. And if people notice that some specific bank is
broken - they can alwys report it to us and we can try and implement a
custom bank class for them.
- The `:edge` and `:edge-alpine` containers will now download the latest
commit of the frontend repo and build it when they are built.
- The backend dependency install process now uses the local copy of Yarn
(from #56) to install dependencies
- Extraneous files are no longer copied into the production image. This
is mostly a win for local builds (where the `.yarn` cache folder used to
get copied in) but it’s also a small win for CI-built containers which
will no longer have the README/configuration files/Yarn source code
lying around
- The dockerfiles now say `EXPOSE 5006`. This doesn’t have an effect on
anything by default as far as I can tell but it does mean that tools
know we will be listening on that port and can help users set up their
container accordingly (for example, Docker Desktop)
- Remove some extraneous dependencies from the containers (including
openssl)
---------
Co-authored-by: Trevor Farlow <trevdor@users.noreply.github.com>
* img : update accounts image : #85
* doc : fixed formatting and clearer wording : #85
* doc : updated instructions due to new sidebar layout : #85
* img : update images due to new sidebar layout : #85
* doc : updated accounts/addaccount page : #85
- moved all images into their own folder
- grepped the whole repo for their img paths to make sure no other pages were referencing the same images.
- updated img paths in the addaccount page
- updated wording based on new layout / buttons
- simplified other wordings
* img : updated images due to new sidebar layout : #85
- created new folder for backup-restore section
- created new images for 'backup.md'
- deleted old images from 'backup.md'
- updated wording in 'backup.md'
* Fix image sizing
* img : try to half size with @2x, but no change : #85
* doc : implement @2x img resizing and update images : #85
- resized retina screenshots where appropriate
- updated images that showed old sidebar layout
* img : commit missing file : #85
---------
Co-authored-by: Jed Fox <git@jedfox.com>
* Installation Methods
Adding the ability to have additional installation methods in the documentation linked to from external blogs etc.
* Update overview.md
Moved section to replace last paragraph
* Update docusaurus
* Make sure images are in their own paragraph
* Add image handling logic
* oops!
* Fix issues with Image component
* Enable image plugin in dev
* Allow arbitrary scales, remove unused case
* Respond to the /client-bootstrap route
* Move the bootstrap route to /account/needs-bootstrap
* needs-bootstrap is not authenticated
* we don’t need isActual
* add a note about export from old version of actual
* link to migration info from getting-started
* Update docs/Installing/overview.md
Co-authored-by: Hans Fast <fasthans@gmail.com>
* Update docs/Getting-Started/migration/migration-intro.md
Co-authored-by: Hans Fast <fasthans@gmail.com>
---------
Co-authored-by: Rich Howell <22135084+rich-howell@users.noreply.github.com>
* Add a `webRoot` property to the config file to override the web UI used
* Allow all config options to be set via env variables
* Fix TS
* Fix test file paths
* Move “Listening on” message to after we’re actually listening
* Fix codeql warning
* Fix bug when config.https is null but HTTPS_* env vars are defined
* Allow passing raw key/cert into `https.key`/`https.cert`
* Allow passing config file as ACTUAL_CONFIG_PATH
* Forgot to handle userConfig not being specified
* Run Prettier
* Add `@docusaurus/plugin-content-docs` as a direct dep
* Remove generated index pages, move Release Notes to the top level
* Move installing section inside “Getting Started”
* Rename “Using Actual” to “A Tour of Actual”
* Expand “Getting Started” by default
* Move “how it works” to the heading of the Budgeting section
* more changes
* polish styles of section headers
* Move old homepage to the start of the tour, add a new one
* A few updates to project-layout.md, remove mobile package
* Clarify that you can use a local server with preview builds
* A couple of tweaks to the Windows article
* Clarify the installation docs
* Fix some issues on the sync page
* Centralize the contact info into one page
* Fix homepage link
* Fix broken links on installation page
* Cleared Rules example
* Update docs/Budgeting/rules/rules-custom.md
Thanks!
Co-authored-by: Jed Fox <git@jedfox.com>
* verbage updates
* one more
Co-authored-by: Jed Fox <git@jedfox.com>
Fly deployments on the free tier have ~256mb of memory available. Users
with large transaction histories were encountering out of memory errors
when attempting to export their data. This commit adds a node argument
to (more or less) run the garbage collector at a smaller memory usage,
helping keep users on flyio within their available limit.
Fly deployments with the previous template setting are running without
tini's subreaper capabilities. This change enables tini as a subreaper
in that environment.
While investigating #54 it was noted that the previous implementation
zips the entire budget folder in the download endpoint. Once received on
the client side, only the most recent db and metadata are actually used.
This means up to 10 backups are being zipped in memory and transferred
to the client (in addition to the two necessary files) despite none of
that data being used. While this inefficiency isn't a major concern in
some environments, it may be problematic in memory constrained
environments.
This change transfers only the files that are actually utilized.
issue #54
- code as written expects the file may be absent and has a fallback
implemented, so the error can be safely ignored. There may be a better
strategy for dealing with this, however.
instructions:'Every addition of a new setting toggle must be thoroughly evaluated against the core design principles of Actual. The settings screen is reserved for essential and foundational options only — do not introduce settings for minor UI adjustments such as sizes, paddings, colors, or margins. Prioritize preserving a simple and uncluttered user experience. Users proposing new settings must confirm in a reply to the Coderabbit comment that they have reviewed and ensured alignment with these principles. Excessive or granular UI options increase code complexity and risk confusing users, and are generally not permitted.'
- mode:error
name:'linting'
instructions:'Do not allow any oxlint-disable lines.'
- mode:error
name:'typecheck'
instructions:'Do not allow creating new components or utilities with the @ts-strict-ignore comment.'
labeling_instructions:
- label:'suspect ai generated'
instructions:'This issue or PR is suspected to be generated by AI.'
- label:'API'
instructions:'This issue or PR updates the API in `packages/api`.'
- label:'documentation'
instructions:'This issue updates the documentation in `packages/docs`.'
- label:'contains DB migrations'
instructions:'This issue or PR contains DB migrations in `packages/loot-core/migrations`.'
- label:'size small'
instructions:'This issue or PR is a small change (less than 50 lines of code) that is expected to have a small impact on the codebase.'
description:File a bug report also known as an issue or problem.
title: '[Bug]:'
labels: ['bug', 'needs triage']
labels: ['needs triage', 'bug']
type:Bug
body:
- type:markdown
id:intro-md
attributes:
value:|
Thanks for taking the time to fill out this bug report! Please ensure you provide as much information as possible to better assist in confirming and identifying a fix for the bug.
- type:markdown
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,26 +22,24 @@ body:
options:
- label:'I have searched and found no existing issue'
required:true
validations:
required:true
- type:textarea
id:what-happened
attributes:
label:What happened?
description:Also tell us, what did you expect to happen? If you’re reporting an issue with imports, please attach a (redacted) version of the file you’re having trouble importing. You may need to zip it before uploading.
description:Also tell us, what did you expect to happen? If you're reporting an issue with imports, please attach a (redacted) version of the file you're having trouble importing. You may need to zip it before uploading.
placeholder:Tell us what you see!
value:'A bug happened!'
validations:
required:true
- type:textarea
id:errors-received
id:reproduction
attributes:
label:'What error did you receive?'
description:'If you received an error or a message on the screen, please provide that here.'
label:How can we reproduce the issue?
description:Please give step-by-step instructions on how to reproduce the issue. In most cases this might also require uploading a sample budget/import file.
Thanks for taking the time to fill out this feature request! Please ensure you provide as much information as possible so we can better understand what you’re proposing so we can come up with the best solution for everyone.
Thanks for taking the time to fill out this feature request! Please ensure you provide as much information as possible so we can better understand what you're proposing so we can come up with the best solution for everyone.
- type:checkboxes
id:existing-issue
attributes:
label:'Verified feature request does not already exist?'
description:'Please search to see if an issue or PR already exists for the feature you’re requesting.'
description:"Please search to see if an issue or PR already exists for the feature you're requesting."
options:
- label:'I have searched and found no existing issue'
required:true
validations:
required:true
- type:checkboxes
attributes:
label:'💻'
description:(Optional) Please check this box if you’re willing to open a PR to implement this feature. We’ll help you get started and answer any questions you have along the way :)
description:(Optional) Please check this box if you're willing to open a PR to implement this feature. We'll help you get started and answer any questions you have along the way :)
options:
- label:Would you like to implement this feature?
- type:textarea
@@ -35,7 +33,7 @@ body:
id:solution
attributes:
label:Describe your ideal solution to this problem
description:Feel free to give multiple different ideas for how the problem could be solved — we’d love to have a discussion to find the best way to solve your problem and related problems others may face! (Or leave this blank if you don’t have a solution in mind yet.)
description:Feel free to give multiple different ideas for how the problem could be solved — we'd love to have a discussion to find the best way to solve your problem and related problems others may face! (Or leave this blank if you don't have a solution in mind yet.)
<!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. -->
// 'The release notes file has been committed to the repository. You can edit it if needed before merging.',
"If you're happy with this release note, you can add it to your pull request. If not, you'll need to add your own before a maintainer can review your change.",
].join('\n');
awaitoctokit.rest.issues.createComment({
owner,
repo:repoName,
issue_number:issueNumber,
body:commentBody,
});
console.log('✅ Successfully commented on PR');
}catch(error){
console.log('Error commenting on PR:',error.message);
'You are categorizing pull requests for release notes. You must respond with exactly one of these categories: "Features", "Enhancements", "Bugfix", or "Maintenance". No other text or explanation.',
},
{
role:'user',
content:`PR Title: ${prDetails.title}\n\nGenerated Summary: ${summaryData.summary}\n\nCodeRabbit Analysis:\n${commentBody}\n\nCategories:\n- Features: New functionality or capabilities\n- Bugfix: Fixes for broken or incorrect behavior\n- Enhancements: Improvements to existing functionality\n- Maintenance: Code cleanup, refactoring, dependencies, etc.\n\nWhat category does this PR belong to?`,
},
],
max_tokens:10,
temperature:0.1,
});
constoptions={
hostname:'api.openai.com',
path:'/v1/chat/completions',
method:'POST',
headers:{
Authorization:`Bearer ${openaiApiKey}`,
'Content-Type':'application/json',
},
};
constreq=https.request(options,res=>{
letresponseData='';
res.on('data',chunk=>(responseData+=chunk));
res.on('end',()=>{
if(res.statusCode!==200){
console.log('OpenAI API error for categorization');
setOutput('result','null');
return;
}
try{
constresponse=JSON.parse(responseData);
console.log('OpenAI raw response:',JSON.stringify(response,null,2));
'You are a technical writer helping to create concise release notes. Generate a maximum 15-word summary that describes what this PR does. Focus on the user-facing changes or bug fixes. Do not include "This PR" or similar phrases - just describe the change directly. Start with a base form verb (e.g., "Add" not "Adds", "Fix" not "Fixes", "Introduce" not "Introduces").',
},
{
role:'user',
content:`PR Title: ${prDetails.title}\n\nCodeRabbit Analysis:\n${commentBody}\n\nPlease provide a concise summary (max 15 words) of what this PR accomplishes.`,
},
],
max_tokens:50,
temperature:0.3,
});
constoptions={
hostname:'api.openai.com',
path:'/v1/chat/completions',
method:'POST',
headers:{
Authorization:`Bearer ${openaiApiKey}`,
'Content-Type':'application/json',
},
};
constreq=https.request(options,res=>{
letresponseData='';
res.on('data',chunk=>(responseData+=chunk));
res.on('end',()=>{
if(res.statusCode!==200){
console.log(`OpenAI API error: ${res.statusCode}${res.statusMessage}`);
| [dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary) |
| [allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) |
| [reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) |
| [only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only) |
| [patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) |
| [candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns) |
| [line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) |
| [expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) |
| [advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) |
Note: you can replace any of these files with a directory by the same name (minus the suffix)
and then include multiple files inside that directory (with that suffix) to merge multiple files together.
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
<details>
<summary>If the flagged items are :exploding_head: false positives</summary>
If items relate to a ...
- binary file (or some other file you wouldn't want to check at all).
Please add a file path to the `excludes.txt` file matching the containing file.
File paths are Perl 5 Regular Expressions - you can [test](https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](../tree/HEAD/README.md) (on whichever branch you're using).
- well-formed pattern.
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
try adding it to the `patterns.txt` file.
Patterns are Perl 5 Regular Expressions - you can [test](https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
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 -->`,
<a href="https://flathub.org/apps/com.actualbudget.actual"><img width="165" style="margin-left:12px;" alt="Get it on Flathub" src="https://flathub.org/api/badge?locale=en" /></a>
:sparkles: Thanks for sharing your idea! :sparkles:
This repository uses a voting-based system for feature requests. While enhancement issues are automatically closed, we still welcome feature requests! The voting system helps us gauge community interest in potential features. We also encourage community contributions for any feature requests marked as needing votes (just post a comment first so we can help guide you toward a successful contribution).
The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+
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 }}"
stale-pr-message: ':wave:Hi! It looks like this PR has not had any changes for a week now. Would you like someone to review this PR? If so - please remove the "[WIP]" prefix from the PR title. That will let the community know that this PR is open for a review.'
close-issue-message:'This issue has been automatically closed because there have been no comments for 7 days after the "needs info" label was added. If you still need help, please feel free to reopen the issue with the requested information.'
# AGENTS.md - Guide for AI Agents Working with Actual Budget
This guide provides comprehensive information for AI agents (like Cursor) working with the Actual Budget codebase.
## Project Overview
**Actual Budget** is a local-first personal finance tool written in TypeScript/JavaScript. It's 100% free and open-source with synchronization capabilities across devices.
- **Community Docs**: Documentation is part of the monorepo at `packages/docs/`. Published at https://actualbudget.org/docs
- **License**: MIT
- **Primary Language**: TypeScript (with React)
- **Build System**: Yarn 4 workspaces (monorepo)
## Quick Start Commands
### Essential Commands (Run from Root)
```bash
# Type checking (ALWAYS run before committing)
yarn typecheck
# Linting and formatting (with auto-fix)
yarn lint:fix
# Run all tests
yarn test
# Start development server (browser)
yarn start
# Start with sync server
yarn start:server-dev
# Start desktop app development
yarn start:desktop
```
### Important Rules
- **ALWAYS run yarn commands from the root directory** - never run them in child workspaces
- Use `yarn workspace <workspace-name> run <command>` for workspace-specific tasks
- Tests run once and exit by default (using `vitest --run`)
### Task Orchestration with Lage
The project uses **[lage](https://microsoft.github.io/lage/)** (a task runner for JavaScript monorepos) to efficiently run tests and other tasks across multiple workspaces:
- **Parallel execution**: Runs tests in parallel across workspaces for faster feedback
- **Smart caching**: Caches test results to skip unchanged packages (cached in `.lage/` directory)
- **Dependency awareness**: Understands workspace dependencies and execution order
- **Continues on error**: Uses `--continue` flag to run all packages even if one fails
**Lage Commands:**
```bash
# Run all tests across all packages
yarn test# Equivalent to: lage test --continue
# Run tests without cache (for debugging/CI)
yarn test:debug # Equivalent to: lage test --no-cache --continue
```
Configuration is in `lage.config.js` at the project root.
## Architecture & Package Structure
### Core Packages
#### 1. **loot-core** (`packages/loot-core/`)
The core application logic that runs on any platform.
- Business logic, database operations, and calculations
- Platform-agnostic code
- Exports for both browser and node environments
- Test commands:
```bash
# Run all loot-core tests
yarn workspace loot-core run test
# Or run tests across all packages using lage
yarn test
```
#### 2. **desktop-client** (`packages/desktop-client/` - aliased as `@actual-app/web`)
The React-based UI for web and desktop.
- React components using functional programming patterns
- **Feature Requests**: Label "needs votes" sorted by reactions
## Code Quality Checklist
Before committing changes, ensure:
- [ ] `yarn typecheck` passes
- [ ] `yarn lint:fix` has been run
- [ ] Relevant tests pass
- [ ] No new console.\* usage (use logger)
- [ ] User-facing strings are translated
- [ ] Prefer `type` over `interface`
- [ ] Named exports used (not default exports)
- [ ] Imports are properly ordered
- [ ] Platform-specific code uses proper exports
- [ ] No unnecessary type assertions
## Pull Request Guidelines
When creating pull requests:
- **AI-Generated PRs**: If you create a PR using AI assistance, add the **"AI generated"** label to the pull request. This helps maintainers understand the nature of the contribution.
## Performance Considerations
- **Bundle Size**: Check with rollup-plugin-visualizer
- **Type Checking**: Uses incremental compilation
- **Testing**: Tests run in parallel by default
- **Linting**: ESLint caches results for faster subsequent runs
## Workspace Commands Reference
```bash
# List all workspaces
yarn workspaces list
# Run command in specific workspace
yarn workspace <workspace-name> run <command>
# Run command in all workspaces
yarn workspaces foreach --all run <command>
# Install production dependencies only (for server deployment)
yarn install:server
```
## Environment Requirements
- **Node.js**: >=20
- **Yarn**: ^4.9.1 (managed by packageManager field)
- **Browser Targets**: Electron >= 35.0, modern browsers (see browserslist)
## Migration Notes
The codebase is actively being migrated:
- **JavaScript → TypeScript**: sync-server is in progress
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
-@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)".
Please review the contributing documentation on our website: https://actualbudget.org/docs/contributing/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
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)
If you are only interested in running the latest version and not contributing to the source code, you don't need to clone this repo. You can get the latest version through npm.
1. Self-hosted by using [a Docker image](https://actualbudget.org/docs/install/docker)
1. Local-only apps - [downloadable Windows, Mac and Linux apps](https://actualbudget.org/download/) you can run on your device
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.
Learn more in the [installation instructions docs](https://actualbudget.org/docs/install/).
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)
## Ready to Start Budgeting?
Read about [Envelope budgeting](https://actualbudget.org/docs/getting-started/envelope-budgeting) to know more about the idea behind Actual Budget.
### Are you new to budgeting or want to start fresh?
Check out the community's [Starting Fresh](https://actualbudget.org/docs/getting-started/starting-fresh) guide so you can quickly get up and running!
### Are you migrating from other budgeting apps?
Check out the community's [Migration](https://actualbudget.org/docs/migration/) guide to start jumping on the Actual Budget train!
## 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
## Contributing
Actual is a community driven product. Learn more about [contributing to Actual](https://actualbudget.org/docs/contributing/).
### 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.
### Translation
Make Actual Budget accessible to more people by helping with the [Internationalization](https://actualbudget.org/docs/contributing/i18n/) of Actual. We are using a crowd sourcing tool to manage the translations, see our [Weblate Project](https://hosted.weblate.org/projects/actualbudget/). Weblate proudly supports open-source software projects through their [Libre plan](https://weblate.org/en/hosting/#libre).
'To avoid having to enter your username, consider installing the official GitHub CLI (https://github.com/cli/cli) and logging in with `gh auth login`.',
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.