fix(playlists): a reorder counts among the writes, and what the third review found

A reorder was invisible to the overlap bookkeeping: a failed removal reset the
screen from a cache without it, and the membership guard never corrects an order.
It now counts as a write, a rollback leaves the order to the read after the last
write, and the accepted order keeps the rows it does not name, as the server does.
Undo places come from the order on screen. A stored position landing during a write
reaches the screen, and what a read brought is taken once the refresh is in. A write
that went through drops its rows from the cache again, past a read from before it.

Closing the player after Trash took the row it opened from no longer strands the
focus: the row in that place takes it, else the header's box, else the list's menu.
The page menu's grouping row closes its menu when it goes with the view. One hidden
row gets its own wording. /search/clear refuses a body without its list.
This commit is contained in:
2026-11-02 23:43:34 +01:00
parent b636ef38bc
commit c18a2063c8
6 changed files with 455 additions and 29 deletions
+2 -1
View File
@@ -120,7 +120,8 @@
"removeNoneLeft_one": "Nothing removed: it isn’t in this playlist any more",
"removeNoneLeft_other": "Nothing removed: they aren’t in this playlist any more",
"selectionCleared": "Selection cleared",
"removeAllHidden": "The selected rows are hidden by the filter",
"removeAllHidden_one": "The selected row is hidden by the filter",
"removeAllHidden_other": "The selected rows are hidden by the filter",
"undoNoneBack_one": "Nothing came back: that video isn’t where it was any more",
"undoNoneBack_other": "Nothing came back: those videos aren’t where they were any more",
"undoSomeBack_one": "Only {{count}} video came back: the rest aren’t where they were any more",
+2 -1
View File
@@ -120,7 +120,8 @@
"removeNoneLeft_one": "Nem történt eltávolítás: ez már nincs ebben a listában",
"removeNoneLeft_other": "Nem történt eltávolítás: ezek már nincsenek ebben a listában",
"selectionCleared": "Kijelölés törölve",
"removeAllHidden": "A kijelölt sorokat a szűrő elrejti",
"removeAllHidden_one": "A kijelölt sort a szűrő elrejti",
"removeAllHidden_other": "A kijelölt sorokat a szűrő elrejti",
"undoNoneBack_one": "Semmi nem került vissza: ez a videó már nincs ott, ahol volt",
"undoNoneBack_other": "Semmi nem került vissza: ezek a videók már nincsenek ott, ahol voltak",
"undoSomeBack_one": "Csak {{count}} videó került vissza: a többi már nincs ott, ahol volt",