Ein Haken, der stehen blieb, als die Rechnung sich änderte

Ein Film stand bei 1:32 und tauchte in „Fortsetzen" trotzdem nicht auf.
Die Reihe fragt nicht die Regel, sondern deren festgehaltenes Ergebnis:
die Spalte `InProgress`. Die Bruchrechnung „Stelle kleiner als Anteil der
Laufzeit" lässt sich nicht nach SQL übersetzen, also steht sie als
Wahrheitswert in der Zeile — und berechnet wird sie nur, wenn eine
Fortschrittsmeldung eintrifft. Die kaputte Meldung von vorgestern hatte
dort `false` hinterlassen; die Korrektur am Server verhinderte neuen
Schaden, räumte den alten aber nicht weg.

`Sehstandpflege` rechnet nach jedem Update einmal durch: erst die
Laufzeit aus der Datei nachtragen, dann neu bewerten — in dieser
Reihenfolge, denn eine Neubewertung auf Basis eines Stummels käme wieder
zu `false`. `UpdatedAt` bleibt, wo es war; danach ist die Reihe sortiert.

Und der Knopf heisst jetzt so wie die Reihe, über der er steht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-08 22:41:22 +02:00
co-authored by Claude Opus 5
parent 5dfc22bdce
commit a609b2d087
5 changed files with 213 additions and 4 deletions
+6 -3
View File
@@ -15,7 +15,7 @@ export type Kachel = {
/** Welche Kennung den Sehstand trägt. Fehlt sie, ist es `id`.
*
* **Nur dort verschieden, wo die Kachel woandershin führt als sie misst:**
* eine Folge aus „Weiterschauen" öffnet die Serie, abgehakt wird aber die
* eine Folge aus „Fortsetzen" öffnet die Serie, abgehakt wird aber die
* Folge. */
standId?: string;
art: 'filme' | 'serien';
@@ -54,7 +54,7 @@ export const alsKachel = (e: Film | Serie): Kachel => ({
freigabe: e.publishAt,
});
/** Eine Kachel aus „Weiterschauen" oder „Nächste Folge" — bei Folgen
/** Eine Kachel aus „Fortsetzen" oder „Nächste Folge" — bei Folgen
* dreizeilig, wie bei Plex.
*
* **Die Kachel führt zur Serie, der Sehstand bleibt bei der Folge.**
@@ -310,7 +310,10 @@ function kachelpunkte(
// schlechter als keiner.
if (k.stand && !k.stand.watched && k.stand.positionSeconds > 0) {
punkte.push({
text: 'Aus Weiterschauen nehmen',
// **Dieselbe Reihe, derselbe Name.** Oben stand „Fortsetzen", hier
// „Weiterschauen" — zwei Wörter für eine Sache, und der Knopf sah
// danach aus, als meinte er etwas anderes.
text: 'Aus Fortsetzen entfernen',
tun: async () => {
await weglegen(k.standId ?? k.id);
if (k.stand) k.stand.dismissed = true;
+1 -1
View File
@@ -367,7 +367,7 @@ export function detailseite(art: Art, id: string, zurueck: () => void): HTMLElem
async () => { await favorit(eintrag.id, !stand?.favourite); await laden(); }));
if ((stand?.positionSeconds ?? 0) > 0 && !stand?.dismissed) {
reihe.appendChild(rundKnopf('mehr', false, 'Aus „Weiterschauen" nehmen',
reihe.appendChild(rundKnopf('mehr', false, 'Aus „Fortsetzen" entfernen',
async () => { await weglegen(eintrag.id); await laden(); }));
}