Vier Fehler, und bei zweien log der Kommentar daneben

**Der Einstellungsknopf lag hinter der Abspielleiste.** Gemessen: `.pl`
steht auf Stufe 150, `#chrome` auf gar keiner, und die kleine Leiste spannte
über die ganze Breite — genau über die unteren 72 Bildpunkte der
Seitenleiste, wo „Einstellungen" klebt. Weil der Spieler bei jedem Wechsel
der Adresse minimiert, stand sie zuverlässig im Weg, sobald man dorthin
wollte.

Die Leiste beginnt jetzt hinter der Seitenleiste. Nicht über die Stufen
gelöst, und das ist der Punkt: `#chrome` höher zu setzen hiesse, die
Seitenleiste läge auch über dem grossen Spieler — es ist dieselbe Hülle.
Dass diese Leiste Platz wegnimmt statt sich darüberzulegen, stand für
Inhalt, Hinweise und Auswahlleiste ohnehin schon da; die Seitenleiste war
die vergessene vierte. Gemessen, 1400 Bildpunkte breit: Leiste ab 240,
Knopf bei 0, keine Überschneidung, und ein Treffertest in der Knopfmitte
trifft den Knopf.

**Ein Klick auf eine Kategorie kam nie an.** Dort sprang der Code in die
Mediathek und suchte danach `.filterzeile select`, um den Wert zu setzen.
Die Filterzeile hat kein `<select>` — `auswahl()` baut einen Knopf, mit
Absicht und begründet. Der Zweig lief also nie, und man landete in der
ungefilterten Mediathek. Der Kommentar daneben behauptete das Gegenteil.

Das Genre steht jetzt in der Adresse: `#/m/{id}/mediathek/Horror`. Das
löst zugleich das zweite Problem — die Mediathek wird unter ihrem Weg
gemerkt, und stünde das Genre nur im Kopf, zeigte ein zweiter Besuch die
Liste des ersten. Geprüft: Klick setzt den Weg und die Pille, Neuladen
behält beides, Zurück führt auf die Kategorien, Vorwärts wieder hinein.

**Zurückgezogene Einladungen blieben für immer stehen.** Der Knopfblock
steckte ganz in `if (!e.revokedAt)`, eine erledigte Zeile hatte also gar
keinen Knopf. Die Serverbegründung — eine Zeile wegzuwerfen hiesse,
hinterher nicht mehr zu wissen, dass es den Link je gab — bleibt richtig,
sie gilt nur nicht ewig: eine Liste, aus der nichts verschwindet, wird
unlesbar, und dann sieht man die eine Zeile nicht mehr, um die es ging.

Deshalb kein umgedeutetes DELETE, sondern `?purge=true`, und das greift nur
bei einem Link, der ohnehin keine Tür mehr öffnet. Ein gültiger wird mit
einem deutschen Satz abgewiesen.

**Poster in der falschen Sprache.** „365 Tage" stand mit polnischem Plakat
da. Kein fehlender Anbieter: für den Schriftzug gab es die sprachgewichtete
Wahl längst, fürs Plakat wurde das blanke `poster_path` der Hauptantwort
genommen — bei TMDB das Bild der Originalsprache, wenn in der gewünschten
keines eingetragen ist. Die sortierte Liste lag im selben Abruf schon vor
und wurde ausschliesslich für den Schriftzug benutzt.

Plakat und Hintergrund nehmen jetzt dieselbe Rangfolge: eingestellte
Sprache, dann sprachlos, dann Englisch. Sprachlos vor Englisch ist keine
Verlegenheit — ein Bild ohne Sprachkennung trägt keinen Text, und ein
Plakat ohne Titel ist für einen deutschen Bestand besser als dasselbe mit
englischem. Im Bilderdialog stehen die Kandidaten jetzt ebenso sortiert.
Bestehende Titel ändern sich beim nächsten Auffrischen; von Hand gesetzte
Plakate bleiben unangetastet.

676 Tests grün, davon zehn neue.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-08 17:46:46 +02:00
co-authored by Claude Opus 5
parent c6df9fdab0
commit 2809821c9b
9 changed files with 391 additions and 25 deletions
+18
View File
@@ -1013,6 +1013,21 @@ body.pl-offen { overflow: hidden; }
.pl.pl-klein {
inset: auto 0 0 0;
height: 72px;
/* **Die Leiste fängt hinter der Seitenleiste an.**
*
* Gemessen: `.pl` liegt auf Stufe 150, `#chrome` auf gar keiner. Die
* Leiste spannte deshalb über die ganze Breite und legte sich über die
* unteren 72 Bildpunkte der Seitenleiste — genau dort, wo „Einstellungen"
* klebt. Und weil der Spieler bei jedem Wechsel der Adresse minimiert,
* stand sie zuverlässig im Weg, sobald man dorthin wollte.
*
* **Nicht über die Stufen gelöst, und das ist der Punkt.** `#chrome`
* über 150 zu heben hiesse, die Seitenleiste läge auch über dem grossen
* Spieler — es ist dieselbe Hülle. Dass diese Leiste Platz wegnimmt,
* statt sich darüberzulegen, steht weiter unten ohnehin schon für den
* Inhalt, die Hinweise und die Auswahlleiste; die Seitenleiste war die
* vergessene vierte. */
left: var(--sidebar-w);
/* **`place-items` muss ausdrücklich zurück.** Im ganzen Bild zentriert die
Hülle ihre Kinder; in der Leiste zog das die Beschriftung in die Mitte,
weit weg vom Vorschaubild, an dem sie hängt. */
@@ -1098,6 +1113,9 @@ body:has(.pl.pl-klein) .auswahlleiste { bottom: 92px; }
}
#chrome button { border-left: 0; border-bottom: 3px solid transparent; white-space: nowrap; }
#chrome button.check { border-left-color: transparent; border-bottom-color: var(--accent); background: none; }
/* Hier ist die Seitenleiste eine Zeile oben; unten ist sie nicht im Weg,
und die Leiste darf die volle Breite nehmen. */
.pl.pl-klein { left: 0; }
.nav-gruppe { display: none; }
.nav-fuss { margin: 0; padding: 0; display: flex; }
#content { margin-left: 0; padding: var(--s-loose); }