diff --git a/docs/superpowers/specs/2026-09-14-einstellungen-ueberall-gleich-design.md b/docs/superpowers/specs/2026-09-14-einstellungen-ueberall-gleich-design.md new file mode 100644 index 0000000..c9236b5 --- /dev/null +++ b/docs/superpowers/specs/2026-09-14-einstellungen-ueberall-gleich-design.md @@ -0,0 +1,86 @@ +# 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 `