tabedzkiandClaude Sonnet 4.6 30e671b3ec [AI] feat(budget analysis report): allow selecting future months in date range (#8722)
* [AI] feat(budget-report): allow selecting future months in date range

Extend the allMonths picker list 12 months past the current month so
users can select future months for long-term goal planning.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* [AI] fix(budget-report): preserve running balance for future months with no budget data

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* [AI] fix(budget-report): fix balance zeroing for future months with no budget data

Use monthBalance as the next month's running balance instead of
carryoverToNextMonth, which is 0 for months where no category has
any budget or spending data.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* [AI] fix(budget-report): fix import path in budget-analysis-spreadsheet test

* [AI] fix: added in release note

Assisted-by: ClaudeCode:claude-opus-5

* [AI] fix(budget-report): address CodeRabbit review findings

Addresses both review comments from CodeRabbit on PR #8722:

1. "Keep later-dated transaction months selectable" — the month-range
endpoint now takes the later of the latest transaction month and December
of next year, so existing future-dated transactions are no longer hidden
from the picker. This PR had replaced latestMonth with a hardcoded
December-of-next-year, which dropped transactions dated beyond it.

2. "Preserve the no-carryover reset when propagating balances" —
running-balance propagation goes back to carrying over only what actually
carries over, instead of the full month balance. Using monthBalance had
re-included negative balances for categories with carryover disabled, so
an overspend both dragged forward through later months and still surfaced
as an overspending adjustment. A month with no budget data at all now
passes the running balance through untouched, which fixes the original
future-month bug without defeating the carryover reset.

Extracts summarizeMonthCategories, getNextRunningBalance and
getLastSelectableMonth so this logic is unit-testable, and replaces the
self-referential range tests with ones that exercise the real functions.

Assisted-by: ClaudeCode:claude-opus-5

* [AI] test(budget-report): cover never-budgeted months in data detection

CodeRabbit's follow-up review on PR #8722 suggested setting hasBudgetData
from cell presence rather than cell value. That change would be wrong here:
envelope-budget-month builds its response by iterating the category list, so
it emits a cell for every category in every month and normalizes missing
sheet values to 0 (see loot-core/src/server/budget/app.ts). Cells are always
present, so presence-based detection would report every month as populated
and re-introduce the running-balance bug the previous commit fixed.

The zero-value case it worries about is not reachable in a way that changes
the result: leftover already folds in the previous month's balance, so a
month with a real balance carrying in always has a non-zero cell and is
detected correctly. When all three are zero there is nothing to carry, and
both detection strategies agree.

Adds a regression test pinning the never-budgeted month to
hasBudgetData=false, and documents why detection is value-based so the
suggestion is not re-applied later.

Assisted-by: ClaudeCode:claude-opus-5

---------

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
2026-08-16 20:36:11 +00:00
2026-07-21 20:24:31 +00:00
2026-07-21 18:03:26 +00:00
2022-04-28 22:44:38 -04:00
2022-04-30 12:17:49 -04:00
2026-08-02 16:00:07 +00:00
2026-07-21 20:24:31 +00:00
2025-08-12 22:10:10 +01:00
2023-08-25 20:41:20 +01:00
2026-08-02 16:00:07 +00:00
2026-08-10 19:00:01 +00:00

Actualbudget

Getting Started

Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting.

If you are interested in contributing, or want to know how development works, see our contributing document we would love to have you.

Want to say thanks? Click the ⭐ at the top of the page.

Installation

There are four ways to deploy Actual:

  1. One-click deployment via PikaPods (~2.00 $/month) - recommended for non-technical users
  2. Managed hosting via Fly.io (~1.50 $/month)
  3. Self-hosted by using a Docker image
  4. Local-only apps - downloadable Windows, Mac and Linux apps you can run on your device

Learn more in the installation instructions docs.

Ready to Start Budgeting?

Read about Envelope budgeting to know more about the idea behind Actual Budget.

Are you new to budgeting or want to start fresh?

Check out the community's Starting Fresh guide so you can quickly get up and running!

Are you migrating from other budgeting apps?

Check out the community's Migration guide to start jumping on the Actual Budget train!

Documentation

We have a wide range of documentation on how to use Actual, this is all available in our Community Documentation, this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.

Contributing

Actual is a community driven product. Learn more about contributing to Actual.

Code structure

The Actual app is split up into a few packages:

  • loot-core - The core application that runs on any platform
  • desktop-client - The desktop UI
  • desktop-electron - The desktop app

More information on the project structure is available in our community documentation.

Feature Requests

Current feature requests can be seen here. Vote for your favorite requests by reacting 👍 to the top comment of the request.

To add new feature requests, open a new Issue of the "Feature Request" type.

Translation

Make Actual Budget accessible to more people by helping with the Internationalization of Actual. We are using a crowd sourcing tool to manage the translations, see our Weblate Project. Weblate proudly supports open-source software projects through their Libre plan.

Translation status

Repo Activity

Alt

Sponsors

Thanks to our wonderful sponsors who make Actual Budget possible!

Deploys by Netlify Built with Depot Docker GitHub Anthropic

S
Description
A local-first personal finance app
Readme
1.2 GiB
Languages
TypeScript 94.3%
JavaScript 4.6%
CSS 0.5%
Shell 0.3%