* Remove duplication of CrossoverData type
Move the CrossoverData type definition to crossover-spreadsheet.tsx and
import it from the Crossover and CrossoverCard files instead of having
duplicate definitions in each file.
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Signed-off-by: Jonathon Jongsma <jonathon@quotidian.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Refactor: extract tooltip components and clean up lint suppressions
Extract CustomTooltip components from CrossoverGraph and NetWorthGraph
to module level to fix unstable nested components lint warnings. Also
consolidate theme file lint rule into oxlintrc.json and add proper
typing to styles object.
* Add release notes for maintenance updates addressing lint violations
* Remove style prop from CustomTooltip to prevent container layout styles from affecting tooltip
Co-authored-by: matiss <matiss@mja.lv>
* Refactor NetWorthGraph component by extracting TrendTooltip and StackedTooltip into separate functions for improved readability and maintainability. Update tooltip props to include necessary parameters for rendering. Clean up unused code and enhance tooltip styling.
* Refactor NetWorthGraph component to streamline tooltip handling
- Removed unnecessary prop passing for translation function in TrendTooltip.
- Adjusted import statements for better clarity and consistency.
- Cleaned up code to enhance readability and maintainability.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* Fix Ctrl+Enter losing amount value when adding transaction
Fixes#6901
When using Ctrl+Enter to add a transaction immediately after typing
in the amount field, the value wasn't being committed before the
transaction was saved, resulting in a zero amount.
The fix wraps the add-and-close logic in an afterSave() callback
to ensure field values are committed before adding the transaction.
Added regression tests for both debit and credit fields to verify
the fix works correctly.
* Add release notes for PR #6911
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: Add optional starting date and balance for bank sync accounts
Adds the ability to specify a custom starting date and balance when
linking new bank sync accounts in the Select Linked Accounts modal.
Addresses: https://discord.com/channels/937901803608096828/1402270361625563186
Changes:
- Frontend: Added inline date and amount input fields in the account
linking table for new accounts
- Redux: Extended link account actions to accept startingDate and
startingBalance parameters
- Backend: Updated account linking handlers to pass custom values to
sync logic
- Sync: Modified syncAccount and processBankSyncDownload to use custom
starting date/balance for initial sync transactions
Features:
- Only displays starting options when creating new accounts (not upgrades)
- AmountInput with smart sign detection based on account balance
(negative for credit cards/loans)
- Defaults to 90 days ago for date and 0 for balance
- Mobile-responsive with separate AccountCard layout
- Works across all sync providers: GoCardless, SimpleFIN, Pluggy.ai
The custom starting balance is used directly for the starting balance
transaction, and the custom starting date determines both the sync
start date and the transaction date for the starting balance entry.
* refactor: Extract shared types and components for starting balance inputs
- Create CustomStartingSettings type to replace repeated inline type definitions
- Extract StartingOptionsInput component to consolidate duplicate UI between mobile/desktop views
- Create LinkAccountBasePayload type shared across GoCardless, SimpleFIN, and PluggyAI link functions
- Apply same base type pattern to server-side link account handlers
This simplifies the code introduced for custom starting date/balance when linking bank accounts.
[autofix.ci] apply automated fixes
* allow explicit zero values
* refactor: add type guard for BankSyncError to remove oxlint-disable
- Create isBankSyncError() type guard function with proper type narrowing
- Remove oxlint-disable-next-line comment that suppressed the no-explicit-any rule
- Add JSDoc comments for both isBankSyncError and handleSyncError functions
- Remove redundant type assertion now that type guard narrows correctly
* refactor: address code review nitpicks for SelectLinkedAccountsModal
- Use locale-aware date formatting instead of toISOString()
- Extract isNewAccountOption helper to reduce duplication
- Align AccountCardProps type definition pattern with TableRowProps
* Add placeholder date/balance for already linked accounts
* [autofix.ci] apply automated fixes
* Use StartingBalanceInfo only, and add mobile view
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Fix react-hooks/exhaustive-deps in DateSelect
* Add release notes for PR #6864
* Fix remaining suppressions
* Change category to Maintenance and fix linting issues
Updated category from Enhancements to Maintenance and fixed linting issues related to react-hooks/exhaustive-deps in DateSelect.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: corrected date range calculation in BudgetAnalysisCard using calculateTimeRange
* add release note
* fix: ensure correct date formatting in BudgetAnalysisCard for start and end dates
* fix: rename release note file
* Apply tag colors to match YNAB flags
* Update tag colors to match YNAB, add description on import
* Tighten types
* Use custom colors
* Use Actual palette equivalents for tag colors
* Nitpick fixes
* Fix nitpick 'fix'
* Handle YNAB flag tag conflicts
* Handle YNAB flag tag conflicts without creating separate color tags
* Simplify
* Reorganize
* Fix react/exhaustive-deps in Modals
* Fix react/exhaustive-deps in PayeeTable
* Add release notes for PR #6863
* Change category and fix dependency management in PayeeTable
Updated category from 'Enhancements' to 'Maintenance' and fixed dependency management in PayeeTable.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Remove comma from all instances of month-year strings, e.g., "January 2026" rather than "January, 2026"
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6748
* All updated calls now include `locale` as an argument
* Update dependencies in `useEffect` to include `locale`
* Reorganized new import
* Remove double colon
* Consistent trailing commas
* Include locale in other dependency arrays
* Reorder imports
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6748
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <github@m.fiddaman.uk>
* Change color of budget table scrollbar.
* Update budget sidebar to use budget colors.
* Update fontWeight for 'Category' to match rest of table
* Update to use budget background
* Update ExpenseGroup to use budget color
* Update IncomeGroup to use budget color
* Update SidebarCategory colors
Change drag/drop to buttonPrimaryBackground so it will always be visible in any custom theme.
Background to budget color.
* Update SidebarGroup background to budget color
* Update EnvelopeBudgetComponents
Add 'budgetNumberNeutral' to cheveronDown in budgeted field instead of using default bare button text incases where bare button is set to normal button text and normal button is inverted. remove mobile color variable for shadow
* Update BudgetTotals.tsx
Use tableHeaderText for header.
* Update BudgetSummary.tsx
Use budget colors
* Update MonthPicker.tsx
change selected months at top from tableBorderHover color to buttonPrimaryBackground.
* [autofix.ci] apply automated fixes
* Update EnvelopeBudgetComponents.tsx
* Update BudgetTotals.tsx
revert
* Update SidebarCategory.tsx
* Update TrackingBudgetComponents to use budget colors
* [autofix.ci] apply automated fixes
* Update BudgetSummary to use budget colors
* Update BudgetTotal.tsx
* Update ExpenseProgress.tsx
* Update IncomeProgress.tsx
* Update Saved.tsx
* Use consistent color variables on budget pages.
* Update IncomeProgress.tsx
* Update ExpenseProgress.tsx
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6820
* Update EnvelopeBudgetComponents
Budget total header to follow current/other month style.
* Update EnvelopeBudgetComponents.tsx
* [autofix.ci] apply automated fixes
* Update EnvelopeBudgetComponents.tsx
* Update EnvelopeBudgetComponents.tsx
* [autofix.ci] apply automated fixes
* Update EnvelopeBudgetComponents.tsx
* Revert EnvelopeBudgetComponents.tsx
* [autofix.ci] apply automated fixes
* Update EnvelopeBudgetComponents.tsx
* Update EnvelopeBudgetComponents.tsx
* Update EnvelopeBudgetComponents.tsx
* Revert again :) EnvelopeBudgetComponents.tsx
---------
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>
* Include scheduled transactions in nYNAB imports
* Remove logs and restore schedule name from transaction memo
* Simplify rule actions
* Create schedules with unique names
* Set the note rather than append
* Update ynab5 demo budget and e2e test
* fix(i18n): respect browser preferred languages when supported
Instead of relying on the first browser language, the application now
iterates through navigator.languages and selects the first supported
locale, with a fallback to English.
* chore: add the release notes related file
* fix(i18n): check region locales support before falling back to base locale
* fix(i18n): make the unit test aligned with the region locales checking
* Make arithmetic.ts strict TypeScript compliant
- Add type definitions for ParserState, Operator, OperatorNode, and AstNode
- Add explicit type annotations to all function parameters
- Fix null/undefined handling in parsePrimary function
- Remove type assertion in makeOperatorParser by using explicit Operator type
- Handle null return from currencyToAmount function
- All functions now have proper return type annotations
* Add test for ignoring leftover characters in evalArithmetic function
* docs: add ANZ Plus Bank to community repos
Added ANZ Plus Bank to the Community Repos page.
Link(s): https://github.com/spydisec/PDFtoOFX/
Short summary: Convert ANZ Plus bank statement PDFs to OFX format for seamless import into Actual Budget and other personal finance applications.
Placement: https://actualbudget.org/docs/community-repos/
* Update packages/docs/docs/community-repos.md
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Fix typo in ANZ Plus bank converter description
* chore: update docs spelling allowlist
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Initial plan
* Add clock-drift error handling to sync flow
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Add release notes for PR #6789
* Refactor error handling in sync flow
- Extracted error handling logic into a separate function for better readability and maintainability.
- Updated the receiveMessages and _sendMessages functions to utilize the new errorHandler.
- Removed redundant error handling code from the _sendMessages function.
- Enhanced error handling for SyncError and ClockDriftError to emit specific events.
* Enhance error handling in receiveMessages function
- Added try-catch block to handle Timestamp.ClockDriftError specifically.
- Emitted a sync error event for clock-drift errors to improve synchronization feedback.
- Maintained existing functionality while improving error reporting.
* Update authorship in release notes and refine clock-drift error messaging for clarity
---------
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>
* start to a storybook
* release notes
* commit the release notes
* add test:web back
* adding some scripts to the main package for storybook
* styled it up a bit
* remove unneeded icon
* lint
* remove needless comment
* moving clarifying comment
* fast failing
* feedback
* removing unneeded config
* Fix missing bottom navigation bar on mobile reports page
Update route pattern from /reports to /reports/* to match nested routes
* Release notes
* Add release notes for version 6803
* Refactor reports route to include dashboardId parameter
* Initial plan
* Add test case for apostrophe-dot format bug
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Fix: Support keyboard apostrophe (U+0027) in arithmetic parser for apostrophe-dot format
The arithmetic parser was only recognizing the typographic apostrophe (U+2019)
that Intl.NumberFormat outputs, but not the regular apostrophe (U+0027) that
users type on their keyboards. This caused amounts like "12'345.67" to be
truncated to "12" when users typed them.
The fix adds U+0027 to the regex character class in arithmetic.ts so both
apostrophe characters are accepted.
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Add explicit character code verification to apostrophe-dot test
Use escape sequences (\u0027 and \u2019) to ensure the test explicitly
uses the correct apostrophe characters, and add assertions to verify
the character codes are as expected.
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* Fix lint
* Add comprehensive tests for apostrophe-dot format in arithmetic.test.ts
Added three new test cases to verify both apostrophe types work correctly:
1. Tests keyboard apostrophe (U+0027) with explicit character code verification
2. Tests typographic apostrophe (U+2019) with explicit character code verification
3. Tests arithmetic operations with both apostrophe types
This addresses the feedback to add tests for the new logic in arithmetic.ts.
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
* [autofix.ci] apply automated fixes
* Add release notes for PR #6795
---------
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: Matiss Janis Aboltins <matiss@mja.lv>
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>
* Update BudgetAnalysisGraph.tsx
Use reportsGray for Balance.
* Fix Budget Analysis Graph balance color variable
Use reportsGray instead of numberNeutral for balance points and line.
* Fix schedule transaction amount color on mobile
Change schedule amount color from pageText to pageTextSubdued to match the label color, consistent with desktop version.
Fixes#6781
* Enhance Budget Analysis report UI and functionality
- Improve chart colors to align with Cash Flow report style
- Streamline report view by removing legend items
- Introduce a quick select option for 1 month in the header
- Implement dynamic interval switching based on date range
This update aims to provide a more cohesive and user-friendly experience in the Budget Analysis report.
* Update snapshot images for account page tests and fix color styling in transaction and schedule list items
- Updated snapshot images for account page tests to reflect recent UI changes.
- Adjusted color styling for transaction amounts to ensure consistency with the overall theme.
- Changed schedule amount color back to match the primary text color for better visibility.
* Add Budget Analysis report with full implementation
Co-authored-by: tabedzki <35670232+tabedzki@users.noreply.github.com>
* Add preset time ranges, intervals, bar chart, hide balance, and display controls
Co-authored-by: tabedzki <35670232+tabedzki@users.noreply.github.com>
* Fix duplicate function declaration syntax error in budget-analysis-spreadsheet.ts
Co-authored-by: tabedzki <35670232+tabedzki@users.noreply.github.com>
* Fix floating point precision error in daily/weekly intervals and replace interval button with dropdown
Co-authored-by: tabedzki <35670232+tabedzki@users.noreply.github.com>
* Make card always display monthly data and match report's chart type
Co-authored-by: tabedzki <35670232+tabedzki@users.noreply.github.com>
* fix: adjust widget placement and presentation
* fix: adjusted the dot presentation
* feat: added svg for line chart/barchart
* fix: added one month to the report
* added the upcoming release notes
* amended the upcoming release notes
* fix: removed unused variables
* formatted using prettier --write
* [autofix.ci] apply automated fixes
* feat: added new feature to the Reports Page in the test budget
* fix: amended the reports.test.ts file to expect Budget Analysis
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* revert: removed the inclusion of the Budget Analysis tool from the test file
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* fix: changed the display to always be monthly since budgets are monthly; removed the 1month view
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* fix: removed comment
* feat: added experimental feature flag for Budget Analysis tool
* feat: Switched option to use SVG Icons instead of words to shorten horizontal layout
* Removed interval possibilities and removed unnecessary compact variable as indicated by CodeRabbit
* Update packages/desktop-client/src/components/reports/reports/BudgetAnalysisCard.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Added basic documentation for Budget Analysis Report
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* fix: added budget-analysis doc to sidebar
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* feat(reports): improve Budget Analysis report UI and behavior
- Update chart colors to match Cash Flow report style
(Budgeted: blue, Balance: pageTextLight)
- Remove legend items from report view for cleaner UI
- Add 1 month quick select option to header
- Pass isConcise prop to BudgetAnalysisGraph for proper date formatting
- Add dynamic daily/monthly interval switching based on date range
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* feat(reports): refactor BudgetAnalysisGraph and improve isConcise calculation according to Rabbit AI
* feat(reports): add translation support for Budget Analysis graph labels
* feat(reports): centralize translation for Budget Analysis graph labels
* feat: use the budget values directly from the budget spreadsheet/server
* feat: enhance budget analysis with overspending adjustments and detailed reporting
* style: format code for better readability in BudgetAnalysis and budget-analysis-spreadsheet components
* refactor: remove unused variables
* docs: added in the image to the docs
* fix: reimplement support for conditionsOp
* [autofix.ci] apply automated fixes
* style: simplify budget analysis labels for clarity
* fix: add the on copy function
* feat: tooltip improvements
* feat: enhance budget analysis to track overspending adjustments across months
* fix: removed the absolute value for spent
* feat: update the charts to look closer to the CashFlow report
* fix: correct financial formatting for totalSpent in BudgetAnalysis
* feat: add filterExclude prop to Header and BudgetAnalysis for improved filtering options
* feat: implement privacy mode for Y-axis values in BudgetAnalysisGraph
* feat: change default graph type to Bar in BudgetAnalysis
* feat: remove commented-out filter button code in Header component
* feat: remove commented-out code for filter exclusion in Header component
* fix: update the feedback link to the dedicated issue
* refactor: financial display components to use FinancialText for consistency in Budget Analysis reports
* fix: update the card to also start as bar graph
* docs: update Budget Analysis report to include category filtering information
* style: refactor imports and whitespace
* refactor: simplify inline content structure in BudgetAnalysis component
* [autofix.ci] apply automated fixes
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* fix: removed color descriptors from the chart
* fix: update color themes for Budget Analysis to use custom theme definitions
* [autofix.ci] apply automated fixes
* feat: update Budget Analysis merge md file
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6137
* fix: update budget analysis report image
* fix: white space adjustment in descriptor
* [autofix.ci] apply automated fixes
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.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>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: youngcw <calebyoung94@gmail.com>