mirror of
https://github.com/actualbudget/actual.git
synced 2026-05-06 15:12:35 -05:00
Closed
opened 2026-04-30 10:32:39 -05:00 by GiteaMirror
·
5 comments
No Branch/Tag Specified
master
claude/hide-default-categories-1cwBZ
matiss/crdt-source-loading
matiss/crdt-protobuf
release/26.5.0
claude/update-issue-template-ykMNn
claude/fix-issue-7667-DPXi3
cursor/formula-feedback-improvements-4223
cursor/resolve-pr-7449-ee11
claude/fix-typescript-build-error-JPtZ5
jfdoming/api-tokens-part-3
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-1
claude/speed-up-vrt-workflow-ZAyI5
claude/crdt-version-auto-publish-Ph1BH
copilot/add-repository-configs-to-packages
worktree-compressed-drifting-ritchie
worktree-mellow-strolling-dawn
matiss/browser-api
claude/api-consumer-verification-kfz1K
feature/enable-banking
cursor/transaction-table-rewrite-f077
pr-7454
claude/fix-issue-7410-LLLQ4
release/v100.0.0
revert-7350-trim-deps
revert-7220-sankey-report
revert-7242-fix/split-parent-update-corruption
revert-7281-generate-icons
claude/electron-to-tauri-migration-LjBN8
worktree-remotion
release/vv26.4.0-pre
claude/browser-compatible-api-QbhHh
claude/improve-cli-transactions-waTUY
claude/publish-react-native-ios-j8qoT
js-proxy
claude/fix-flaky-ci-job-5gDdz
react-query-rules
react-query-useSchedules
claude/nightly-theme-validation-scan-DzOGD
claude/debug-simplefin-error-ZuKzB
matiss/desktop-client-subpath-imports
claude/fix-simplefin-ssrf-T31gX
claude/release-notes-validation-X7rvR
add-claude-github-actions-1772738270730
cursor/sync-performance-notification-9899
react-query-prefs
matiss/chunked-sync-and-progress-ux
v26.2.1
copilot/sub-pr-6880
fix-react-query-clear-on-close-budget
copilot/sub-pr-6140
feat/auto-note
feat/scoped-bank-sync
cursor/desktop-transactions-react-table-1d0c
fix-exhaustive-deps-App
copilot/fix-find-replace-bug
release/v26.2.0-pre
matiss/browser-tests
mobile-fix-drag-and-drop-across-groups
budget-table-v2
PayeeAutocomplete2
pglite
bugfix/plugins/fix-plugins-sw
feat/plugins/plugins-core-package
prerelease
matiss/unicode-minus-fix
cursor/fix-actual-github-issue-6206-gemini-3-pro-preview-9c37
TransactionFormPage
cursor/implement-mortgage-and-loan-account-type-78ca
tests-update-fill-with-pressSequentially
mobile/link-modal
deps/25.11
cursor/fix-update-vrt-apply-ci-job-dispatch-b324
sync-server-plugins
cursor/propose-patch-for-github-issue-5680-2a18
fix/compiler-preserve-inner-dollar-escapes
cursor/analyze-actual-budget-issue-and-propose-fix-5b70
coderabbitai/docstrings/0c070e5
cursor/add-wip-prefix-and-comment-to-prs-d78d
jfdoming/08-21-auto-focus-on-navigate-in-all-browsers
show-totals-on-mobile-budget-banners
allow-child-transactions-make-transfer
mobile-calculator-keyboard
payee-geolocation
enhance/restore_scroll_position
dm-fix-second-click-on-mobile-new-transaction-2
scrollToLocationBudget
alert-autofix-38
tsconfig-composite
mobile-fix-uncategorized-transactions-on-tracking-budgets
server-budget-handlers
fix-sql-injection-in-cleanup-template
non-chrome-draggable-workaround
mobile-budget-page-swipe-navigation
ts-db-all
stable
dark-theme-with-brand-colors
fix-mobile-delete-group
ts-db-select
UnderKoen/reconcile-context-menu
master-before-server-merge
v25.2.1
ts-runQuery
rename-redux-hooks
UnderKoen/3557-persist-state-in-history
remove-redux-CLOSE_BUDGET
fix-exhaustive-deps-errors-FinancesApp
redux-toolkit-createSlice-backup
accounts-function-component
ts-useSplitsExpanded
loot-core-server-package
useTransactios-in-TransactionEdit
react-aria-input
move-redux-to-desktop-client
QueryState-type
fix-themes-applied-late
mobile-vrts
revert-3295-spendingCardFix
react-aria-button-4
split-payee-on-mobile
twk3/pin-apis-crdt
notes-tag-autocomplete
ts-LoadBackup
dnd-kit
package-upgrades
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
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
No Label
help wanted
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#49280
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 @MatissJanis on GitHub (Jan 16, 2023).
Original GitHub issue: https://github.com/actualbudget/actual/issues/473
This might be controversial, but bare with me.
Actual is a local-first app. The frontend is deployable to a static website. Eventually we might expose it nicely in
actualbudget.comdomain for everyone to use.However, the server is dynamic. It requires some technical knowledge to deploy it. Which means users with low technical skills won't be able to use the sync capabilities. For many this is a deal-breaker.
So here's the feature request: what if we allowed to do sync to drive/dropbox or other 3rd party?
--
Technical details (just an initial proposal to get the ball rolling)
The current sync implementation would not work with these 3rd parties. Theoretically we could set-up another sync mechanism that syncs the full database, however that will have performance issues for large budgets. So another alternative is to sync with multiple files. If the current sync logic sends small protobufs, we could also send those same protobufs to a 3rd party and store them there. And once we have ~50 individual protobuf files on the 3rd party we "batch them" into a larger file. This way we keep the sync functionality fast whilst having a full backup sitting on a 3rd party server.
But again: this is just an early proposal. You understand the feature request better now, so please leave some better ideas in the comments below (or submit a pr).
@jlongster commented on GitHub (Jan 16, 2023):
It's a great idea! I'll drop some opinions here. Dealing with a sick kid throwing up so this won't be as detailed as it could be. Obviously my opinions are biased here as someone who built the current system.
I've looked into something like this before. It would be great if we could leverage the local system to handle moving data back and forth, but unfortunately that kind of robust system just doesn't exist. There's a lot of dragons when it comes to distributed systems: you need to make sure everything is written to disk atomically and that the checks and balances are done at the right time.
A filesystem is a poor platform for that kind of work, especially a networked filesystem. It would be a failure if you started reading a file that was being written to, for example. There are ways around this, but it really requires a new syncing format entirely to ensure that data is read and written in the way that you expect 100% of the time to avoid corrupt sync states.
The most critical flaw: the merkle trie. That's how you know your current data is actually accurate and that you are up-to-date with everyone else correctly. We apply sync messages and then update the merkle trie to update the hash: this has to be persisted to the filesystem atomically. Your data and the merkle trie must always 100% be in sync. You cannot do this kind of deterministic writes with google drive/dropbox.
The result of these failures will be really obscure things, like the app saying you are currently up-to-date but the data actually isn't. It's never acceptable for this to happen imo.
Personally, I just simply don't like these kinds of services for app state. I use logseq with an iCloud backend, and tried dropbox before. When I open the mobile app sometimes it takes minutes for data to show up. And sometimes data doesn't show up at all! My experience with storing this data as an app has never been good. And apps like logseq (ynab 4, an old version, even used something like a file sync) are all moving away from this and building there own syncing strategies.
I think there is something here; you could do some research on CRDTs stored as filesystems. It could be really exciting. But you'd have to reinvent large parts of the syncing layer for it to be robust imo.
@jlongster commented on GitHub (Jan 16, 2023):
Also I worried that you all, as maintainers, would have to deal will a lot of users complaining about something going wrong with syncing when it isn't your fault at all!
@Kidglove57 commented on GitHub (Jan 16, 2023):
A non technical user view point by way of illustration.
An old Mac budgeting app called Moneywell had its sync broken by Dropbox. The new custodians have been working for 3 years to restore sync. In the end they accepted that iCloud was the lesser of the evils from amongst their possible solutions and it has been in beta for a year. However, iCloud sync still gives quite a few problems even after all that effort and in particular in how slow it can be to catch up on the second device.
As James intimates, I do fear that this and the much talked about bank feeds could cause no end of “help!” Issues for the volunteer team!
@biohzrddd commented on GitHub (Jan 21, 2023):
Great idea. When I was thinking of writing my own app from scratch, using Google for access control and syncing to Google Drive was my #1 feature to implement. Thankfully, I found Actual Budget :).
Personally, I like how YNAB4 on Windows did it. You save the file for each device that accesses the budget to the dropbox/ynab/device folder, dropbox deals with syncing. it is up to the device to merge changes from other devices. In my 10+ years using YNAB4 this way across 1-3 devices and two users, I've maybe once had a conflict, but it only showed up as a duplicate transaction.
But with a web app on a server, you need to access the dropbox/google drive/onedrive/etc API and sync files from there.
What's the requirements for a server to add syncing to each service? Is it per app or per server? That could be another hurdle for new users, registering for and getting an API key.
@MatissJanis commented on GitHub (Mar 30, 2023):
I'll close off this idea in order to clean up our backlog. If someone still wishes to work on this - please open a new issue and lets continue discussing!