fix(server-storage): keep URL favorites, flush before moving, cache-full and cut-off bodies

- Moving M3U favorites keeps URL favorites and anything the server cannot
  resolve; only older channel ids are translated.
- Queued user-data edits are sent before the move writes combined values.
- A re-read that does not fit the cache keeps the old cache and baseline
  together.
- A response body cut off after its headers counts as offline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 committed 2026-10-12 07:00:07 +02:00
1 parent 4afd4bcc33
commit 72c84a3eba
11 files changed
+141 -35

No files matched your search

+6 -4
View File
@@ -202,7 +202,9 @@ settings and guards read them in every build.
(the page-hide flush waits for a batch still travelling), a failed write,
including a refused `keepalive` one, stays queued for the next flush, and
re-reads run one at a time and keep entries edited while they were in
flight or not yet saved. Before the first read finishes, an edit is
flight or not yet saved. A re-read whose result does not fit the cache
keeps the old cache and baseline together. A response body cut off after
its headers counts as offline. Before the first read finishes, an edit is
compared with the cache, so it sends only its own entry. A re-read
updates the cache; views already open show another device's changes on
their next load (no live push). Start-up waits
@@ -230,9 +232,9 @@ settings and guards read them in every build.
playlist the server already has, by id or by source (Xtream server and
user, Stalker portal and MAC, M3U URL), merges into the server's copy; the
others upload with their ids. A merged playlist gains the browser
document's favorites and history (M3U channel ids are random per import,
so they are translated through the stream URL; unmatched ones are
dropped), and the legacy Xtream maps follow under
document's favorites and history (M3U favorites name channels by stream
URL; older ones by a channel id that is random per import and is
translated through the URL; nothing is dropped), and the legacy Xtream maps follow under
the server id; `combineUserData` unions lists (playback positions by
content type and Xtream id, renamed to the server playlist) and merges
maps, the server's value winning on a conflict. Browser data is never deleted, and