[PR #6921] Add account sidebar grouping #21180

Open
opened 2026-04-14 21:56:13 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/6921
Author: @StephenBrown2
Created: 2/9/2026
Status: 🔄 Open

Base: masterHead: push-mmurmkkprwsm


📝 Commits (6)

  • fd274e6 [AI] Add account sidebar grouping
  • b31c4e4 [AI] Minimize subgroup diff while keeping tree/autocomplete architecture
  • d7d666f [AI] Simplify account subgroup UI code paths
  • 859622b [autofix.ci] apply automated fixes
  • eb7b7fb Address coderabbit
  • 7962d1f [AI] test(sidebar): stabilize account expansion toggle coverage

📊 Changes

45 files changed (+2801 additions, -494 deletions)

View changed files

📝 .gitignore (+3 -0)
📝 packages/component-library/src/theme.ts (+1 -0)
📝 packages/desktop-client/e2e/accounts.mobile.test.ts (+3 -1)
📝 packages/desktop-client/e2e/page-models/mobile-accounts-page.ts (+5 -1)
📝 packages/desktop-client/e2e/page-models/navigation.ts (+9 -0)
packages/desktop-client/src/accounts/accountSubgroups.ts (+54 -0)
📝 packages/desktop-client/src/accounts/index.ts (+1 -0)
📝 packages/desktop-client/src/accounts/mutations.ts (+37 -1)
packages/desktop-client/src/components/autocomplete/AccountSubgroupAutocomplete.tsx (+537 -0)
📝 packages/desktop-client/src/components/autocomplete/Autocomplete.tsx (+4 -2)
📝 packages/desktop-client/src/components/mobile/accounts/AccountsPage.tsx (+197 -138)
📝 packages/desktop-client/src/components/modals/AccountMenuModal.tsx (+13 -0)
📝 packages/desktop-client/src/components/modals/CreateAccountModal.tsx (+30 -32)
📝 packages/desktop-client/src/components/modals/CreateLocalAccountModal.tsx (+32 -0)
📝 packages/desktop-client/src/components/sidebar/Account.tsx (+192 -175)
packages/desktop-client/src/components/sidebar/AccountGroupHeader.tsx (+119 -0)
packages/desktop-client/src/components/sidebar/AccountSubgroupHeader.tsx (+120 -0)
packages/desktop-client/src/components/sidebar/Accounts.test.tsx (+222 -0)
📝 packages/desktop-client/src/components/sidebar/Accounts.tsx (+679 -126)
packages/desktop-client/src/components/sidebar/ExpandChevron.tsx (+55 -0)

...and 25 more files

📄 Description

Description

Add account subgrouping as a first-class feature across account creation, editing, persistence, and account list/sidebar organization.

This includes:

  • A new account_subgroups database table plus migration, and an accounts.subgroup column with tombstone triggers to keep subgroup lifecycle in sync with account usage.
  • Server/db support to create/reuse subgroup records, return subgroup sort metadata, update subgroup values, and reorder subgroup groups (account-subgroup-move).
  • Import and sync integration so subgroup names are normalized and populated from external account subtype/type data (YNAB4, YNAB5, Pluggy.ai).
  • New desktop subgroup autocomplete (AccountSubgroupAutocomplete) with "In Use" and suggested options, create-new subgroup behavior, and consistent title-case normalization.
  • UI updates in account creation/edit flows (create local account and account menu) to assign subgroup values.
  • Sidebar and mobile accounts grouping by subgroup, including expand/collapse behavior and drag-and-drop support for both accounts and subgroup sections.
  • Additional UI primitives/styles for subgroup headers and expand chevrons, plus related tests/E2E updates.

Scope highlights:

  • packages/desktop-client: sidebar tree grouping, mobile account grouping, subgroup autocomplete, account modals, spreadsheet bindings, themes, and E2E/page models.
  • packages/loot-core: subgroup migration, db access, account app/api models, importer plumbing, sync/property tests, and new subgroup-related types/utilities.

Fixes #1683
Fixes #2021
Fixes #3025

Testing

  • Updated/added tests for subgroup behavior, including:
    • sidebar subgroup expansion/collapse coverage (Accounts.test.tsx)
    • normalization utilities (normalisation.test.ts)
    • e2e account flow updates for subgroup selection and grouped account list assertions.
  • Manual testing performed for:
    • creating and editing accounts with subgroup assignment,
    • dragging accounts between subgroups,
    • reordering subgroup headers,
    • mobile/sidebar subgroup grouping and totals.

Checklist

  • Release notes added (upcoming-release-notes/6921.md)
  • No obvious regressions in affected areas
  • Self-review has been performed - I understand what each line of code does and why it is needed

Screenshots

ezgif-169bc89e28641cd3

Additional screenshots (slightly outdated, but representative). See VRT screenshots or Deploy Preview for current visuals.

Account sidebar for test budget

image

Collapse/expand behavior

image image image

Subgroup management (rename/delete)

image image

Subgroup assignment and drag between groups

image image image image

Custom subgroups in autocomplete

image image

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 27 14.85 MB → 14.95 MB (+101.76 kB) +0.67%
loot-core 1 5.82 MB → 5.83 MB (+6.25 kB) +0.10%
api 1 4.43 MB → 4.44 MB (+5.59 kB) +0.12%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
27 14.85 MB → 14.95 MB (+101.76 kB) +0.67%
Changeset
File Δ Size
node_modules/react-aria-components/dist/Tree.mjs 🆕 +29.11 kB 0 B → 29.11 kB
src/components/autocomplete/AccountSubgroupAutocomplete.tsx 🆕 +19.75 kB 0 B → 19.75 kB
node_modules/react-aria-components/dist/TreeDropTargetDelegate.mjs 🆕 +10.25 kB 0 B → 10.25 kB
src/components/sidebar/AccountSubgroupHeader.tsx 🆕 +4.98 kB 0 B → 4.98 kB
src/components/sidebar/AccountGroupHeader.tsx 🆕 +4.54 kB 0 B → 4.54 kB
node_modules/@react-stately/tree/dist/TreeCollection.mjs 🆕 +2.91 kB 0 B → 2.91 kB
node_modules/@react-stately/tree/dist/useTreeState.mjs 🆕 +2.32 kB 0 B → 2.32 kB
node_modules/@react-aria/tree/dist/useTreeItem.mjs 🆕 +1.93 kB 0 B → 1.93 kB
src/components/sidebar/ExpandChevron.tsx 🆕 +1.68 kB 0 B → 1.68 kB
node_modules/@react-aria/tree/dist/intlStrings.mjs 🆕 +1.43 kB 0 B → 1.43 kB
src/accounts/accountSubgroups.ts 🆕 +1.14 kB 0 B → 1.14 kB
node_modules/@react-aria/tree/dist/useTree.mjs 🆕 +875 B 0 B → 875 B
node_modules/@react-aria/tree/dist/bg-BG.mjs 🆕 +231 B 0 B → 231 B
node_modules/@react-aria/tree/dist/ru-RU.mjs 🆕 +231 B 0 B → 231 B
node_modules/@react-aria/tree/dist/uk-UA.mjs 🆕 +231 B 0 B → 231 B
node_modules/@react-aria/tree/dist/el-GR.mjs 🆕 +217 B 0 B → 217 B
node_modules/@react-aria/tree/dist/he-IL.mjs 🆕 +161 B 0 B → 161 B
node_modules/@react-aria/tree/dist/ja-JP.mjs 🆕 +161 B 0 B → 161 B
node_modules/@react-aria/tree/dist/ar-AE.mjs 🆕 +154 B 0 B → 154 B
node_modules/@react-aria/tree/dist/ko-KR.mjs 🆕 +145 B 0 B → 145 B
node_modules/@react-aria/tree/dist/ro-RO.mjs 🆕 +140 B 0 B → 140 B
node_modules/@react-aria/tree/dist/zh-CN.mjs 🆕 +137 B 0 B → 137 B
node_modules/@react-aria/tree/dist/zh-TW.mjs 🆕 +137 B 0 B → 137 B
node_modules/@react-aria/tree/dist/hu-HU.mjs 🆕 +133 B 0 B → 133 B
node_modules/@react-aria/tree/dist/lv-LV.mjs 🆕 +131 B 0 B → 131 B
node_modules/@react-aria/tree/dist/sk-SK.mjs 🆕 +131 B 0 B → 131 B
node_modules/@react-aria/tree/dist/lt-LT.mjs 🆕 +130 B 0 B → 130 B
node_modules/@react-aria/tree/dist/hr-HR.mjs 🆕 +129 B 0 B → 129 B
node_modules/@react-aria/tree/dist/fr-FR.mjs 🆕 +128 B 0 B → 128 B
node_modules/@react-aria/tree/dist/pl-PL.mjs 🆕 +127 B 0 B → 127 B
node_modules/@react-aria/tree/dist/nl-NL.mjs 🆕 +125 B 0 B → 125 B
node_modules/@react-aria/tree/dist/tr-TR.mjs 🆕 +125 B 0 B → 125 B
node_modules/@react-aria/tree/dist/cs-CZ.mjs 🆕 +124 B 0 B → 124 B
node_modules/@react-aria/tree/dist/de-DE.mjs 🆕 +124 B 0 B → 124 B
node_modules/@react-aria/tree/dist/fi-FI.mjs 🆕 +124 B 0 B → 124 B
node_modules/@react-aria/tree/dist/sr-SP.mjs 🆕 +124 B 0 B → 124 B
node_modules/@react-aria/tree/dist/sl-SI.mjs 🆕 +123 B 0 B → 123 B
node_modules/@react-aria/tree/dist/pt-BR.mjs 🆕 +121 B 0 B → 121 B
node_modules/@react-aria/tree/dist/pt-PT.mjs 🆕 +121 B 0 B → 121 B
node_modules/@react-aria/tree/dist/sv-SE.mjs 🆕 +121 B 0 B → 121 B
node_modules/@react-aria/tree/dist/es-ES.mjs 🆕 +120 B 0 B → 120 B
node_modules/@react-aria/tree/dist/it-IT.mjs 🆕 +120 B 0 B → 120 B
node_modules/@react-aria/tree/dist/en-US.mjs 🆕 +119 B 0 B → 119 B
node_modules/@react-aria/tree/dist/et-EE.mjs 🆕 +118 B 0 B → 118 B
node_modules/@react-aria/tree/dist/da-DK.mjs 🆕 +115 B 0 B → 115 B
node_modules/@react-aria/tree/dist/nb-NO.mjs 🆕 +115 B 0 B → 115 B
src/components/sidebar/Accounts.tsx 📈 +10.66 kB (+123.24%) 8.65 kB → 19.3 kB
src/components/modals/CreateLocalAccountModal.tsx 📈 +1.11 kB (+16.55%) 6.7 kB → 7.81 kB
src/components/mobile/accounts/AccountsPage.tsx 📈 +2.12 kB (+9.81%) 21.64 kB → 23.77 kB
src/spreadsheet/bindings.ts 📈 +419 B (+8.06%) 5.08 kB → 5.49 kB
src/accounts/mutations.ts 📈 +1.1 kB (+5.02%) 21.94 kB → 23.04 kB
src/components/modals/AccountMenuModal.tsx 📈 +448 B (+4.21%) 10.38 kB → 10.82 kB
home/runner/work/actual/actual/packages/component-library/src/theme.ts 📈 +71 B (+0.56%) 12.32 kB → 12.39 kB
src/hooks/useFailedAccounts.ts 📈 +2 B (+0.55%) 365 B → 367 B
src/style/themes/development.ts 📈 +45 B (+0.49%) 8.9 kB → 8.94 kB
src/style/themes/dark.ts 📈 +45 B (+0.49%) 8.93 kB → 8.97 kB
src/style/themes/midnight.ts 📈 +43 B (+0.49%) 8.54 kB → 8.59 kB
src/style/themes/light.ts 📈 +45 B (+0.49%) 8.99 kB → 9.03 kB
src/components/modals/CreateAccountModal.tsx 📈 +55 B (+0.34%) 15.98 kB → 16.03 kB
src/components/sidebar/Account.tsx 📈 +39 B (+0.28%) 13.37 kB → 13.41 kB
src/components/autocomplete/PayeeAutocomplete.tsx 📈 +16 B (+0.09%) 17.02 kB → 17.04 kB
node_modules/@react-aria/dnd/dist/useDraggableItem.mjs 📈 +4 B (+0.07%) 5.34 kB → 5.34 kB
src/components/rules/RuleRow.tsx 📈 +2 B (+0.02%) 10.83 kB → 10.83 kB
src/components/rules/RuleEditor.tsx 📈 +2 B (+0.00%) 49.43 kB → 49.43 kB
src/components/sidebar/SecondaryItem.tsx 📉 -6 B (-0.20%) 2.92 kB → 2.91 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/index.js 9.54 MB → 9.92 MB (+392.49 kB) +4.02%

Smaller

Asset File Size % Changed
static/js/narrow.js 637.77 kB → 347.04 kB (-290.73 kB) -45.58%

Unchanged

Asset File Size % Changed
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 188.15 kB 0%
static/js/da.js 106.35 kB 0%
static/js/de.js 180.07 kB 0%
static/js/en-GB.js 7.18 kB 0%
static/js/en.js 170.37 kB 0%
static/js/es.js 174.55 kB 0%
static/js/fr.js 179.6 kB 0%
static/js/it.js 171.16 kB 0%
static/js/nb-NO.js 156.96 kB 0%
static/js/nl.js 106.37 kB 0%
static/js/pl.js 88.37 kB 0%
static/js/pt-BR.js 154.22 kB 0%
static/js/th.js 181.87 kB 0%
static/js/uk.js 214.74 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/TransactionList.js 106.22 kB 0%
static/js/wide.js 164.15 kB 0%
static/js/AppliedFilters.js 9.71 kB 0%
static/js/usePayeeRuleCounts.js 10.04 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.82 MB → 5.83 MB (+6.25 kB) +0.10%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/shared/normalisation.ts 📈 +1.06 kB (+841.09%) 129 B → 1.19 kB
home/runner/work/actual/actual/packages/loot-core/src/server/models.ts 📈 +799 B (+22.28%) 3.5 kB → 4.28 kB
home/runner/work/actual/actual/packages/loot-core/src/server/db/index.ts 📈 +1.61 kB (+8.97%) 17.97 kB → 19.59 kB
home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts 📈 +1.97 kB (+7.21%) 27.28 kB → 29.24 kB
home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema/index.ts 📈 +205 B (+1.73%) 11.57 kB → 11.77 kB
home/runner/work/actual/actual/packages/loot-core/src/server/api.ts 📈 +270 B (+1.02%) 25.96 kB → 26.22 kB
home/runner/work/actual/actual/packages/loot-core/src/server/api-models.ts 📈 +46 B (+0.99%) 4.52 kB → 4.56 kB
home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts 📈 +182 B (+0.71%) 25.08 kB → 25.26 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts 📈 +77 B (+0.68%) 11.1 kB → 11.17 kB
home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts 📈 +70 B (+0.24%) 28.75 kB → 28.81 kB
View detailed bundle breakdown

Added

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

Removed

Asset File Size % Changed
kcab.worker.BwrdDDMW.js 5.82 MB → 0 B (-5.82 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 4.43 MB → 4.44 MB (+5.59 kB) +0.12%
Changeset
File Δ Size
src/shared/normalisation.ts 📈 +909 B (+776.92%) 117 B → 1 kB
src/server/models.ts 📈 +687 B (+21.98%) 3.05 kB → 3.72 kB
src/server/db/index.ts 📈 +1.47 kB (+9.18%) 16.04 kB → 17.51 kB
src/server/accounts/app.ts 📈 +1.79 kB (+7.70%) 23.3 kB → 25.1 kB
src/server/aql/schema/index.ts 📈 +177 B (+1.66%) 10.41 kB → 10.58 kB
src/server/api.ts 📈 +246 B (+1.06%) 22.72 kB → 22.96 kB
src/server/api-models.ts 📈 +42 B (+1.06%) 3.89 kB → 3.93 kB
src/mocks/budget.ts 📈 +182 B (+0.80%) 22.28 kB → 22.46 kB
src/server/importers/ynab4.ts 📈 +73 B (+0.72%) 9.92 kB → 10 kB
src/server/importers/ynab5.ts 📈 +66 B (+0.25%) 25.69 kB → 25.75 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
bundle.api.js 4.43 MB → 4.44 MB (+5.59 kB) +0.12%

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/6921 **Author:** [@StephenBrown2](https://github.com/StephenBrown2) **Created:** 2/9/2026 **Status:** 🔄 Open **Base:** `master` ← **Head:** `push-mmurmkkprwsm` --- ### 📝 Commits (6) - [`fd274e6`](https://github.com/actualbudget/actual/commit/fd274e6d6f06bffae76da0b14e23fbbf0be26202) [AI] Add account sidebar grouping - [`b31c4e4`](https://github.com/actualbudget/actual/commit/b31c4e42f06fa43cb9c6a5814cdc577af5099f3d) [AI] Minimize subgroup diff while keeping tree/autocomplete architecture - [`d7d666f`](https://github.com/actualbudget/actual/commit/d7d666f1fa597c63b2ea071470f34103eb406846) [AI] Simplify account subgroup UI code paths - [`859622b`](https://github.com/actualbudget/actual/commit/859622b07ac2b9aacbdd5f6e71fb4ac258069975) [autofix.ci] apply automated fixes - [`eb7b7fb`](https://github.com/actualbudget/actual/commit/eb7b7fba81ad6914d24221e98e3e9554def1d01a) Address coderabbit - [`7962d1f`](https://github.com/actualbudget/actual/commit/7962d1f0152b3a38ebe6b0e1d839bb6c8de97787) [AI] test(sidebar): stabilize account expansion toggle coverage ### 📊 Changes **45 files changed** (+2801 additions, -494 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+3 -0) 📝 `packages/component-library/src/theme.ts` (+1 -0) 📝 `packages/desktop-client/e2e/accounts.mobile.test.ts` (+3 -1) 📝 `packages/desktop-client/e2e/page-models/mobile-accounts-page.ts` (+5 -1) 📝 `packages/desktop-client/e2e/page-models/navigation.ts` (+9 -0) ➕ `packages/desktop-client/src/accounts/accountSubgroups.ts` (+54 -0) 📝 `packages/desktop-client/src/accounts/index.ts` (+1 -0) 📝 `packages/desktop-client/src/accounts/mutations.ts` (+37 -1) ➕ `packages/desktop-client/src/components/autocomplete/AccountSubgroupAutocomplete.tsx` (+537 -0) 📝 `packages/desktop-client/src/components/autocomplete/Autocomplete.tsx` (+4 -2) 📝 `packages/desktop-client/src/components/mobile/accounts/AccountsPage.tsx` (+197 -138) 📝 `packages/desktop-client/src/components/modals/AccountMenuModal.tsx` (+13 -0) 📝 `packages/desktop-client/src/components/modals/CreateAccountModal.tsx` (+30 -32) 📝 `packages/desktop-client/src/components/modals/CreateLocalAccountModal.tsx` (+32 -0) 📝 `packages/desktop-client/src/components/sidebar/Account.tsx` (+192 -175) ➕ `packages/desktop-client/src/components/sidebar/AccountGroupHeader.tsx` (+119 -0) ➕ `packages/desktop-client/src/components/sidebar/AccountSubgroupHeader.tsx` (+120 -0) ➕ `packages/desktop-client/src/components/sidebar/Accounts.test.tsx` (+222 -0) 📝 `packages/desktop-client/src/components/sidebar/Accounts.tsx` (+679 -126) ➕ `packages/desktop-client/src/components/sidebar/ExpandChevron.tsx` (+55 -0) _...and 25 more files_ </details> ### 📄 Description ## Description Add account subgrouping as a first-class feature across account creation, editing, persistence, and account list/sidebar organization. This includes: - A new `account_subgroups` database table plus migration, and an `accounts.subgroup` column with tombstone triggers to keep subgroup lifecycle in sync with account usage. - Server/db support to create/reuse subgroup records, return subgroup sort metadata, update subgroup values, and reorder subgroup groups (`account-subgroup-move`). - Import and sync integration so subgroup names are normalized and populated from external account subtype/type data (YNAB4, YNAB5, Pluggy.ai). - New desktop subgroup autocomplete (`AccountSubgroupAutocomplete`) with "In Use" and suggested options, create-new subgroup behavior, and consistent title-case normalization. - UI updates in account creation/edit flows (create local account and account menu) to assign subgroup values. - Sidebar and mobile accounts grouping by subgroup, including expand/collapse behavior and drag-and-drop support for both accounts and subgroup sections. - Additional UI primitives/styles for subgroup headers and expand chevrons, plus related tests/E2E updates. Scope highlights: - `packages/desktop-client`: sidebar tree grouping, mobile account grouping, subgroup autocomplete, account modals, spreadsheet bindings, themes, and E2E/page models. - `packages/loot-core`: subgroup migration, db access, account app/api models, importer plumbing, sync/property tests, and new subgroup-related types/utilities. ## Related issue(s) Fixes #1683 Fixes #2021 Fixes #3025 ## Testing - Updated/added tests for subgroup behavior, including: - sidebar subgroup expansion/collapse coverage (`Accounts.test.tsx`) - normalization utilities (`normalisation.test.ts`) - e2e account flow updates for subgroup selection and grouped account list assertions. - Manual testing performed for: - creating and editing accounts with subgroup assignment, - dragging accounts between subgroups, - reordering subgroup headers, - mobile/sidebar subgroup grouping and totals. ## Checklist - [x] Release notes added (`upcoming-release-notes/6921.md`) - [x] No obvious regressions in affected areas - [x] Self-review has been performed - I understand what each line of code does and why it is needed ## Screenshots ![ezgif-169bc89e28641cd3](https://github.com/user-attachments/assets/95208713-de32-43dc-9c4b-52c3c37e91e9) <details> <summary> Additional screenshots (slightly outdated, but representative). See VRT screenshots or <a href="https://deploy-preview-6921.demo.actualbudget.org/">Deploy Preview</a> for current visuals. </summary> ### Account sidebar for test budget <img width="238" height="462" alt="image" src="https://github.com/user-attachments/assets/3711894d-48bf-47c7-964d-0d43a849a62c" /> ### Collapse/expand behavior <img width="238" height="462" alt="image" src="https://github.com/user-attachments/assets/24d3568d-cb4d-4d96-b499-b8590f1fe7d8" /> <img width="236" height="364" alt="image" src="https://github.com/user-attachments/assets/8d997c72-9fc5-426a-9b82-cbbfc28dba17" /> <img width="250" height="114" alt="image" src="https://github.com/user-attachments/assets/2984b1e8-6e49-47ae-9316-7681d8ac0276" /> ### Subgroup management (rename/delete) <img width="265" height="352" alt="image" src="https://github.com/user-attachments/assets/b8104a7c-b7f6-4a60-9a59-0fb5e667efe1" /> <img width="265" height="548" alt="image" src="https://github.com/user-attachments/assets/544e309e-7df3-466c-96c4-301a9405986e" /> ### Subgroup assignment and drag between groups <img width="244" height="548" alt="image" src="https://github.com/user-attachments/assets/26296a84-b347-4d36-b366-1e9f9a50394f" /> <img width="244" height="548" alt="image" src="https://github.com/user-attachments/assets/79797017-41b8-45e6-b7f6-61c340142c28" /> <img width="244" height="548" alt="image" src="https://github.com/user-attachments/assets/da3cc7f1-14a4-4125-8e2f-a566c908017b" /> <img width="244" height="548" alt="image" src="https://github.com/user-attachments/assets/133f16ee-fc37-4c26-a961-d6bb60635cee" /> ### Custom subgroups in autocomplete <img width="505" height="264" alt="image" src="https://github.com/user-attachments/assets/02162079-290f-46ef-8cf6-e93eef71b52e" /> <img width="236" height="173" alt="image" src="https://github.com/user-attachments/assets/13a286ac-ebdf-4e53-a275-ccb6bf6d7e56" /> </details> <!--- actual-bot-sections ---> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 27 | 14.85 MB → 14.95 MB (+101.76 kB) | +0.67% loot-core | 1 | 5.82 MB → 5.83 MB (+6.25 kB) | +0.10% api | 1 | 4.43 MB → 4.44 MB (+5.59 kB) | +0.12% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 27 | 14.85 MB → 14.95 MB (+101.76 kB) | +0.67% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `node_modules/react-aria-components/dist/Tree.mjs` | 🆕 +29.11 kB | 0 B → 29.11 kB `src/components/autocomplete/AccountSubgroupAutocomplete.tsx` | 🆕 +19.75 kB | 0 B → 19.75 kB `node_modules/react-aria-components/dist/TreeDropTargetDelegate.mjs` | 🆕 +10.25 kB | 0 B → 10.25 kB `src/components/sidebar/AccountSubgroupHeader.tsx` | 🆕 +4.98 kB | 0 B → 4.98 kB `src/components/sidebar/AccountGroupHeader.tsx` | 🆕 +4.54 kB | 0 B → 4.54 kB `node_modules/@react-stately/tree/dist/TreeCollection.mjs` | 🆕 +2.91 kB | 0 B → 2.91 kB `node_modules/@react-stately/tree/dist/useTreeState.mjs` | 🆕 +2.32 kB | 0 B → 2.32 kB `node_modules/@react-aria/tree/dist/useTreeItem.mjs` | 🆕 +1.93 kB | 0 B → 1.93 kB `src/components/sidebar/ExpandChevron.tsx` | 🆕 +1.68 kB | 0 B → 1.68 kB `node_modules/@react-aria/tree/dist/intlStrings.mjs` | 🆕 +1.43 kB | 0 B → 1.43 kB `src/accounts/accountSubgroups.ts` | 🆕 +1.14 kB | 0 B → 1.14 kB `node_modules/@react-aria/tree/dist/useTree.mjs` | 🆕 +875 B | 0 B → 875 B `node_modules/@react-aria/tree/dist/bg-BG.mjs` | 🆕 +231 B | 0 B → 231 B `node_modules/@react-aria/tree/dist/ru-RU.mjs` | 🆕 +231 B | 0 B → 231 B `node_modules/@react-aria/tree/dist/uk-UA.mjs` | 🆕 +231 B | 0 B → 231 B `node_modules/@react-aria/tree/dist/el-GR.mjs` | 🆕 +217 B | 0 B → 217 B `node_modules/@react-aria/tree/dist/he-IL.mjs` | 🆕 +161 B | 0 B → 161 B `node_modules/@react-aria/tree/dist/ja-JP.mjs` | 🆕 +161 B | 0 B → 161 B `node_modules/@react-aria/tree/dist/ar-AE.mjs` | 🆕 +154 B | 0 B → 154 B `node_modules/@react-aria/tree/dist/ko-KR.mjs` | 🆕 +145 B | 0 B → 145 B `node_modules/@react-aria/tree/dist/ro-RO.mjs` | 🆕 +140 B | 0 B → 140 B `node_modules/@react-aria/tree/dist/zh-CN.mjs` | 🆕 +137 B | 0 B → 137 B `node_modules/@react-aria/tree/dist/zh-TW.mjs` | 🆕 +137 B | 0 B → 137 B `node_modules/@react-aria/tree/dist/hu-HU.mjs` | 🆕 +133 B | 0 B → 133 B `node_modules/@react-aria/tree/dist/lv-LV.mjs` | 🆕 +131 B | 0 B → 131 B `node_modules/@react-aria/tree/dist/sk-SK.mjs` | 🆕 +131 B | 0 B → 131 B `node_modules/@react-aria/tree/dist/lt-LT.mjs` | 🆕 +130 B | 0 B → 130 B `node_modules/@react-aria/tree/dist/hr-HR.mjs` | 🆕 +129 B | 0 B → 129 B `node_modules/@react-aria/tree/dist/fr-FR.mjs` | 🆕 +128 B | 0 B → 128 B `node_modules/@react-aria/tree/dist/pl-PL.mjs` | 🆕 +127 B | 0 B → 127 B `node_modules/@react-aria/tree/dist/nl-NL.mjs` | 🆕 +125 B | 0 B → 125 B `node_modules/@react-aria/tree/dist/tr-TR.mjs` | 🆕 +125 B | 0 B → 125 B `node_modules/@react-aria/tree/dist/cs-CZ.mjs` | 🆕 +124 B | 0 B → 124 B `node_modules/@react-aria/tree/dist/de-DE.mjs` | 🆕 +124 B | 0 B → 124 B `node_modules/@react-aria/tree/dist/fi-FI.mjs` | 🆕 +124 B | 0 B → 124 B `node_modules/@react-aria/tree/dist/sr-SP.mjs` | 🆕 +124 B | 0 B → 124 B `node_modules/@react-aria/tree/dist/sl-SI.mjs` | 🆕 +123 B | 0 B → 123 B `node_modules/@react-aria/tree/dist/pt-BR.mjs` | 🆕 +121 B | 0 B → 121 B `node_modules/@react-aria/tree/dist/pt-PT.mjs` | 🆕 +121 B | 0 B → 121 B `node_modules/@react-aria/tree/dist/sv-SE.mjs` | 🆕 +121 B | 0 B → 121 B `node_modules/@react-aria/tree/dist/es-ES.mjs` | 🆕 +120 B | 0 B → 120 B `node_modules/@react-aria/tree/dist/it-IT.mjs` | 🆕 +120 B | 0 B → 120 B `node_modules/@react-aria/tree/dist/en-US.mjs` | 🆕 +119 B | 0 B → 119 B `node_modules/@react-aria/tree/dist/et-EE.mjs` | 🆕 +118 B | 0 B → 118 B `node_modules/@react-aria/tree/dist/da-DK.mjs` | 🆕 +115 B | 0 B → 115 B `node_modules/@react-aria/tree/dist/nb-NO.mjs` | 🆕 +115 B | 0 B → 115 B `src/components/sidebar/Accounts.tsx` | 📈 +10.66 kB (+123.24%) | 8.65 kB → 19.3 kB `src/components/modals/CreateLocalAccountModal.tsx` | 📈 +1.11 kB (+16.55%) | 6.7 kB → 7.81 kB `src/components/mobile/accounts/AccountsPage.tsx` | 📈 +2.12 kB (+9.81%) | 21.64 kB → 23.77 kB `src/spreadsheet/bindings.ts` | 📈 +419 B (+8.06%) | 5.08 kB → 5.49 kB `src/accounts/mutations.ts` | 📈 +1.1 kB (+5.02%) | 21.94 kB → 23.04 kB `src/components/modals/AccountMenuModal.tsx` | 📈 +448 B (+4.21%) | 10.38 kB → 10.82 kB `home/runner/work/actual/actual/packages/component-library/src/theme.ts` | 📈 +71 B (+0.56%) | 12.32 kB → 12.39 kB `src/hooks/useFailedAccounts.ts` | 📈 +2 B (+0.55%) | 365 B → 367 B `src/style/themes/development.ts` | 📈 +45 B (+0.49%) | 8.9 kB → 8.94 kB `src/style/themes/dark.ts` | 📈 +45 B (+0.49%) | 8.93 kB → 8.97 kB `src/style/themes/midnight.ts` | 📈 +43 B (+0.49%) | 8.54 kB → 8.59 kB `src/style/themes/light.ts` | 📈 +45 B (+0.49%) | 8.99 kB → 9.03 kB `src/components/modals/CreateAccountModal.tsx` | 📈 +55 B (+0.34%) | 15.98 kB → 16.03 kB `src/components/sidebar/Account.tsx` | 📈 +39 B (+0.28%) | 13.37 kB → 13.41 kB `src/components/autocomplete/PayeeAutocomplete.tsx` | 📈 +16 B (+0.09%) | 17.02 kB → 17.04 kB `node_modules/@react-aria/dnd/dist/useDraggableItem.mjs` | 📈 +4 B (+0.07%) | 5.34 kB → 5.34 kB `src/components/rules/RuleRow.tsx` | 📈 +2 B (+0.02%) | 10.83 kB → 10.83 kB `src/components/rules/RuleEditor.tsx` | 📈 +2 B (+0.00%) | 49.43 kB → 49.43 kB `src/components/sidebar/SecondaryItem.tsx` | 📉 -6 B (-0.20%) | 2.92 kB → 2.91 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 9.54 MB → 9.92 MB (+392.49 kB) | +4.02% **Smaller** Asset | File Size | % Changed ----- | --------- | --------- static/js/narrow.js | 637.77 kB → 347.04 kB (-290.73 kB) | -45.58% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- 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 | 188.15 kB | 0% static/js/da.js | 106.35 kB | 0% static/js/de.js | 180.07 kB | 0% static/js/en-GB.js | 7.18 kB | 0% static/js/en.js | 170.37 kB | 0% static/js/es.js | 174.55 kB | 0% static/js/fr.js | 179.6 kB | 0% static/js/it.js | 171.16 kB | 0% static/js/nb-NO.js | 156.96 kB | 0% static/js/nl.js | 106.37 kB | 0% static/js/pl.js | 88.37 kB | 0% static/js/pt-BR.js | 154.22 kB | 0% static/js/th.js | 181.87 kB | 0% static/js/uk.js | 214.74 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/TransactionList.js | 106.22 kB | 0% static/js/wide.js | 164.15 kB | 0% static/js/AppliedFilters.js | 9.71 kB | 0% static/js/usePayeeRuleCounts.js | 10.04 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.82 MB → 5.83 MB (+6.25 kB) | +0.10% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/shared/normalisation.ts` | 📈 +1.06 kB (+841.09%) | 129 B → 1.19 kB `home/runner/work/actual/actual/packages/loot-core/src/server/models.ts` | 📈 +799 B (+22.28%) | 3.5 kB → 4.28 kB `home/runner/work/actual/actual/packages/loot-core/src/server/db/index.ts` | 📈 +1.61 kB (+8.97%) | 17.97 kB → 19.59 kB `home/runner/work/actual/actual/packages/loot-core/src/server/accounts/app.ts` | 📈 +1.97 kB (+7.21%) | 27.28 kB → 29.24 kB `home/runner/work/actual/actual/packages/loot-core/src/server/aql/schema/index.ts` | 📈 +205 B (+1.73%) | 11.57 kB → 11.77 kB `home/runner/work/actual/actual/packages/loot-core/src/server/api.ts` | 📈 +270 B (+1.02%) | 25.96 kB → 26.22 kB `home/runner/work/actual/actual/packages/loot-core/src/server/api-models.ts` | 📈 +46 B (+0.99%) | 4.52 kB → 4.56 kB `home/runner/work/actual/actual/packages/loot-core/src/mocks/budget.ts` | 📈 +182 B (+0.71%) | 25.08 kB → 25.26 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab4.ts` | 📈 +77 B (+0.68%) | 11.1 kB → 11.17 kB `home/runner/work/actual/actual/packages/loot-core/src/server/importers/ynab5.ts` | 📈 +70 B (+0.24%) | 28.75 kB → 28.81 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.Dk_Jjqpv.js | 0 B → 5.83 MB (+5.83 MB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.BwrdDDMW.js | 5.82 MB → 0 B (-5.82 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 | 4.43 MB → 4.44 MB (+5.59 kB) | +0.12% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `src/shared/normalisation.ts` | 📈 +909 B (+776.92%) | 117 B → 1 kB `src/server/models.ts` | 📈 +687 B (+21.98%) | 3.05 kB → 3.72 kB `src/server/db/index.ts` | 📈 +1.47 kB (+9.18%) | 16.04 kB → 17.51 kB `src/server/accounts/app.ts` | 📈 +1.79 kB (+7.70%) | 23.3 kB → 25.1 kB `src/server/aql/schema/index.ts` | 📈 +177 B (+1.66%) | 10.41 kB → 10.58 kB `src/server/api.ts` | 📈 +246 B (+1.06%) | 22.72 kB → 22.96 kB `src/server/api-models.ts` | 📈 +42 B (+1.06%) | 3.89 kB → 3.93 kB `src/mocks/budget.ts` | 📈 +182 B (+0.80%) | 22.28 kB → 22.46 kB `src/server/importers/ynab4.ts` | 📈 +73 B (+0.72%) | 9.92 kB → 10 kB `src/server/importers/ynab5.ts` | 📈 +66 B (+0.25%) | 25.69 kB → 25.75 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** Asset | File Size | % Changed ----- | --------- | --------- bundle.api.js | 4.43 MB → 4.44 MB (+5.59 kB) | +0.12% **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-04-14 21:56:13 -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#21180