SimpleFin Sync v1.3.0
Balance accuracy and transfer correctness. Every figure below is from a live install.
Fixed
- One SimpleFin transaction id appearing in two accounts corrupted everything keyed by that id alone. SimpleFin issues a single id for both sides of a transfer between two accounts it can see end to end, so the two legs collapsed into one entry: a savings
TRANSFER_OUTcould be rewritten as a +$1,300 inflow carrying the other account's description, the linker could be handed the same row twice, and a starting-balance baseline could take the wrong sign. Identity is now(account, transaction id)everywhere it matters. On the live install this had already half-linked three transfer pairs — one leg grouped, the other not — leaving $2,700 of transfers out counted as spending. A reconcile repairs them. - A failed transfer link reported no reason. Linking deletes both rows before re-creating them, so a refused re-create loses financial rows, yet every host error was collected and then discarded behind a generic "could not be linked" that only appeared during a reconcile.
- The Docker companion could never repair a half-linked pair, because its record of "already linked" was keyed by bare transaction id. Entries are now per leg, while still reading the old format so existing records are neither lost nor needlessly re-linked.
- A duplicated transaction in one payload imported twice. Both copies landed in a single bulk request — the one place Wealthfolio's duplicate guard cannot compare rows against each other — and a savings account silently read $1,297.50 low.
- Plus: month-specific budget targets now win over
default; the monthly spending query has an upper date bound; an unpaired transfer leg no longer counts as spending; Markdown in a category or bank description no longer breaks a whole Telegram report.
Added
Fix baseline. A drift that no transaction can explain is now attributed to the account's starting balance and offered as a one-click correction. When a wide re-scan finds every reported transaction already stored and already matching, nothing inside the window accounts for the gap — the remaining candidate is the baseline row standing in for history the sync never saw, and the drift is exactly the amount it is wrong by. Never applied automatically, and never offered while any transaction is still unaccounted for.Reconcile & linkremoves surplus duplicate activities, reporting exactly what it deleted on the Sync page, in Telegram, and per row in the log. Starting balances and balance adjustments can never be swept.- Two independent scheduled reports (daily per-category, weekly month-to-date), per-report category selection, sync-health tracking with a 24-hour failure alert, and a stuck-transfer alert.
Changed
- Reports are built entirely from Wealthfolio's own category and budget data; the keyword-based categoriser has been removed.
Requires Wealthfolio 3.6.2 or later.