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
* 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.
* 🔖 (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>
* 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>
* 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>
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: 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.
* 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>
* 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>
* 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.
* 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>