Commit Graph

28 Commits

Author SHA1 Message Date
Matiss Janis Aboltins
a43b6f5c47 [AI] Experimental CLI tool for Actual (#7208)
* [AI] Add @actual-app/cli package

New CLI tool wrapping the full @actual-app/api surface for interacting with
Actual Budget from the command line. Connects to a sync server and supports
all CRUD operations across accounts, budgets, categories, transactions,
payees, tags, rules, schedules, and AQL queries.

* Refactor CLI options: replace `--quiet` with `--verbose` for improved message control. Update related configurations and tests to reflect this change. Adjust build command in workflow for consistency.

* Refactor tests: streamline imports in connection and accounts test files for improved clarity and consistency. Remove dynamic imports in favor of static imports.

* Enhance package.json: Add exports configuration for module resolution and publish settings. This includes specifying types and default files for better compatibility and clarity in package usage.

* Update package.json exports configuration to support environment-specific module resolution. Added 'development' and 'default' entries for improved clarity in file usage.

* Enhance CLI functionality: Update configuration loading to support additional search places for config files. Refactor error handling in command options to improve validation and user feedback. Introduce new utility functions for parsing boolean flags and update related commands to utilize these functions. Add comprehensive tests for new utility functions to ensure reliability.

* Update CLI TypeScript configuration to include Vitest globals and streamline test imports across multiple test files for improved clarity and consistency.

* Update CLI dependencies and build workflow

- Upgrade Vite to version 8.0.0 and Vitest to version 4.1.0 in package.json.
- Add rollup-plugin-visualizer for bundle analysis.
- Modify build workflow to prepare and upload CLI bundle stats.
- Update size comparison workflow to include CLI stats.
- Remove obsolete vitest.config.ts file as its configuration is now integrated into vite.config.ts.

* Enhance size comparison workflow to include CLI build checks and artifact downloads

- Added steps to wait for CLI build success in both base and PR workflows.
- Included downloading of CLI build artifacts for comparison between base and PR branches.
- Updated failure reporting to account for CLI build status.

* Update documentation to replace "CLI tool" with "Server CLI" for consistency across multiple files. This change clarifies the distinction between the command-line interface for the Actual Budget application and the sync-server CLI tool.

* Refactor configuration to replace "budgetId" with "syncId" across CLI and documentation

* Enhance configuration validation by adding support for 'ACTUAL_ENCRYPTION_PASSWORD' and implementing a new validation function for config file content. Update documentation to clarify error output format for the CLI tool.

* Enhance configuration tests to include 'encryptionPassword' checks for CLI options and environment variables, ensuring proper priority handling in the configuration resolution process.

* Update nightly versioning script to use yarn

* Align versions

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-18 18:22:38 +00:00
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
Michael Clark
f71249f510 🎨 Storybook docs (#6770)
* start to a storybook

* release notes

* commit the release notes

* add test:web back

* adding some scripts to the main package for storybook

* styled it up a bit

* remove unneeded icon

* lint

* remove needless comment

* moving clarifying comment

* fast failing

* feedback

* removing unneeded config
2026-01-28 18:38:02 +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
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
094da46fb0 lint: move some more rules to oxlint/oxfmt and upgrade linter versions (#6398) 2025-12-13 22:41:21 +00:00
Joshua Granick
77f9403afb Apply ESLint ignore rules to Oxfmt to prevent false positives when running 'npm lint' (#6348)
* Apply ESLint excluded paths to Oxfmt

* Add release notes

* Revert "Apply ESLint excluded paths to Oxfmt"

This reverts commit 2fec839182.

* Filter additional dist directories in top-level .gitignore to exclude from oxfmt linting
2025-12-12 20:32:05 +00:00
Matiss Janis Aboltins
57d01467ca Refactor test execution to use lage task runner (#5964) 2025-10-21 08:58:26 +02: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
lelemm
b034d5039f Frontend plugins Support [2/10]: Plugin service worker (#5784)
* Plugin service worker
2025-10-07 12:14:32 -03:00
Julian Dominguez-Schatz
7b71374e79 Move remaining .d.ts files to .ts (#5208)
* Update CRDT protobuf generation to create a .ts file

* Move remaining .d.ts files to .ts

* Fix remaining type errors

* Ignore .d.ts files so we don't accidentally use them in the future

* Add release notes
2025-07-03 14:59:21 -04:00
Michael Clark
31fe766a2b 🆕 Sync server as npm package (#4798)
* sync server as npm package

* yarn lock

* workflow

* fix yml

* fix script

* named job better

* imagine trusting an ai

* pack and publish separately

* v4 instead of v3 upload

* dependencies

* identifying the right package for uplaod

* updating references

* what

* i see

* here comes the glory

* aaaand here it comes

* perms

* hmm

* try changing scope

* owner is invalid for git so have to go to npm instead

* better names on workflow

* package the api too

* updates

* rename to play better with gitignore

* yarn

* better

* dont ignore me

* yarn

* readme

* readme

* release note

* typo

* updating to read package.json from fs rather than import to support more node versions

* more ai autocomplete more problems
2025-04-15 20:51:17 +01:00
Matiss Janis Aboltins
c4b4108eca 🔧 improving typechecker and lint local performance (#4710) 2025-04-06 14:47:49 +01:00
Mahmoud Hanafy
eeeb1d3bcd Ignore user's fly.toml (#4508)
* Ignore user's fly.toml

* Add release notes
2025-03-03 14:17:42 +00:00
Tim
051c8a6ed0 remove package.tgz file (#3601) 2024-10-08 07:54:46 -07:00
Michael Clark
31eb00a155 :electron: Electron package Typescript starting point (#2880) 2024-07-03 21:28:04 +01:00
shall0pass
bfda42a2be Github action to automatically deploy a release image to Netlify (#2750)
* netlify script

* remove npm ci

* add filter

* release note

* whoops
2024-05-20 08:59:52 -05:00
Adam
57d4cc57cd [Maintenance] Organize .gitignore (#2623)
* Organize .gitignore

* Rename section in .gitignore

* Create 2623.md
2024-04-19 12:56:02 -07:00
DJ Mountney
0045d9212e Bundle loot-core types into the API (#2053)
* Bundle loot-core types into the API

So we can have loot-core be the source of truth
for some types that get passed through

- Improves downstream development with API by including types
- Use path aliases for dist vs dev tsconfigs
- Convert api index to typescript as example
- Permit ts-ignore for issues with our version of typescript

---------

Co-authored-by: Matiss Janis Aboltins <matiss@mja.lv>
2024-01-20 10:30:23 -08:00
Matiss Janis Aboltins
610c42a1ae ♻️ (crdt) moved re-used utils in actual-server to separate package (#1150)
actual-server does not need to import the full actual-app/api package.
It can import only the CRDT stuff.. so I'm extracting it into a new
package to reduce the size of actual-server and make the link between
things more transparent.
2023-06-18 20:16:50 +01:00
Alberto Gasparin
a6b6295426 Convert client to TS part 2 (#1037)
Another batch of components in `desktop-client` converted to TS
2023-05-18 07:42:53 +10:00
SudoCerb
1305335f0a Add “Show unused payees” button (#1011)
# Add ability to filter the Manage Payees screen to show orphaned payees
only.

I aimed to modify as little code as possible - we now have a button on
the Manage Payees screen that will filter the table to show orphaned
payees only.
2023-05-15 16:18:14 -04:00
Alberto Gasparin
cd00da76ef Convert commonjs to esm (#877)
This PR converts everything (aside from electron) from CommonJS to ESM.
It is needed to reduce the changes that will happen during the migration
to Typescript (as TS does not play nice with CJS).

Basically:
- rewrite `require()` to `import`
- rewrite `module.exports` to `exports`
- introduce `ts-node` to run importers so we can convert them to TS too

Lastly, sorry for this larg-ish PR, not my preference but when I tried
to reduce its scope, I would end up with mixed commons/esm that was even
more tricky to handle.
2023-04-10 20:40:40 +01:00
Filip Stybel
5bb4f4b279 Nordigen integration - account sync (#457)
* Update gitignore about .idea folder

The .idea folder is generated by IntelliJ IDEA

* Add integration with Nordigen

* Fix linter

* Use longer access to the account

* Move normalizatoin of accounts to the backend side

* Fix possibility to force remove account

* Move normalization of transactions to the backend side

* Fix Settings.js after merge

* fix enableing bank sync

* delete old Settings component

* Use camelCase for nordigen/remove-account call

* WIP refactor

* Fix auto-selecting existing accounts

* Fix unlinking accounts

* Align to backend changes for Nordigen integration

* Fix AnimatedLoading

* Code review changes

* Fix TZ date issue

* rm mobile package

* rm BankSync settings section

* rm console.log

* rm comment

* applies some alignments from code review

* applies some alignments from code review

* Add prefix for nordigen specific functionality

* Use arrow char

* Add prefix for nordigen functionalities

* Fix linter

* Display only open accounts

* Update packages/desktop-client/src/nordigen.js

Co-authored-by: Jed Fox <git@jedfox.com>

* Fix incorrect calc of TZ for endDate

* Improved error checking

* Fix throwing invalid-schema error

* Fix for syncing large batches in Safari

---------

Co-authored-by: Filip Stybel <filip.stybel@ynd.co>
Co-authored-by: Leon Ebel <24588023+ebelleon@users.noreply.github.com>
Co-authored-by: Jed Fox <git@jedfox.com>
2023-03-03 19:41:07 -05:00
Matiss Janis Aboltins
851a25a62a 🔥 removing sentry (#448) 2023-01-14 19:35:49 +00:00
Tom French
ce5ee1b877 chore: update to yarnv3 and fix missing packages preventing install 2022-08-22 22:35:07 -04:00
Tom French
2dc53fa90c chore: add log files to gitignore 2022-06-29 09:56:37 -04:00
James Long
4d9fdfc590 Initial (open-source) 2022-04-28 22:44:38 -04:00