mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-15 22:54:03 -05:00
Open
opened 2026-05-29 20:55:53 -05:00 by GiteaMirror
·
2 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
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#100616
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 @andrebk on GitHub (May 11, 2026).
Original GitHub issue: https://github.com/actualbudget/actual/issues/7796
What happened?
I was importing a CSV file of transactions for an account for the first time. I selected the correct delimiter, all the correct column fields, date format, amount options etc. and was looking through the transactions to verify things were correct when I saw that the bottom rows were gibberish.
I check the CSV file and see that the last few lines are summary lines which shouldn't be included. No worries, I see there is a "skip end lines" option so I just set that to the number of summary lines and... wait, now all my transactions are gibberish? What happened?
Turns out changing the number of skipped end lines resets all the options for CSV fields, date format, and amount options. This actually happens for all the options that changes the number of lines or how they're split (
delimiter,skip start lines,skip end lines, andfile has header row).This actually makes a lot of sense for the other three, since they will change the first line that is used to determine the column names that you select for the CSV fields options, so then the options you selected from before are no longer valid and will have to be reset. But the
skip end linesdoesn't change this first line unless you select a number greater than the number of rows (in which case there are no lines left at all, so it should be obvious that this was a mistake).Because the bottom lines are hidden from view if there are a lot of transactions it's easy to not notice you even need to ignore lines before you start selecting fields. And because so many fields are reset, it's really annoying to have to redo all of them, leading to an all around bad user experience.
Expected behaviour: Changing
skip end linesjust removes some transactions from the end of the list without changing any other transactions.Actual behaviour: Changing
skip end linesresets all CSV options selected, messing up all the remaining transactions and forcing you to redo your work.Observed on version 26.5.2
How can we reproduce the issue?
ImportbuttonCSV FIELDS,DATE FORMATorAMOUNT OPTIONS, for example click theFlip amountcheckbox to TrueSkip end linesnumber inputFlip amountcheckbox will now be falseWhere are you hosting Actual?
Docker
What browsers are you seeing the problem on?
Firefox
Operating System
Linux
@andrebk commented on GitHub (May 11, 2026):
Doing a little more testing, it looks like this problem only occurs when doing an import for the first time on an account. For accounts that have done an import before, changing the number of skipped lines does not reset the other fields.
I poked around the code a little bit and have a hypothesis. I've included it below, but I'm not a react guy and have all of 30 minutes of experience with this code base so take this with a large grain of salt:
Click here for speculation
So it looks like there is a
useEffectcall that re-parses the file if any of parse options change, for example delimiter, header row, or skipped lines:a95c0ad9b0/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx (L438-L468)In the
parsefunction that is called, after parsing the file it will apply your saved preferences for different options, for example flipping the amount:a95c0ad9b0/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx (L384-L388)But, the only place these preferences are saved is in the
onImportfunction:a95c0ad9b0/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx (L692-L697)Because preferences are only saved upon actually doing the import, when you are changing around settings and trying stuff out on your first import, any changes that cause a re-parse (like skipped end lines) will cause the default values to be loaded for the field options (which looks like a reset).
Like here, where if
prefsdoes not contain a setting for mappings it will callgetInitialMappingsand reset the fields:a95c0ad9b0/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx (L391-L397)@Hui66cs commented on GitHub (May 13, 2026):
I was able to reproduce this locally on the current
masterbranch.Changing
Skip end linescauses the CSV import modal to re-parse the file and reset in-progress import settings. I reproduced this withFlip amount, and also with field mappings: after manually changing the Amount mapping and then changingSkip end lines, the mapping was restored to the inferred/saved value instead of preserving the current selection.I’d like to work on a fix for this. My initial plan is to preserve the current in-progress import settings when
skipEndLineschanges, while still re-parsing the displayed rows.