mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-15 22:54:03 -05:00
[Bug]: Toggling overspending rollover only propagates forward #2647
Closed
opened 2026-02-28 20:22:57 -06:00 by GiteaMirror
·
5 comments
No Branch/Tag Specified
master
dependabot/npm_and_yarn/npm_and_yarn-cd62b4b37a
enforce-append-only-migrations-ci
claude/error-codes-worker-boundary-26i5uu
api-browser-custom-data-dir
tabedzki/feat/replacing-month-picker-with-day-picker
delay-initial-sync-until-loaded
jfdoming/mobile-app-build
cross-version-sync-compat
jfdoming/api-tokens-part-1
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-3
jfdoming/mobile-app-updates
claude/budget-version-migration-compat-151jlr
claude/worker-error-serialization-9iqtl7
claude/react-table-library-research-afx83z
claude/issue-8401-regression-test-9nw9l3
jfdoming/mobile-app-foundation-part-1
jfdoming/mobile-app-scaffold
release
ai-fix-cleanup-def-8290
claude/relaxed-shannon-jusywa
claude/fervent-keller-s6f2fq
claude/determined-feynman-st1y9z
claude/wizardly-einstein-vi2wce
claude/sweet-albattani-7nseio
feat/bank-sync-per-budget-file
claude/affectionate-cannon-y0kc82
claude/dependabot-findings-m9pgmb
claude/mac-app-ios-publish-zjs1lz
claude/vigilant-tesla-aiiyos
depot-migrate-secrets-1781296330308
claude/quirky-cerf-v5qck7
claude/animation-removal-alternative-2etfh1
claude/netlify-preview-comments-consolidate-9XPYa
osc/7391-error-boundaries-reports
claude/pensive-dijkstra-7DYui
claude/server-app-version-mismatch-HTCGv
claude/pr-8027-review-feedback-mELuO
claude/zealous-wozniak-e5pO0
claude/intelligent-heisenberg-BSHJq
claude/translation-download-refactor-jFRsO
claude/mobile-performance-ideas-G9PAO
claude/github-issue-7988-5A5ly
blacksmith-migration-ff70d2d
claude/great-mayer-KRvOk
claude/react-native-ios-compilation-fcJh5
claude/serene-goldberg-58xv0
claude/kind-euler-LVG3K
release-automation/edge-nightly
7710-bundle-migrations
claude/fix-docker-build-error-WMfed
claude/llm-compatible-release-notes-t20Nr
7710-tests-tdd
cursor/transaction-table-rewrite-f077
claude/plan-ci-secure-context-OtEe1
claude/fix-issue-7667-DPXi3
cursor/resolve-pr-7449-ee11
claude/fix-typescript-build-error-JPtZ5
copilot/add-repository-configs-to-packages
worktree-compressed-drifting-ritchie
claude/api-consumer-verification-kfz1K
pr-7454
claude/fix-issue-7410-LLLQ4
revert-7281-generate-icons
react-query-useSchedules
copilot/sub-pr-6140
package-upgrades
v26.7.0
v26.6.0
v26.5.2
v26.5.1
v26.5.0
v26.4.0
v26.3.0
v26.2.1
v26.2.0
v26.1.0
v25.12.0
v25.11.0
v25.10.0
v25.9.0
v25.8.0
v25.7.1
v25.7.0
v25.6.1
v25.6.0
v25.5.0
v25.4.0
v25.3.1
v25.3.0
v25.2.1
v25.2.0
v25.1.0
v24.12.0
v24.11.0
v24.10.1
v24.10.0
v24.9.0
v24.8.0
v24.7.0
v24.6.0
v24.5.0
v24.4.0
v24.3.0
v24.2.0
v24.1.0
v23.12.0
v23.11.0
v23.10.0
v23.9.0
v23.8.1
v23.8.0
v23.7.2
v23.7.1
v23.7.0
v23.6.0
v23.5.0
v23.4.2
v23.4.1
v23.4.0
v23.3.2
v23.3.0
v23.2.9
v23.2.5
v23.1.12
v22.12.9
Labels
Clear labels
AI generated
API
bank sync
budgeting
bug
can’t replicate
dependencies
docker
documentation
electron
experimental feature
feature
feedback
goal templates
good first issue
help wanted
importers
maintenance
needs info
needs testing
needs triage
needs votes
openid
payees
pull-request
regression
reports
responsive
rules
schedules
server
✨ merged
split transactions
tech debt
tech-support
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/actual#2647
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Daedalus359 on GitHub (Nov 21, 2025).
Verified issue does not already exist?
What happened?
It looks like toggling the "Rollover overspending" / "Remove overspending rollover" setting by clicking the balance entry for a particular (category, month) does not change the setting for that category in months before the one selected. See the attached screenshot. In the yellow box, this occurs once with the setting turned on in column 2. In the red box, this occurs twice: the setting is turned on in column 2 and off in column 4, creating a small pocket where the rollover occurs.
Granted, this gives users arbitrary control over exactly which months get rollover. I can't think of a use case for this, but maybe there is one. However, it also allows for situations where accidental button presses or experimentation with this feature by users who don't understand its full behavior (my current problem) cause a budget's present balance to be affected by settings changes in areas which may be off screen and potentially pretty difficult to locate (yellow can be found by a manual binary search, but not red). That's why I consider this a bug.
I would prefer if the app simply had an all or nothing approach to whether a category has rollover turned on, as this would meet my needs best. If that's not desirable for some reason, it might be worth adjusting the text on the buttons that toggle this setting on and off.
As far as I know, the only way to eliminate all unlocated rollover setting changes via the UI would be to go all the way back in the budget history and toggle this setting in the first month of every category. If anyone has a better approach, it might be helpful to note that in this thread as well.
How can we reproduce the issue?
To recreate the situations in my screenshot above, take four months of budget data over at least two categories. Turn rollover off in month 1 for both categories, turn it back on in month 2 for both categories, and turn it off again in month 4 for one category (corresponding to the red box).
Note that the first step is just to confirm a blank slate for experimenting with this bug, so it could actually take as little as one unintended button press to create this issue in a typical budget.
Where are you hosting Actual?
Desktop App (Electron)
What browsers are you seeing the problem on?
No response
Operating System
Windows 10
@youngcw commented on GitHub (Nov 21, 2025):
This is by design. If the rollover is enabled for a specific month, or range of months, in order to handle the overspending it needs to stay that way or the budget history is lost.
@Daedalus359 commented on GitHub (Nov 21, 2025):
I'm new to using this feature, so I apologize if I'm missing something basic. I don't understand your explanation. Are you saying that disabling the rollover after enabling it causes some information to be lost? That doesn't sound right, but it's the only interpretation of your response I can think of.
If my understanding of your comment is correct, then I don't think it addresses why forward propagation of the setting change is desirable vs applying the new setting uniformly to all months.
@youngcw commented on GitHub (Nov 21, 2025):
Changing a rollover state changes the budget, that changes the balances, to budget numbers, etc. If you remove the rollover in a past month, then budget then is different and the history of what happened back then is lost (it has changed and cannot be deterministically recovered unless you remember which categories and which months had the carryover enabled.)
@youngcw commented on GitHub (Nov 21, 2025):
The reason that the carryover is enabled for many months at a time is if you have a CC category that is holding debt, and are likely going to be rolling forward the balance for many months, or are using the auto hold feature for income
@Daedalus359 commented on GitHub (Nov 21, 2025):
Thanks, I see what you're saying. If this toggle is intended to be used primarily on the present month and there are use cases for having it turned on and then back off over a large but limited span of months, then that behavior makes sense.