diora-web/static/js/app
mrwnslz 8f5be379fe Bibliothek neu: Ordner als Filter-Chips überall, Cover-Raster, Cover verschlüsselt und generiert (noch nicht veröffentlicht)
- Ordner wie Tags (docs/library.md): folders.js zeichnet die Chip-Reihe, das
  Blatt „In Ordner …“ (Häkchen, Neuer Ordner) und „Ordner verwalten“
  (umbenennen = zusammenlegen, löschen, Reihenfolge). E-Books: `folders` im
  verschlüsselten Meta, Reihenfolge in verschlüsselten Bibliotheks-Einstellungen
  (/books/prefs/). Podcasts/Hörbücher: PodcastFeed.folders (Migration 0021,
  übernimmt `folder`), /podcasts/folders/ (+rename, +delete). Blogs: Reihenfolge
  (/feeds/folders/order/).
- Bibliothek (53-library.js): Kopf mit Suche, Sortierung, Raster/Liste und +;
  Chips Angefangen · Ungelesen · Gelesen · Ordner; eine „Weiterlesen“-Karte;
  Mehrfachauswahl (lange drücken). E-Ink und diora Reader beginnen als Liste.
- Cover Ende-zu-Ende verschlüsselt (covers.js, /books/<id>/cover/): aus dem
  E-Book (EPUB-Coverbild, PDF Seite 1), 300 px, mit dem Nutzerschlüssel
  verschlüsselt, einmal hochgeladen; sparsam im Leerlauf, nie beim Lesen, nie
  auf E-Ink.
- Bücher ohne Cover bekommen eins (gencover.js): Stichwörter aus Titel, Autor,
  Regal und Ordnern wählen ein Gestaltungskonzept (Konstruktivismus, Geometrie,
  Psyche, Wellen, Karte, Kosmos, Ornament, Botanik, Berge, Zellen, Raster,
  Schatten, Typo, sonst Bauhaus); ein Hash aus Titel und Autor Palette, Aufbau
  und Details – einzigartig, überall gleich, nichts gespeichert.
- Hörbücher: Ordner-Chips statt Kacheln, „In Ordner …“ mit mehreren Ordnern.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 20:44:23 +02:00
..
01-core.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
10-radio.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
14-focus.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
16-stations.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
20-tabs.js Abos & Quellen: alle Abos an einem Ort (Navigation Phase 2) 2026-10-16 15:23:12 +02:00
24-ambient.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
26-sidebar.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
28-serviceworker.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
29-m3u.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
30-contrast.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
32-crypto.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
34-wallpaper.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
40-epub.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
44-books.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
46-readpos.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
48-book-cache.js Vorbereitete Bücher: Schlüssel enthält die Fußnoten-Erkennung der App-Schicht; sw v108 2026-10-14 19:54:12 +02:00
50-reader-state.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
52-book-list.js Bibliothek neu: Ordner als Filter-Chips überall, Cover-Raster, Cover verschlüsselt und generiert (noch nicht veröffentlicht) 2026-10-16 20:44:23 +02:00
53-library.js Bibliothek neu: Ordner als Filter-Chips überall, Cover-Raster, Cover verschlüsselt und generiert (noch nicht veröffentlicht) 2026-10-16 20:44:23 +02:00
56-cloud-import.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
58-pdf.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
60-tts.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
62-reader.js Reader: offene Notizleiste schiebt den Text nicht mehr aus der Mitte; sw v107 2026-10-14 19:43:03 +02:00
64-reader-settings.js Reader: offene Notizleiste schiebt den Text nicht mehr aus der Mitte; sw v107 2026-10-14 19:43:03 +02:00
66-pdf-paginated.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
68-bookmarks.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
70-search.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
72-highlights.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
74-margin.js Reader: offene Notizleiste schiebt den Text nicht mehr aus der Mitte; sw v107 2026-10-14 19:43:03 +02:00
76-export.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
78-footnotes.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
80-radio-sidebar.js Refactoring Schritt 2: app.js nach Bereichen in static/js/app/ aufgeteilt; sw v106 2026-10-14 18:30:43 +02:00
99-init.js Navigation: Lesen und Hören (Phase 1, noch nicht veröffentlicht) 2026-10-16 14:31:58 +02:00