/sync-bank now uses one shared default window in both implementations:
1 November of the previous year to 31 December of the current year.
Payments dated around New Year are picked up in January; duplicates
are still filtered by Sync ID.
Python used a hardcoded 2026 window and would have stopped syncing on
2027-01-01; Go used the current calendar year only.
Adds make sync-year [YEAR=N] with the same window. The CLI default
without flags (last 30 days) is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Go stringified sheet cells with fmt.Sprint, so a numeric VS read with
UNFORMATTED_VALUE was rendered as 2.609767878e+09. Text columns of the
payments sheet now go through sheets.CellString, which never uses
exponent form; bank inference uses the same helper.
Both sync implementations now append VS as a text cell so Sheets keeps
it a string and leading zeros survive. Existing rows are not rewritten.
Python already read VS as a digit string; a regression test pins that.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>