whisper-money/lang
Víctor Falcón e0481df497 fix(banking): record the job deaths that never reach handle()
Every `logSyncAttempt` call lived inside `handle()`, which is exactly what an
out-of-band death skips — so a connection's own history showed no trace of the
most common way this job dies. One prod connection has 66 job failures and 3
sync-log rows. That gap is why the first pass of this branch mis-attributed the
stranding to timeouts: the evidence was only in `failed_jobs`.

`duration_ms` becomes nullable at the call site rather than being faked to 0,
because nobody timed the attempt.

The copy changes too. `failed()` wrote "An unexpected error occurred during sync.
Please try again later." — handing our own infrastructure to the user as an
action — while the classified-transient path already promised "we will try
syncing again later" for the same situation. Every message this method writes
describes an out-of-band death, so it now says so and the next scheduled cycle
picks the connection back up on its own.
2026-08-12 09:43:03 +02:00
..
en feat: Spanish localization (#74) 2026-02-08 11:58:08 +01:00
es feat: Spanish localization (#74) 2026-02-08 11:58:08 +01:00
fr feat(i18n): add French translation support (#532) 2026-06-15 19:15:43 +02:00
en.json feat(cashflow): rework summary cards into net + saved/invested (#465) 2026-06-01 11:37:28 +02:00
es.json fix(banking): record the job deaths that never reach handle() 2026-08-12 09:43:03 +02:00
fr.json feat(roadmap): add a public roadmap page mirrored from UserJot (#778) 2026-08-11 14:14:59 +00:00