[PR #8245] Adding visual improvements to excel formulas #136464

Open
opened 2026-06-17 21:15:38 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/8245
Author: @lelemm
Created: 6/17/2026
Status: 🔄 Open

Base: masterHead: feat/formulas-eyecandy


📝 Commits (3)

📊 Changes

5 files changed (+1925 additions, -58 deletions)

View changed files

📝 packages/desktop-client/src/components/formula/FormulaEditor.tsx (+443 -19)
📝 packages/desktop-client/src/components/formula/codeMirror-excelLanguage.tsx (+500 -39)
packages/desktop-client/src/components/formula/formulaBadgeRanges.test.ts (+347 -0)
packages/desktop-client/src/components/formula/formulaBadgeRanges.ts (+609 -0)
📝 packages/desktop-client/src/components/reports/reports/Formula.tsx (+26 -0)

📄 Description

Making the formula editor more consistent by using decorators and atomic ranges.

Some examples:
image

each badge/decorator, when makes sense, there is a popover:
image

image image image

For this to work, we extract the AST (Abstract Syntax Tree) from hyperformula, then check where in the tree we are and there is a token that can be converted to one of the possible decorators. This is valid only when the formula is valid, when invalid we fallback to a tokenizer to extract tokens and transform in decorators. As last resort we convert named expressions from hyperformula into badges


Now the ctrl+space suggestion popover is aware of the method and parameter that the cursor is

image

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 29 → 30 13.1 MB → 13.13 MB (+26.82 kB) +0.20%
loot-core 1 4.9 MB 0%
api 2 3.93 MB 0%
cli 1 8.02 MB 0%
crdt 1 11.12 kB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
29 → 30 13.1 MB → 13.13 MB (+26.82 kB) +0.20%
Changeset (largest 100 files by percent change)
File Δ Size
src/components/formula/formulaBadgeRanges.ts 🆕 +9.28 kB 0 B → 9.28 kB
src/components/formula/FormulaEditor.tsx 📈 +7.91 kB (+282.93%) 2.8 kB → 10.71 kB
node_modules/date-fns/getDay.js 📈 +116 B (+80.56%) 144 B → 260 B
src/components/formula/codeMirror-excelLanguage.tsx 📈 +8.93 kB (+34.42%) 25.94 kB → 34.86 kB
node_modules/date-fns/locale/en-US.js 📈 +49 B (+19.37%) 253 B → 302 B
src/components/reports/reports/Formula.tsx 📈 +646 B (+5.85%) 10.79 kB → 11.42 kB
node_modules/date-fns/locale/en-US/_lib/formatDistance.js 📈 +79 B (+4.76%) 1.62 kB → 1.7 kB
node_modules/date-fns/locale/en-US/_lib/formatLong.js 📈 +21 B (+2.90%) 724 B → 745 B
node_modules/@emotion/sheet/dist/emotion-sheet.esm.js 📈 +58 B (+2.63%) 2.15 kB → 2.21 kB
node_modules/date-fns/locale/en-US/_lib/match.js 📈 +73 B (+2.51%) 2.84 kB → 2.91 kB
node_modules/date-fns/locale/en-US/_lib/formatRelative.js 📈 +9 B (+2.47%) 365 B → 374 B
node_modules/date-fns/differenceInMilliseconds.js 📈 +4 B (+2.08%) 192 B → 196 B
node_modules/date-fns/locale/en-US/_lib/localize.js 📈 +60 B (+1.93%) 3.03 kB → 3.09 kB
node_modules/date-fns/compareAsc.js 📈 +4 B (+1.71%) 234 B → 238 B
node_modules/@marijn/find-cluster-break/src/index.js 📈 +61 B (+1.68%) 3.55 kB → 3.61 kB
node_modules/date-fns/formatDistanceToNow.js 📈 +3 B (+1.66%) 181 B → 184 B
home/runner/work/actual/actual/packages/loot-core/src/shared/rules.ts 📈 +71 B (+1.55%) 4.47 kB → 4.54 kB
node_modules/date-fns/toDate.js 📈 +2 B (+1.30%) 154 B → 156 B
node_modules/date-fns/_lib/defaultOptions.js 📈 +2 B (+1.28%) 156 B → 158 B
node_modules/date-fns/endOfDay.js 📈 +2 B (+1.05%) 191 B → 193 B
node_modules/ua-parser-js/src/main/ua-parser.mjs 📈 +446 B (+1.03%) 42.3 kB → 42.74 kB
node_modules/stylis/src/Utility.js 📈 +9 B (+0.89%) 1010 B → 1019 B
node_modules/date-fns/isLastDayOfMonth.js 📈 +2 B (+0.89%) 225 B → 227 B
node_modules/stylis/src/Tokenizer.js 📈 +22 B (+0.82%) 2.63 kB → 2.65 kB
home/runner/work/actual/actual/packages/component-library/src/tokens.ts 📈 +2 B (+0.82%) 245 B → 247 B
node_modules/@emotion/memoize/dist/emotion-memoize.esm.js 📈 +2 B (+0.81%) 246 B → 248 B
node_modules/react-i18next/dist/es/utils.js 📈 +16 B (+0.79%) 1.99 kB → 2 kB
node_modules/date-fns/endOfMonth.js 📈 +2 B (+0.71%) 283 B → 285 B
node_modules/date-fns/constants.js 📈 +4 B (+0.60%) 672 B → 676 B
node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js 📈 +2 B (+0.48%) 419 B → 421 B
node_modules/date-fns/differenceInCalendarMonths.js 📈 +2 B (+0.47%) 423 B → 425 B
node_modules/@emotion/css/dist/emotion-css.esm.js 📈 +2 B (+0.42%) 475 B → 477 B
node_modules/stylis/src/Parser.js 📈 +12 B (+0.28%) 4.17 kB → 4.18 kB
node_modules/immer/dist/immer.mjs 📈 +52 B (+0.26%) 19.53 kB → 19.58 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/schedules.ts 📈 +18 B (+0.26%) 6.88 kB → 6.9 kB
node_modules/react-i18next/dist/es/TransWithoutContext.js 📈 +36 B (+0.24%) 14.79 kB → 14.82 kB
node_modules/@tanstack/react-query/build/modern/useMutation.js 📈 +2 B (+0.22%) 920 B → 922 B
node_modules/date-fns/differenceInMonths.js 📈 +2 B (+0.22%) 920 B → 922 B
home/runner/work/actual/actual/packages/component-library/src/styles.ts 📈 +6 B (+0.20%) 2.99 kB → 2.99 kB
src/components/budget/goals/automationExamples.ts 📈 +2 B (+0.19%) 1.05 kB → 1.06 kB
node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js 📈 +15 B (+0.18%) 8.24 kB → 8.25 kB
src/components/budget/MonthsContext.tsx 📈 +2 B (+0.17%) 1.17 kB → 1.17 kB
node_modules/date-fns/formatDistance.js 📈 +5 B (+0.17%) 2.92 kB → 2.92 kB
node_modules/html-parse-stringify/dist/html-parse-stringify.module.js 📈 +4 B (+0.14%) 2.79 kB → 2.79 kB
node_modules/react-i18next/dist/es/useTranslation.js 📈 +8 B (+0.14%) 5.59 kB → 5.6 kB
src/components/budget/util.ts 📈 +4 B (+0.12%) 3.22 kB → 3.23 kB
node_modules/@tanstack/query-core/build/modern/mutationObserver.js 📈 +2 B (+0.06%) 3.11 kB → 3.11 kB
node_modules/react-redux/dist/react-redux.mjs 📈 +4 B (+0.05%) 7.22 kB → 7.22 kB
node_modules/@emotion/serialize/dist/emotion-serialize.esm.js 📈 +2 B (+0.04%) 4.62 kB → 4.62 kB
src/hooks/useCategoryScheduleGoalTemplateIndicator.ts 📈 +1 B (+0.04%) 2.69 kB → 2.69 kB
src/components/budget/goals/reducer.ts 📈 +2 B (+0.03%) 6.13 kB → 6.14 kB
node_modules/i18next/dist/esm/i18next.js 📈 +20 B (+0.03%) 72.1 kB → 72.12 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/util.ts 📈 +2 B (+0.02%) 9.04 kB → 9.04 kB
node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs 📈 +4 B (+0.01%) 31.81 kB → 31.81 kB
node_modules/recharts/es6/polar/Pie.js 📈 +2 B (+0.01%) 20.68 kB → 20.68 kB
src/components/reports/graphs/NetWorthGraph.tsx 📈 +2 B (+0.01%) 21.23 kB → 21.24 kB
src/components/modals/SelectLinkedAccountsModal.tsx 📈 +2 B (+0.00%) 43.51 kB → 43.51 kB
src/components/mobile/transactions/TransactionEdit.tsx 📉 -4 B (-0.01%) 71.59 kB → 71.59 kB
src/components/reports/reports/CustomReport.tsx 📉 -4 B (-0.01%) 42.29 kB → 42.29 kB
node_modules/react-stately/dist/private/color/Color.mjs 📉 -2 B (-0.01%) 19.91 kB → 19.91 kB
src/components/reports/reports/Sankey.tsx 📉 -4 B (-0.01%) 31.75 kB → 31.75 kB
node_modules/chevrotain/lib_esm/src/parse/grammar/interpreter.js 📉 -2 B (-0.01%) 15.83 kB → 15.82 kB
src/components/autocomplete/PayeeAutocomplete.tsx 📉 -3 B (-0.01%) 23 kB → 22.99 kB
src/components/select/DateSelect.tsx 📉 -2 B (-0.01%) 15.3 kB → 15.3 kB
src/components/modals/BudgetAutomationsModal/AutomationEditorPane.tsx 📉 -2 B (-0.01%) 13.99 kB → 13.99 kB
src/components/manager/BudgetFileSelection.tsx 📉 -4 B (-0.02%) 25.96 kB → 25.96 kB
src/components/autocomplete/Autocomplete.tsx 📉 -4 B (-0.02%) 24.48 kB → 24.47 kB
node_modules/@react-spring/core/dist/react-spring_core.modern.mjs 📉 -8 B (-0.02%) 47.27 kB → 47.27 kB
node_modules/lru-cache/dist/esm/browser/index.min.js 📉 -4 B (-0.02%) 23.36 kB → 23.35 kB
node_modules/chevrotain/lib_esm/src/scan/lexer_public.js 📉 -4 B (-0.02%) 22.11 kB → 22.11 kB
src/components/settings/index.tsx 📉 -2 B (-0.02%) 10.78 kB → 10.78 kB
node_modules/@react-spring/shared/dist/react-spring_shared.modern.mjs 📉 -4 B (-0.02%) 21.26 kB → 21.26 kB
node_modules/fzf/dist/fzf.es.js 📉 -4 B (-0.02%) 21.25 kB → 21.24 kB
src/components/budget/goals/editor/LimitAutomation.tsx 📉 -2 B (-0.02%) 10.18 kB → 10.18 kB
src/components/reports/reports/CashFlow.tsx 📉 -2 B (-0.02%) 9.27 kB → 9.27 kB
src/components/transactions/SimpleTransactionsTable.tsx 📉 -2 B (-0.02%) 8.82 kB → 8.82 kB
node_modules/chevrotain/lib_esm/src/parse/errors_public.js 📉 -2 B (-0.02%) 8.51 kB → 8.51 kB
src/components/reports/reports/CustomReportListCards.tsx 📉 -2 B (-0.02%) 8.37 kB → 8.37 kB
home/runner/work/actual/actual/packages/loot-core/src/shared/transactions.ts 📉 -2 B (-0.02%) 8.22 kB → 8.22 kB
node_modules/hyperformula/es/interpreter/plugin/3rdparty/jstat/jstat.mjs 📉 -4 B (-0.02%) 15.96 kB → 15.96 kB
src/components/reports/reports/GetCardData.tsx 📉 -2 B (-0.02%) 7.9 kB → 7.9 kB
src/components/reports/AccountSelector.tsx 📉 -4 B (-0.03%) 15.57 kB → 15.56 kB
src/components/manager/ManagementApp.tsx 📉 -2 B (-0.03%) 7.5 kB → 7.49 kB
node_modules/chevrotain/lib_esm/src/parse/grammar/lookahead.js 📉 -4 B (-0.03%) 14.17 kB → 14.17 kB
src/hooks/useScheduleEdit.ts 📉 -2 B (-0.03%) 6.5 kB → 6.5 kB
src/components/reports/SaveReport.tsx 📉 -4 B (-0.03%) 12.91 kB → 12.91 kB
node_modules/hyperformula/es/interpreter/plugin/ConditionalAggregationPlugin.mjs 📉 -2 B (-0.03%) 6.38 kB → 6.38 kB
node_modules/hyperformula/es/interpreter/ArithmeticHelper.mjs 📉 -6 B (-0.03%) 18.87 kB → 18.87 kB
src/components/common/Modal.tsx 📉 -4 B (-0.03%) 12.37 kB → 12.37 kB
node_modules/hyperformula/es/interpreter/CriterionFunctionCompute.mjs 📉 -2 B (-0.03%) 5.94 kB → 5.94 kB
src/components/reports/spreadsheets/summary-spreadsheet.ts 📉 -2 B (-0.04%) 5.57 kB → 5.57 kB
src/components/modals/ImportTransactionsModal/utils.ts 📉 -2 B (-0.04%) 5.14 kB → 5.14 kB
src/components/reports/reports/MarkdownCard.tsx 📉 -2 B (-0.04%) 5.11 kB → 5.11 kB
node_modules/@rschedule/core/es2015/generators.js 📉 -16 B (-0.04%) 39.61 kB → 39.6 kB
node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_engine.js 📉 -8 B (-0.04%) 19.49 kB → 19.48 kB
src/components/accounts/BalanceHistoryGraph.tsx 📉 -4 B (-0.04%) 9.4 kB → 9.4 kB
node_modules/chevrotain/lib_esm/src/parse/parser/traits/tree_builder.js 📉 -4 B (-0.04%) 9.34 kB → 9.34 kB
node_modules/chevrotain/lib_esm/src/parse/parser/traits/recoverable.js 📉 -4 B (-0.04%) 9.05 kB → 9.05 kB
src/components/reports/reports/Summary.tsx 📉 -12 B (-0.05%) 25.59 kB → 25.57 kB
node_modules/hyperformula/es/interpreter/plugin/StatisticalPlugin.mjs 📉 -10 B (-0.05%) 21.26 kB → 21.25 kB
View detailed bundle breakdown

Added

Asset File Size % Changed
static/js/useDateFormat.js 0 B → 2.89 MB (+2.89 MB) -
static/js/bootstrapHyperFormula.js 0 B → 302 B (+302 B) -

Removed

Asset File Size % Changed
static/js/extends.js 478.5 kB → 0 B (-478.5 kB) -100%

Bigger

Asset File Size % Changed
static/js/FormulaEditor.js 735.67 kB → 761.75 kB (+26.09 kB) +3.55%
static/js/ReportRouter.js 1.25 MB → 1.25 MB (+176 B) +0.01%

Smaller

Asset File Size % Changed
static/js/index.js 7.61 MB → 5.19 MB (-2.42 MB) -31.76%

Unchanged

Asset File Size % Changed
static/js/BackgroundImage.js 121.09 kB 0%
static/js/PayeeRuleCountLabel.js 7.1 kB 0%
static/js/TransactionList.js 85.25 kB 0%
static/js/_baseIsEqual.js 76.78 kB 0%
static/js/ca.js 179.71 kB 0%
static/js/da.js 100.19 kB 0%
static/js/de.js 176.61 kB 0%
static/js/en-GB.js 9.25 kB 0%
static/js/en.js 200.33 kB 0%
static/js/es.js 171.82 kB 0%
static/js/fr.js 171.39 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 158.13 kB 0%
static/js/narrow.js 358.88 kB 0%
static/js/nb-NO.js 141.55 kB 0%
static/js/nl.js 119.14 kB 0%
static/js/pt-BR.js 181.5 kB 0%
static/js/resize-observer.js 18.06 kB 0%
static/js/th.js 173.33 kB 0%
static/js/theme.js 31.02 kB 0%
static/js/uk.js 209.97 kB 0%
static/js/useTransactionBatchActions.js 9.71 kB 0%
static/js/wide.js 298.21 kB 0%
static/js/workbox-window.prod.es5.js 7.21 kB 0%
static/js/zh-Hans.js 113.26 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 4.9 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
kcab.worker.VDgbgKoY.js 4.9 MB 0%

api

Total

Files count Total bundle size % Changed
2 3.93 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
index.js 3.93 MB 0%
models.js 0 B 0%

cli

Total

Files count Total bundle size % Changed
1 8.02 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 8.02 MB 0%

crdt

Total

Files count Total bundle size % Changed
1 11.12 kB 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
index.js 11.12 kB 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/8245 **Author:** [@lelemm](https://github.com/lelemm) **Created:** 6/17/2026 **Status:** 🔄 Open **Base:** `master` ← **Head:** `feat/formulas-eyecandy` --- ### 📝 Commits (3) - [`528b65e`](https://github.com/actualbudget/actual/commit/528b65e15ddb88c396997cd562ee8efa601afe2f) Adding visual improvements to excel formulas - [`8642108`](https://github.com/actualbudget/actual/commit/8642108501ff9bd4b92289f7ffeb3c29b1cc80db) cursor aware fix - [`5c7eaa3`](https://github.com/actualbudget/actual/commit/5c7eaa311bbb0491f81efdb0037bde0b85011322) code clean up ### 📊 Changes **5 files changed** (+1925 additions, -58 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/src/components/formula/FormulaEditor.tsx` (+443 -19) 📝 `packages/desktop-client/src/components/formula/codeMirror-excelLanguage.tsx` (+500 -39) ➕ `packages/desktop-client/src/components/formula/formulaBadgeRanges.test.ts` (+347 -0) ➕ `packages/desktop-client/src/components/formula/formulaBadgeRanges.ts` (+609 -0) 📝 `packages/desktop-client/src/components/reports/reports/Formula.tsx` (+26 -0) </details> ### 📄 Description Making the formula editor more consistent by using decorators and atomic ranges. Some examples: <img width="798" height="139" alt="image" src="https://github.com/user-attachments/assets/74418114-e12d-4502-881e-b14a992e7508" /> each badge/decorator, when makes sense, there is a popover: <img width="323" height="229" alt="image" src="https://github.com/user-attachments/assets/26ec8178-8d50-4526-a494-33bbe88df787" /> <img width="851" height="357" alt="image" src="https://github.com/user-attachments/assets/f9b27e1d-a0c0-4935-b232-295fc3ef0a93" /> <img width="861" height="307" alt="image" src="https://github.com/user-attachments/assets/954d7d68-d5f7-4959-9778-c1e623b13d9a" /> <img width="336" height="161" alt="image" src="https://github.com/user-attachments/assets/d7682c9c-afcc-47eb-897f-c4e135903b91" /> For this to work, we extract the AST (Abstract Syntax Tree) from hyperformula, then check where in the tree we are and there is a token that can be converted to one of the possible decorators. This is valid only when the formula is valid, when invalid we fallback to a tokenizer to extract tokens and transform in decorators. As last resort we convert named expressions from hyperformula into badges --- Now the ctrl+space suggestion popover is aware of the method and parameter that the cursor is <img width="787" height="167" alt="image" src="https://github.com/user-attachments/assets/84a08dcb-29a8-4a96-a9b0-32f790a00c79" /> <!--- actual-bot-sections ---> <hr /> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 29 → 30 | 13.1 MB → 13.13 MB (+26.82 kB) | +0.20% loot-core | 1 | 4.9 MB | 0% api | 2 | 3.93 MB | 0% cli | 1 | 8.02 MB | 0% crdt | 1 | 11.12 kB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 29 → 30 | 13.1 MB → 13.13 MB (+26.82 kB) | +0.20% <details> <summary>Changeset (largest 100 files by percent change)</summary> File | Δ | Size ---- | - | ---- `src/components/formula/formulaBadgeRanges.ts` | 🆕 +9.28 kB | 0 B → 9.28 kB `src/components/formula/FormulaEditor.tsx` | 📈 +7.91 kB (+282.93%) | 2.8 kB → 10.71 kB `node_modules/date-fns/getDay.js` | 📈 +116 B (+80.56%) | 144 B → 260 B `src/components/formula/codeMirror-excelLanguage.tsx` | 📈 +8.93 kB (+34.42%) | 25.94 kB → 34.86 kB `node_modules/date-fns/locale/en-US.js` | 📈 +49 B (+19.37%) | 253 B → 302 B `src/components/reports/reports/Formula.tsx` | 📈 +646 B (+5.85%) | 10.79 kB → 11.42 kB `node_modules/date-fns/locale/en-US/_lib/formatDistance.js` | 📈 +79 B (+4.76%) | 1.62 kB → 1.7 kB `node_modules/date-fns/locale/en-US/_lib/formatLong.js` | 📈 +21 B (+2.90%) | 724 B → 745 B `node_modules/@emotion/sheet/dist/emotion-sheet.esm.js` | 📈 +58 B (+2.63%) | 2.15 kB → 2.21 kB `node_modules/date-fns/locale/en-US/_lib/match.js` | 📈 +73 B (+2.51%) | 2.84 kB → 2.91 kB `node_modules/date-fns/locale/en-US/_lib/formatRelative.js` | 📈 +9 B (+2.47%) | 365 B → 374 B `node_modules/date-fns/differenceInMilliseconds.js` | 📈 +4 B (+2.08%) | 192 B → 196 B `node_modules/date-fns/locale/en-US/_lib/localize.js` | 📈 +60 B (+1.93%) | 3.03 kB → 3.09 kB `node_modules/date-fns/compareAsc.js` | 📈 +4 B (+1.71%) | 234 B → 238 B `node_modules/@marijn/find-cluster-break/src/index.js` | 📈 +61 B (+1.68%) | 3.55 kB → 3.61 kB `node_modules/date-fns/formatDistanceToNow.js` | 📈 +3 B (+1.66%) | 181 B → 184 B `home/runner/work/actual/actual/packages/loot-core/src/shared/rules.ts` | 📈 +71 B (+1.55%) | 4.47 kB → 4.54 kB `node_modules/date-fns/toDate.js` | 📈 +2 B (+1.30%) | 154 B → 156 B `node_modules/date-fns/_lib/defaultOptions.js` | 📈 +2 B (+1.28%) | 156 B → 158 B `node_modules/date-fns/endOfDay.js` | 📈 +2 B (+1.05%) | 191 B → 193 B `node_modules/ua-parser-js/src/main/ua-parser.mjs` | 📈 +446 B (+1.03%) | 42.3 kB → 42.74 kB `node_modules/stylis/src/Utility.js` | 📈 +9 B (+0.89%) | 1010 B → 1019 B `node_modules/date-fns/isLastDayOfMonth.js` | 📈 +2 B (+0.89%) | 225 B → 227 B `node_modules/stylis/src/Tokenizer.js` | 📈 +22 B (+0.82%) | 2.63 kB → 2.65 kB `home/runner/work/actual/actual/packages/component-library/src/tokens.ts` | 📈 +2 B (+0.82%) | 245 B → 247 B `node_modules/@emotion/memoize/dist/emotion-memoize.esm.js` | 📈 +2 B (+0.81%) | 246 B → 248 B `node_modules/react-i18next/dist/es/utils.js` | 📈 +16 B (+0.79%) | 1.99 kB → 2 kB `node_modules/date-fns/endOfMonth.js` | 📈 +2 B (+0.71%) | 283 B → 285 B `node_modules/date-fns/constants.js` | 📈 +4 B (+0.60%) | 672 B → 676 B `node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js` | 📈 +2 B (+0.48%) | 419 B → 421 B `node_modules/date-fns/differenceInCalendarMonths.js` | 📈 +2 B (+0.47%) | 423 B → 425 B `node_modules/@emotion/css/dist/emotion-css.esm.js` | 📈 +2 B (+0.42%) | 475 B → 477 B `node_modules/stylis/src/Parser.js` | 📈 +12 B (+0.28%) | 4.17 kB → 4.18 kB `node_modules/immer/dist/immer.mjs` | 📈 +52 B (+0.26%) | 19.53 kB → 19.58 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/schedules.ts` | 📈 +18 B (+0.26%) | 6.88 kB → 6.9 kB `node_modules/react-i18next/dist/es/TransWithoutContext.js` | 📈 +36 B (+0.24%) | 14.79 kB → 14.82 kB `node_modules/@tanstack/react-query/build/modern/useMutation.js` | 📈 +2 B (+0.22%) | 920 B → 922 B `node_modules/date-fns/differenceInMonths.js` | 📈 +2 B (+0.22%) | 920 B → 922 B `home/runner/work/actual/actual/packages/component-library/src/styles.ts` | 📈 +6 B (+0.20%) | 2.99 kB → 2.99 kB `src/components/budget/goals/automationExamples.ts` | 📈 +2 B (+0.19%) | 1.05 kB → 1.06 kB `node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js` | 📈 +15 B (+0.18%) | 8.24 kB → 8.25 kB `src/components/budget/MonthsContext.tsx` | 📈 +2 B (+0.17%) | 1.17 kB → 1.17 kB `node_modules/date-fns/formatDistance.js` | 📈 +5 B (+0.17%) | 2.92 kB → 2.92 kB `node_modules/html-parse-stringify/dist/html-parse-stringify.module.js` | 📈 +4 B (+0.14%) | 2.79 kB → 2.79 kB `node_modules/react-i18next/dist/es/useTranslation.js` | 📈 +8 B (+0.14%) | 5.59 kB → 5.6 kB `src/components/budget/util.ts` | 📈 +4 B (+0.12%) | 3.22 kB → 3.23 kB `node_modules/@tanstack/query-core/build/modern/mutationObserver.js` | 📈 +2 B (+0.06%) | 3.11 kB → 3.11 kB `node_modules/react-redux/dist/react-redux.mjs` | 📈 +4 B (+0.05%) | 7.22 kB → 7.22 kB `node_modules/@emotion/serialize/dist/emotion-serialize.esm.js` | 📈 +2 B (+0.04%) | 4.62 kB → 4.62 kB `src/hooks/useCategoryScheduleGoalTemplateIndicator.ts` | 📈 +1 B (+0.04%) | 2.69 kB → 2.69 kB `src/components/budget/goals/reducer.ts` | 📈 +2 B (+0.03%) | 6.13 kB → 6.14 kB `node_modules/i18next/dist/esm/i18next.js` | 📈 +20 B (+0.03%) | 72.1 kB → 72.12 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/util.ts` | 📈 +2 B (+0.02%) | 9.04 kB → 9.04 kB `node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs` | 📈 +4 B (+0.01%) | 31.81 kB → 31.81 kB `node_modules/recharts/es6/polar/Pie.js` | 📈 +2 B (+0.01%) | 20.68 kB → 20.68 kB `src/components/reports/graphs/NetWorthGraph.tsx` | 📈 +2 B (+0.01%) | 21.23 kB → 21.24 kB `src/components/modals/SelectLinkedAccountsModal.tsx` | 📈 +2 B (+0.00%) | 43.51 kB → 43.51 kB `src/components/mobile/transactions/TransactionEdit.tsx` | 📉 -4 B (-0.01%) | 71.59 kB → 71.59 kB `src/components/reports/reports/CustomReport.tsx` | 📉 -4 B (-0.01%) | 42.29 kB → 42.29 kB `node_modules/react-stately/dist/private/color/Color.mjs` | 📉 -2 B (-0.01%) | 19.91 kB → 19.91 kB `src/components/reports/reports/Sankey.tsx` | 📉 -4 B (-0.01%) | 31.75 kB → 31.75 kB `node_modules/chevrotain/lib_esm/src/parse/grammar/interpreter.js` | 📉 -2 B (-0.01%) | 15.83 kB → 15.82 kB `src/components/autocomplete/PayeeAutocomplete.tsx` | 📉 -3 B (-0.01%) | 23 kB → 22.99 kB `src/components/select/DateSelect.tsx` | 📉 -2 B (-0.01%) | 15.3 kB → 15.3 kB `src/components/modals/BudgetAutomationsModal/AutomationEditorPane.tsx` | 📉 -2 B (-0.01%) | 13.99 kB → 13.99 kB `src/components/manager/BudgetFileSelection.tsx` | 📉 -4 B (-0.02%) | 25.96 kB → 25.96 kB `src/components/autocomplete/Autocomplete.tsx` | 📉 -4 B (-0.02%) | 24.48 kB → 24.47 kB `node_modules/@react-spring/core/dist/react-spring_core.modern.mjs` | 📉 -8 B (-0.02%) | 47.27 kB → 47.27 kB `node_modules/lru-cache/dist/esm/browser/index.min.js` | 📉 -4 B (-0.02%) | 23.36 kB → 23.35 kB `node_modules/chevrotain/lib_esm/src/scan/lexer_public.js` | 📉 -4 B (-0.02%) | 22.11 kB → 22.11 kB `src/components/settings/index.tsx` | 📉 -2 B (-0.02%) | 10.78 kB → 10.78 kB `node_modules/@react-spring/shared/dist/react-spring_shared.modern.mjs` | 📉 -4 B (-0.02%) | 21.26 kB → 21.26 kB `node_modules/fzf/dist/fzf.es.js` | 📉 -4 B (-0.02%) | 21.25 kB → 21.24 kB `src/components/budget/goals/editor/LimitAutomation.tsx` | 📉 -2 B (-0.02%) | 10.18 kB → 10.18 kB `src/components/reports/reports/CashFlow.tsx` | 📉 -2 B (-0.02%) | 9.27 kB → 9.27 kB `src/components/transactions/SimpleTransactionsTable.tsx` | 📉 -2 B (-0.02%) | 8.82 kB → 8.82 kB `node_modules/chevrotain/lib_esm/src/parse/errors_public.js` | 📉 -2 B (-0.02%) | 8.51 kB → 8.51 kB `src/components/reports/reports/CustomReportListCards.tsx` | 📉 -2 B (-0.02%) | 8.37 kB → 8.37 kB `home/runner/work/actual/actual/packages/loot-core/src/shared/transactions.ts` | 📉 -2 B (-0.02%) | 8.22 kB → 8.22 kB `node_modules/hyperformula/es/interpreter/plugin/3rdparty/jstat/jstat.mjs` | 📉 -4 B (-0.02%) | 15.96 kB → 15.96 kB `src/components/reports/reports/GetCardData.tsx` | 📉 -2 B (-0.02%) | 7.9 kB → 7.9 kB `src/components/reports/AccountSelector.tsx` | 📉 -4 B (-0.03%) | 15.57 kB → 15.56 kB `src/components/manager/ManagementApp.tsx` | 📉 -2 B (-0.03%) | 7.5 kB → 7.49 kB `node_modules/chevrotain/lib_esm/src/parse/grammar/lookahead.js` | 📉 -4 B (-0.03%) | 14.17 kB → 14.17 kB `src/hooks/useScheduleEdit.ts` | 📉 -2 B (-0.03%) | 6.5 kB → 6.5 kB `src/components/reports/SaveReport.tsx` | 📉 -4 B (-0.03%) | 12.91 kB → 12.91 kB `node_modules/hyperformula/es/interpreter/plugin/ConditionalAggregationPlugin.mjs` | 📉 -2 B (-0.03%) | 6.38 kB → 6.38 kB `node_modules/hyperformula/es/interpreter/ArithmeticHelper.mjs` | 📉 -6 B (-0.03%) | 18.87 kB → 18.87 kB `src/components/common/Modal.tsx` | 📉 -4 B (-0.03%) | 12.37 kB → 12.37 kB `node_modules/hyperformula/es/interpreter/CriterionFunctionCompute.mjs` | 📉 -2 B (-0.03%) | 5.94 kB → 5.94 kB `src/components/reports/spreadsheets/summary-spreadsheet.ts` | 📉 -2 B (-0.04%) | 5.57 kB → 5.57 kB `src/components/modals/ImportTransactionsModal/utils.ts` | 📉 -2 B (-0.04%) | 5.14 kB → 5.14 kB `src/components/reports/reports/MarkdownCard.tsx` | 📉 -2 B (-0.04%) | 5.11 kB → 5.11 kB `node_modules/@rschedule/core/es2015/generators.js` | 📉 -16 B (-0.04%) | 39.61 kB → 39.6 kB `node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_engine.js` | 📉 -8 B (-0.04%) | 19.49 kB → 19.48 kB `src/components/accounts/BalanceHistoryGraph.tsx` | 📉 -4 B (-0.04%) | 9.4 kB → 9.4 kB `node_modules/chevrotain/lib_esm/src/parse/parser/traits/tree_builder.js` | 📉 -4 B (-0.04%) | 9.34 kB → 9.34 kB `node_modules/chevrotain/lib_esm/src/parse/parser/traits/recoverable.js` | 📉 -4 B (-0.04%) | 9.05 kB → 9.05 kB `src/components/reports/reports/Summary.tsx` | 📉 -12 B (-0.05%) | 25.59 kB → 25.57 kB `node_modules/hyperformula/es/interpreter/plugin/StatisticalPlugin.mjs` | 📉 -10 B (-0.05%) | 21.26 kB → 21.25 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- static/js/useDateFormat.js | 0 B → 2.89 MB (+2.89 MB) | - static/js/bootstrapHyperFormula.js | 0 B → 302 B (+302 B) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- static/js/extends.js | 478.5 kB → 0 B (-478.5 kB) | -100% **Bigger** Asset | File Size | % Changed ----- | --------- | --------- static/js/FormulaEditor.js | 735.67 kB → 761.75 kB (+26.09 kB) | +3.55% static/js/ReportRouter.js | 1.25 MB → 1.25 MB (+176 B) | +0.01% **Smaller** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 7.61 MB → 5.19 MB (-2.42 MB) | -31.76% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/BackgroundImage.js | 121.09 kB | 0% static/js/PayeeRuleCountLabel.js | 7.1 kB | 0% static/js/TransactionList.js | 85.25 kB | 0% static/js/_baseIsEqual.js | 76.78 kB | 0% static/js/ca.js | 179.71 kB | 0% static/js/da.js | 100.19 kB | 0% static/js/de.js | 176.61 kB | 0% static/js/en-GB.js | 9.25 kB | 0% static/js/en.js | 200.33 kB | 0% static/js/es.js | 171.82 kB | 0% static/js/fr.js | 171.39 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/it.js | 158.13 kB | 0% static/js/narrow.js | 358.88 kB | 0% static/js/nb-NO.js | 141.55 kB | 0% static/js/nl.js | 119.14 kB | 0% static/js/pt-BR.js | 181.5 kB | 0% static/js/resize-observer.js | 18.06 kB | 0% static/js/th.js | 173.33 kB | 0% static/js/theme.js | 31.02 kB | 0% static/js/uk.js | 209.97 kB | 0% static/js/useTransactionBatchActions.js | 9.71 kB | 0% static/js/wide.js | 298.21 kB | 0% static/js/workbox-window.prod.es5.js | 7.21 kB | 0% static/js/zh-Hans.js | 113.26 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 4.9 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 ----- | --------- | --------- kcab.worker.VDgbgKoY.js | 4.9 MB | 0% </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 2 | 3.93 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 ----- | --------- | --------- index.js | 3.93 MB | 0% models.js | 0 B | 0% </div> </details> --- #### cli **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 8.02 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 | 8.02 MB | 0% </div> </details> --- #### crdt **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 11.12 kB | 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 ----- | --------- | --------- index.js | 11.12 kB | 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-06-17 21:15:38 -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#136464