* [AI] Publish loot-core (@actual-app/core) nightly first in workflow
* [autofix.ci] apply automated fixes
* Refactor imports and update configuration
- Updated .oxfmtrc.json to change "parent" to ["parent", "subpath"].
- Removed unnecessary blank lines in various TypeScript files to improve code readability.
- Adjusted import order in reports and rules files for consistency.
* Add workflow steps to pack and publish the core package nightly
* Remove nightly tag from npm publish command in workflow for core package
* Update post-build script comment to reflect correct workspace command for loot-core declarations
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* [AI] Fix navigator is not defined error in @actual-app/api for Node.js environments
Add platform.api.ts to provide Node.js-safe defaults for platform detection,
which the API's Vite config resolves before the browser-only platform.ts.
Also guard navigator access in environment.ts isElectron() function.
Fixes#7201https://claude.ai/code/session_015Xz2nHC12pNkADGjGZnSXd
* Add release notes for PR #7202
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* [AI] Switch typecheck from tsc to tsgo and fix Menu type narrowing
* [autofix.ci] apply automated fixes
* Add .gitignore for dist directory, update typecheck script in package.json to use -b flag, and remove noEmit option from tsconfig.json files in ci-actions and desktop-electron packages. Introduce typesVersions in loot-core package.json for improved type handling.
* Refactor SelectedTransactionsButton to improve type safety and readability. Updated items prop to use spread operator for conditional rendering of menu items, ensuring proper type annotations with MenuItem. This change enhances the clarity of the component's structure and maintains TypeScript compliance.
* Update tsconfig.json in desktop-electron package to maintain consistent formatting for plugins section. No functional changes made.
* [autofix.ci] apply automated fixes
* Update package.json and yarn.lock to add TypeScript 5.8.0 dependency. Adjust typesVersions in loot-core package.json for improved type handling. Enhance tsconfig.json in sync-server package to enable strictFunctionTypes for better type safety.
* Enhance tsconfig.json in ci-actions package by adding composite option for improved project references and build performance.
* [AI] Revert typescript to 5.9.3 for ts-node compatibility
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
* [AI] Update yarn.lock after TypeScript version change
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
* Refactor Menu component for improved type safety and readability. Updated type assertions for Menu.line and Menu.label, simplified type checks in filtering and selection logic, and enhanced conditional rendering of menu items. This change ensures better TypeScript compliance and maintains clarity in the component's structure.
* Refactor Select and OpenIdForm components to improve type safety and simplify logic. Updated item mapping to handle Menu.line more effectively, enhancing clarity in selection processes. Adjusted SelectedTransactionsButton to streamline item creation and improve readability.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
* feat(desktop-client): add transaction drag-and-drop reordering
Add the ability to manually reorder transactions within a date group using
drag-and-drop in the TransactionsTable. This is useful for correcting the
order of transactions that occurred on the same day.
Prevent transaction reordering from falling back to the end of the day list
when dropping before a split parent. Parent-level moves now target parent
rows only, so regular transactions can be inserted between split parents on
the same date.
Key changes:
Frontend:
- Migrate drag-and-drop from react-dnd to react-aria hooks
- Add transaction row drag handles and drop indicators
- Implement onReorder handler in TransactionList
- Restrict reordering to same-date transactions only
- Disable drag-drop on aggregate views (categories, etc.)
Backend:
- Add transaction-move handler with validation
- Implement moveTransaction in db layer with midpoint/shove algorithm
- Add TRANSACTION_SORT_INCREMENT constant for consistent spacing
- Handle split transaction subtransactions automatically
- Inherit parent sort_order in child transactions during import
Refactoring:
- Remove useDragRef hook (replaced by react-aria)
- Remove DndProvider wrapper from App.tsx
- Update budget and sidebar components for new drag-drop API
- Fix sort.tsx @ts-strict-ignore by adding proper types
configure allowReorder for TransactionTable consumers
- Account.tsx: Enable reordering for single-account views, add sort_order
as tiebreaker for stable ordering when sorted by other columns
- Calendar.tsx: Disable reordering in calendar report view (read-only context)
* void promises
* [AI] Promote typescript/restrict-template-expressions to error and fix violations
Convert the oxlint rule from "warn" to "error" and fix all 42 violations
by wrapping non-string template expressions with String(). This ensures
type safety in template literals across the codebase.
https://claude.ai/code/session_01Uk8SwFbD6HuUuo3SSMwU9z
* Add release notes for PR #7181
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* refactor(api): defineConfig vitest, api-helpers, drop vite.api build
- Wrap api vitest.config with defineConfig for typing/IDE
- Add loot-core api-helpers, use in YNAB4/YNAB5 importers
- Remove vite.api.config, build-api, injected.js; simplify api package
* refactor(api): update package structure and build scripts
- Change main entry point and types definition paths in package.json to reflect new structure.
- Simplify build script by removing migration and default database copy commands.
- Adjust tsconfig.dist.json to maintain declaration directory.
- Add typings for external modules in a new typings.ts file.
- Update comments in schedules.ts to improve clarity and maintainability.
* chore(api): update dependencies and build configuration
- Replace tsc-alias with rollup-plugin-visualizer in package.json.
- Update build script to use vite for building the API package.
- Add vite configuration file for improved build process and visualization.
- Adjust tsconfig.dist.json to exclude additional configuration files from the build.
* fix(api): update visualizer output path in vite configuration
- Change the output filename for the visualizer plugin from 'dist/stats.json' to 'app/stats.json' to align with the new directory structure.
* refactor(api): streamline Vite configuration and remove vitest.config.ts
- Remove vitest.config.ts as its configuration is now integrated into vite.config.ts.
- Update vite.config.ts to include sourcemap generation and adjust CRDT path resolution.
- Modify vitest.setup.ts to correct the import path for the CRDT proto file.
* feat(api): enhance build scripts and add file system utilities
- Update build scripts in package.json to include separate commands for building node, migrations, and default database.
- Introduce a new file system utility module in loot-core to handle file operations such as reading, writing, and directory management.
- Implement error handling and logging for file operations to improve robustness.
* Refactor typecheck script in api package and enhance api-helpers with new schedule and rule update functions. The typecheck command was simplified by removing the strict check, and new API methods for creating schedules and updating rules were added to improve functionality.
* Refactor API integration in loot-core by removing api-helpers and directly invoking handlers. Update typecheck script in api package to include strict checks, and refine TypeScript configurations across multiple packages for improved type safety and build processes.
* Refactor imports and enhance code readability across multiple files in loot-core. Simplified import statements in the API and adjusted formatting in YNAB importers for consistency. Updated type annotations to improve type safety and maintainability.
* Refactor handler invocation in YNAB importers to use the new send function from main-app. This change improves code consistency and readability by standardizing the method of invoking handlers across different modules.
* Refactor schedule configuration in loot-core to enhance type safety by introducing a new ScheduleRuleOptions type. This change improves the clarity of the recurring schedule configuration and ensures better type checking for frequency and interval properties.
* Update TypeScript configuration in api package to include path mapping for loot-core. This change enhances module resolution and improves type safety by allowing direct imports from the loot-core source directory.
* Update TypeScript configuration in api package to reposition the typescript-strict-plugin entry. This change improves the organization of the tsconfig.json file while maintaining the existing path mapping for loot-core, ensuring consistent type checking across the project.
* Update TypeScript configurations across multiple packages to enable noEmit option. This change enhances build processes by preventing unnecessary output files during compilation. Additionally, remove the obsolete tsconfig.api.json file from loot-core to streamline project structure.
* Update TypeScript configuration in sync-server package to enable noEmit option. This change allows for the generation of output files during compilation, facilitating the build process.
* Update api package configuration to streamline build process and enhance type safety. Removed unnecessary build scripts, integrated vite-plugin-dts for type declaration generation, and added migration and default database copying functionality. Adjusted vitest setup to comment out CRDT proto file import for improved test isolation.
* Update TypeScript configurations in desktop-client and desktop-electron packages to enable noEmit option, allowing for output file generation during compilation. Additionally, add ts-strict-ignore comments in YNAB importers to suppress strict type checking, improving compatibility with embedded API usage.
* Refactor api package configuration to update type declaration paths and enhance build process. Changed type definitions reference in package.json, streamlined tsconfig.json exclusions, and added functionality to copy inlined types during the build. Removed obsolete vitest setup file for improved test isolation.
* Revert to solution without types
* Update TypeScript configuration in API package to use ES2022 module and bundler resolution. This change enhances compatibility with modern JavaScript features and improves the build process.
* Update yarn.lock and API package to enhance TypeScript build process and add new dependencies
* Refactor inline-loot-core-types script to streamline TypeScript declaration handling and improve output organization. Remove legacy code and directly copy loot-core declaration tree, updating index.d.ts to reference local imports.
* Add internal export to API and enhance Vite configuration for migration handling
* Update Vite configuration in API package to target Node 18, enhancing compatibility with the latest Node features.
* Enhance inline-loot-core-types script to improve TypeScript declaration handling by separating source and typings directories. Update the copy process to include emitted typings, ensuring no declarations are dropped and maintaining better organization of loot-core types.
* Enhance migration handling by allowing both .sql and .js files to be copied during the migration process. Refactor file system operations in loot-core to improve error handling and streamline file management, including new methods for reading, writing, and removing files and directories.
* Refactor rootPath determination in Electron file system module by removing legacy case for 'bundle.api.js'. This simplifies the path management for the Electron app.
* Update API tests to mock file system paths for migration handling and change Vite configuration to target Node 20 for improved compatibility.
* Add promise-retry dependency to loot-core package and update yarn.lock
* Fix lint
* Refactor build script order in package.json for improved execution flow
* Feedback: API changes for "internal"
* [AI] Fix SimpleFin batch sync crash when accounts are missing from response
When SimpleFin doesn't return data for all requested accounts during
batch sync, the code crashed with a TypeError accessing properties on
undefined, resulting in a generic "internal error" message for users.
This fix:
- Adds a guard in simpleFinBatchSync for missing account data, returning
an ACCOUNT_MISSING error instead of crashing
- Propagates error entries from the SimpleFin response's errors map for
accounts that have no data entry
- Adds a user-friendly ACCOUNT_MISSING error message in the UI suggesting
to unlink and relink the account
- Adds test cases covering both scenarios
https://claude.ai/code/session_01XbHgxxrXYR3UTyW6VmYj47
* Add release notes for PR #7152
* [AI] Fix SimpleFIN batch sync error_code TypeError
Fix "Cannot read properties of undefined (reading 'error_code')" that
occurs during SimpleFIN batch sync by:
1. Adding null check for downloadSimpleFinTransactions result in
simpleFinBatchSync (sync.ts) - the function can return undefined
when user token is missing
2. Adding .catch() handler on individual processBankSyncDownload
promises so a single account failure doesn't crash the entire
batch via Promise.all rejection
3. Using optional chaining on syncResponse.res?.error_code in app.ts
and handling the case where res is undefined with proper error
reporting
https://claude.ai/code/session_01XbHgxxrXYR3UTyW6VmYj47
* [AI] Fix SimpleFin batch sync to emit ACCOUNT_MISSING for empty payloads
In the batch sync path, if a per-account download payload is an empty
object or is missing the transactions array, processBankSyncDownload
would crash and the error would be caught as INTERNAL_ERROR. Now we
check for these cases explicitly and emit ACCOUNT_MISSING instead,
while still allowing entries with error_code to propagate their
specific error.
https://claude.ai/code/session_01XbHgxxrXYR3UTyW6VmYj47
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* [AI] Consolidate custom theme prefs and improve auto-mode UX
- Merge `installedCustomTheme` into `installedCustomLightTheme` so only
two prefs exist (light + dark). The legacy asyncStorage key
`installed-custom-theme` is preserved for backwards compatibility.
- In auto (System default) mode, the main Theme dropdown no longer
surfaces the installed custom-light theme as an option; custom themes
for light/dark are managed exclusively via the sub-selectors.
- Selecting "System default" resets both light and dark custom themes.
- Installing a custom theme from the main dropdown while in auto mode
switches the base theme to "Light" so it applies directly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add release notes for PR #7145
* Change category from Features to Enhancement
Custom Themes: separate light and dark theme options when selecting 'system default' theme.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #7145
* Enhance ThemeSettings and UI components by adding maxWidth styling for better responsiveness. This change ensures that buttons and columns adapt to the full width of their containers.
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Phase 1: Add payee locations database schema/types
* Add migration to create payee_locations table with proper indexes
* Add PayeeLocationEntity type definition
* Update database schema to include payee_locations table
* Export PayeeLocationEntity from models index
* Phase 2: Add payee location API/services
* Add constants for default location behavior
* Implement location service with geolocation adapters
* Add new API handlers for payee location operations
* Phase 3: Add location-aware UI components/hooks
* Update mobile transaction editing with location integration
* Enhance PayeeAutocomplete with nearby payee suggestions and forget
functionality
* Implement location permission and placeholder unit of measurement hooks
* Phase 4: Add YNAB5 payee location import support
* Extend YNAB5 types to include location data from payees
* Implement location import logic in YNAB5 importer
* Phase 5: Add unit of measurement support
* Add unit of measurement preference setting in Format.tsx
* Implement distance formatting utilities for imperial/metric units
* Add useUnitOfMeasurementFormat hook for accessing preferences
* Required release note about the PR
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6157
* Actually get syncing working
This was not obvious to me, esp. with 13 years of data, but the
locations I've been inserting were local only.
Everything appeared to work.
What I failed to notice is that the locations did not sync
across devices. Of course all the location data that was imported worked
fine, but nothing new unless it was created on device.
This changes the schema and uses the proper insert/delete methods such
that syncing works.
* Remove unit of measurement preference
Display feet and meters automatically, and don't bother to format based on miles/kilometers.
* Add payeeLocations feature flag
Place the location permissions check and thus user-facing functionality behind the feature flag
* Missed adding tombstone to payee location query
* Adjust migration name to pass CI
Adjust the indexes as well
* Unify location.ts
If CodeRabbit complains again, reply that we are actively choosing a unified file
* Add bounds testing
The validation is straightforward range-checking — if it's wrong, it'll be obvious quickly. Unless there's a plan to start adding broader test coverage for that file, I'd leave it untested for now
* Prefer camelCase for the method params
* Fix the nested interactive containers
* Fix the majority of CodeRabbit nits
The remainder seem to not be related to my code change (just a lint), outdated (sql migration comment), or infeasible (sql haversine query)
* More CodeRabbit nits
* Revert unnecessary YNAB5 zip import
Turns out the payee_locations were inside the exported budget all along!
* Additional guards and other CR fixes
* Match the pattern used elsewhere in file
* YNAB5.Budget -> Budget
Missed in the merge conflict
* ci: trigger rerun
* Change import from fetch to connection module
* Correct invalid border property
Ah. I never noticed this property wasn't working. I guess the button
looked OK to me!
* Only hide the button on success
* Update packages/loot-core/src/shared/location-utils.ts
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Update packages/loot-core/src/server/payees/app.ts
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Fully fix typo
Guess I shouldn't commit a suggestion after waking up
* Attempting to address feedback
Manual select nearby payee and save payee location buttons to make the UX more obvi
* Remove stale file that was moved
* Additional cleanup of remnant change
Removed the references to location from a few existing entities
* Additional cleanup of remnant change
* Show the Nearby payees button even when the field is disabled
If there are nearby payees, there's not a payee already selected, and the save button isn't needed
* runQuery is not async
* Add mockNearbyPayeesResult to test
Trying to utilize the real type in the mock
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
* Add failing tests for SimpleFin batch sync shared error array bug
Tests prove two bugs in simpleFinBatchSync() catch block (app.ts:1100-1115):
1. All accounts share the same errors array reference
2. Errors accumulate across accounts instead of being isolated
Related: #6623, #6651, #7114https://claude.ai/code/session_011ebiiXRMmbiKxYMohVXL6o
* Fix shared error array in SimpleFin batch sync catch block
When simpleFinBatchSync() threw an error, all accounts received the
same errors array by reference and errors accumulated across accounts.
Each account now gets its own isolated errors array with a single error
specific to that account, matching the pattern used by accountsBankSync().
Fixes#6623https://claude.ai/code/session_011ebiiXRMmbiKxYMohVXL6o
* Remove @ts-strict-ignore from bank sync tests
Use proper non-null assertions instead of disabling strict mode.
https://claude.ai/code/session_011ebiiXRMmbiKxYMohVXL6o
* Add release notes for PR #7125
* [AI] Replace test() with it() to follow repo convention
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
---------
Co-authored-by: Claude <noreply@anthropic.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 Janis Aboltins <MatissJanis@users.noreply.github.com>
* fix(csv-import): trim whitespace from amount strings before parsing
looselyParseAmount relies on a regex anchored at $ to detect decimal
markers. Trailing whitespace (e.g. from Excel-saved CSVs) shifts the
pattern match so a thousands separator is misidentified as a decimal
point, producing wildly wrong values.
Adding trim() at the top of the function eliminates trailing/leading
whitespace before any regex logic runs.
Fixes actualbudget/actual#7121
* chore: add release notes for #7149
* [AI] Remove parent path import of window.ts from desktop-client tsconfig
Replace the `../../packages/loot-core/typings/window.ts` include in
desktop-client's tsconfig.json with a proper package import. This adds
a `./typings/*` export to loot-core's package.json and creates a
globals.ts file in desktop-client that imports the window types via
the package name.
https://claude.ai/code/session_01GrgAzjWd3XvqwBTfXLerxc
* [autofix.ci] apply automated fixes
* Add release notes for PR #7142
---------
Co-authored-by: Claude <noreply@anthropic.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>
* [AI] Enable TypeScript composite project references across monorepo
- Add composite and declaration emit to all package tsconfigs
- Wire root and per-package project references in dependency order
- Replace cross-package include-based typing with referenced outputs
- Fix api TS5055 by emitting declarations to decl-output
- Add desktop-client alias for tests; fix oxlint import order in vite.config
- Add UsersState.data null type and openDatabase return type for strict emit
Co-authored-by: Cursor <cursoragent@cursor.com>
* Remove obsolete TypeScript configuration for API and update build script to emit declarations directly to the output directory. This streamlines the build process and ensures compatibility with the new project structure.
* Refactor TypeScript configuration in API package to remove obsolete decl-output directory and update build scripts. The changes streamline the build process by directing declaration outputs to the @types directory, ensuring better organization and compatibility with the new project structure.
* Add TypeScript declaration emission for loot-core in desktop-electron build process
* Refactor TypeScript configuration in API package to utilize composite references and streamline build scripts. Update include and exclude patterns for improved file management, ensuring better organization of declaration outputs and migration SQL files.
* Refactor TypeScript configuration in loot-core and desktop-client packages to streamline path management and remove obsolete dependencies. Update paths in tsconfig.json files for better organization and compatibility, and adjust yarn.lock to reflect changes in workspace dependencies.
* Update desktop-electron package to utilize loot-core as a workspace dependency. Adjust TypeScript import paths and tsconfig references for improved organization and compatibility across packages.
* Enhance Vite configuration for desktop-client to support Electron-specific conditions and update loot-core package.json to include Electron as a platform for client connection. This improves compatibility for Electron builds.
* Refactor TypeScript configuration across multiple packages to streamline path management. Update tsconfig.json files in root, api, and loot-core packages to improve import paths and maintain compatibility with internal typings.
* Update package dependencies and Vite configuration across component-library and desktop-client. Add vite-tsconfig-paths to component-library and remove it from desktop-client. Refactor Storybook preview file to include a TODO for future refactoring.
* Remove Node-specific path from loot-core package.json for client connection, streamlining platform configuration for Electron.
* Remove loot-core as a workspace dependency from desktop-electron package.json
* Update tsconfig.json to remove reference to desktop-client
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* Add New Taiwan Dollar to currency list
* Add New Taiwan Dollar to currency list
* Fix decimalPlaces for New Taiwan Dollar
Updated decimalPlaces for New Taiwan Dollar from 0 to 2, as suggested by coderabbitai, "Line 62 introduces TWD as zero-decimal, but this codebase currently has an unresolved zero-decimal conversion/storage issue. This risks incorrect persisted amounts for TWD transactions."
* Add upcoming-releass-notes
* Add New Taiwan Dollar (NT$) to available currency
* Add New Taiwan Dollar (NT$) to available currency
* [AI] Refactor YNAB importers to use server-side send() and handler API
Co-authored-by: Cursor <cursoragent@cursor.com>
* Rename 7049.md to 7050.md
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* [AI] Use loot-core workspace in desktop-electron and fix related types
- Add loot-core as workspace dependency in desktop-electron
- Import GlobalPrefsJson from loot-core package in desktop-electron
- Allow null in usersSlice data type (UsersState)
- Add explicit SQL.Database return type to openDatabase in sqlite electron
Made-with: Cursor
* Re-add loot-core as a workspace dependency in desktop-electron
* e:electron: electron backups converted to zip for easy importing
* release notes
* fix lint
* suggestion from rabbit
* Change category from Maintenance to Enhancements
* Pushing before weekend to Monday
* release notes
* lint
* Guard against null
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fixing AI commit and addressing second comment
* addressing nitpicks
* first attempt at a test
* [autofix.ci] apply automated fixes
* refactor to use condition and fix tests
---------
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>
* [AI] Add per-package tsconfigs and typescript-strict-plugin for typecheck
Co-authored-by: Cursor <cursoragent@cursor.com>
* Update TypeScript configuration across multiple packages to correct plugin path key from "path" to "paths" and add reference to process-worker typings in index.electron.ts.
* Remove reference to process-worker typings in index.electron.ts and add new process-worker typings file for global Process augmentation.
* Refactor TypeScript build configurations across multiple packages by removing tsconfig.dist.json files and updating build scripts to use default TypeScript compilation. Adjusted compiler options to target ES2021 and enable declaration generation.
* Update TypeScript configuration in api package to refine include and exclude patterns for better file management.
* Update build script in api package to ensure migration SQL files are copied to the correct directory by creating the destination folder if it doesn't exist.
* Update TypeScript configurations in crdt and desktop-electron packages to refine include and exclude patterns for improved file management.
* Update TypeScript dependencies across multiple packages to include typescript-strict-plugin for enhanced type checking and maintain consistency in package.json files.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* [AI] Desktop client, E2E, loot-core, sync-server and tooling updates
Co-authored-by: Cursor <cursoragent@cursor.com>
* Refactor database handling in various modules to use async/await for improved readability and error handling. This includes updates to database opening and closing methods across multiple files, ensuring consistent asynchronous behavior. Additionally, minor adjustments were made to encryption functions to support async operations.
* Refactor sync migration tests to utilize async/await for improved readability. Updated transaction handling to streamline event expectations and cleanup process.
* Refactor various functions to utilize async/await for improved readability and error handling. Updated service stopping, encryption, and file upload/download methods to ensure consistent asynchronous behavior across the application.
* Refactor BudgetFileSelection component to use async/await for onSelect method, enhancing error handling and readability. Update merge tests to utilize async/await for improved clarity in transaction merging expectations.
* Refactor filesystem module to use async/await for init function and related database operations, enhancing error handling and consistency across file interactions. Updated tests to reflect asynchronous behavior in database operations and file writing.
* Fix typo in init function declaration to ensure it returns a Promise<void> instead of Proise<void>.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6987
* Update tests to use async/await for init function in web filesystem, ensuring consistent asynchronous behavior in database operations.
* Update VRT screenshot for payees filter test to reflect recent changes
* Update filesystem module to remove web-specific implementations and streamline path handling. Refactor file operations to enhance type safety and consistency across different environments. Add tests for SQLite interactions and ensure proper handling of database transactions.
* Add release notes for maintenance: Remove usage of 'web' file types
* Refactor filesystem module to use type annotations for exports and improve consistency across methods. Remove deprecated web file handling and enhance encryption functions for better browser compatibility.
* Trigger CI
* Add asyncStorage API file to export Electron index module
* Trigger CI
* Feedback: typo
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* [AI] Desktop client, E2E, loot-core, sync-server and tooling updates
Co-authored-by: Cursor <cursoragent@cursor.com>
* Refactor database handling in various modules to use async/await for improved readability and error handling. This includes updates to database opening and closing methods across multiple files, ensuring consistent asynchronous behavior. Additionally, minor adjustments were made to encryption functions to support async operations.
* Refactor sync migration tests to utilize async/await for improved readability. Updated transaction handling to streamline event expectations and cleanup process.
* Refactor various functions to utilize async/await for improved readability and error handling. Updated service stopping, encryption, and file upload/download methods to ensure consistent asynchronous behavior across the application.
* Refactor BudgetFileSelection component to use async/await for onSelect method, enhancing error handling and readability. Update merge tests to utilize async/await for improved clarity in transaction merging expectations.
* Refactor filesystem module to use async/await for init function and related database operations, enhancing error handling and consistency across file interactions. Updated tests to reflect asynchronous behavior in database operations and file writing.
* Fix typo in init function declaration to ensure it returns a Promise<void> instead of Proise<void>.
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6987
* Update tests to use async/await for init function in web filesystem, ensuring consistent asynchronous behavior in database operations.
* Update VRT screenshot for payees filter test to reflect recent changes
* [AI] Fix no-floating-promises lint error in desktop-electron
Wrapped queuedClientWinLogs.map() with Promise.all and void operator to properly handle the array of promises for executing queued logs.
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
* Refactor promise handling in global and sync event handlers
* Update VRT screenshots
Auto-generated by VRT workflow
PR: #6987
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <MatissJanis@users.noreply.github.com>
* Move redux state to react-query - account states
* Fix onbudget and offbudget displaying closed accounts
* Move redux state to react-query - payees states
* Add release notes for PR #6880
* Replace usage of logger in desktop-client with console
* Address feedback on adding default data to usePayees (#6931)
* Initial plan
* Add default data to usePayees usages using inline destructuring
Co-authored-by: joel-jeremy <20313680+joel-jeremy@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joel-jeremy <20313680+joel-jeremy@users.noreply.github.com>
* Fix imports
* Update empty payees list test
* Cleanup and simplify AccountEntity definition to fix `satisfies` syntax
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joel-jeremy <20313680+joel-jeremy@users.noreply.github.com>
* Improve category server app and react query mutation error handling
* Add release notes for PR #6958
* Fix test
* Fix throwing async test
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Do not swallow exceptions when batching messages - propagate instead
* Update error type to make 'cause' optional
Make 'cause' property optional in error type.
---------
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>
* Fix operator precedence grouping for */ and +/-
* Add release note for #6993
* Fix exponent associativity and add regression test
---------
Co-authored-by: Hadi Ayache <hadiayache@Hadis-Mac-mini.local>
* Retrofit useReports to use react-query under the hood
* Add release notes for PR #6951
* Update 6951.md
* Report mutations
* Fix react query cache not being cleared when switching budgets (#6953)
* Fix react query cache not being cleared when switching budgets
* React does not want to export function from src/index
* Release note
* Use react-query is dashboard queries and mutations
* Add release notes for PR #6957
* [autofix.ci] apply automated fixes
* Fix typecheck errors
* Coderabbit feedback
* Make error cause optional
* Rename useDashboardWidgetCopyMenu and update useDashboardWidget to accept object to prevent need to default id to empty string
---------
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>
* include category group in transaction export
* Apply suggestion from @yzAlvin
Co-authored-by: Alvin Zhao <yzalvin@duck.com>
---------
Co-authored-by: youngcw <calebyoung94@gmail.com>
* Rename loot-core/platform/client/fetch package to connection to match the server side package name. Also to avoid confusion with the native fetch package.
* Update connection/init method to not receive any parameter to so browser and default implementation have the same signature
* Add release notes for PR #6943
* Fix names
* Fix imports
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Fix send not returning error when catchErrors option is enabled and an unknown method error is encountered
* Add release notes for PR #6942
* Fix send to properly propagate errors from the server
* Update release note
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>