Plan für den Abgleich zwischen App und Web. Beim Bau des Webfrontends sind zwei Einstellungen entstanden, die es in der App nicht gibt, und eine dritte, die ihrer Gestaltung widerspricht: Plakate oder Querformat entscheidet die App bewusst selbst, weil man Angefangenes am Szenenbild wiedererkennt und Neues am Plakat aussucht. Gleiche Gliederung, Werte pro Gerät — am Fernseher größere Kacheln als am Laptop, ohne dass eins das andere umstellt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
87 lines
5.4 KiB
Markdown
87 lines
5.4 KiB
Markdown
# Einstellungen überall gleich
|
|
|
|
## Kontext
|
|
|
|
Flixy gibt es inzwischen als App (iPhone, iPad, Mac) und als Weboberfläche für Rechner, auf denen es keine App gibt und geben wird — Windows vor allem.
|
|
|
|
Beim Bau des Webfrontends sind die Einstellungen auseinandergelaufen. Ich habe dort zwei erfunden, die es in der App nicht gibt, und eine dritte, die der Gestaltung der App ausdrücklich widerspricht:
|
|
|
|
| | App | Web |
|
|
|---|---|---|
|
|
| Akzentfarbe (Palette) | ✅ | ✅ |
|
|
| Eigene Farbe (Hex) | ✅ | ❌ |
|
|
| Aufmacher: Quelle, Anzahl | ✅ | ✅ |
|
|
| Weiterschauen zusammenlegen, Gesehenes ausblenden | ✅ | ✅ |
|
|
| Reihen ordnen und ausblenden | ✅ | ❌ |
|
|
| Wiedergabe (Tempo, Spulweite, Qualität) | ✅ | ❌ |
|
|
| Sprachen (Ton, Untertitel) | ✅ | ❌ |
|
|
| Kachelgröße | ❌ | ✅ |
|
|
| Aufmacherhöhe | ❌ | ✅ |
|
|
| Plakate/Querformat | ❌ | ⚠️ |
|
|
|
|
Die letzte Zeile ist keine Lücke, sondern ein Fehler. Die App entscheidet die Kachelform **bewusst automatisch**: Weiterschauen zeigt das Szenenbild, weil man daran die Stelle wiedererkennt, alles andere das Plakat, weil man danach aussucht. Das zur Einstellung zu machen hieße, eine getroffene Entscheidung zurückzunehmen.
|
|
|
|
## Entscheidungen (mit dem Nutzer abgestimmt)
|
|
|
|
| Thema | Entscheidung |
|
|
|---|---|
|
|
| „Am gleichen Ort" | **Gleiche Gliederung, Werte pro Gerät.** Überall dieselben Einstellungen mit denselben Namen an derselben Stelle — aber jedes Gerät merkt sich seine eigenen. Am Fernseher größere Kacheln als am Laptop, ohne dass eins das andere umstellt. |
|
|
| Umfang | **Alles, was es im Web auch gibt.** Downloads und Diagnose bleiben draußen — dort fehlt die *Funktion*, nicht die Einstellung. |
|
|
| Plakate/Querformat | **Entfällt.** Zurück zur automatischen Wahl wie in der App. |
|
|
|
|
Verworfen wurde die Synchronisierung über den Server: Jellyfin könnte sie über `DisplayPreferences`, Plex nicht auf dieselbe Art — das hieße ein eigener Ablageweg und ein Backend, bei dem die Sache ausfällt.
|
|
|
|
## Die gemeinsame Gliederung
|
|
|
|
Beide Seiten, in dieser Reihenfolge:
|
|
|
|
1. **Darstellung** — Akzentfarbe, eigene Farbe, Kachelgröße
|
|
2. **Startseite** — Aufmacher (Quelle, Anzahl, Höhe), Reihen (zusammenlegen, Gesehenes ausblenden, ordnen und ausblenden)
|
|
3. **Wiedergabe** — Standardtempo, Spulweite vor/zurück, Qualität
|
|
4. **Sprachen** — Ton, Untertitel
|
|
5. **Server** — Adresse, Abmelden
|
|
|
|
Die App führt darunter weiter **Downloads** und **Diagnose**. Das ist kein Verstoß gegen den Grundsatz: Wo die Funktion fehlt, fehlt auch ihre Einstellung.
|
|
|
|
**Speicherschlüssel dürfen sich unterscheiden** (`UserDefaults` gegen `localStorage`), Bedeutung und Wertebereich nicht. Ein Regler von 70 % bis 180 % heißt auf beiden Seiten dasselbe.
|
|
|
|
## Phase 1 — Was der App fehlt
|
|
|
|
`HomeLayoutSettings` bekommt zwei Werte, beide mit Voreinstellung auf dem heutigen festen Verhalten, damit sich ohne Zutun nichts ändert:
|
|
|
|
- `cardScale: Double` (0.7 … 1.8, Standard 1.0) — multipliziert die Kachelbreiten in `MediaRow` (heute fest 220 für Querformat, 116 für Plakate) und die Mindestbreite im Mediathek-Raster.
|
|
- `heroHeight: Double` (0.4 … 0.95, Standard 0.82) — tritt an die Stelle des festen Werts in `HeroCarousel`.
|
|
|
|
In der Oberfläche: **Kachelgröße** unter Darstellung (es geht ums Aussehen, nicht um die Startseite), **Aufmacherhöhe** unter Startseite, direkt bei Quelle und Anzahl.
|
|
|
|
Das ist zugleich der Zoom-Wunsch, der die ganze Sache angestoßen hat.
|
|
|
|
## Phase 2 — Web aufräumen und angleichen
|
|
|
|
- Plakate/Querformat entfernen, automatische Wahl wie in der App.
|
|
- Gliederung auf die fünf Abschnitte oben bringen.
|
|
- Eigene Akzentfarbe als Hex-Eingabe, mit derselben Kontrastprüfung wie die App: eine Farbe, die auf dem dunklen Grund nicht lesbar ist, wird aufgehellt statt übernommen.
|
|
|
|
## Phase 3 — Reihen ordnen und ausblenden im Web
|
|
|
|
Die App kann Reihen der Startseite umsortieren und einzeln ausblenden (`Arrangement` in MediaKit). Im Web fehlt das ganz. Es kommt als Liste mit Ziehgriff und Häkchen.
|
|
|
|
## Phase 4 — Wiedergabe und Sprachen im Web
|
|
|
|
- **Wiedergabe**: Standardtempo, Spulweite vor und zurück, Qualität. Die App unterscheidet WLAN und Mobilfunk; im Browser gibt es diese Unterscheidung nicht verlässlich, deshalb dort **eine** Qualitätsstufe. Das ist kein Auseinanderlaufen, sondern derselbe Begriff unter anderen Bedingungen.
|
|
- **Sprachen**: bevorzugte Ton- und Untertitelspur, dieselben Werte wie in der App.
|
|
|
|
## Risiken
|
|
|
|
1. **Die Kachelgröße greift an mehreren Stellen.** `MediaRow`, das Mediathek-Raster, vielleicht die Detailseiten. Wird eine vergessen, sieht die Startseite anders aus als die Mediathek — und das fällt erst beim Danebenhalten auf.
|
|
2. **`heroHeight` und der Aufmacher-Überlappungsgriff.** Der Aufmacher zieht sich um die Inselhöhe nach oben und rechnet seine Höhe aus einem Anteil plus dieser Strecke. Ein veränderlicher Anteil darf diese Rechnung nicht zerlegen.
|
|
3. **Der Web-Player ist einfach.** Tempo und Spulweite brauchen dort erst Bedienelemente; heute steht da das nackte `<video>`-Element des Browsers.
|
|
|
|
## Fertig ist es, wenn
|
|
|
|
- App und Web zeigen dieselben fünf Abschnitte in derselben Reihenfolge mit denselben Bezeichnungen.
|
|
- Kachelgröße und Aufmacherhöhe wirken in der App — auf Startseite **und** Mediathek.
|
|
- Im Web gibt es keine Einstellung mehr, die die App nicht kennt.
|
|
- Downloads und Diagnose stehen weiterhin nur in der App, und der Grund dafür ist aufgeschrieben.
|
|
- Voreinstellungen entsprechen überall dem bisherigen Verhalten: wer nichts anfasst, merkt nichts.
|