[PR #7246] [CLOSED] [WIP] Use JS Proxy to simplify loot-core app calls from desktop-client #25646

Closed
opened 2026-04-16 18:45:09 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/7246
Author: @joel-jeremy
Created: 3/20/2026
Status: Closed

Base: masterHead: js-proxy


📝 Commits (10+)

  • 269c5a1 Use javascript proxy to encapsulate the calls to loot core server via connection package's send
  • d1f3f3e Refactor app structure and handler invocation. Encapsulate handlers inside app and update all calls to go through the mainApp for consistency.
  • ae4e1f9 Use proxy in server's App framework to be able to call methods more naturally i.e. app.createPayee(...) vs. app.runHandler('createPayee', ...)
  • 54039b3 Add release notes for PR #7246
  • 069da61 Separate api app from mainApp
  • 07ace07 [autofix.ci] apply automated fixes
  • 573238a Fix tests and typecheck errors
  • c057a55 Fix tests
  • 1598b6a Merge remote-tracking branch 'origin/master' into js-proxy
  • 6494d8e Fix lint errors

📊 Changes

36 files changed (+559 additions, -449 deletions)

View changed files

📝 packages/desktop-client/src/components/ManageRules.tsx (+2 -2)
📝 packages/desktop-client/src/components/mobile/payees/MobilePayeeEditPage.tsx (+2 -2)
📝 packages/desktop-client/src/components/mobile/payees/MobilePayeesPage.tsx (+3 -3)
📝 packages/desktop-client/src/components/modals/MergeUnusedPayeesModal.tsx (+2 -2)
📝 packages/desktop-client/src/components/payees/ManagePayeesWithData.tsx (+3 -3)
📝 packages/desktop-client/src/payees/location-adapters.ts (+5 -5)
📝 packages/desktop-client/src/payees/mutations.ts (+2 -2)
📝 packages/desktop-client/src/payees/queries.ts (+5 -5)
📝 packages/loot-core/src/mocks/budget.ts (+30 -30)
📝 packages/loot-core/src/platform/client/connection/index-types.ts (+12 -1)
📝 packages/loot-core/src/platform/client/connection/index.browser.ts (+34 -6)
📝 packages/loot-core/src/platform/client/connection/index.ts (+29 -3)
📝 packages/loot-core/src/platform/server/connection/index-types.ts (+2 -1)
📝 packages/loot-core/src/platform/server/connection/index.electron.ts (+7 -5)
📝 packages/loot-core/src/platform/server/connection/index.ts (+5 -5)
📝 packages/loot-core/src/server/accounts/app-bank-sync.test.ts (+1 -1)
📝 packages/loot-core/src/server/accounts/app.ts (+2 -2)
📝 packages/loot-core/src/server/api.test.ts (+32 -25)
📝 packages/loot-core/src/server/api.ts (+76 -79)
📝 packages/loot-core/src/server/app.ts (+66 -12)

...and 16 more files

📄 Description

Description

Note to reviewer: This is easier to review by commits

Currently, the desktop-client communicates with the loot-core server by calling a generic send function with a string handler name:

send('createPayee', { name: 'Landlord' })

This PR introduces a proxy-based server object that makes these calls look like regular method calls:

// internally calls `send` via proxy
server.createPayee({ name: 'Landlord' })

The same pattern is also applied within loot-core itself, so internal code no longer needs to call runHandler directly.

// before
await runHandler(app.handlers['createPayee'])

// after (internally calls runHandler via proxy)
await app.createPayee({ name: 'Landlord' })

Migration plan

The migration will be done incrementally, one server app at a time — for example, one PR for the budget folder, another for accounts, and so on. This keeps each PR focused and reviewable.

As part of each migration PR, handler names will be renamed from kebab-case to camelCase so the proxy methods are idiomatic JavaScript:

// before
server['close-budget']()

// after
server.closeBudget()

Payees app handlers are already renamed to camelCase on this PR.

This is groundwork for making the api package cross-platform (usable from desktop-client directly), since the proxy surface provides a clean, typed interface without leaking transport details.

Testing

Checklist

  • Release notes added (see link above)
  • No obvious regressions in affected areas
  • Self-review has been performed - I understand what each change in the code does and why it is needed

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 26 11.99 MB → 11.99 MB (-21 B) -0.00%
loot-core 1 4.83 MB → 4.83 MB (-562 B) -0.01%
api 4 4.06 MB → 4.06 MB (-500 B) -0.01%
cli 1 7.88 MB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
26 11.99 MB → 11.99 MB (-21 B) -0.00%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/platform/client/connection/index.browser.ts 📈 +319 B (+9.41%) 3.31 kB → 3.62 kB
src/components/modals/MergeUnusedPayeesModal.tsx 📉 -2 B (-0.03%) 7.31 kB → 7.31 kB
src/components/ManageRules.tsx 📉 -4 B (-0.03%) 13.72 kB → 13.72 kB
src/components/mobile/payees/MobilePayeeEditPage.tsx 📉 -3 B (-0.05%) 5.97 kB → 5.97 kB
src/payees/mutations.ts 📉 -2 B (-0.09%) 2.08 kB → 2.08 kB
src/components/payees/ManagePayeesWithData.tsx 📉 -5 B (-0.17%) 2.84 kB → 2.84 kB
src/components/mobile/payees/MobilePayeesPage.tsx 📉 -7 B (-0.23%) 2.94 kB → 2.93 kB
src/payees/queries.ts 📉 -5 B (-0.26%) 1.91 kB → 1.9 kB
src/payees/location-adapters.ts 📉 -12 B (-0.99%) 1.18 kB → 1.17 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller

Asset File Size % Changed
static/js/index.js 3.23 MB → 3.23 MB (-11 B) -0.00%
static/js/narrow.js 354.12 kB → 354.11 kB (-10 B) -0.00%

Unchanged

Asset File Size % Changed
static/js/BackgroundImage.js 119.98 kB 0%
static/js/FormulaEditor.js 846.44 kB 0%
static/js/ReportRouter.js 1021.25 kB 0%
static/js/TransactionList.js 81.29 kB 0%
static/js/ca.js 185.57 kB 0%
static/js/da.js 104.66 kB 0%
static/js/de.js 177.58 kB 0%
static/js/en-GB.js 7.16 kB 0%
static/js/en.js 170.68 kB 0%
static/js/es.js 172.13 kB 0%
static/js/fr.js 177.57 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 168.97 kB 0%
static/js/nb-NO.js 154.72 kB 0%
static/js/nl.js 111.58 kB 0%
static/js/pl.js 88.34 kB 0%
static/js/pt-BR.js 180.5 kB 0%
static/js/resize-observer.js 18.03 kB 0%
static/js/th.js 179.94 kB 0%
static/js/theme.js 30.68 kB 0%
static/js/uk.js 213.14 kB 0%
static/js/useTransactionBatchActions.js 4.29 MB 0%
static/js/wide.js 418 B 0%
static/js/workbox-window.prod.es5.js 7.28 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 4.83 MB → 4.83 MB (-562 B) -0.01%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/server/app.ts 📈 +715 B (+50.93%) 1.37 kB → 2.07 kB
home/runner/work/actual/actual/packages/loot-core/src/server/mutators.ts 📈 +134 B (+6.46%) 2.03 kB → 2.16 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts 📈 +53 B (+0.55%) 9.35 kB → 9.4 kB
home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts 📈 +13 B (+0.09%) 13.74 kB → 13.76 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts 📈 +23 B (+0.09%) 24.49 kB → 24.51 kB
home/runner/work/actual/actual/packages/loot-core/src/platform/server/fs/index.ts 📉 -2 B (-0.02%) 7.91 kB → 7.91 kB
home/runner/work/actual/actual/packages/loot-core/src/server/schedules/app.ts 📉 -4 B (-0.03%) 11.84 kB → 11.84 kB
home/runner/work/actual/actual/packages/loot-core/src/server/undo.ts 📉 -2 B (-0.04%) 4.81 kB → 4.81 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/backups.ts 📉 -2 B (-0.04%) 4.73 kB → 4.72 kB
home/runner/work/actual/actual/packages/loot-core/src/server/transactions/index.ts 📉 -2 B (-0.06%) 3.28 kB → 3.28 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/app.ts 📉 -8 B (-0.07%) 10.77 kB → 10.76 kB
home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts 📉 -18 B (-0.08%) 21.6 kB → 21.58 kB
home/runner/work/actual/actual/packages/loot-core/src/server/util/budget-name.ts 📉 -1 B (-0.09%) 1.14 kB → 1.14 kB
home/runner/work/actual/actual/packages/loot-core/src/server/sync/reset.ts 📉 -2 B (-0.13%) 1.45 kB → 1.45 kB
home/runner/work/actual/actual/packages/loot-core/src/platform/server/connection/index.ts 📉 -5 B (-0.16%) 3.06 kB → 3.05 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/index.ts 📉 -3 B (-0.32%) 934 B → 931 B
home/runner/work/actual/actual/packages/loot-core/src/server/importers/actual.ts 📉 -3 B (-0.42%) 710 B → 707 B
home/runner/work/actual/actual/packages/loot-core/src/platform/server/fetch/index.ts 📉 -2 B (-0.53%) 374 B → 372 B
home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts 📉 -171 B (-0.82%) 20.34 kB → 20.17 kB
home/runner/work/actual/actual/packages/loot-core/src/server/api.ts 📉 -507 B (-2.20%) 22.53 kB → 22.03 kB
home/runner/work/actual/actual/packages/loot-core/src/server/main.ts 📉 -165 B (-3.47%) 4.64 kB → 4.48 kB
home/runner/work/actual/actual/packages/loot-core/src/server/payees/app.ts 📉 -354 B (-5.85%) 5.91 kB → 5.57 kB
home/runner/work/actual/actual/packages/loot-core/src/server/main-app.ts 🔥 -249 B (-100%) 249 B → 0 B
View detailed bundle breakdown

Added

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

Removed

Asset File Size % Changed
kcab.worker.Dmj0rSrb.js 4.83 MB → 0 B (-4.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
4 4.06 MB → 4.06 MB (-500 B) -0.01%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/server/app.ts 📈 +697 B (+55.72%) 1.22 kB → 1.9 kB
home/runner/work/actual/actual/packages/loot-core/src/server/mutators.ts 📈 +130 B (+6.52%) 1.95 kB → 2.07 kB
home/runner/work/actual/actual/packages/loot-core/src/server/main.ts 📈 +71 B (+2.01%) 3.44 kB → 3.51 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts 📈 +23 B (+0.24%) 9.17 kB → 9.2 kB
home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts 📈 +15 B (+0.11%) 13.35 kB → 13.37 kB
home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts 📉 -8 B (-0.04%) 21.31 kB → 21.3 kB
home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/app.ts 📉 -6 B (-0.06%) 10.45 kB → 10.45 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts 📉 -17 B (-0.07%) 24.12 kB → 24.1 kB
home/runner/work/actual/actual/packages/loot-core/src/server/util/budget-name.ts 📉 -1 B (-0.09%) 1.12 kB → 1.12 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/index.ts 📉 -3 B (-0.33%) 913 B → 910 B
home/runner/work/actual/actual/packages/loot-core/src/server/importers/actual.ts 📉 -3 B (-0.43%) 700 B → 697 B
home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts 📉 -171 B (-0.85%) 19.71 kB → 19.55 kB
home/runner/work/actual/actual/packages/loot-core/src/server/api.ts 📉 -489 B (-2.17%) 21.96 kB → 21.48 kB
home/runner/work/actual/actual/packages/loot-core/src/server/payees/app.ts 📉 -312 B (-5.22%) 5.84 kB → 5.54 kB
home/runner/work/actual/actual/packages/loot-core/src/server/main-app.ts 🔥 -426 B (-100%) 426 B → 0 B
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller

Asset File Size % Changed
index.js 3.84 MB → 3.84 MB (-500 B) -0.01%

Unchanged

Asset File Size % Changed
from-Bl-Hslp4.js 167.73 kB 0%
multipart-parser-BnDysoMr.js 8.1 kB 0%
src-iMkUmuwR.js 43.64 kB 0%

cli

Total

Files count Total bundle size % Changed
1 7.88 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
cli.js 7.88 MB 0%

🔄 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/7246 **Author:** [@joel-jeremy](https://github.com/joel-jeremy) **Created:** 3/20/2026 **Status:** ❌ Closed **Base:** `master` ← **Head:** `js-proxy` --- ### 📝 Commits (10+) - [`269c5a1`](https://github.com/actualbudget/actual/commit/269c5a1e486a1b044dbb2af46937c67d059c804b) Use javascript proxy to encapsulate the calls to loot core server via connection package's `send` - [`d1f3f3e`](https://github.com/actualbudget/actual/commit/d1f3f3ec104cbf7f9b9aa54330fc056805088274) Refactor app structure and handler invocation. Encapsulate handlers inside app and update all calls to go through the mainApp for consistency. - [`ae4e1f9`](https://github.com/actualbudget/actual/commit/ae4e1f95851a1b97da6117a350a16aa3ef03285a) Use proxy in server's App framework to be able to call methods more naturally i.e. app.createPayee(...) vs. app.runHandler('createPayee', ...) - [`54039b3`](https://github.com/actualbudget/actual/commit/54039b36c6440fbab8a3850a3c4331fd1d0ff2bc) Add release notes for PR #7246 - [`069da61`](https://github.com/actualbudget/actual/commit/069da6164406e2155a28fd69dcdc207680c4448c) Separate api app from mainApp - [`07ace07`](https://github.com/actualbudget/actual/commit/07ace07bcca98f254ad935da87e9e2692ba79323) [autofix.ci] apply automated fixes - [`573238a`](https://github.com/actualbudget/actual/commit/573238a2e233b6c0890153db79d307e9219ddaa0) Fix tests and typecheck errors - [`c057a55`](https://github.com/actualbudget/actual/commit/c057a55a2ac6e4dc4fcc31891b31163e826748b1) Fix tests - [`1598b6a`](https://github.com/actualbudget/actual/commit/1598b6ae8136158ab9c961869f95c23f268962ab) Merge remote-tracking branch 'origin/master' into js-proxy - [`6494d8e`](https://github.com/actualbudget/actual/commit/6494d8ef4e1b4911115173dcc2334ebf55ef2c1c) Fix lint errors ### 📊 Changes **36 files changed** (+559 additions, -449 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/src/components/ManageRules.tsx` (+2 -2) 📝 `packages/desktop-client/src/components/mobile/payees/MobilePayeeEditPage.tsx` (+2 -2) 📝 `packages/desktop-client/src/components/mobile/payees/MobilePayeesPage.tsx` (+3 -3) 📝 `packages/desktop-client/src/components/modals/MergeUnusedPayeesModal.tsx` (+2 -2) 📝 `packages/desktop-client/src/components/payees/ManagePayeesWithData.tsx` (+3 -3) 📝 `packages/desktop-client/src/payees/location-adapters.ts` (+5 -5) 📝 `packages/desktop-client/src/payees/mutations.ts` (+2 -2) 📝 `packages/desktop-client/src/payees/queries.ts` (+5 -5) 📝 `packages/loot-core/src/mocks/budget.ts` (+30 -30) 📝 `packages/loot-core/src/platform/client/connection/index-types.ts` (+12 -1) 📝 `packages/loot-core/src/platform/client/connection/index.browser.ts` (+34 -6) 📝 `packages/loot-core/src/platform/client/connection/index.ts` (+29 -3) 📝 `packages/loot-core/src/platform/server/connection/index-types.ts` (+2 -1) 📝 `packages/loot-core/src/platform/server/connection/index.electron.ts` (+7 -5) 📝 `packages/loot-core/src/platform/server/connection/index.ts` (+5 -5) 📝 `packages/loot-core/src/server/accounts/app-bank-sync.test.ts` (+1 -1) 📝 `packages/loot-core/src/server/accounts/app.ts` (+2 -2) 📝 `packages/loot-core/src/server/api.test.ts` (+32 -25) 📝 `packages/loot-core/src/server/api.ts` (+76 -79) 📝 `packages/loot-core/src/server/app.ts` (+66 -12) _...and 16 more files_ </details> ### 📄 Description <!-- 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. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. --> ## Description <!-- What does this PR do? Why is it needed? Please give context on the "why?": why do we need this change? What problem is it solving for you?--> Note to reviewer: This is easier to review by commits Currently, the desktop-client communicates with the loot-core server by calling a generic `send` function with a string handler name: ```javascript send('createPayee', { name: 'Landlord' }) ``` This PR introduces a proxy-based `server` object that makes these calls look like regular method calls: ```javascript // internally calls `send` via proxy server.createPayee({ name: 'Landlord' }) ``` The same pattern is also applied within loot-core itself, so internal code no longer needs to call `runHandler` directly. ```javascript // before await runHandler(app.handlers['createPayee']) // after (internally calls runHandler via proxy) await app.createPayee({ name: 'Landlord' }) ``` ### Migration plan The migration will be done incrementally, one server app at a time — for example, one PR for the budget folder, another for accounts, and so on. This keeps each PR focused and reviewable. As part of each migration PR, handler names will be renamed from kebab-case to camelCase so the proxy methods are idiomatic JavaScript: ```javascript // before server['close-budget']() // after server.closeBudget() ``` Payees app handlers are already renamed to camelCase on this PR. This is groundwork for making the api package cross-platform (usable from desktop-client directly), since the proxy surface provides a clean, typed interface without leaking transport details. ## Related issue(s) <!-- e.g. Fixes #123, Relates to #456 --> ## Testing <!-- What did you test? How can we reproduce the issue you are fixing or how can we test the feature you built? --> ## Checklist - [ ] Release notes added (see link above) - [ ] No obvious regressions in affected areas - [ ] Self-review has been performed - I understand what each change in the code does and why it is needed <!--- actual-bot-sections ---> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 26 | 11.99 MB → 11.99 MB (-21 B) | -0.00% loot-core | 1 | 4.83 MB → 4.83 MB (-562 B) | -0.01% api | 4 | 4.06 MB → 4.06 MB (-500 B) | -0.01% cli | 1 | 7.88 MB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 26 | 11.99 MB → 11.99 MB (-21 B) | -0.00% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/platform/client/connection/index.browser.ts` | 📈 +319 B (+9.41%) | 3.31 kB → 3.62 kB `src/components/modals/MergeUnusedPayeesModal.tsx` | 📉 -2 B (-0.03%) | 7.31 kB → 7.31 kB `src/components/ManageRules.tsx` | 📉 -4 B (-0.03%) | 13.72 kB → 13.72 kB `src/components/mobile/payees/MobilePayeeEditPage.tsx` | 📉 -3 B (-0.05%) | 5.97 kB → 5.97 kB `src/payees/mutations.ts` | 📉 -2 B (-0.09%) | 2.08 kB → 2.08 kB `src/components/payees/ManagePayeesWithData.tsx` | 📉 -5 B (-0.17%) | 2.84 kB → 2.84 kB `src/components/mobile/payees/MobilePayeesPage.tsx` | 📉 -7 B (-0.23%) | 2.94 kB → 2.93 kB `src/payees/queries.ts` | 📉 -5 B (-0.26%) | 1.91 kB → 1.9 kB `src/payees/location-adapters.ts` | 📉 -12 B (-0.99%) | 1.18 kB → 1.17 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 3.23 MB → 3.23 MB (-11 B) | -0.00% static/js/narrow.js | 354.12 kB → 354.11 kB (-10 B) | -0.00% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/BackgroundImage.js | 119.98 kB | 0% static/js/FormulaEditor.js | 846.44 kB | 0% static/js/ReportRouter.js | 1021.25 kB | 0% static/js/TransactionList.js | 81.29 kB | 0% static/js/ca.js | 185.57 kB | 0% static/js/da.js | 104.66 kB | 0% static/js/de.js | 177.58 kB | 0% static/js/en-GB.js | 7.16 kB | 0% static/js/en.js | 170.68 kB | 0% static/js/es.js | 172.13 kB | 0% static/js/fr.js | 177.57 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/it.js | 168.97 kB | 0% static/js/nb-NO.js | 154.72 kB | 0% static/js/nl.js | 111.58 kB | 0% static/js/pl.js | 88.34 kB | 0% static/js/pt-BR.js | 180.5 kB | 0% static/js/resize-observer.js | 18.03 kB | 0% static/js/th.js | 179.94 kB | 0% static/js/theme.js | 30.68 kB | 0% static/js/uk.js | 213.14 kB | 0% static/js/useTransactionBatchActions.js | 4.29 MB | 0% static/js/wide.js | 418 B | 0% static/js/workbox-window.prod.es5.js | 7.28 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 4.83 MB → 4.83 MB (-562 B) | -0.01% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/server/app.ts` | 📈 +715 B (+50.93%) | 1.37 kB → 2.07 kB `home/runner/work/actual/actual/packages/loot-core/src/server/mutators.ts` | 📈 +134 B (+6.46%) | 2.03 kB → 2.16 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts` | 📈 +53 B (+0.55%) | 9.35 kB → 9.4 kB `home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts` | 📈 +13 B (+0.09%) | 13.74 kB → 13.76 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts` | 📈 +23 B (+0.09%) | 24.49 kB → 24.51 kB `home/runner/work/actual/actual/packages/loot-core/src/platform/server/fs/index.ts` | 📉 -2 B (-0.02%) | 7.91 kB → 7.91 kB `home/runner/work/actual/actual/packages/loot-core/src/server/schedules/app.ts` | 📉 -4 B (-0.03%) | 11.84 kB → 11.84 kB `home/runner/work/actual/actual/packages/loot-core/src/server/undo.ts` | 📉 -2 B (-0.04%) | 4.81 kB → 4.81 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/backups.ts` | 📉 -2 B (-0.04%) | 4.73 kB → 4.72 kB `home/runner/work/actual/actual/packages/loot-core/src/server/transactions/index.ts` | 📉 -2 B (-0.06%) | 3.28 kB → 3.28 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/app.ts` | 📉 -8 B (-0.07%) | 10.77 kB → 10.76 kB `home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts` | 📉 -18 B (-0.08%) | 21.6 kB → 21.58 kB `home/runner/work/actual/actual/packages/loot-core/src/server/util/budget-name.ts` | 📉 -1 B (-0.09%) | 1.14 kB → 1.14 kB `home/runner/work/actual/actual/packages/loot-core/src/server/sync/reset.ts` | 📉 -2 B (-0.13%) | 1.45 kB → 1.45 kB `home/runner/work/actual/actual/packages/loot-core/src/platform/server/connection/index.ts` | 📉 -5 B (-0.16%) | 3.06 kB → 3.05 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/index.ts` | 📉 -3 B (-0.32%) | 934 B → 931 B `home/runner/work/actual/actual/packages/loot-core/src/server/importers/actual.ts` | 📉 -3 B (-0.42%) | 710 B → 707 B `home/runner/work/actual/actual/packages/loot-core/src/platform/server/fetch/index.ts` | 📉 -2 B (-0.53%) | 374 B → 372 B `home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts` | 📉 -171 B (-0.82%) | 20.34 kB → 20.17 kB `home/runner/work/actual/actual/packages/loot-core/src/server/api.ts` | 📉 -507 B (-2.20%) | 22.53 kB → 22.03 kB `home/runner/work/actual/actual/packages/loot-core/src/server/main.ts` | 📉 -165 B (-3.47%) | 4.64 kB → 4.48 kB `home/runner/work/actual/actual/packages/loot-core/src/server/payees/app.ts` | 📉 -354 B (-5.85%) | 5.91 kB → 5.57 kB `home/runner/work/actual/actual/packages/loot-core/src/server/main-app.ts` | 🔥 -249 B (-100%) | 249 B → 0 B </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.D1FeFhuH.js | 0 B → 4.83 MB (+4.83 MB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.Dmj0rSrb.js | 4.83 MB → 0 B (-4.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 ----------- | ----------------- | --------- 4 | 4.06 MB → 4.06 MB (-500 B) | -0.01% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/server/app.ts` | 📈 +697 B (+55.72%) | 1.22 kB → 1.9 kB `home/runner/work/actual/actual/packages/loot-core/src/server/mutators.ts` | 📈 +130 B (+6.52%) | 1.95 kB → 2.07 kB `home/runner/work/actual/actual/packages/loot-core/src/server/main.ts` | 📈 +71 B (+2.01%) | 3.44 kB → 3.51 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts` | 📈 +23 B (+0.24%) | 9.17 kB → 9.2 kB `home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts` | 📈 +15 B (+0.11%) | 13.35 kB → 13.37 kB `home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts` | 📉 -8 B (-0.04%) | 21.31 kB → 21.3 kB `home/runner/work/actual/actual/packages/loot-core/src/server/budgetfiles/app.ts` | 📉 -6 B (-0.06%) | 10.45 kB → 10.45 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts` | 📉 -17 B (-0.07%) | 24.12 kB → 24.1 kB `home/runner/work/actual/actual/packages/loot-core/src/server/util/budget-name.ts` | 📉 -1 B (-0.09%) | 1.12 kB → 1.12 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/index.ts` | 📉 -3 B (-0.33%) | 913 B → 910 B `home/runner/work/actual/actual/packages/loot-core/src/server/importers/actual.ts` | 📉 -3 B (-0.43%) | 700 B → 697 B `home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts` | 📉 -171 B (-0.85%) | 19.71 kB → 19.55 kB `home/runner/work/actual/actual/packages/loot-core/src/server/api.ts` | 📉 -489 B (-2.17%) | 21.96 kB → 21.48 kB `home/runner/work/actual/actual/packages/loot-core/src/server/payees/app.ts` | 📉 -312 B (-5.22%) | 5.84 kB → 5.54 kB `home/runner/work/actual/actual/packages/loot-core/src/server/main-app.ts` | 🔥 -426 B (-100%) | 426 B → 0 B </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** Asset | File Size | % Changed ----- | --------- | --------- index.js | 3.84 MB → 3.84 MB (-500 B) | -0.01% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- from-Bl-Hslp4.js | 167.73 kB | 0% multipart-parser-BnDysoMr.js | 8.1 kB | 0% src-iMkUmuwR.js | 43.64 kB | 0% </div> </details> --- #### cli **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 7.88 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 ----- | --------- | --------- cli.js | 7.88 MB | 0% </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-04-16 18:45:10 -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#25646