[PR #8030] [MERGED] [AI] Fix balance forecast report Y-axis label clipping #122283

Closed
opened 2026-06-11 21:04:14 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/8030
Author: @samaluk
Created: 6/1/2026
Status: Merged
Merged: 6/3/2026
Merged by: @youngcw

Base: masterHead: fix/balance-forecast-y-axis-padding


📝 Commits (2)

  • 376fec3 [AI] Fix balance forecast report Y-axis label clipping
  • 6cc450f [AI] Add release notes for #8030

📊 Changes

9 files changed (+21 additions, -7 deletions)

View changed files

📝 packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-loads-balance-forecast-report-with-monthly-granularity-1-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-loads-balance-forecast-report-with-monthly-granularity-2-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-loads-balance-forecast-report-with-monthly-granularity-3-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-switches-to-daily-granularity-1-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-switches-to-daily-granularity-2-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-switches-to-daily-granularity-3-chromium-linux.png (+0 -0)
📝 packages/desktop-client/package.json (+1 -0)
📝 packages/desktop-client/src/components/reports/reports/BalanceForecast.tsx (+14 -7)
upcoming-release-notes/8030.md (+6 -0)

📄 Description

Description

On the Balance Forecast report, Y-axis tick labels were clipped on the left when balances were large (for example, values in the millions). The chart used a fixed 5px left margin, which was not enough room for formatted currency labels.

This PR uses the existing computePadding helper (same approach as Net Worth and Budget Analysis) to size the chart’s left margin from the formatted tick labels, and wires that value into the LineChart margin. A package.json import map entry was added so computePadding can be imported from #components/reports/graphs/util/computePadding.

Before

cutoff

After

good

N/A

Testing

  1. Enable the Balance Forecast experimental report.
  2. Open Reports → Balance Forecast with a budget that has large projected balances (or use demo data with high balances).
  3. Confirm Y-axis labels are fully visible at monthly and daily granularity.
  4. E2E snapshot updates cover the report in both granularities.

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 37 14.04 MB → 14.04 MB (+260 B) +0.00%
loot-core 1 5.27 MB 0%
api 2 3.85 MB 0%
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.04 MB → 14.04 MB (+260 B) +0.00%
Changeset
File Δ Size
package.json 📈 +109 B (+1.15%) 9.28 kB → 9.39 kB
src/components/reports/reports/BalanceForecast.tsx 📈 +151 B (+1.00%) 14.7 kB → 14.85 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/ReportRouter.js 1.26 MB → 1.26 MB (+151 B) +0.01%
static/js/index.js 1.54 MB → 1.54 MB (+109 B) +0.01%

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
static/js/BackgroundImage.js 121.09 kB 0%
static/js/FormulaEditor.js 962.55 kB 0%
static/js/ManageRules.js 46.64 kB 0%
static/js/PayeeRuleCountLabel.js 7.33 kB 0%
static/js/ScheduleEditForm.js 146.44 kB 0%
static/js/SchedulesTable.js 202.7 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 186.75 kB 0%
static/js/client.js 451.37 kB 0%
static/js/da.js 101.15 kB 0%
static/js/de.js 170.99 kB 0%
static/js/en-GB.js 9.25 kB 0%
static/js/en.js 198.48 kB 0%
static/js/es.js 178.68 kB 0%
static/js/extends.js 501.42 kB 0%
static/js/fr.js 178.57 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 165 kB 0%
static/js/narrow.js 364.25 kB 0%
static/js/nb-NO.js 148.05 kB 0%
static/js/nl.js 107.12 kB 0%
static/js/pt-BR.js 188.43 kB 0%
static/js/resize-observer.js 18.06 kB 0%
static/js/th.js 174.48 kB 0%
static/js/theme.js 31.88 kB 0%
static/js/toString.js 705.14 kB 0%
static/js/uk.js 207.46 kB 0%
static/js/useFormatList.js 2.52 kB 0%
static/js/useTransactionBatchActions.js 9.71 kB 0%
static/js/wide.js 297.5 kB 0%
static/js/workbox-window.prod.es5.js 7.33 kB 0%
static/js/zh-Hans.js 117.01 kB 0%

loot-core

Total

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

api

Total

Files count Total bundle size % Changed
2 3.85 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.85 MB 0%
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/8030 **Author:** [@samaluk](https://github.com/samaluk) **Created:** 6/1/2026 **Status:** ✅ Merged **Merged:** 6/3/2026 **Merged by:** [@youngcw](https://github.com/youngcw) **Base:** `master` ← **Head:** `fix/balance-forecast-y-axis-padding` --- ### 📝 Commits (2) - [`376fec3`](https://github.com/actualbudget/actual/commit/376fec367508c4e5c207c1b1408b089662395f3c) [AI] Fix balance forecast report Y-axis label clipping - [`6cc450f`](https://github.com/actualbudget/actual/commit/6cc450f6665cf2ce9627c2bfecf8a3652aa2683e) [AI] Add release notes for #8030 ### 📊 Changes **9 files changed** (+21 additions, -7 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-loads-balance-forecast-report-with-monthly-granularity-1-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-loads-balance-forecast-report-with-monthly-granularity-2-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-loads-balance-forecast-report-with-monthly-granularity-3-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-switches-to-daily-granularity-1-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-switches-to-daily-granularity-2-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-balance-forecast-switches-to-daily-granularity-3-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/package.json` (+1 -0) 📝 `packages/desktop-client/src/components/reports/reports/BalanceForecast.tsx` (+14 -7) ➕ `upcoming-release-notes/8030.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 On the Balance Forecast report, Y-axis tick labels were clipped on the left when balances were large (for example, values in the millions). The chart used a fixed 5px left margin, which was not enough room for formatted currency labels. This PR uses the existing `computePadding` helper (same approach as Net Worth and Budget Analysis) to size the chart’s left margin from the formatted tick labels, and wires that value into the `LineChart` margin. A `package.json` import map entry was added so `computePadding` can be imported from `#components/reports/graphs/util/computePadding`. ### Before <img width="1338" height="716" alt="cutoff" src="https://github.com/user-attachments/assets/a38f005c-de64-4ec3-96b8-d3df112ad397" /> ### After <img width="1360" height="744" alt="good" src="https://github.com/user-attachments/assets/95e881dc-c6ed-45e7-9573-661e82bd8f57" /> ## Related issue(s) N/A ## Testing 1. Enable the Balance Forecast experimental report. 2. Open **Reports → Balance Forecast** with a budget that has large projected balances (or use demo data with high balances). 3. Confirm Y-axis labels are fully visible at monthly and daily granularity. 4. E2E snapshot updates cover the report in both granularities. ## Checklist - [x] Release notes added (see link above) - [x] No obvious regressions in affected areas - [x] 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 | 37 | 14.04 MB → 14.04 MB (+260 B) | +0.00% loot-core | 1 | 5.27 MB | 0% api | 2 | 3.85 MB | 0% 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.04 MB → 14.04 MB (+260 B) | +0.00% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `package.json` | 📈 +109 B (+1.15%) | 9.28 kB → 9.39 kB `src/components/reports/reports/BalanceForecast.tsx` | 📈 +151 B (+1.00%) | 14.7 kB → 14.85 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/ReportRouter.js | 1.26 MB → 1.26 MB (+151 B) | +0.01% static/js/index.js | 1.54 MB → 1.54 MB (+109 B) | +0.01% **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/BackgroundImage.js | 121.09 kB | 0% static/js/FormulaEditor.js | 962.55 kB | 0% static/js/ManageRules.js | 46.64 kB | 0% static/js/PayeeRuleCountLabel.js | 7.33 kB | 0% static/js/ScheduleEditForm.js | 146.44 kB | 0% static/js/SchedulesTable.js | 202.7 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 | 186.75 kB | 0% static/js/client.js | 451.37 kB | 0% static/js/da.js | 101.15 kB | 0% static/js/de.js | 170.99 kB | 0% static/js/en-GB.js | 9.25 kB | 0% static/js/en.js | 198.48 kB | 0% static/js/es.js | 178.68 kB | 0% static/js/extends.js | 501.42 kB | 0% static/js/fr.js | 178.57 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/it.js | 165 kB | 0% static/js/narrow.js | 364.25 kB | 0% static/js/nb-NO.js | 148.05 kB | 0% static/js/nl.js | 107.12 kB | 0% static/js/pt-BR.js | 188.43 kB | 0% static/js/resize-observer.js | 18.06 kB | 0% static/js/th.js | 174.48 kB | 0% static/js/theme.js | 31.88 kB | 0% static/js/toString.js | 705.14 kB | 0% static/js/uk.js | 207.46 kB | 0% static/js/useFormatList.js | 2.52 kB | 0% static/js/useTransactionBatchActions.js | 9.71 kB | 0% static/js/wide.js | 297.5 kB | 0% static/js/workbox-window.prod.es5.js | 7.33 kB | 0% static/js/zh-Hans.js | 117.01 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 5.27 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.WcTGUWK6.js | 5.27 MB | 0% </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 2 | 3.85 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.85 MB | 0% 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-11 21:04:14 -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#122283