Eine Folge ist weder ein Film noch eine Serie

Die App meldete auf der Startseite „Dieser Titel ist auf dem Server nicht
mehr vorhanden" — über eine Folge, die sie selbst gerade anzeigte.

Gemessen im Quelltext: `item(id:)` probiert `/movies/{id}`, dann
`/series/{id}`, und wirft sonst `.notFound`. In „Weiterschauen" steht
eine Folge mit ihrer eigenen Kennung, und einen Endpunkt für eine
einzelne Folge gab es gar nicht. Jetzt gibt es `GET /api/v1/episodes/{id}`
— mit `SeriesId`, denn ohne die Serie fehlen der Folge Titel und Bild.
Im Simulator nachgestellt und nachgeprüft: die Seite steht.

**Zuletzt hinzugefügt.** Die App zeigte „Filme" und „Serien" — den Anfang
der Mediathek in der Reihenfolge der Datenbank, also immer denselben.
Jetzt je Mediathek eine Reihe „Neu in …", sortiert nach Zugang. Die
Kennungen beginnen nun mit `latest`, und daran hängen zwei Einstellungen,
die an einem Flaro-Server deshalb nichts taten: „Gesehenes in Neuzugängen
ausblenden" und „Aufmacher nur aus Neuzugängen".

**Geplante Titel.** `MediaItem` kennt jetzt `availableFrom`. Aufmacher und
Detailseite zeigen statt des Knopfes „Bald ist es soweit" mit dem Termin.
Die Kachel spielte trotzdem los — im Simulator kam der Spieler bis „Wird
vorbereitet …" —, also zählt ein geplanter Titel jetzt wie eine Sammlung:
nichts zu starten, der Tipp führt auf die Seite.

**Und das Bild im Aufmacher.** Bei einer angefangenen Folge stand dort ihr
Standbild statt des Bildes der Serie; wer der Serie eines ausgesucht
hatte, fand ein anderes vor. Die Kachel behält das Standbild — sie zeigt,
wo man steht —, der Aufmacher bekommt `SeriesBackdropImage`.

**Die Punkte im Karussell waren 26 × 3 Pixel.** Von drei Klicks auf
denselben Punkt traf nur der auf der Mittellinie; fünf Pixel daneben
geschah nichts. Der Knopf ist jetzt 27 Pixel hoch, sichtbar bleiben 3.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-06 16:06:58 +02:00
co-authored by Claude Opus 5
parent f10fb4c1bc
commit 10a5070e58
17 changed files with 389 additions and 71 deletions
+15 -5
View File
@@ -1147,16 +1147,26 @@ body:has(.pl.pl-klein) .auswahlleiste { bottom: 92px; }
.hero-knoepfe .btn { height: 40px; padding: 0 var(--s-section); gap: 6px; }
.hero-punkte {
position: absolute; right: var(--s-page); bottom: var(--s-page);
position: absolute; right: var(--s-page); bottom: calc(var(--s-page) - 12px);
display: flex; gap: 6px;
}
/* **Der Strich ist drei Pixel hoch, die Fläche darf es nicht sein.**
Gemessen: von drei Klicks auf denselben Punkt traf nur der genau auf der
Mittellinie; fünf Pixel darüber oder darunter geschah nichts. Der Knopf
trägt deshalb jetzt 27 Pixel Höhe, von denen man 3 sieht. */
.hero-punkt {
width: 26px; height: 3px; padding: 0; border: 0; border-radius: 2px;
width: 26px; height: 27px; padding: 0; border: 0;
background: none;
display: flex; align-items: center;
}
.hero-punkt::before {
content: ''; flex: 1; height: 3px; border-radius: 2px;
background: rgba(255, 255, 255, .28);
transition: background .2s ease;
}
.hero-punkt.an { background: var(--text); }
.hero-punkt:hover { background: rgba(255, 255, 255, .6); }
.hero-punkt.an::before { background: var(--text); }
.hero-punkt:hover::before { background: rgba(255, 255, 255, .6); }
@media (max-width: 860px) {
.hero {
@@ -1164,7 +1174,7 @@ body:has(.pl.pl-klein) .auswahlleiste { bottom: 92px; }
margin: calc(var(--s-loose) * -1) calc(var(--s-loose) * -1) var(--s-section);
}
.hero-inhalt { padding: var(--s-loose); max-width: none; }
.hero-punkte { right: var(--s-loose); bottom: var(--s-loose); }
.hero-punkte { right: var(--s-loose); bottom: calc(var(--s-loose) - 12px); }
}
/* --- Kontextmenü ---------------------------------------------------------