50 Commits
Author SHA1 Message Date
d5d0b663c9 Bump @vitest/mocker from 4.1.10 to 5.0.0 in the npm_and_yarn group across 0 directory (#8923)
* Bump @vitest/mocker in the npm_and_yarn group across 0 directory



Updates `@vitest/mocker` from 4.1.10 to 5.0.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.0/packages/mocker)

---
updated-dependencies:
- dependency-name: "@vitest/mocker"
  dependency-version: 5.0.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>

* [AI] Fix typecheck failures under vitest 5

Vitest 5 changed two things that broke the typecheck/build jobs:

- `vi.fn()`'s inferred type now references `Procedure` from an internal
  vitest chunk that cannot be named from outside, so the hoisted mocks in
  `cloud-storage.test.ts` tripped TS2883. Annotate them as `Mock`.
- The `expect` package was inlined and the global `jest.Matchers`
  declaration dropped, so `@testing-library/jest-dom`'s default entry no
  longer augments vitest's `Assertion`. Use the `/vitest` entry point
  instead.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Bvwt76cXUoLwfHiy1jhToc

* [AI] Bump @actual-app/crdt to 3.1.3

The dependency bump touches packages/crdt/package.json, so the CRDT
version bump check requires a new version. Matches how the previous
dependabot group bump (#8921) was handled.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Bvwt76cXUoLwfHiy1jhToc

* [AI] Add release note for the vitest bump

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Bvwt76cXUoLwfHiy1jhToc

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: MatissJanis <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>
2026-09-12 18:38:38 +00:00
ff1b6045a1 ⬆️ mid month dependency update (#8533)
* @types/node (^22.19.21 → ^22.20.1)

* eslint (^10.5.0 → ^10.7.0)

* eslint-plugin-perfectionist (^5.9.0 → ^5.10.0)

* knip (^6.17.1 → ^6.27.0)

* lage (^2.15.13 → ^2.15.17)

* vitest (^4.1.8 → ^4.1.10)

* better-sqlite3 (^12.10.0 → ^12.11.1)

* vite (^8.0.16 → ^8.1.5)

* react-aria-components (^1.18.0 → ^1.19.0)

* @storybook/addon-a11y (^10.4.4 → ^10.5.2)

* @storybook/addon-docs (^10.4.4 → ^10.5.2)

* @storybook/react-vite (^10.4.4 → ^10.5.2)

* @vitejs/plugin-react (^6.0.2 → ^6.0.3)

* eslint-plugin-storybook (^10.4.4 → ^10.5.2)

* storybook (^10.4.4 → ^10.5.2)

* @bufbuild/protobuf (^2.12.0 → ^2.12.1)

* @bufbuild/protoc-gen-es (^2.12.0 → ^2.12.1)

* @codemirror/language (^6.12.3 → ^6.12.4)

* @uiw/react-codemirror (^4.25.10 → ^4.25.11)

* csv-stringify (^6.7.0 → ^6.8.1)

* es-toolkit (^1.47.1 → ^1.49.0)

* i18next (^26.3.1 → ^26.3.6)

* lru-cache (^11.5.1 → ^11.5.2)

* react-aria (^3.49.0 → ^3.50.0)

* react-hotkeys-hook (^5.3.2 → ^5.3.3)

* react-i18next (^17.0.8 → ^17.0.10)

* rolldown (^1.1.1 → ^1.2.0)

* @docusaurus/core (^3.10.1 → ^3.10.2)

* @docusaurus/plugin-content-docs (^3.10.1 → ^3.10.2)

* @docusaurus/plugin-ideal-image (^3.10.1 → ^3.10.2)

* @docusaurus/preset-classic (^3.10.1 → ^3.10.2)

* @docusaurus/theme-common (^3.10.1 → ^3.10.2)

* @docusaurus/theme-mermaid (^3.10.1 → ^3.10.2)

* unist-util-visit-parents (^6.0.0 → ^6.0.2)

* @docusaurus/module-type-aliases (^3.10.1 → ^3.10.2)

* @docusaurus/types (^3.10.1 → ^3.10.2)

* @oxlint/plugins (^1.69.0 → ^1.74.0)

* @types/estree (^1.0.8 → ^1.0.9)

* fast-check (^4.8.0 → ^4.9.0)

* @capacitor/android (^8.0.0 → ^8.4.2)

* @capacitor/core (^8.0.0 → ^8.4.2)

* @capacitor/ios (^8.0.0 → ^8.4.2)

* @capacitor/splash-screen (^8.0.1 → ^8.0.2)

* @capgo/capacitor-updater (^8.50.1 → ^8.51.2)

* @capacitor/cli (^8.0.0 → ^8.4.2)

* @capgo/cli (^8.22.0 → ^8.28.2)

* express-rate-limit (^8.5.2 → ^8.6.0)

* @types/supertest (^7.2.0 → ^7.2.1)

* http-proxy-middleware (^4.1.1 → ^4.2.0)

* oxlint (^1.69.0 → ^1.74.0) & oxlint-tsgolint (^0.23.0 → ^0.25.0)

* @codemirror/state (^6.6.0 → ^6.7.1) & @codemirror/view (^6.43.1 → ^6.43.6)

* @tanstack/react-query (^5.101.0 → ^5.101.2)

* recharts (^3.8.1 → ^3.9.2)

* note

* oxfmt (^0.44.0 → ^0.59.0)

* @babel/core (^7.29.7 → ^8.0.1)

* downshift (9.3.6 → 9.4.0)

* react-router (7.17.0 → 8.2.0)

* csv-parse (^6.2.1 → ^7.0.1)

* pluggy-sdk (^0.85.3 → ^0.89.0)

* yarn (4.13.0 -> 4.17.1)

* yarn dedupe

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #8533

* crdt version bump

* [autofix.ci] apply automated fixes

* Update packageManager version to [email protected].1

---------

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>
Co-authored-by: Matiss Janis Aboltins <[email protected]>
2026-07-21 20:24:31 +00:00
Matiss Janis AboltinsandClaude Opus 4.8 c4acaa2951 [AI] Add knip to detect unused files, dependencies and exports (#8309)
Adds the knip tool with a monorepo-tuned config (knip.json) and a CI gate
in check.yml, plus the dead-code and dependency cleanup it surfaced. The
unused-export/type/duplicate rules are disabled so exporting an unused
symbol is allowed.

Co-authored-by: Claude Opus 4.8 <[email protected]>
2026-06-22 22:11:48 +00:00
Matt Fiddamanandautofix-ci[bot] c4775bf288 wire tests up to depot test results analysis (#8262)
* emit junit files

* wire up the actions

* note

* [autofix.ci] apply automated fixes

* fix overly broad error

* scope to master runs

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-21 07:50:55 +00:00
Matt Fiddamanandautofix-ci[bot] fbdad57ff0 ⬆️ mid month dependency updates (#8235)
* @monorepo-utils/workspaces-to-typescript-project-references (^2.10.3 → ^2.11.0)

* @types/node (^22.19.17 → ^22.19.21)

* eslint (^10.2.0 → ^10.5.0)

* eslint-plugin-perfectionist (^5.8.0 → ^5.9.0)

* lage (^2.15.5 → ^2.15.13)

* typescript (^6.0.2 → ^6.0.3)

* vitest (^4.1.2 → ^4.1.8)

* better-sqlite3 (^12.8.0 → ^12.10.0)

* vite (^8.0.5 → ^8.0.16)

* cosmiconfig (^9.0.1 → ^9.0.2)

* react-aria-components (^1.16.0 → ^1.18.0)

* @chromatic-com/storybook (^5.1.1 → ^5.2.1)

* @storybook/addon-a11y (^10.3.4 → ^10.4.4)

* @storybook/addon-docs (^10.3.4 → ^10.4.4)

* @storybook/react-vite (^10.3.4 → ^10.4.4)

* @types/react (^19.2.14 → ^19.2.17)

* @vitejs/plugin-react (^6.0.1 → ^6.0.2)

* eslint-plugin-storybook (^10.3.4 → ^10.4.4)

* storybook (^10.3.4 → ^10.4.4)

* @bufbuild/protobuf (^2.11.0 → ^2.12.0)

* @bufbuild/protoc-gen-es (^2.11.0 → ^2.12.0)

* @babel/core (^7.29.0 → ^7.29.7)

* @codemirror/autocomplete (^6.20.1 → ^6.20.3)

* @react-aria/interactions (^3.27.1 → ^3.28.1)

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

* @tanstack/react-query (^5.96.2 → ^5.101.0)

* @uiw/react-codemirror (^4.25.9 → ^4.25.10)

* date-fns (^4.1.0 → ^4.4.0)

* hyperformula (^3.2.0 → ^3.3.0)

* lru-cache (^11.2.7 → ^11.5.1)

* react-aria (^3.47.0 → ^3.49.0)

* react-error-boundary (^6.1.1 → ^6.1.2)

* react-hotkeys-hook (^5.2.4 → ^5.3.2)

* react-redux (^9.2.0 → ^9.3.0)

* react-spring (^10.0.3 → ^10.0.4)

* rolldown (^1.0.0-rc.13 → ^1.1.1)

* sass (^1.99.0 → ^1.101.0)

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

* @docusaurus/core (^3.10.0 → ^3.10.1)

* @docusaurus/plugin-content-docs (^3.10.0 → ^3.10.1)

* @docusaurus/plugin-ideal-image (^3.10.0 → ^3.10.1)

* @docusaurus/preset-classic (^3.10.0 → ^3.10.1)

* @docusaurus/theme-common (^3.10.0 → ^3.10.1)

* @docusaurus/theme-mermaid (^3.10.0 → ^3.10.1)

* @easyops-cn/docusaurus-search-local (^0.55.1 → ^0.55.2)

* @docusaurus/module-type-aliases (^3.10.0 → ^3.10.1)

* @oxlint/plugins (^1.60.0 → ^1.69.0)

* ua-parser-js (^2.0.9 → ^2.0.10)

* fast-check (^4.6.0 → ^4.8.0)

* jest-diff (^30.3.0 → ^30.4.1)

* workbox-precaching (^7.4.0 → ^7.4.1)

* ipaddr.js (^2.3.0 → ^2.4.0)

* jws (^3.2.2 → ^3.2.3)

* http-proxy-middleware (^3.0.5 → ^3.0.6)

* oxlint (^1.59.0 → ^1.69.0)

* @codemirror/view (^6.41.0 → ^6.43.1)

* yarn dedupe

* nano-staged (^0.8.0 → ^1.0.2)

* commander (^14.0.3 → ^15.0.0)

* react (>=19.2 → 19.2.7)

* react-dom (>=19.2 → 19.2.7)

* @rolldown/plugin-babel (~0.1.8 → ~0.2.3)

* downshift (9.3.2 → 9.3.6)

* i18next (^25.10.10 → ^26.3.1)

* react-i18next (^16.6.6 → ^17.0.8)

* react-router (7.15.0 → 7.17.0)

* vite-plugin-node-polyfills (^0.27.0 → ^0.28.0)

* jws (^3.2.3 → ^4.0.1)

* oxlint-tsgolint (^0.20.0 → ^0.23.0)

* jsdom (^27.4.0 → ^29.1.1)

* note

* [autofix.ci] apply automated fixes

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

* crdt regenerate and version bump

* fix test

* yarn dedupe

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-16 09:21:37 +00:00
Matiss Janis AboltinsandClaude Opus 4.8 328417f8de [AI] Consolidate agent tooling and simplify developer guidance (#8089)
* [AI] Replace mechanical agent rules with shared agent hooks + nano-staged

Move the mechanical "remember to run X" rules out of AGENTS.md and the
agent guidance docs into deterministic, cross-agent hooks, and migrate
the pre-commit runner from lint-staged to nano-staged.

- Add shared hook scripts in scripts/agent-hooks/ (git-guard,
  format-edited-file, no-strict-ignore-new-file, prefer-one-component,
  check-on-stop, common helpers) wired for Claude (.claude/settings.json),
  Codex (.codex/config.toml), and Cursor (.cursor/hooks.json + adapters).
- Enforce "avoid enum" via a new actual/no-enum lint rule, grandfathering
  the two existing declarations in .oxlintrc.json overrides.
- Migrate lint-staged -> nano-staged (.nano-staged.json, .husky/pre-commit,
  package.json).
- Trim AGENTS.md, .github/agents/pr-and-commit-rules.md, the Cursor rule,
  and the committing skill down to the rules that aren't auto-enforced.
- Add release note 8089.md.

* [AI] Align PR-title wording in AGENTS.md with canonical rules

* [AI] Fix check-on-stop hook on bash 3.2 and TSV column collapse

The Stop hook silently no-op'd in two ways:

- `declare -A` isn't supported on stock macOS bash 3.2, and the
  slash/hyphen path subscript aborted under `set -u`. Dedupe via a
  space-padded string match instead.
- jq emitted an empty middle TSV field for a package with test but no
  typecheck; tab is IFS-whitespace so `read` collapsed it and shifted the
  columns (eslint-plugin-actual then ran neither). Emit non-empty
  sentinels (-, yes/no) so no field can collapse.

Co-Authored-By: Claude Opus 4.8 <[email protected]>

---------

Co-authored-by: Claude <[email protected]>
2026-06-08 20:54:54 +00:00
3c77b3d0d5 [AI] Add enforce-boundaries ESLint rule for architectural boundaries (#7467)
* [AI] Add enforce-boundaries ESLint rule for architectural boundaries

Disallow tsconfig compilerOptions.paths, Vite resolve.alias, and
backtracked imports (../../) to enforce the use of package.json
subpath imports (#path) as the canonical aliasing mechanism.

The rule is enabled globally as an error without autofixes.

https://claude.ai/code/session_01T7VCnq5Kid7co9vBDPHWmR

* [AI] Fix enforce-boundaries lint violations

Replace backtracked imports (../../) with subpath imports (#path):
- migrations.ts: use #migrations/* mapping
- Formula.tsx: use #components/* mapping
- TransactionsTable.test.tsx: use #mocks/* mapping

Suppress unavoidable violations with oxlint-disable comments:
- preview.tsx: cross-package theme imports (pre-existing TODO)
- vite.desktop.config.ts: handlebars resolve.alias (types require root entry)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* [AI] Clean up enforce-boundaries rule: remove redundant comments, optimize Property visitor, add edge-case tests

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* Add release notes for PR #7467

* Update category for release notes

Changed category from Enhancements to Maintenance.

* [AI] Fix JSON syntax error after merge

Co-authored-by: Matiss Janis Aboltins <[email protected]>

* [AI] Merge master and fix lint errors in enforce-boundaries rule

Co-authored-by: Matiss Janis Aboltins <[email protected]>

---------

Co-authored-by: Claude <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Matiss Janis Aboltins <[email protected]>
2026-04-21 21:18:42 +00:00
Matt Fiddaman 0e5e641aae ⬆️ eslint v10 & migrate eslint plugins to oxc performant API (#7508)
* eslint (^9.39.3 -> ^10.2.0)

* migrate plugins to oxc alternative API

* note
2026-04-15 17:57:04 +00:00
Matt Fiddaman 8c47374b9d ⬆️ mid-month dependency bump (#7506)
* typescript (^5.9.3 -> ^6.0.2)

* eslint-plugin-perfectionist (^5.6.0 → ^5.8.0)

* @types/node (^22.19.15 → ^22.19.17)

* @typescript/native-preview (^7.0.0-dev.20260309.1 → ^7.0.0-dev.20260404.1)

* eslint (^9.39.3 → ^9.39.4)

* lage (^2.14.19 → ^2.15.5)

* lint-staged (^16.3.2 → ^16.4.0)

* minimatch (^10.2.4 → ^10.2.5)

* vitest (^4.1.0 → ^4.1.2)

* better-sqlite3 (^12.6.2 → ^12.8.0)

* commander (^13.0.0 → ^13.1.0)

* cosmiconfig (^9.0.0 → ^9.0.1)

* @chromatic-com/storybook (^5.0.1 → ^5.1.1)

* @storybook/addon-a11y (^10.2.16 → ^10.3.4)

* @storybook/addon-docs (^10.2.16 → ^10.3.4)

* @storybook/react-vite (^10.2.16 → ^10.3.4)

* eslint-plugin-storybook (^10.2.16 → ^10.3.4)

* storybook (^10.2.16 → ^10.3.4)

* @codemirror/language (^6.12.2 → ^6.12.3)

* @react-aria/interactions (^3.27.0 → ^3.27.1)

* @swc/core (^1.15.18 → ^1.15.24)

* @swc/helpers (^0.5.19 → ^0.5.21)

* @tanstack/react-query (^5.90.21 → ^5.96.2)

* @uiw/react-codemirror (^4.25.7 → ^4.25.9)

* @vitejs/plugin-basic-ssl (^2.2.0 → ^2.3.0)

* i18next (^25.8.14 → ^25.10.10)

* lru-cache (^11.2.6 → ^11.2.7)

* react-grid-layout (^2.2.2 → ^2.2.3)

* react-i18next (^16.5.6 → ^16.6.6)

* rolldown (^1.0.0-rc.12 → ^1.0.0-rc.13)

* sass (^1.97.3 → ^1.99.0)

* adm-zip (^0.5.16 → ^0.5.17)

* csv-parse (^6.1.0 → ^6.2.1)

* csv-stringify (^6.6.0 → ^6.7.0)

* jest-diff (^30.2.0 → ^30.3.0)

* express-rate-limit (^8.3.0 → ^8.3.2)

* upgrade yarn to 4.13.0

* react-aria-components (^1.15.1 → ^1.16.0)

* @vitejs/plugin-react (^6.0.0 → ^6.0.1)

* @codemirror/state (^6.5.4 → ^6.6.0), @codemirror/view (^6.38.7 → ^6.41.0)

* react-aria (^3.46.0 → ^3.47.0)

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

* recharts (^3.7.0 → ^3.8.1)

* fast-check (4.5.3 → ^4.6.0)

* rollup-plugin-visualizer (^6.0.11 → ^7.0.1)

* commander (^13.1.0 → ^14.0.3)

* note

* coderabbit feedback, and a test for good measure

* typescript (^5.9.3 -> ^6.0.2)

* @playwright/test (1.58.2 -> 1.59.1)

* yarn dedupe
2026-04-15 17:05:26 +00:00
Matiss Janis AboltinsandClaude Opus 4.6 78b1fc2713 [AI] Add no-extraneous-dependencies lint rule (#7480)
* [AI] Add no-extraneous-dependencies lint rule to prevent transitive dependency usage

Closes #7479. Adds a custom ESLint rule that flags imports of packages not
explicitly listed in the workspace's dependencies or devDependencies. Also
fixes all existing violations by adding missing deps and removes unused
deps (@reduxjs/toolkit, @rschedule/json-tools) from loot-core.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* [AI] Fix builtin subpath detection and improve cache in no-extraneous-dependencies

Fix false positives for Node.js builtin subpaths (fs/promises, path/posix)
by checking the package name portion against builtins. Also cache all
visited directories during walk-up, not just the starting directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* Release notes

---------

Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
2026-04-12 16:11:26 +00:00
65b154151f [AI] Enable subpath imports across all packages (#7462)
* [AI] Enable subpath imports across all packages

Generalize the prefer-subpath-imports ESLint rule to work with any
package (not just loot-core) and enable it globally. Add subpath import
mappings to cli, component-library, and sync-server package.json files.
Auto-fix all backtracked relative imports to use #-prefixed subpath
imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* [AI] Add release notes for #7462

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* [AI] Fix mock specifiers in accounts.test.ts to use aliased imports

Co-authored-by: Matiss Janis Aboltins <[email protected]>

* [AI] Fix mock specifiers in query.test.ts to use aliased imports

Co-authored-by: Matiss Janis Aboltins <[email protected]>

* [AI] Fix ESLint rule to properly validate src/ directory paths

Co-authored-by: Matiss Janis Aboltins <[email protected]>

* [AI] Add publishConfig.imports for sync-server to remap aliases to build directory

Co-authored-by: Matiss Janis Aboltins <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Matiss Janis Aboltins <[email protected]>
2026-04-11 08:56:49 +00:00
f364d5a9d8 [AI] Add subpath import wildcard patterns to loot-core (#7429)
* [AI] Add subpath import wildcard patterns and explicit directory entries to loot-core

Extend the package.json imports field with prefix-specific wildcard patterns
(#server/*, #shared/*, #types/*, #mocks/*, #platform/*) and explicit entries
for directory imports (#server/db, #server/sync, etc.) to support the ongoing
migration from relative imports to subpath imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

* [AI] Add release notes for #7429

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Matiss Janis Aboltins <[email protected]>
2026-04-09 08:02:25 +00:00
Matt Fiddaman b03080b246 trim down some unused/unnecessary dependencies (#7350)
* fix github actions inconsistencies

* fix pinning of transitive deps in eslint-plugin

* drop use of node-fetch in api

* drop md5 dependency in favour of node:crypto

* drop slash

* drop unused top level packages

* add note about node-polyfills warning

* remove unused deps from desktop-client

* drop pegjs types

* note

* drop node-jq
2026-04-05 18:12:51 +01:00
Julian Dominguez-Schatzandautofix-ci[bot] a4eb17eff2 Upgrade to Vite 8 (#7184)
* Upgrade to Vite 8

* Add release notes

* PR feedback

* [autofix.ci] apply automated fixes

* PR feedback

* fix: inject process.env

* Restore deleted release note

* Clean up and typecheck

* Fix dev server

* Fix type error

* Fix tests

* PR feedback

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-15 23:16:39 +00:00
0472211925 [AI] lint: await-thenable, no-floating-promises (#6987)
* [AI] Desktop client, E2E, loot-core, sync-server and tooling updates

Co-authored-by: Cursor <[email protected]>

* 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 <[email protected]>

* Refactor promise handling in global and sync event handlers

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6987

---------

Co-authored-by: Cursor <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matiss Janis Aboltins <[email protected]>
2026-02-19 14:22:05 +00:00
Matt Fiddaman 5179ac7c2d ⬆️ mid month dependency bump (#7013)
* baseline-browser-mapping (^2.9.14 → ^2.9.19)

* minimatch (^10.1.1 → ^10.1.2)

* lage (^2.14.15 → ^2.14.17)

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

* @storybook/addon-a11y (^10.2.0 → ^10.2.7)

* p-limit (^7.2.0 → ^7.3.0)

* better-sqlite3 (^12.5.0 → ^12.6.2)

* vitest (^4.0.16 → ^4.0.18)

* @storybook/addon-docs (^10.2.0 → ^10.2.7)

* @storybook/react-vite (^10.2.0 → ^10.2.7)

* eslint-plugin-storybook (^10.2.0 → ^10.2.7)

* storybook (^10.2.0 → ^10.2.7)

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

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

* @tanstack/react-query (^5.90.19 → ^5.90.20)

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

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

* i18next (^25.7.4 → ^25.8.4)

* react-aria (^3.45.0 → ^3.46.0)

* react-hotkeys-hook (^5.2.1 → ^5.2.4)

* react-i18next (^16.5.1 → ^16.5.4)

* sass (^1.97.2 → ^1.97.3)

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

* react (^19.2.3 → ^19.2.4)

* react-dom (^19.2.3 → ^19.2.4)

* component lib peer deps

* eslint-vitest-rule-tester (^3.0.1 → ^3.1.0)

* lru-cache (^11.2.4 → ^11.2.5)

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

* cors (^2.8.5 → ^2.8.6)

* @babel/core (^7.28.5 → ^7.29.0)

* @types/node (^22.19.3 → ^22.19.10)

* react (mixed → 19.2.4)

* @testing-library/react (16.3.0 → 16.3.2)

* react-router (7.12.0 → 7.13.0)

* vite-plugin-node-polyfills (^0.24.0 → ^0.25.0)

* pluggy-sdk (^0.79.0 → ^0.83.0)

* note
2026-02-18 22:09:28 +00:00
Matt Fiddamanandautofix-ci[bot] 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
Matiss Janis Aboltinsandgithub-actions[bot] 0c3a515e29 Update linting rules and replace @ts-ignore with @ts-expect-error (#6636)
* Update linting rules and replace @ts-ignore with @ts-expect-error

* Add release notes for PR #6636

* Fix TypeScript linting issue by adding @ts-ignore for electron types in server start message

* Change category to Maintenance and update linting rules

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-13 21:53:14 +00:00
Matiss Janis Aboltinsandgithub-actions[bot] 9e7a4cde36 Remove ESLint and complete migration to oxlint (#6584)
* Remove ESLint and migrate fully to oxlint

* Add release notes for PR #6584

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-06 23:19:03 +00:00
Matiss Janis Aboltinsandgithub-actions[bot] bf505c2bd5 Upgrade oxlint and oxfmt dependencies (#6560)
* Update oxlint and oxfmt versions, add suppressions for warnings

* Add release notes for PR #6560

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-05 22:59:08 +00:00
Matiss Janis Aboltins f1faf45659 lint: move last remaining native eslint rules to oxlint (create new alternatives) (#6468)
* 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.
2026-01-05 09:00:44 +00:00
Matt Fiddaman 47aef8ca51 expand logger to cover more of loot-core (#6503)
* expand lint rule

* note

* fix tests

* feedback
2025-12-30 22:58:28 +00:00
Julian Dominguez-Schatz 65da89efeb Add configuration to use built-in test explorer in VS Code (#6505)
* Add configuration files to make tests runnable in VS Code

* Add default configs/fix tests when run from VS Code

* Fix typo

* Add release notes
2025-12-29 22:40:20 +00:00
Connor Shea 3004b6fa6e chore: Add a meta.name to the eslint plugin. (#6463)
* Add a name to the eslint plugin.

* Add release note.

* Also update the no-restricted-imports patterns in .oxlintrc.json.

The glob library is different from what ESLint uses, so the globs need
a bit of adjustment.
2025-12-21 08:33:22 +00:00
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 <[email protected]>

* 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 <[email protected]>
2025-12-20 19:51:16 +00:00
Matiss Janis Aboltins 094da46fb0 lint: move some more rules to oxlint/oxfmt and upgrade linter versions (#6398) 2025-12-13 22:41:21 +00:00
1ce2280a49 ⬆️ mid month dependency bump (#6159)
* bump various dependencies

* note

* fix types

* [autofix.ci] apply automated fixes

* Update VRT screenshots

Auto-generated by VRT workflow

PR: #6159

---------

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-11-16 17:04:34 +00:00
Matt Fiddaman f8b793069d ⬆️ vitest v4 (#6060)
* vitest 4

* config changes

* remove unused v8 coverage dependency

* note
2025-11-05 23:55:47 +00:00
Matt Fiddaman 80aee4ee71 ⬆️ bump dependencies before 25.11 (#5983)
* bump dependencies

* note

* recharts differences
2025-10-22 17:28:11 +01:00
Matiss Janis Aboltins 57d01467ca Refactor test execution to use lage task runner (#5964) 2025-10-21 08:58:26 +02:00
Matt Fiddaman 3b0db2bed7 ♻️ bump various build dependencies (#5864)
* vite 7.1.9

* typescript 5.9.3

* @types/node 22.18.8

* linting

* emscripten types

* note
2025-10-06 17:32:42 +01:00
Matt Fiddaman 71f849d1e1 ♻️ bump eslint-plugin-actual dependencies (#5818)
* eslint 9.27.0 -> 9.36.0

* eslint-plugin-eslint-plugin 6.4.0 -> 7.0.0

* eslint-vitest-rule-tester 2.2.0 -> 2.2.2

* note

* misc eslint deps
2025-10-05 14:22:42 +01:00
Matt Fiddaman 0ea8bc1fb4 expand eslint untranslated string rule (#5827)
* expand translation rule and abstract import fix implementation

* fixes

* note

* coderabbit
2025-10-05 14:22:14 +01:00
Matt Fiddaman 2c9a66cec6 API quiet mode (#5762)
* initial implementation of api quiet mode

* note

* lint rule

* rollout logger to loot-core

* add group methods

* windows paths

* make fixer more robust

* appease linter

* add debug

* change option name quiet -> verbose
2025-09-22 12:54:08 +01: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
Matt Fiddaman 68d10f6b29 ⬆️ bump vitest from 3.1.4 -> 3.2.4 (#5195)
* bump vitest from 3.1.4 -> 3.2.4

* note
2025-06-19 15:30:25 -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
Matt Fiddaman f7a45d2081 ⬆️ bump dependency patch versions (#5015)
* bump dependency patch versions

* note

* remove unused ts-expect-error directives

* downgrade adm-zip again
2025-05-18 16:50:32 -04:00
Julian Dominguez-Schatz 5d59ecd72c Move remaining non-loot-core packages to latest vitest (#4856)
* Move remaining non-loot-core packages to vitest

* Add release notes
2025-04-20 15:17:07 -04:00
Matt Fiddaman ad1df689d7 bump various dependencies (#4656) 2025-03-20 13:27:17 -04:00
Matiss Janis Aboltins ed4ef5b30e ♻️ solve most peer dependency issues reported on install (#4613)
* ♻️ solve most peer dependency issues reported on install

* Release notes

* Patch unit tests
2025-03-12 17:13:35 +00:00
dependabot[bot]andMatt Fiddaman 18423a3167 Bump vitest from 1.6.0 to 1.6.1 (#4410)
* Bump vitest from 1.6.0 to 1.6.1

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v1.6.1/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>

* note

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matt Fiddaman <[email protected]>
2025-02-20 21:56:37 +00:00
Matt Fiddaman bd77dfd111 🔧 Migrate to ESLint v9 (#3993) 2025-01-07 18:51:59 +00:00
Matiss Janis Aboltins f3660c166f ⬆️ upgrade typescript, eslint, prettier (#3289) 2024-08-20 17:18:54 +01:00
Joel Jeremy Marquez 029e2f09bf Update desktop client package versions (#2270)
* Upgrade desktop-client depenencies

* Release notes

* yarn dedupe

* yarn dedupe

* Fix typecheck error

* Update sass

* Update useSelectors
2024-02-06 17:43:09 -08:00
Joel Jeremy Marquez 6fbf0fdc10 [ESLint] Enable prefer-const project-wide (#2113)
* Enable prefer-const project-wide

* Release notes

* Fix remaining lint errors
2023-12-22 11:42:40 -08:00
Jed Fox 1031bbbce7 Add a few more ESLint rules (#1355) 2023-07-17 17:32:22 -04:00
Jed Fox ed50e2b392 Run ESLint at the top level once (#1202)
This significantly speeds up `yarn lint` for me. It also ensures we’re
listing all source files in the project, including the `.eslintrc` files
and any other files that may be present.
2023-06-26 15:32:56 -04:00
Jed Fox 5d559afe30 Enable linting for all packages (#861)
<!-- Thank you for submitting a pull request! Make sure to follow the
instructions to write release notes for your PR — it should only take a
minute or two:
https://github.com/actualbudget/docs#writing-good-release-notes -->
2023-04-06 15:49:43 -04:00
Jed Fox 3cb18683c6 nit: use curly apostrophes throughout the UI (#791) 2023-03-21 13:48:31 -04:00