[PR #8140] [MERGED] [AI] Batch sum-amount query on cold budget build #131716

Closed
opened 2026-06-16 00:28:46 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/8140
Author: @MatissJanis
Created: 6/7/2026
Status: ✅ Merged
Merged: 6/11/2026
Merged by: @MatissJanis

Base: master ← Head: claude/mobile-data-loading-perf-0lhXK


📝 Commits (5)

  • 617f9de [AI] Batch sum-amount query on cold budget build
  • 6205a92 [AI] Rename release note to a slug
  • a6d0647 [AI] Address review: scope seed query to uncached months
  • 7b856ef Merge branch 'master' into claude/mobile-data-loading-perf-0lhXK
  • ae2d0e3 [AI] Address review: harden seed-query month span and encapsulate cache saving

📊 Changes

4 files changed (+292 additions, -27 deletions)

View changed files

📝 packages/loot-core/src/server/budget/base.test.ts (+173 -0)
📝 packages/loot-core/src/server/budget/base.ts (+106 -24)
📝 packages/loot-core/src/server/spreadsheet/spreadsheet.ts (+7 -3)
➕ upcoming-release-notes/batch-budget-sum-amount-query.md (+6 -0)

📄 Description

Description

Multi-year budgets performed poorly because we had to recalculate the previous months before showing "today". This change significantly improves the performance of large budgets.

Not really noticeable on desktop devices. But on mobile - the difference is striking.

Related issue(s)

n/a

Testing

Unit tests added; manual tests performed with my multi-year budget

Checklist

  • Release notes added (see link above)
  • No obvious regressions in affected areas
  • Self-review has been performed - I have read every line of this diff and can explain what each change does and why it is needed

Generated by Claude Code

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 37 14.14 MB 0%
loot-core 1 5.28 MB → 5.28 MB (+1.49 kB) +0.03%
api 2 3.87 MB → 3.87 MB (+1.47 kB) +0.04%
cli 1 7.97 MB 0%
crdt 1 11.12 kB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
37 14.14 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
static/js/index.js 1.6 MB 0%
static/js/BackgroundImage.js 121.09 kB 0%
static/js/FormulaEditor.js 962.55 kB 0%
static/js/ManageRules.js 46.63 kB 0%
static/js/PayeeRuleCountLabel.js 7.33 kB 0%
static/js/ReportRouter.js 1.27 MB 0%
static/js/ScheduleEditForm.js 146.57 kB 0%
static/js/SchedulesTable.js 206.3 kB 0%
static/js/TransactionEdit.js 90.63 kB 0%
static/js/TransactionList.js 85.81 kB 0%
static/js/Value.js 5.08 MB 0%
static/js/_baseIsEqual.js 98.38 kB 0%
static/js/ca.js 185.63 kB 0%
static/js/client.js 451.37 kB 0%
static/js/da.js 100.19 kB 0%
static/js/de.js 181.63 kB 0%
static/js/en-GB.js 9.25 kB 0%
static/js/en.js 201.71 kB 0%
static/js/es.js 177.58 kB 0%
static/js/extends.js 508.79 kB 0%
static/js/fr.js 177.35 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 163.93 kB 0%
static/js/narrow.js 365.05 kB 0%
static/js/nb-NO.js 147.07 kB 0%
static/js/nl.js 119.71 kB 0%
static/js/pt-BR.js 187.34 kB 0%
static/js/resize-observer.js 18.06 kB 0%
static/js/th.js 173.33 kB 0%
static/js/theme.js 31.88 kB 0%
static/js/toString.js 705.18 kB 0%
static/js/uk.js 216.7 kB 0%
static/js/useFormatList.js 2.52 kB 0%
static/js/useTransactionBatchActions.js 9.71 kB 0%
static/js/wide.js 298.88 kB 0%
static/js/workbox-window.prod.es5.js 7.33 kB 0%
static/js/zh-Hans.js 116.44 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 5.28 MB → 5.28 MB (+1.49 kB) +0.03%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/server/budget/base.ts 📈 +1.43 kB (+20.15%) 7.11 kB → 8.54 kB
home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/spreadsheet.ts 📈 +63 B (+0.71%) 8.68 kB → 8.74 kB
View detailed bundle breakdown

Added

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

Removed

Asset File Size % Changed
kcab.worker.Co0zOyQO.js 5.28 MB → 0 B (-5.28 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
2 3.87 MB → 3.87 MB (+1.47 kB) +0.04%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/server/budget/base.ts 📈 +1.41 kB (+20.26%) 6.95 kB → 8.36 kB
home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/spreadsheet.ts 📈 +60 B (+0.73%) 8.01 kB → 8.07 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
index.js 3.87 MB → 3.87 MB (+1.47 kB) +0.04%

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
models.js 0 B 0%

cli

Total

Files count Total bundle size % Changed
1 7.97 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.97 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/8140 **Author:** [@MatissJanis](https://github.com/MatissJanis) **Created:** 6/7/2026 **Status:** ✅ Merged **Merged:** 6/11/2026 **Merged by:** [@MatissJanis](https://github.com/MatissJanis) **Base:** `master` ← **Head:** `claude/mobile-data-loading-perf-0lhXK` --- ### 📝 Commits (5) - [`617f9de`](https://github.com/actualbudget/actual/commit/617f9de96e59f323559be8dfda4e859b105066f1) [AI] Batch sum-amount query on cold budget build - [`6205a92`](https://github.com/actualbudget/actual/commit/6205a920890e9d8f46db755df4cf64d70e2ff862) [AI] Rename release note to a slug - [`a6d0647`](https://github.com/actualbudget/actual/commit/a6d064774a003dbcdac4a3961458fc5564f6498a) [AI] Address review: scope seed query to uncached months - [`7b856ef`](https://github.com/actualbudget/actual/commit/7b856ef5e0ac9ed060afefdf33810b2dfc6ea177) Merge branch 'master' into claude/mobile-data-loading-perf-0lhXK - [`ae2d0e3`](https://github.com/actualbudget/actual/commit/ae2d0e37b55f8a9b229d4c38822f44f3c6480ef8) [AI] Address review: harden seed-query month span and encapsulate cache saving ### 📊 Changes **4 files changed** (+292 additions, -27 deletions) <details> <summary>View changed files</summary> 📝 `packages/loot-core/src/server/budget/base.test.ts` (+173 -0) 📝 `packages/loot-core/src/server/budget/base.ts` (+106 -24) 📝 `packages/loot-core/src/server/spreadsheet/spreadsheet.ts` (+7 -3) ➕ `upcoming-release-notes/batch-budget-sum-amount-query.md` (+6 -0) </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://actualbudget.org/docs/contributing/#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?--> <!-- If AI tools wrote a significant part of this change, please disclose it here and name the tool you used. See https://actualbudget.org/docs/contributing/ai-usage-policy --> Multi-year budgets performed poorly because we had to recalculate the previous months before showing "today". This change significantly improves the performance of large budgets. Not really noticeable on desktop devices. But on mobile - the difference is striking. ## Related issue(s) <!-- e.g. Fixes #123, Relates to #456 --> n/a ## Testing <!-- What did you test? How can we reproduce the issue you are fixing or how can we test the feature you built? --> Unit tests added; manual tests performed with my multi-year budget ## Checklist - [x] Release notes added (see link above) - [x] No obvious regressions in affected areas - [x] Self-review has been performed - I have read every line of this diff and can explain what each change does and why it is needed <!--- actual-bot-sections ---> --- _Generated by [Claude Code](https://claude.ai/code/session_01SThbYSwQwvHo1wdiQbfSsb)_ <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 37 | 14.14 MB | 0% loot-core | 1 | 5.28 MB → 5.28 MB (+1.49 kB) | +0.03% api | 2 | 3.87 MB → 3.87 MB (+1.47 kB) | +0.04% cli | 1 | 7.97 MB | 0% crdt | 1 | 11.12 kB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 37 | 14.14 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 1.6 MB | 0% static/js/BackgroundImage.js | 121.09 kB | 0% static/js/FormulaEditor.js | 962.55 kB | 0% static/js/ManageRules.js | 46.63 kB | 0% static/js/PayeeRuleCountLabel.js | 7.33 kB | 0% static/js/ReportRouter.js | 1.27 MB | 0% static/js/ScheduleEditForm.js | 146.57 kB | 0% static/js/SchedulesTable.js | 206.3 kB | 0% static/js/TransactionEdit.js | 90.63 kB | 0% static/js/TransactionList.js | 85.81 kB | 0% static/js/Value.js | 5.08 MB | 0% static/js/_baseIsEqual.js | 98.38 kB | 0% static/js/ca.js | 185.63 kB | 0% static/js/client.js | 451.37 kB | 0% static/js/da.js | 100.19 kB | 0% static/js/de.js | 181.63 kB | 0% static/js/en-GB.js | 9.25 kB | 0% static/js/en.js | 201.71 kB | 0% static/js/es.js | 177.58 kB | 0% static/js/extends.js | 508.79 kB | 0% static/js/fr.js | 177.35 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/it.js | 163.93 kB | 0% static/js/narrow.js | 365.05 kB | 0% static/js/nb-NO.js | 147.07 kB | 0% static/js/nl.js | 119.71 kB | 0% static/js/pt-BR.js | 187.34 kB | 0% static/js/resize-observer.js | 18.06 kB | 0% static/js/th.js | 173.33 kB | 0% static/js/theme.js | 31.88 kB | 0% static/js/toString.js | 705.18 kB | 0% static/js/uk.js | 216.7 kB | 0% static/js/useFormatList.js | 2.52 kB | 0% static/js/useTransactionBatchActions.js | 9.71 kB | 0% static/js/wide.js | 298.88 kB | 0% static/js/workbox-window.prod.es5.js | 7.33 kB | 0% static/js/zh-Hans.js | 116.44 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 5.28 MB → 5.28 MB (+1.49 kB) | +0.03% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/server/budget/base.ts` | 📈 +1.43 kB (+20.15%) | 7.11 kB → 8.54 kB `home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/spreadsheet.ts` | 📈 +63 B (+0.71%) | 8.68 kB → 8.74 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.AuU5VhIL.js | 0 B → 5.28 MB (+5.28 MB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.Co0zOyQO.js | 5.28 MB → 0 B (-5.28 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 ----------- | ----------------- | --------- 2 | 3.87 MB → 3.87 MB (+1.47 kB) | +0.04% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/server/budget/base.ts` | 📈 +1.41 kB (+20.26%) | 6.95 kB → 8.36 kB `home/runner/work/actual/actual/packages/loot-core/src/server/spreadsheet/spreadsheet.ts` | 📈 +60 B (+0.73%) | 8.01 kB → 8.07 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 ----- | --------- | --------- index.js | 3.87 MB → 3.87 MB (+1.47 kB) | +0.04% **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- models.js | 0 B | 0% </div> </details> --- #### cli **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 7.97 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.97 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-16 00:28:46 -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#131716