51 Commits

Author SHA1 Message Date
Matiss Janis Aboltins
387c8fce16 [AI] Enable TypeScript composite project references across monorepo (#7062)
* [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>
2026-03-04 20:57:06 +00:00
Matiss Janis Aboltins
0472211925 [AI] lint: await-thenable, no-floating-promises (#6987)
* [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>
2026-02-19 14:22:05 +00:00
Matt Fiddaman
a38104244a ⬆️ @playwright/test (1.57.0 → 1.58.2) (#7021)
* @playwright/test (1.57.0 → 1.58.2)

* note

* disable moving nav bar animations

* vrt
2026-02-19 00:19:54 +00:00
Julian Dominguez-Schatz
e79d91b000 Change 'Bugfix' -> 'Bugfixes' in release notes (#6707)
* Change 'Bugfix' -> 'Bugfixes'

* Add release notes for PR #6707

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 22:03:39 +00:00
Matt Fiddaman
826ad86ada ⬆️ mid month dependency bump (#6656)
* @types/node (^22.19.1 → ^22.19.3)

* oxlint (^1.37.0 → ^1.38.0)

* better-sqlite3 (^12.4.1 → ^12.5.0)

* vitest (^4.0.9 → ^4.0.16)

* react-aria-components (^1.13.0 → ^1.14.0)

* @codemirror/autocomplete (^6.19.1 → ^6.20.0)

* @codemirror/language (^6.11.3 → ^6.12.1)

* @codemirror/state (^6.5.2 → ^6.5.3)

* @swc/core (^1.15.2 → ^1.15.8)

* @uiw/react-codemirror (^4.25.3 → ^4.25.4)

* @vitejs/plugin-basic-ssl (^2.1.0 → ^2.1.3)

* @vitejs/plugin-react (^5.1.1 → ^5.1.2)

* hyperformula (^3.1.0 → ^3.1.1)

* i18next (^25.6.2 → ^25.7.4)

* jsdom (^27.2.0 → ^27.4.0)

* react-aria (^3.44.0 → ^3.45.0)

* @swc/helpers (^0.5.17 → ^0.5.18)

* react-error-boundary (^6.0.0 → ^6.0.3)

* react-grid-layout (^1.5.2 → ^1.5.3)

* react-i18next (^16.3.3 → ^16.5.1)

* react-simple-pull-to-refresh (^1.3.3 → ^1.3.4)

* sass (^1.94.0 → ^1.97.2)

* vite (^7.2.2 → ^7.3.1)

* vite-plugin-pwa (^1.1.0 → ^1.2.0)

* fs-extra (^11.3.2 → ^11.3.3)

* @easyops-cn/docusaurus-search-local (^0.52.1 → ^0.52.2)

* react (^19.2.0 → ^19.2.3)

* react-dom (^19.2.0 → ^19.2.3)

* @reduxjs/toolkit (^2.10.1 → ^2.11.2)

* lru-cache (^11.2.2 → ^11.2.4)

* ua-parser-js (^2.0.6 → ^2.0.7)

* workbox-precaching (^7.3.0 → ^7.4.0)

* winston (^3.18.3 → ^3.19.0)

* supertest (^7.1.4 → ^7.2.2)

* playwright (^1.56.0 → ^1.57.0)

* stragglers

* note

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-14 20:17:55 +00:00
Copilot
bcf53007ca Fix missing final newline in generated release notes (#6641)
* Initial plan

* Add release notes for PR #6641

* Fix release-note-generator to add final newline to generated files

Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: MatissJanis <886567+MatissJanis@users.noreply.github.com>
2026-01-13 21:13:50 +00:00
Matiss Janis Aboltins
d9a1260c91 lint: actual/typography disallow using curly quotes (#6454)
* 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>
2025-12-20 19:51:16 +00:00
Matiss Janis Aboltins
05735eb55d Lint: simplify ESLint config and add oxlint configuration (#6443)
* 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>
2025-12-18 23:53:46 +00:00
Michael Clark
3fafb898d0 🧪 Fix flaky VRT test and prevent downloading translations where not needed (#6429)
* 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>
2025-12-16 23:03:09 +00:00
Michael Clark
5b9bcc94f6 ⬆️ Upgrade electron-builder (#5857)
* 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
2025-10-08 22:20:29 +01:00
Matt Fiddaman
2e439aacba ⬆️ bump various dependencies (#5886)
* bump various dependencies

* note

* update playwright images

* globals 16.4.0

* react-router 7.9.4
2025-10-08 21:01:27 +01:00
lelemm
b034d5039f Frontend plugins Support [2/10]: Plugin service worker (#5784)
* Plugin service worker
2025-10-07 12:14:32 -03:00
Matt Fiddaman
499f24f7fd ♻️ bump non-react deps in desktop-client (#5858)
* patch/minor deps

* @vitejs/plugin-basic-ssl 2.1.0

* remove chokidar

* cross-env 10.1.0

* downshift 9.0.10

* remove focus-visible

* jsdom 27.0.0

* rollup-plugin-visualizer 6.0.4

* note
2025-10-06 16:28:04 +01:00
Joel Jeremy Marquez
8ae070ab12 React Compiler (#5562)
* Highlight first suggestion when searching instead of the split option

* Fix error

* Try out react compiler

* Fix typecheck errors

* Increase --max-old-space-size

* Increate --max-old-space-size in package-browser

* Update config and versions

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* Update versions

* Fix typecheck errors

* Revert some changes

* Implement react compiler to take advantage of some performance improvements

* Fixes

* Remove unused packages

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-19 14:28:16 -07:00
Matt Fiddaman
2d95fe6d03 add some basic linting rules for translation consistency (#5212)
* lint rules

* trans rule

* migrate away from rulesDir config

* fixes

* prefer Trans to t()

* typechecker

* cleanup

* note

* typo

* extend regex to include punctuation

* extend fixer to handle imports

* autofixes from punctuation
2025-07-04 15:17:17 -04:00
Olivier Kamers
254059d4c8 fix: ensure correct PR number is used for release notes file (#5134) 2025-06-10 11:25:09 -04:00
Matt Fiddaman
4c15647f7f ⬆️ upgrade low risk dependencies to their newest minor version (#5025)
* vitest

* types

* eslint

* better-sqlite3

* pluggy-sdk

* globals

* google-protobuf

* fast-check

* chokidar

* i18next

* openid-client

* playwright

* lru-cache

* memfs

* redacted font

* sass

* @vitejs/plugin-basic-ssl

* re-resizable

* rollup-plugin-visualizer

* note

* update vrt screenshots

* vrt
2025-05-21 16:56:07 -04:00
Alec Bakholdin
3cab9a374b 🐛 fixed scrollbar being impossible to grab (#4923)
* adjusted scrollbar width

* added icons to release note generator

* release notes
2025-05-11 13:23:29 -04:00
Roger Goldfinger
090345bd95 Enable Typescript in sync-server (#4887)
* 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>
2025-05-05 23:45:49 -04:00
Michael Clark
26ee3179e1 :electron: Playwright testing for electron (#4674)
* 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
2025-04-05 09:19:06 +01:00
Alec Bakholdin
d9716caf5d 🔧 Added release-notes-generator.ts under generate:release-notes (#4664) 2025-03-20 10:19:04 -04:00
Michael Clark
bdf76f6c63 :electron: Embed the sync-server (experimental) (#4526)
* sync server embedded

* cleanup

* remove comment

* remove comment

* changing settings names

* release notes

* release notes

* making dev easier (and slower)

* updating reference to webroot

* using the workspace package yo

* coderabbit
2025-03-14 22:22:17 +00:00
Matt Fiddaman
1425671d16 prevent subsequent builds from failing when fetching translations (#4485)
* bring back deleted files for subsequent builds

* note
2025-03-01 02:49:41 +00:00
Michael Clark
f5b9a5b23d Fix electron translations (#4317)
* fix electron translations
2025-02-06 18:16:17 +00:00
Julian Dominguez-Schatz
5d91d29d77 Exclude untranslated languages from builds (#4148)
* Add script to remove untranslated language JSON files

* Remove untranslated languages in CI

* Add release notes
2025-01-14 09:57:11 -05:00
Julian Dominguez-Schatz
1c6697a7ee Fix translations missing from preview deploys (#4130)
* Fix translations missing from preview deploys

* Add release notes
2025-01-11 12:31:07 -05:00
Michael Clark
1e1092e472 :electron: Separate build folders for easier switching between web and electron (#3801)
* 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
2024-11-12 18:39:49 +00:00
Koen van Staveren
88a7432975 fix: vrt:docker with git-bash (#3497)
* fix: vrt:docker with git-bash

* chore: release note
2024-09-25 20:56:32 +01:00
Michael Clark
6f3af7b609 :electron: Fix "Unknown problem opening <local actual file>" on Electron (#3220)
* 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
2024-08-12 22:50:48 +01:00
Joel Jeremy Marquez
e63fb46c8f Add run-vrt script to run vrt inside docker (#2762)
* Add run-vrt script to run vrt inside docker

* Release notes

* Update README

* Support E2E_START_URL env variable

* Update README
2024-05-16 14:51:46 -07:00
Matiss Janis Aboltins
c16f4c71c5 🐛 remove mac electron app code-signing (#2715) 2024-05-07 08:04:21 +01:00
DJ Mountney
3324dd5fa0 Fix docker start browser error (#2304)
* Fix docker start browser error

Don't launch browser when in docker
2024-02-02 17:18:27 -08:00
Matiss Janis Aboltins
7ace8c52dd 🔧 (electron) release electron app to app store (osx) (#2182) 2024-01-09 18:54:57 +00:00
Matiss Janis Aboltins
6817c45ddc ⬆️ upgrade absurd-sql and remove patch-package (#1632) 2023-09-03 17:26:01 +01:00
Shazib Hussain
59a1c38d34 Move netlify-wait-for-build into github/actions folder (#1222)
This script is only used for the github e2e tests so doesn't need to be
inside /bin
2023-06-28 17:10:10 -04:00
Matiss Janis Aboltins
dacaef6fa4 🔥 remove beta code and some unused scripts (#1189)
Just removing some unused/unnecessary scripts and `IS_BETA` env variable
+ the associated code (we don't use this in the OS version of Actual).
2023-06-25 21:47:23 +01:00
Jed Fox
c1af40ff5c Update recommended version to Node.js 18 (#1117)
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.
2023-06-10 13:12:42 -04:00
Shazib Hussain
461132b95e Fix electron app (#1003)
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>
2023-05-18 19:56:48 -04:00
Jed Fox
2762495a68 Fix end-to-end testing workflow (#758) 2023-03-14 19:33:15 -04:00
Matiss Janis Aboltins
851a25a62a 🔥 removing sentry (#448) 2023-01-14 19:35:49 +00:00
Matiss Janis Aboltins
ae7378252f 🔥 removal of react-native mobile apps (#443) 2023-01-12 18:19:38 +00:00
Tom French
9b671026a7 refactor: use yarnv3 magic for updating client 2022-08-23 12:35:54 +01:00
Tom French
da62f9b5d9 refactor: move script to update client build into electron package 2022-08-23 12:34:48 +01:00
Tom French
1a4b46cb6c feat: stop sending beta releases to jlongster.com 2022-08-23 12:34:48 +01:00
Tom French
3e9cfece83 chore: update package scripts to take advantage of yarn v3 2022-08-22 22:35:07 -04:00
Tom French
86fbab2d2a ci: avoid attempting to get CSC_KEY_PASSWORD interactively in github actions 2022-06-29 13:24:34 -04:00
Tom French
91147285f0 ci: avoid duplicate linting in CI 2022-06-29 13:24:34 -04:00
Tom French
c97b378ccc fix: use bash over sh in package-browser 2022-06-29 10:31:58 -04:00
Tom French
908def3957 build: add a yarn clean script to desktop-electron 2022-06-29 10:04:10 -04:00
Tom French
c2e9227ea1 build: make use of new build script in bin/package 2022-06-29 10:04:10 -04:00