[PR #5786] [CLOSED] [WIP] Frontend plugins Support [4/10]: Plugins Core Package #47937

Closed
opened 2026-04-26 09:53:59 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/5786
Author: @lelemm
Created: 9/24/2025
Status: Closed

Base: masterHead: feat/plugins/plugins-core-package


📝 Commits (10+)

📊 Changes

59 files changed (+2472 additions, -441 deletions)

View changed files

📝 .github/workflows/build.yml (+32 -0)
📝 eslint.config.mjs (+2 -0)
📝 package.json (+1 -0)
📝 packages/api/tsconfig.dist.json (+1 -1)
📝 packages/component-library/package.json (+2 -1)
packages/component-library/src/Modal.ts (+11 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-4-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-5-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-6-chromium-linux.png (+0 -0)
📝 packages/desktop-client/src/spreadsheet/bindings.ts (+1 -2)
📝 packages/desktop-client/src/spreadsheet/index.ts (+8 -119)
📝 packages/loot-core/src/shared/query.ts (+7 -176)
📝 packages/loot-core/src/types/models/account.ts (+5 -25)
📝 packages/loot-core/src/types/models/category-group.ts (+1 -11)
📝 packages/loot-core/src/types/models/category.ts (+1 -13)
📝 packages/loot-core/src/types/models/payee.ts (+1 -10)
📝 packages/loot-core/src/types/models/rule.ts (+18 -1)
📝 packages/loot-core/src/types/models/schedule.ts (+6 -49)
📝 packages/loot-core/src/types/util.ts (+1 -1)
📝 packages/loot-core/tsconfig.api.json (+0 -1)

...and 39 more files

📄 Description

  • PR 1: Basic CORS Proxy Structure
  • PR 2: Plugin Service Worker & PWA Infrastructure
  • PR 3: System-Wide Feature Flag System + Frontend plugins feature flag
  • PR 4: Plugins Core Package (This PR)
  • PR 5: Update loot-core to clean-up reexport references shared-types and query packages
  • PR 6: Update desktop-client to clean-up reexport references shared-types and query packages
  • PR 7: Plugin runtime on desktop-client (module federation)
  • PR 8: Plugins frontend pages
  • PR 9: Plugin example
  • PR 10: Integration fixes and documentation

This is the package from plugins.
Basically, this new package will be imported by plugin authors to have access to types and initialize the plugin with the Actual Budget context.
This must provide features for: plugins authors, desktop-client and loot-core.
That being said, some types will move from desktop-client and loot-core, in PR5 and PR6, to plugins-core. This is important so we can share typescript types between the host (Actual budget) and the plugins.

There is very important module called middeware.ts. This module is responsible of doing the bridge between the host and the plugin. This way, we can control the rendering of plugin components without having to expose the containers where react will render and the most important, the plugin author does not have to worry about rendering the plugin components into DOM manually. The JSX is transparent for plujgin authors.

middleware can be used to try/catch problems to avoid plugins breaking the host (not implemented)


🔄 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/5786 **Author:** [@lelemm](https://github.com/lelemm) **Created:** 9/24/2025 **Status:** ❌ Closed **Base:** `master` ← **Head:** `feat/plugins/plugins-core-package` --- ### 📝 Commits (10+) - [`2ee1a61`](https://github.com/actualbudget/actual/commit/2ee1a616898a5032e34f51c4a6dfde1c967d79f3) Plugins-core - [`d6a7a89`](https://github.com/actualbudget/actual/commit/d6a7a892f0a01e264a4972d5be72898ff59420eb) Code review - [`e659ed0`](https://github.com/actualbudget/actual/commit/e659ed055445c3f4b33fd88aa80d7e4a9efe99ec) Change on workflow - [`280965f`](https://github.com/actualbudget/actual/commit/280965f9a064022a5eddef4fa955802709fefa18) Code Review suggestion - [`434ba52`](https://github.com/actualbudget/actual/commit/434ba5221dda15aafd12b64e143089f5c1f21e30) Code review - [`ac07adf`](https://github.com/actualbudget/actual/commit/ac07adfff627ba9cf8180c2302de309b711a1475) Update VRT screenshots - [`e8c4489`](https://github.com/actualbudget/actual/commit/e8c448965750b8a8606a453fc83feb6b027abb34) Update VRT screenshots - [`c25e8c2`](https://github.com/actualbudget/actual/commit/c25e8c2df51573f7d12391938b04e87b2b0dbaa8) update yarn.lock - [`f212559`](https://github.com/actualbudget/actual/commit/f212559eece1ca3b47b4bb63da01bcab43d2df06) code review - [`cf28d05`](https://github.com/actualbudget/actual/commit/cf28d05ba79f6c572ce056ef5ba0f4b2e436f8c4) Merge remote-tracking branch 'origin/master' into feat/plugins/plugins-core-package ### 📊 Changes **59 files changed** (+2472 additions, -441 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/build.yml` (+32 -0) 📝 `eslint.config.mjs` (+2 -0) 📝 `package.json` (+1 -0) 📝 `packages/api/tsconfig.dist.json` (+1 -1) 📝 `packages/component-library/package.json` (+2 -1) ➕ `packages/component-library/src/Modal.ts` (+11 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-4-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-5-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-6-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/src/spreadsheet/bindings.ts` (+1 -2) 📝 `packages/desktop-client/src/spreadsheet/index.ts` (+8 -119) 📝 `packages/loot-core/src/shared/query.ts` (+7 -176) 📝 `packages/loot-core/src/types/models/account.ts` (+5 -25) 📝 `packages/loot-core/src/types/models/category-group.ts` (+1 -11) 📝 `packages/loot-core/src/types/models/category.ts` (+1 -13) 📝 `packages/loot-core/src/types/models/payee.ts` (+1 -10) 📝 `packages/loot-core/src/types/models/rule.ts` (+18 -1) 📝 `packages/loot-core/src/types/models/schedule.ts` (+6 -49) 📝 `packages/loot-core/src/types/util.ts` (+1 -1) 📝 `packages/loot-core/tsconfig.api.json` (+0 -1) _...and 39 more files_ </details> ### 📄 Description - [x] ~PR 1: Basic CORS Proxy Structure~ - [x] PR 2: Plugin Service Worker & PWA Infrastructure - [x] PR 3: System-Wide Feature Flag System + Frontend plugins feature flag - [x] PR 4: Plugins Core Package (**This PR**) - [ ] PR 5: Update `loot-core` to clean-up reexport references `shared-types` and `query` packages - [ ] PR 6: Update `desktop-client` to clean-up reexport references `shared-types` and `query` packages - [ ] PR 7: Plugin runtime on desktop-client (module federation) - [ ] PR 8: Plugins frontend pages - [ ] PR 9: Plugin example - [ ] PR 10: Integration fixes and documentation This is **the** package from plugins. Basically, this new package will be imported by plugin authors to have access to types and initialize the plugin with the Actual Budget context. This must provide features for: plugins authors, desktop-client and loot-core. That being said, some types will move from desktop-client and loot-core, in PR5 and PR6, to plugins-core. This is important so we can share typescript types between the host (Actual budget) and the plugins. There is **very** important module called `middeware.ts`. This module is responsible of doing the bridge between the host and the plugin. This way, we can control the rendering of plugin components without having to expose the containers where react will render and the most important, the plugin author does not have to worry about rendering the plugin components into DOM manually. The JSX is transparent for plujgin authors. `middleware` can be used to try/catch problems to avoid plugins breaking the host (not implemented) --- <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-26 09:53:59 -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#47937