Andrey Antukh 34b24a9d9d Retry transient saves with backoff and reconnect notice
Classify save failures as transient or terminal (`transient-error?`
over the repo retryable types plus `:invalid-save-response`).
Transient failures keep the head commit queued under a new `:retrying`
status and resend it with backoff (2s/8s/20s, then terminal):
stamp rotation reuses the same `:commit-id`, the in-flight guard
prevents double-sends, and episode tokens silence stale timers.
One tagged reconnect notice per episode (hidden on save and on
terminal failure, silent recovery) plus a `:retrying` save-indicator
state; the browser `online` event and new edits resume the episode.
Terminal failures keep the exact `:error` path. Covers tasks 4, 6
and 7 with 31 persistence tests; updates the persistence memory.

Relates to #11724

AI-assisted-by: muse-spark-1.3-contributor
2026-09-23 12:05:24 +02:00
..
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2023-10-04 13:49:57 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00
2026-09-15 19:21:59 +02:00