[PR #6809] [MERGED] refactor(api): fix cyclic dependencies #56054

Closed
opened 2026-05-01 03:34:45 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/6809
Author: @MatissJanis
Created: 1/28/2026
Status: Merged
Merged: 3/12/2026
Merged by: @MatissJanis

Base: masterHead: matiss/fix-6804


📝 Commits (10+)

  • ae763af refactor(api): defineConfig vitest, api-helpers, drop vite.api build
  • 68c0b35 refactor(api): update package structure and build scripts
  • 549f269 chore(api): update dependencies and build configuration
  • 6d1cc5c fix(api): update visualizer output path in vite configuration
  • 6f9dab9 refactor(api): streamline Vite configuration and remove vitest.config.ts
  • 4ff3b35 feat(api): enhance build scripts and add file system utilities
  • 7098a5f Merge remote-tracking branch 'origin' into matiss/fix-6804
  • 0619198 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.
  • cd7663e 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.
  • 73739eb 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.

📊 Changes

21 files changed (+842 additions, -238 deletions)

View changed files

📝 package.json (+3 -3)
📝 packages/api/index.ts (+12 -22)
packages/api/injected.js (+0 -7)
📝 packages/api/methods.test.ts (+19 -0)
📝 packages/api/methods.ts (+2 -3)
📝 packages/api/package.json (+8 -10)
packages/api/scripts/inline-loot-core-types.mjs (+60 -0)
📝 packages/api/tsconfig.json (+3 -7)
packages/api/typings.ts (+2 -0)
📝 packages/api/utils.ts (+3 -5)
packages/api/vite.config.ts (+99 -0)
packages/api/vitest.config.ts (+0 -10)
packages/loot-core/bin/build-api (+0 -11)
📝 packages/loot-core/package.json (+1 -2)
📝 packages/loot-core/src/platform/server/fs/index.api.ts (+198 -2)
📝 packages/loot-core/src/platform/server/fs/index.electron.ts (+0 -3)
📝 packages/loot-core/src/server/main.ts (+0 -4)
📝 packages/loot-core/src/server/migrate/migrations.ts (+21 -7)
packages/loot-core/vite.api.config.ts (+0 -58)
upcoming-release-notes/6809.md (+6 -0)

...and 1 more files

📄 Description

image

The problem: the loot-core package depends on the API package. But for the API package to work - it must first bundle loot-core (bundled.api.js) and then consume that. 🙈

The fix: re-architected how imports between loot-core and api happen. This is a risky change, so the more people can test this locally - the better. For now I'm not cleaning up the implementation, but only looking for people to say weather this "works" or it does not.

The new implementation has clear dependencies. API imports loot-core. Loot-core does not import api.

Depends on https://github.com/actualbudget/actual/pull/7062 among a bunch of other smaller PRs.


Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 27 14.91 MB 0%
loot-core 1 5.83 MB → 5.83 MB (+453 B) +0.01%
api 1 → 3 4.44 MB → 4.82 MB (+386.62 kB) +8.50%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
27 14.91 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
static/js/index.js 9.56 MB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 12.94 kB 0%
static/js/workbox-window.prod.es5.js 5.64 kB 0%
static/js/ca.js 187.93 kB 0%
static/js/da.js 106.2 kB 0%
static/js/de.js 179.89 kB 0%
static/js/en-GB.js 7.18 kB 0%
static/js/en.js 170.86 kB 0%
static/js/es.js 174.37 kB 0%
static/js/fr.js 179.41 kB 0%
static/js/it.js 170.98 kB 0%
static/js/nb-NO.js 156.8 kB 0%
static/js/nl.js 113.06 kB 0%
static/js/pl.js 89.65 kB 0%
static/js/pt-BR.js 182.89 kB 0%
static/js/th.js 181.58 kB 0%
static/js/uk.js 215.35 kB 0%
static/js/resize-observer.js 18.37 kB 0%
static/js/BackgroundImage.js 120.54 kB 0%
static/js/ReportRouter.js 1.16 MB 0%
static/js/narrow.js 638.11 kB 0%
static/js/TransactionList.js 106.48 kB 0%
static/js/wide.js 164.15 kB 0%
static/js/AppliedFilters.js 9.71 kB 0%
static/js/usePayeeRuleCounts.js 11.57 kB 0%
static/js/useTransactionBatchActions.js 13.23 kB 0%
static/js/FormulaEditor.js 1.04 MB 0%

loot-core

Total

Files count Total bundle size % Changed
1 5.83 MB → 5.83 MB (+453 B) +0.01%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/server/migrate/migrations.ts 📈 +453 B (+12.53%) 3.53 kB → 3.97 kB
View detailed bundle breakdown

Added

Asset File Size % Changed
kcab.worker.CshubsMB.js 0 B → 5.83 MB (+5.83 MB) -

Removed

Asset File Size % Changed
kcab.worker.BJdSX9Vk.js 5.83 MB → 0 B (-5.83 MB) -100%

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged
No assets were unchanged


api

Total

Files count Total bundle size % Changed
1 → 3 4.44 MB → 4.82 MB (+386.62 kB) +8.50%
Changeset (largest 100 files by percent change)
File Δ Size
node_modules/web-streams-polyfill/dist/ponyfill.es2018.js 🆕 +216.47 kB 0 B → 216.47 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/goal-template.pegjs 🆕 +67.6 kB 0 B → 67.6 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js 🆕 +47.26 kB 0 B → 47.26 kB
node_modules/source-map/lib/source-map-consumer.js 🆕 +40.81 kB 0 B → 40.81 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js 🆕 +36.24 kB 0 B → 36.24 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts 🆕 +27.78 kB 0 B → 27.78 kB
home/runner/work/actual/actual/packages/loot-core/src/server/aql/compiler.ts 🆕 +27.33 kB 0 B → 27.33 kB
home/runner/work/actual/actual/packages/loot-core/src/server/api.ts 🆕 +23.81 kB 0 B → 23.81 kB
home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts 🆕 +23.31 kB 0 B → 23.31 kB
home/runner/work/actual/actual/packages/loot-core/src/server/accounts/sync.ts 🆕 +23.14 kB 0 B → 23.14 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/transaction-rules.ts 🆕 +22.44 kB 0 B → 22.44 kB
home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts 🆕 +22.29 kB 0 B → 22.29 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/category-template-context.ts 🆕 +21.02 kB 0 B → 21.02 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/cleanup-template.pegjs 🆕 +17.12 kB 0 B → 17.12 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js 🆕 +16.06 kB 0 B → 16.06 kB
home/runner/work/actual/actual/packages/loot-core/src/server/db/index.ts 🆕 +16.06 kB 0 B → 16.06 kB
home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts 🆕 +15.45 kB 0 B → 15.45 kB
node_modules/source-map/lib/source-map-generator.js 🆕 +14.59 kB 0 B → 14.59 kB
node_modules/source-map/lib/source-node.js 🆕 +14.01 kB 0 B → 14.01 kB
node_modules/source-map/lib/util.js 🆕 +13.63 kB 0 B → 13.63 kB
node_modules/handlebars/dist/cjs/handlebars/runtime.js 🆕 +13.03 kB 0 B → 13.03 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/actions.ts 🆕 +12.41 kB 0 B → 12.41 kB
node_modules/node-fetch/src/index.js 🆕 +11.69 kB 0 B → 11.69 kB
node_modules/node-fetch/src/utils/referrer.js 🆕 +11.49 kB 0 B → 11.49 kB
home/runner/work/actual/actual/packages/loot-core/src/server/schedules/app.ts 🆕 +11.47 kB 0 B → 11.47 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/app.ts 🆕 +11.22 kB 0 B → 11.22 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts 🆕 +10.71 kB 0 B → 10.71 kB
home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema/index.ts 🆕 +10.68 kB 0 B → 10.68 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/cleanup-template.ts 🆕 +10.5 kB 0 B → 10.5 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/envelope.ts 🆕 +9.87 kB 0 B → 9.87 kB
home/runner/work/actual/actual/packages/loot-core/src/server/rules/condition.ts 🆕 +9.48 kB 0 B → 9.48 kB
node_modules/node-fetch/src/utils/multipart-parser.js 🆕 +9.33 kB 0 B → 9.33 kB
node_modules/node-fetch/src/body.js 🆕 +9.29 kB 0 B → 9.29 kB
home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/spreadsheet.ts 🆕 +9.21 kB 0 B → 9.21 kB
home/runner/work/actual/actual/packages/loot-core/src/server/cloud-storage.ts 🆕 +9.2 kB 0 B → 9.2 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/app.ts 🆕 +8.94 kB 0 B → 8.94 kB
home/runner/work/actual/actual/packages/loot-core/src/server/dashboard/app.ts 🆕 +8.51 kB 0 B → 8.51 kB
home/runner/work/actual/actual/packages/loot-core/src/server/schedules/find-schedules.ts 🆕 +8.32 kB 0 B → 8.32 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/schedule-template.ts 🆕 +8.12 kB 0 B → 8.12 kB
node_modules/node-fetch/src/request.js 🆕 +8.02 kB 0 B → 8.02 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/base.ts 🆕 +7.9 kB 0 B → 7.9 kB
home/runner/work/actual/actual/packages/loot-core/src/server/rules/action.ts 🆕 +7.83 kB 0 B → 7.83 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/report.ts 🆕 +7.37 kB 0 B → 7.37 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/template-notes.ts 🆕 +7.34 kB 0 B → 7.34 kB
node_modules/fetch-blob/index.js 🆕 +7.12 kB 0 B → 7.12 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js 🆕 +7.05 kB 0 B → 7.05 kB
home/runner/work/actual/actual/packages/loot-core/src/server/auth/app.ts 🆕 +6.82 kB 0 B → 6.82 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/util.ts 🆕 +6.69 kB 0 B → 6.69 kB
node_modules/node-fetch/src/headers.js 🆕 +6.65 kB 0 B → 6.65 kB
home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema/executors.ts 🆕 +6.65 kB 0 B → 6.65 kB
home/runner/work/actual/actual/packages/loot-core/src/server/payees/app.ts 🆕 +6.41 kB 0 B → 6.41 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/transactions.ts 🆕 +6.28 kB 0 B → 6.28 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budget/goal-template.ts 🆕 +6.19 kB 0 B → 6.19 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js 🆕 +5.56 kB 0 B → 5.56 kB
methods.ts 🆕 +5.41 kB 0 B → 5.41 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/schedules.ts 🆕 +5.33 kB 0 B → 5.33 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/currencies.ts 🆕 +5.25 kB 0 B → 5.25 kB
home/runner/work/actual/actual/packages/loot-core/src/server/rules/rule-utils.ts 🆕 +5.15 kB 0 B → 5.15 kB
home/runner/work/actual/actual/packages/loot-core/src/server/undo.ts 🆕 +5.15 kB 0 B → 5.15 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/backups.ts 🆕 +4.96 kB 0 B → 4.96 kB
home/runner/work/actual/actual/packages/loot-core/src/server/preferences/app.ts 🆕 +4.89 kB 0 B → 4.89 kB
node_modules/source-map/lib/base64-vlq.js 🆕 +4.87 kB 0 B → 4.87 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/import/parse-file.ts 🆕 +4.76 kB 0 B → 4.76 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js 🆕 +4.72 kB 0 B → 4.72 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/dashboard.ts 🆕 +4.65 kB 0 B → 4.65 kB
home/runner/work/actual/actual/packages/loot-core/src/server/sheet.ts 🆕 +4.62 kB 0 B → 4.62 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js 🆕 +4.56 kB 0 B → 4.56 kB
node_modules/source-map/lib/binary-search.js 🆕 +4.56 kB 0 B → 4.56 kB
home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema-helpers.ts 🆕 +4.4 kB 0 B → 4.4 kB
home/runner/work/actual/actual/packages/loot-core/src/server/rules/rule.ts 🆕 +4.33 kB 0 B → 4.33 kB
home/runner/work/actual/actual/packages/loot-core/src/server/post.ts 🆕 +4.24 kB 0 B → 4.24 kB
node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js 🆕 +4.05 kB 0 B → 4.05 kB
home/runner/work/actual/actual/packages/loot-core/src/server/filters/app.ts 🆕 +4.05 kB 0 B → 4.05 kB
home/runner/work/actual/actual/packages/loot-core/src/platform/server/fs/index.api.ts 🆕 +4.04 kB 0 B → 4.04 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/transfer.ts 🆕 +4 kB 0 B → 4 kB
home/runner/work/actual/actual/packages/loot-core/src/server/api-models.ts 🆕 +3.93 kB 0 B → 3.93 kB
home/runner/work/actual/actual/packages/loot-core/src/server/reports/app.ts 🆕 +3.8 kB 0 B → 3.8 kB
home/runner/work/actual/actual/packages/loot-core/src/server/admin/app.ts 🆕 +3.79 kB 0 B → 3.79 kB
node_modules/source-map/lib/quick-sort.js 🆕 +3.78 kB 0 B → 3.78 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/index.ts 🆕 +3.75 kB 0 B → 3.75 kB
home/runner/work/actual/actual/packages/loot-core/src/server/main.ts 🆕 +3.74 kB 0 B → 3.74 kB
home/runner/work/actual/actual/packages/loot-core/src/server/rules/handlebars-helpers.ts 🆕 +3.54 kB 0 B → 3.54 kB
home/runner/work/actual/actual/packages/loot-core/src/server/migrate/migrations.ts 🆕 +3.49 kB 0 B → 3.49 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/months.ts 🆕 +3.47 kB 0 B → 3.47 kB
node_modules/handlebars/dist/cjs/handlebars/base.js 🆕 +3.38 kB 0 B → 3.38 kB
node_modules/source-map/lib/array-set.js 🆕 +3.37 kB 0 B → 3.37 kB
home/runner/work/actual/actual/packages/loot-core/migrations/1632571489012_remove_cache.js 🆕 +3.3 kB 0 B → 3.3 kB
home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts 🆕 +3.26 kB 0 B → 3.26 kB
node_modules/node-fetch/src/response.js 🆕 +3.22 kB 0 B → 3.22 kB
node_modules/handlebars/dist/cjs/handlebars/utils.js 🆕 +3.13 kB 0 B → 3.13 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/import/ofx2json.ts 🆕 +3.13 kB 0 B → 3.13 kB
home/runner/work/actual/actual/packages/loot-core/src/server/tools/app.ts 🆕 +3.12 kB 0 B → 3.12 kB
node_modules/handlebars/dist/cjs/handlebars/helpers/each.js 🆕 +3.09 kB 0 B → 3.09 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/merge.ts 🆕 +3.07 kB 0 B → 3.07 kB
home/runner/work/actual/actual/packages/loot-core/src/server/models.ts 🆕 +3.06 kB 0 B → 3.06 kB
home/runner/work/actual/actual/packages/loot-core/src/server/accounts/title/index.ts 🆕 +3.06 kB 0 B → 3.06 kB
home/runner/work/actual/actual/packages/loot-core/src/server/rules/app.ts 🆕 +3.02 kB 0 B → 3.02 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/import/xmlcamt2json.ts 🆕 +2.96 kB 0 B → 2.96 kB
node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js 🆕 +2.91 kB 0 B → 2.91 kB
home/runner/work/actual/actual/packages/loot-core/src/server/sync/encoder.ts 🆕 +2.9 kB 0 B → 2.9 kB
View detailed bundle breakdown

Added

Asset File Size % Changed
index.js 0 B → 4.53 MB (+4.53 MB) -
index-BKGP2w5F.js 0 B → 285.56 kB (+285.56 kB) -
multipart-parser-DwddZ4BH.js 0 B → 9.33 kB (+9.33 kB) -

Removed

Asset File Size % Changed
bundle.api.js 4.44 MB → 0 B (-4.44 MB) -100%

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged
No assets were unchanged


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/6809 **Author:** [@MatissJanis](https://github.com/MatissJanis) **Created:** 1/28/2026 **Status:** ✅ Merged **Merged:** 3/12/2026 **Merged by:** [@MatissJanis](https://github.com/MatissJanis) **Base:** `master` ← **Head:** `matiss/fix-6804` --- ### 📝 Commits (10+) - [`ae763af`](https://github.com/actualbudget/actual/commit/ae763af100735d47f458ae2ed94a76bf6550c168) refactor(api): defineConfig vitest, api-helpers, drop vite.api build - [`68c0b35`](https://github.com/actualbudget/actual/commit/68c0b35d0546e7b33d2237990325e716a6d78301) refactor(api): update package structure and build scripts - [`549f269`](https://github.com/actualbudget/actual/commit/549f269511c09de24f059fc8ac841011e32d212b) chore(api): update dependencies and build configuration - [`6d1cc5c`](https://github.com/actualbudget/actual/commit/6d1cc5cd23de65ed92aa8dbcc32bb1d642133be2) fix(api): update visualizer output path in vite configuration - [`6f9dab9`](https://github.com/actualbudget/actual/commit/6f9dab9aab26b285d2a5efc7db391e8aca170c61) refactor(api): streamline Vite configuration and remove vitest.config.ts - [`4ff3b35`](https://github.com/actualbudget/actual/commit/4ff3b35168489a1ce09d389333299cdea61a98eb) feat(api): enhance build scripts and add file system utilities - [`7098a5f`](https://github.com/actualbudget/actual/commit/7098a5fad7c3e3f90f81fbf4289e512233632013) Merge remote-tracking branch 'origin' into matiss/fix-6804 - [`0619198`](https://github.com/actualbudget/actual/commit/0619198f50b53ce450fc61e666d6dc2ef3783363) 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. - [`cd7663e`](https://github.com/actualbudget/actual/commit/cd7663ecfd6176c5e6ad1820ab95d7a9c49b7dc9) 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. - [`73739eb`](https://github.com/actualbudget/actual/commit/73739eb91aff9030cc79cd8aa0486c713ca03146) 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. ### 📊 Changes **21 files changed** (+842 additions, -238 deletions) <details> <summary>View changed files</summary> 📝 `package.json` (+3 -3) 📝 `packages/api/index.ts` (+12 -22) ➖ `packages/api/injected.js` (+0 -7) 📝 `packages/api/methods.test.ts` (+19 -0) 📝 `packages/api/methods.ts` (+2 -3) 📝 `packages/api/package.json` (+8 -10) ➕ `packages/api/scripts/inline-loot-core-types.mjs` (+60 -0) 📝 `packages/api/tsconfig.json` (+3 -7) ➕ `packages/api/typings.ts` (+2 -0) 📝 `packages/api/utils.ts` (+3 -5) ➕ `packages/api/vite.config.ts` (+99 -0) ➖ `packages/api/vitest.config.ts` (+0 -10) ➖ `packages/loot-core/bin/build-api` (+0 -11) 📝 `packages/loot-core/package.json` (+1 -2) 📝 `packages/loot-core/src/platform/server/fs/index.api.ts` (+198 -2) 📝 `packages/loot-core/src/platform/server/fs/index.electron.ts` (+0 -3) 📝 `packages/loot-core/src/server/main.ts` (+0 -4) 📝 `packages/loot-core/src/server/migrate/migrations.ts` (+21 -7) ➖ `packages/loot-core/vite.api.config.ts` (+0 -58) ➕ `upcoming-release-notes/6809.md` (+6 -0) _...and 1 more files_ </details> ### 📄 Description <img width="800" height="735" alt="image" src="https://github.com/user-attachments/assets/9b1f5212-677c-439e-baee-07d18b6e7411" /> **The problem**: the loot-core package depends on the API package. But for the API package to work - it must first bundle loot-core (`bundled.api.js`) and then consume that. 🙈 **The fix**: re-architected how imports between loot-core and api happen. This is a risky change, so the more people can test this locally - the better. For now I'm not cleaning up the implementation, but only looking for people to say weather this "works" or it does not. The new implementation has clear dependencies. API imports loot-core. Loot-core does **not** import api. Depends on https://github.com/actualbudget/actual/pull/7062 among a bunch of other smaller PRs. <!--- actual-bot-sections ---> <hr /> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 27 | 14.91 MB | 0% loot-core | 1 | 5.83 MB → 5.83 MB (+453 B) | +0.01% api | 1 → 3 | 4.44 MB → 4.82 MB (+386.62 kB) | +8.50% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 27 | 14.91 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 9.56 MB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 12.94 kB | 0% static/js/workbox-window.prod.es5.js | 5.64 kB | 0% static/js/ca.js | 187.93 kB | 0% static/js/da.js | 106.2 kB | 0% static/js/de.js | 179.89 kB | 0% static/js/en-GB.js | 7.18 kB | 0% static/js/en.js | 170.86 kB | 0% static/js/es.js | 174.37 kB | 0% static/js/fr.js | 179.41 kB | 0% static/js/it.js | 170.98 kB | 0% static/js/nb-NO.js | 156.8 kB | 0% static/js/nl.js | 113.06 kB | 0% static/js/pl.js | 89.65 kB | 0% static/js/pt-BR.js | 182.89 kB | 0% static/js/th.js | 181.58 kB | 0% static/js/uk.js | 215.35 kB | 0% static/js/resize-observer.js | 18.37 kB | 0% static/js/BackgroundImage.js | 120.54 kB | 0% static/js/ReportRouter.js | 1.16 MB | 0% static/js/narrow.js | 638.11 kB | 0% static/js/TransactionList.js | 106.48 kB | 0% static/js/wide.js | 164.15 kB | 0% static/js/AppliedFilters.js | 9.71 kB | 0% static/js/usePayeeRuleCounts.js | 11.57 kB | 0% static/js/useTransactionBatchActions.js | 13.23 kB | 0% static/js/FormulaEditor.js | 1.04 MB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 5.83 MB → 5.83 MB (+453 B) | +0.01% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/server/migrate/migrations.ts` | 📈 +453 B (+12.53%) | 3.53 kB → 3.97 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.CshubsMB.js | 0 B → 5.83 MB (+5.83 MB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.BJdSX9Vk.js | 5.83 MB → 0 B (-5.83 MB) | -100% **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** No assets were unchanged </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 → 3 | 4.44 MB → 4.82 MB (+386.62 kB) | +8.50% <details> <summary>Changeset (largest 100 files by percent change)</summary> File | Δ | Size ---- | - | ---- `node_modules/web-streams-polyfill/dist/ponyfill.es2018.js` | 🆕 +216.47 kB | 0 B → 216.47 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/goal-template.pegjs` | 🆕 +67.6 kB | 0 B → 67.6 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js` | 🆕 +47.26 kB | 0 B → 47.26 kB `node_modules/source-map/lib/source-map-consumer.js` | 🆕 +40.81 kB | 0 B → 40.81 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js` | 🆕 +36.24 kB | 0 B → 36.24 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts` | 🆕 +27.78 kB | 0 B → 27.78 kB `home/runner/work/actual/actual/packages/loot-core/src/server/aql/compiler.ts` | 🆕 +27.33 kB | 0 B → 27.33 kB `home/runner/work/actual/actual/packages/loot-core/src/server/api.ts` | 🆕 +23.81 kB | 0 B → 23.81 kB `home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts` | 🆕 +23.31 kB | 0 B → 23.31 kB `home/runner/work/actual/actual/packages/loot-core/src/server/accounts/sync.ts` | 🆕 +23.14 kB | 0 B → 23.14 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/transaction-rules.ts` | 🆕 +22.44 kB | 0 B → 22.44 kB `home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts` | 🆕 +22.29 kB | 0 B → 22.29 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/category-template-context.ts` | 🆕 +21.02 kB | 0 B → 21.02 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/cleanup-template.pegjs` | 🆕 +17.12 kB | 0 B → 17.12 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js` | 🆕 +16.06 kB | 0 B → 16.06 kB `home/runner/work/actual/actual/packages/loot-core/src/server/db/index.ts` | 🆕 +16.06 kB | 0 B → 16.06 kB `home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts` | 🆕 +15.45 kB | 0 B → 15.45 kB `node_modules/source-map/lib/source-map-generator.js` | 🆕 +14.59 kB | 0 B → 14.59 kB `node_modules/source-map/lib/source-node.js` | 🆕 +14.01 kB | 0 B → 14.01 kB `node_modules/source-map/lib/util.js` | 🆕 +13.63 kB | 0 B → 13.63 kB `node_modules/handlebars/dist/cjs/handlebars/runtime.js` | 🆕 +13.03 kB | 0 B → 13.03 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/actions.ts` | 🆕 +12.41 kB | 0 B → 12.41 kB `node_modules/node-fetch/src/index.js` | 🆕 +11.69 kB | 0 B → 11.69 kB `node_modules/node-fetch/src/utils/referrer.js` | 🆕 +11.49 kB | 0 B → 11.49 kB `home/runner/work/actual/actual/packages/loot-core/src/server/schedules/app.ts` | 🆕 +11.47 kB | 0 B → 11.47 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/app.ts` | 🆕 +11.22 kB | 0 B → 11.22 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts` | 🆕 +10.71 kB | 0 B → 10.71 kB `home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema/index.ts` | 🆕 +10.68 kB | 0 B → 10.68 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/cleanup-template.ts` | 🆕 +10.5 kB | 0 B → 10.5 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/envelope.ts` | 🆕 +9.87 kB | 0 B → 9.87 kB `home/runner/work/actual/actual/packages/loot-core/src/server/rules/condition.ts` | 🆕 +9.48 kB | 0 B → 9.48 kB `node_modules/node-fetch/src/utils/multipart-parser.js` | 🆕 +9.33 kB | 0 B → 9.33 kB `node_modules/node-fetch/src/body.js` | 🆕 +9.29 kB | 0 B → 9.29 kB `home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/spreadsheet.ts` | 🆕 +9.21 kB | 0 B → 9.21 kB `home/runner/work/actual/actual/packages/loot-core/src/server/cloud-storage.ts` | 🆕 +9.2 kB | 0 B → 9.2 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/app.ts` | 🆕 +8.94 kB | 0 B → 8.94 kB `home/runner/work/actual/actual/packages/loot-core/src/server/dashboard/app.ts` | 🆕 +8.51 kB | 0 B → 8.51 kB `home/runner/work/actual/actual/packages/loot-core/src/server/schedules/find-schedules.ts` | 🆕 +8.32 kB | 0 B → 8.32 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/schedule-template.ts` | 🆕 +8.12 kB | 0 B → 8.12 kB `node_modules/node-fetch/src/request.js` | 🆕 +8.02 kB | 0 B → 8.02 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/base.ts` | 🆕 +7.9 kB | 0 B → 7.9 kB `home/runner/work/actual/actual/packages/loot-core/src/server/rules/action.ts` | 🆕 +7.83 kB | 0 B → 7.83 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/report.ts` | 🆕 +7.37 kB | 0 B → 7.37 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/template-notes.ts` | 🆕 +7.34 kB | 0 B → 7.34 kB `node_modules/fetch-blob/index.js` | 🆕 +7.12 kB | 0 B → 7.12 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js` | 🆕 +7.05 kB | 0 B → 7.05 kB `home/runner/work/actual/actual/packages/loot-core/src/server/auth/app.ts` | 🆕 +6.82 kB | 0 B → 6.82 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/util.ts` | 🆕 +6.69 kB | 0 B → 6.69 kB `node_modules/node-fetch/src/headers.js` | 🆕 +6.65 kB | 0 B → 6.65 kB `home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema/executors.ts` | 🆕 +6.65 kB | 0 B → 6.65 kB `home/runner/work/actual/actual/packages/loot-core/src/server/payees/app.ts` | 🆕 +6.41 kB | 0 B → 6.41 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/transactions.ts` | 🆕 +6.28 kB | 0 B → 6.28 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budget/goal-template.ts` | 🆕 +6.19 kB | 0 B → 6.19 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js` | 🆕 +5.56 kB | 0 B → 5.56 kB `methods.ts` | 🆕 +5.41 kB | 0 B → 5.41 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/schedules.ts` | 🆕 +5.33 kB | 0 B → 5.33 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/currencies.ts` | 🆕 +5.25 kB | 0 B → 5.25 kB `home/runner/work/actual/actual/packages/loot-core/src/server/rules/rule-utils.ts` | 🆕 +5.15 kB | 0 B → 5.15 kB `home/runner/work/actual/actual/packages/loot-core/src/server/undo.ts` | 🆕 +5.15 kB | 0 B → 5.15 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/backups.ts` | 🆕 +4.96 kB | 0 B → 4.96 kB `home/runner/work/actual/actual/packages/loot-core/src/server/preferences/app.ts` | 🆕 +4.89 kB | 0 B → 4.89 kB `node_modules/source-map/lib/base64-vlq.js` | 🆕 +4.87 kB | 0 B → 4.87 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/import/parse-file.ts` | 🆕 +4.76 kB | 0 B → 4.76 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js` | 🆕 +4.72 kB | 0 B → 4.72 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/dashboard.ts` | 🆕 +4.65 kB | 0 B → 4.65 kB `home/runner/work/actual/actual/packages/loot-core/src/server/sheet.ts` | 🆕 +4.62 kB | 0 B → 4.62 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js` | 🆕 +4.56 kB | 0 B → 4.56 kB `node_modules/source-map/lib/binary-search.js` | 🆕 +4.56 kB | 0 B → 4.56 kB `home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema-helpers.ts` | 🆕 +4.4 kB | 0 B → 4.4 kB `home/runner/work/actual/actual/packages/loot-core/src/server/rules/rule.ts` | 🆕 +4.33 kB | 0 B → 4.33 kB `home/runner/work/actual/actual/packages/loot-core/src/server/post.ts` | 🆕 +4.24 kB | 0 B → 4.24 kB `node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js` | 🆕 +4.05 kB | 0 B → 4.05 kB `home/runner/work/actual/actual/packages/loot-core/src/server/filters/app.ts` | 🆕 +4.05 kB | 0 B → 4.05 kB `home/runner/work/actual/actual/packages/loot-core/src/platform/server/fs/index.api.ts` | 🆕 +4.04 kB | 0 B → 4.04 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/transfer.ts` | 🆕 +4 kB | 0 B → 4 kB `home/runner/work/actual/actual/packages/loot-core/src/server/api-models.ts` | 🆕 +3.93 kB | 0 B → 3.93 kB `home/runner/work/actual/actual/packages/loot-core/src/server/reports/app.ts` | 🆕 +3.8 kB | 0 B → 3.8 kB `home/runner/work/actual/actual/packages/loot-core/src/server/admin/app.ts` | 🆕 +3.79 kB | 0 B → 3.79 kB `node_modules/source-map/lib/quick-sort.js` | 🆕 +3.78 kB | 0 B → 3.78 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/index.ts` | 🆕 +3.75 kB | 0 B → 3.75 kB `home/runner/work/actual/actual/packages/loot-core/src/server/main.ts` | 🆕 +3.74 kB | 0 B → 3.74 kB `home/runner/work/actual/actual/packages/loot-core/src/server/rules/handlebars-helpers.ts` | 🆕 +3.54 kB | 0 B → 3.54 kB `home/runner/work/actual/actual/packages/loot-core/src/server/migrate/migrations.ts` | 🆕 +3.49 kB | 0 B → 3.49 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/months.ts` | 🆕 +3.47 kB | 0 B → 3.47 kB `node_modules/handlebars/dist/cjs/handlebars/base.js` | 🆕 +3.38 kB | 0 B → 3.38 kB `node_modules/source-map/lib/array-set.js` | 🆕 +3.37 kB | 0 B → 3.37 kB `home/runner/work/actual/actual/packages/loot-core/migrations/1632571489012_remove_cache.js` | 🆕 +3.3 kB | 0 B → 3.3 kB `home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts` | 🆕 +3.26 kB | 0 B → 3.26 kB `node_modules/node-fetch/src/response.js` | 🆕 +3.22 kB | 0 B → 3.22 kB `node_modules/handlebars/dist/cjs/handlebars/utils.js` | 🆕 +3.13 kB | 0 B → 3.13 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/import/ofx2json.ts` | 🆕 +3.13 kB | 0 B → 3.13 kB `home/runner/work/actual/actual/packages/loot-core/src/server/tools/app.ts` | 🆕 +3.12 kB | 0 B → 3.12 kB `node_modules/handlebars/dist/cjs/handlebars/helpers/each.js` | 🆕 +3.09 kB | 0 B → 3.09 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/merge.ts` | 🆕 +3.07 kB | 0 B → 3.07 kB `home/runner/work/actual/actual/packages/loot-core/src/server/models.ts` | 🆕 +3.06 kB | 0 B → 3.06 kB `home/runner/work/actual/actual/packages/loot-core/src/server/accounts/title/index.ts` | 🆕 +3.06 kB | 0 B → 3.06 kB `home/runner/work/actual/actual/packages/loot-core/src/server/rules/app.ts` | 🆕 +3.02 kB | 0 B → 3.02 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/import/xmlcamt2json.ts` | 🆕 +2.96 kB | 0 B → 2.96 kB `node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js` | 🆕 +2.91 kB | 0 B → 2.91 kB `home/runner/work/actual/actual/packages/loot-core/src/server/sync/encoder.ts` | 🆕 +2.9 kB | 0 B → 2.9 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- index.js | 0 B → 4.53 MB (+4.53 MB) | - index-BKGP2w5F.js | 0 B → 285.56 kB (+285.56 kB) | - multipart-parser-DwddZ4BH.js | 0 B → 9.33 kB (+9.33 kB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- bundle.api.js | 4.44 MB → 0 B (-4.44 MB) | -100% **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** No assets were unchanged </div> </details> </details> <!--- bundlestats-action-comment key:combined end ---> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-01 03:34:45 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#56054