Repository navigation
Releases
Releases · SomeCatCode/nextcloud_ebook_reader_app
1.0.3
Hinzugefügt
- App bewerten und App teilen. Die Einstellungen haben unter „Über“ zwei neue Einträge. „App bewerten“ öffnet die Seite der App in Google Play. Wenn Google Play fehlt, öffnet die App die Seite im Browser. „App teilen“ öffnet das Teilen-Menü von Android mit einem kurzen Text und dem Link zur App in Google Play.
Behoben
- Randlose Anzeige ohne veraltete APIs. Google Play meldete für 1.0.2 drei APIs, die Android 15 nicht mehr unterstützt:
Window.setStatusBarColor,Window.setNavigationBarColorundLAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES. Die Aufrufe kamen ausenableEdgeToEdge()der AndroidX-Bibliothek. Die App verwendet diese Funktion nicht mehr. Das App-Design macht Statusleiste und Navigationsleiste jetzt durchsichtig. Ab Android 11 darf der Inhalt in jeden Kamera-Ausschnitt reichen (alwaysstattshortEdges). Unter Android 8 und 9 bleibt die Navigationsleiste halbdurchsichtig dunkel. - Symbole der Statusleiste gut lesbar. Die Symbole in Statusleiste und Navigationsleiste folgen jetzt dem Design der App, nicht dem Design des Systems. Bisher waren die Symbole kaum sichtbar, wenn das System dunkel und die App hell eingestellt war.
1.0.2
Geändert
- Kontenverwaltung übersichtlicher. Jedes Konto hat jetzt einen Schalter für „Aktiv“ statt der Schaltflächen „Aktivieren“ und „Deaktivieren“. Bearbeiten (neu anmelden), Synchronisieren und Entfernen sind jetzt Symbole. Die Symbole haben immer dieselbe Position, unabhängig vom Zustand des Kontos. Der Status steht als farbiges Label neben dem Kontonamen: grün bei „Verbunden“, rot bei Problemen. Während der Synchronisation dreht sich das Symbol. Bei einem deaktivierten Konto ist Synchronisieren nicht verfügbar. Die Einführung beschreibt den Schalter.
1.0.1
Hinzugefügt
- Vier neue Sprachen: Die App gibt es jetzt auch auf Italienisch, Portugiesisch (Brasilien), Koreanisch und Chinesisch (vereinfacht). Die Sprachen stehen in Einstellungen → „Sprache“ und in den Android-Einstellungen unter „App-Sprachen“. Datenschutzerklärung und Play-Store-Texte gibt es auch in diesen Sprachen. Portugiesisch aus Portugal zeigt die brasilianischen Texte. Chinesisch (traditionell) zeigt weiter Englisch.
- Konto deaktivieren. In der Kontenverwaltung hat jedes Konto die Schaltfläche „Deaktivieren“. Ein deaktiviertes Konto bleibt gespeichert: Anmeldung, Bücher, Lesefortschritt, Markierungen und Downloads bleiben erhalten. Die Bibliothek blendet die Bücher, Regale und Serien des Kontos aus, und die App synchronisiert das Konto nicht. Der Kontowechsel in der Bibliothek zeigt nur aktive Konten. Wenn alle Konten deaktiviert sind, zeigt die Bibliothek einen Hinweis mit Link zur Kontenverwaltung. „Aktivieren“ zeigt die Bücher wieder und startet sofort eine Synchronisation. Die Downloads-Ansicht zeigt die Downloads deaktivierter Konten weiter an, damit du den Speicherplatz verwalten kannst. Neue Datenbankversion 6 (Migration 5→6, alle vorhandenen Konten bleiben aktiv).
Geändert
- Die Einführung (Einstellungen → „Einführung“) erklärt jetzt „Deaktivieren“ für Konten. Die Play-Store-Texte nennen das Vorlesen, Comics als langer Streifen und das Deaktivieren von Konten. Sie empfehlen die Server-App ab Version 1.0.0 statt 0.7.0.
0.7.1
Behoben
- Vorlesen klingt flüssiger. Die App gibt jetzt einen ganzen Absatz auf einmal an die Sprachausgabe, nicht mehr jeden Satz einzeln. Bisher machte die Sprachausgabe nach jedem Satz eine Pause und begann neu. Das klang abgehackt, besonders mit der Samsung-Sprachausgabe und bei Abkürzungen wie „Mr.“. Die Markierung folgt dem gesprochenen Satz weiter. Wenn die Sprachausgabe keine Position im Text meldet, schätzt die App die Position aus der Sprechdauer. Stimme, Sprache und Geschwindigkeit setzt die App nur bei einer Änderung neu.
0.7.0
Hinzugefügt
- Vorlesen: Im Reader-Menü „Vorlesen“ (sprechender Kopf) liest die App das Buch ab der aktuellen Seite mit der Sprachausgabe des Geräts vor, absatzweise und über Kapitel hinweg bis zum Buchende. Der gerade gesprochene Satz wird markiert, die Seite blättert mit. Steuerleiste mit vorherigem/nächstem Absatz, Pause, Tempo (0,5× bis 2×), Stimmenwahl und Beenden; ein Anruf oder eine andere Audio-App pausiert das Vorlesen, der Bildschirm bleibt währenddessen an.
- Sprachen beim Vorlesen: gelesen wird in der Sprache des Textes (aus dem Buch, auch wenn einzelne Absätze eine andere Sprache haben), sonst in der App-Sprache. Ist für die Textsprache keine Stimme installiert, liest die App in der App-Sprache und bietet „Stimmen installieren“ an. Die gewählte Stimme wird je Sprache gemerkt, das Tempo für alle; alle Texte gibt es in allen App-Sprachen. Comics und Fixed-Layout-Bücher haben keine Vorlesefunktion.
Behoben
- Anmeldung an Nextcloud: Beendet Android die App, während man im Browser bestätigt (z. B. bei wenig Speicher), wartet sie nach dem Neustart weiter auf die Bestätigung, statt die Anmeldung zu verlieren. Der Anmeldevorgang wird dafür bis zu 20 Minuten im gespeicherten Zustand des Bildschirms gehalten und danach verworfen.
- Lokale Bibliotheken: Wird eine Datei im Ordner umbenannt oder in einen Unterordner verschoben, behält das Buch beim nächsten Einlesen Lesestand, Markierungen, Bewertung, Status und Cover (bisher galt es als neues Buch). Erkannt an gleichem Format und gleicher Größe plus gleicher Änderungszeit bzw. gleichem Dateinamen; uneindeutige Fälle werden nicht geraten.
Geändert
- CI und Release-Workflow: Die Workflows nutzen jetzt Node.js 24 statt Node.js 22. Die Action
softprops/action-gh-releaseist auf v3.0.3 aktualisiert und läuft damit auf Node.js 24. GitHub zeigt keine Warnung zu Node.js 20 mehr. - Release-Workflow: Der Build installiert jetzt das NDK 28.2.13676358 (
ndkVersioninapp/build.gradle.kts). Damit packt er die Symboltabellen der nativen Bibliotheken in das App Bundle. Google Play zeigt die Warnung „Dieses App Bundle enthält nativen Code und du hast keine Symbole zum Debuggen hochgeladen“ nicht mehr. Die CI prüft bei jedem Pull Request, dass der Build die Symboltabellen erzeugt. - Release-Workflow: Der Upload zu Google Play nutzt den Parameter
tracksstatttrack. Der alte Parametertrackist veraltet und erzeugte eine Warnung.
0.6.0
Hinzugefügt
- Lange Streifen (Webtoons). Comics im Format „langer Streifen“ zeigt der Reader als nahtlosen senkrechten Scroll (Reader-Core aus Server 1.0.0). Die Leseposition innerhalb einer Seite wird gespeichert und wiederhergestellt. Ein Schalter in den Buchdetails und in den Reader-Einstellungen setzt den Wert von Hand; „Automatisch erkennen“ stellt die Erkennung aus der Datei wieder her. Abzeichen auf Covern und Listenzeilen, Filter „Layout: Langer Streifen“ (
layout:longstrip). Lokale Bibliotheken erkennen den Wert ausComicInfo.xml(Format,Tags,Genre) wie der Server. Server-Aufrufe (longstrip,resetLongstrip) nur ab Server 1.0.0. Neue Datenbankversion 5 (Migration 4→5, die Synchronisation holt die Werte beim nächsten Abgleich nach). - Natürliche Bandreihenfolge. Bände einer Serie sortieren nach Bandnummer und danach nach Titel in natürlicher Reihenfolge („2“ vor „10“). Fehlt
seriesIndex, liest die App die Nummer aus Titel oder Dateiname (Vol. 10,v02,Band 3,Tome 4,#7,Ch. 5,第3巻, angehängte Zahl, bei Dateinamen auch führende Zahl). Dieselben Regeln wie der Server. Bände ohne Nummer stehen zuletzt, auch absteigend. - Vorschläge nach dem Lesen. Am Ende eines Buchs (letzte Seite bzw. Doppelseite, bei langen Streifen und gescrolltem Text das untere Ende; der Reader meldet das Ende, die Prozentzahl zählt nicht) erscheint „Fertig gelesen“ mit „Weiterlesen: <nächster Band>“ und bis zu 4 ähnlichen ungelesenen Titeln. Dieselben Vorschläge stehen in den Buchdetails fertig gelesener Bücher. Die App berechnet sie lokal aus der Datenbank (offline und für lokale Bibliotheken): +3 gleicher Autor, +2 gleiches Genre, +1 gleiches Schlagwort, +1 gleiche Sprache, +1 gleiche Formatfamilie, höchstens ein Band je Serie.
- Bildfilter für Comics. Die Reader-Einstellungen haben für Comics die Regler „Helligkeit“ und „Kontrast“ (50–200 %) und den Schalter „Graustufen“. Der Filter gilt nur für die Seitenbilder, auch bei langen Streifen. „Bild zurücksetzen“ stellt das Originalbild wieder her. Die Werte gelten für alle Comics.
- Meldung bei der Grenze für Markierungen. Ein Buch hat höchstens 5000 Markierungen und Notizen (Grenze des Servers). Ist die Grenze erreicht, legt die App keine neue Markierung an und zeigt eine Meldung.
Sicherheit
- Reader-Core aktualisiert (Server-Stand 362f711). Der Reader setzt die Content-Security-Policy in jedem Kapitel jetzt so, dass ein präpariertes Buch sie nicht umgehen kann. Die Kapitel-iframes tragen dieselbe Regel als Attribut
csp, die WebView setzt sie durch. Der Reader entfernt Skripte, Event-Handler undjavascript:-Links aus jedem Kapitel. Beim Entpacken gelten Grenzen (höchstens 100 000 Einträge, 256 MB pro Eintrag). - libarchive aktualisiert. CBR, CB7 und CBT entpackt der Reader jetzt mit libarchive 3.8.10 statt 3.7.2. Die Dateien kommen aus dem Server-Repo (
packages/libarchive), nicht mehr aus dem npm-Paket.
Behoben
- Formulare schließen nicht mehr beim Tippen daneben. Bisher schloss ein Tipp neben einen Dialog das Formular, zum Beispiel beim Bearbeiten eines Buchs, um die Tastatur zu schließen. Die Eingaben gingen verloren. Das betrifft „Buch bearbeiten“, die Notiz zu einer Markierung, den Regal-Namen und das Hinzufügen eines Kontos. Diese Dialoge schließen jetzt nur noch über ihre Schaltflächen oder die Zurück-Taste.
- „Weiterlesen“ zeigt jetzt alle Bücher mit dem Lesestatus „Wird gelesen“ (zuletzt gelesene zuerst), auch ohne Lesefortschritt – dieselbe Auswahl wie der Statusfilter und die Web-App ab Server 0.11.1.
- Randlose Anzeige (Android 15): Im Querformat verdeckt eine seitliche Kameraaussparung keine Inhalte mehr. Die Themes setzen die ab Android 15 veralteten Attribute
android:statusBarColorundandroid:navigationBarColornicht mehr;enableEdgeToEdge()macht die Leisten transparent.
0.5.0
Hinzugefügt
- Lokale Bibliotheken: Bücher löschen. In den Buchdetails über „⋮“ → „Buch löschen“ (mit Rückfrage). Die Datei wird aus dem Ordner auf dem Gerät entfernt, Lesestand und Markierungen ebenso. Bei Nextcloud-Konten gibt es den Eintrag nicht.
- Speicherplatz-Prüfung beim Kopieren/Verschieben auf das Gerät: Vor dem Download prüft die App, ob im Zielordner genug Platz für das Buch plus 50 MB Reserve frei ist. Sonst bricht sie ab, bevor etwas geladen oder gelöscht wird, und nennt benötigten und freien Platz.
- Vier neue Sprachen: Die App ist jetzt auch auf Französisch, Arabisch, Türkisch und Dari verfügbar (zusätzlich zu Deutsch, Englisch, Spanisch und Japanisch). Arabisch und Dari werden von rechts nach links dargestellt; die Lesegesten im Reader bleiben an den Bildschirmseiten ausgerichtet.
- Sprache einstellbar: Einstellungen → „Sprache“ mit „Systemstandard“ und allen acht Sprachen, jede in ihrem eigenen Namen (Deutsch, English, Español, Français, 日本語, العربية, Türkçe, دری). Ohne Auswahl folgt die App der Systemsprache (nicht unterstützte Sprachen zeigen Englisch). Die Sprache erscheint auch in den Android-Systemeinstellungen unter „App-Sprachen“. Technisch über die AppCompat-Per-App-Sprache (MainActivity ist jetzt eine
AppCompatActivity). - Datenschutzerklärung und Play-Store-Texte gibt es zusätzlich auf Französisch, Arabisch, Türkisch und Dari (
docs/privacy/,fastlane/metadata/android/). - Test, der prüft, dass alle Übersetzungen exakt dieselben String-Namen und Platzhalter wie die englischen Texte haben.
Geändert
- Einstellungen: Der Eintrag „Datenschutzerklärung“ zeigt nur noch den Titel und öffnet die Erklärung direkt in der App (wie „Lizenzen von Drittanbietern“), in der App-Sprache (Deutsch, Englisch, Spanisch, Japanisch; sonst Englisch). Quelle sind die Texte unter
docs/privacy/, der Build kopiert sie in die App.
Behoben
- Kopieren/Verschieben zwischen Konten: Brach der Download vom Nextcloud-Server unterwegs ab, entstand im lokalen Ordner eine abgeschnittene Datei ohne Fehlermeldung (z. B. eine CBZ mit 51 statt 147 MB: kein Cover, ließ sich nicht öffnen). Die App setzt einen abgebrochenen Download jetzt an der richtigen Stelle fort (HTTP-Range) und prüft jede Kopie: Bei lokalen Zielen müssen Dateigröße und SHA-256-Prüfsumme mit dem Original übereinstimmen, bei Nextcloud-Zielen die Dateigröße auf dem Server. Stimmt etwas nicht, wird die Kopie gelöscht, das Original bleibt erhalten (auch beim Verschieben) und die App meldet einen Fehler.
- „Weiterlesen“ zeigt nur noch begonnene Bücher mit dem Lesestatus „Wird gelesen“ und einem Fortschritt über 0 %; Bücher mit „Ungelesen“ erscheinen dort nicht mehr (wie in der Web-App).
0.4.0
Hinzugefügt
- Lokale Bibliotheken: Die App funktioniert jetzt auch ohne Server. Unter „Konto hinzufügen“ → „Ordner auf diesem Gerät“ wird ein Ordner (inkl. Unterordnern, auch auf der SD-Karte) zur eigenen Bibliothek; jeder Ordner ist ein eigenes Konto. Titel, Autoren, Serie, Beschreibung, Sprache, Verlag, ISBN, Genres und Cover werden aus EPUB, FB2/FBZ und CBZ gelesen, sonst gilt der Dateiname. Lesestand, Markierungen, Bewertung und Bearbeitungen bleiben auf dem Gerät. „Neu einlesen“ (bzw. Synchronisieren) nimmt neue und geänderte Dateien auf und entfernt gelöschte. Keine Speicherberechtigung nötig (Android-Ordnerauswahl). Beim Entfernen bleiben die Dateien im Ordner erhalten.
- Kopieren und Verschieben zwischen Konten: In den Buchdetails über „⋮“ → „In anderes Konto kopieren/verschieben“, in jede Richtung (lokal ↔ Nextcloud, Nextcloud ↔ Nextcloud). Bei Nextcloud-Zielen wählbarer Bibliotheksordner, belegte Dateinamen bekommen „(2)“. Lesestand, Status, Bewertung und Markierungen ziehen mit. Verschieben löscht das Original erst nach erfolgreicher Kopie (Nextcloud: in den Papierkorb); Bücher, die andere mit dir teilen, lassen sich nur kopieren.
- Datenbank Version 4 (Kontoart und Dateiverweis lokaler Bücher), bestehende Konten bleiben unverändert.
- Anleitung beim ersten Start: kurze Einführung in fünf Seiten (Willkommen, Bibliothek einrichten mit Ordner oder Nextcloud, Bücher finden, Lesen und Gesten, Offline/Kopieren/Verschieben), am Ende direkt „Bibliothek hinzufügen“. Erscheint einmal (auch nach dem Update) und ist unter Einstellungen → „Anleitung“ jederzeit wieder aufrufbar.
Geändert
- Beschreibungen (Play Store, README, Datenschutzerklärungen) nennen die App nicht mehr nur als Nextcloud-Begleiter: Sie läuft auch eigenständig mit lokalen Ordnern.
Behoben
- Anmeldung an Nextcloud musste manchmal zweimal gemacht werden: Während man im Browser bestätigte, fragte die App im Hintergrund weiter nach; auf Geräten, die Hintergrund-Apps das Netz sperren (z. B. Samsung), brach die Anmeldung nach wenigen Sekunden mit einem Netzwerkfehler ab. Jetzt pausiert die Abfrage im Hintergrund und läuft beim Zurückkehren sofort weiter.
- Textfelder (Suche, Serveradresse, Gerätename, „Buch bearbeiten“) ließen den Cursor beim Tippen nach vorne springen, weil der Wert verzögert aus dem Zustand zurückkam. Die Felder halten den Text jetzt lokal.
0.3.0
Hinzugefügt
- Gesten im Reader: Nach oben wischen öffnet das Menü mit Fortschrittsleiste, nach unten wischen schließt es bzw. schließt das Buch (die Position wird vorher gespeichert). Links/rechts tippen oder wischen blättert wie bisher.
- Fortschrittsregler: Die Fortschrittsleiste im Reader-Menü lässt sich ziehen, um schnell im Buch zu springen (Vorschau der Zielposition in Prozent, bei Comics als Seitenzahl).
- Gesten-Erklärung beim ersten Öffnen eines Buchs; später jederzeit über die Reader-Einstellungen („Gesten anzeigen“).
- Neue Reiter „Geteilt“ und „Ordner“ (Reihenfolge wie in der Web-App: Bücher, Serien, Geteilt, Ordner, Regale; benötigt Server-App 0.10.0, auf älteren Servern bleiben sie ausgeblendet). „Geteilt“ zeigt die Bücher als Raster oder Liste, umschaltbar zwischen „Alle“, „Mit mir geteilt“ und „Von mir geteilt“. „Ordner“ durchsucht die Ordnerstruktur der Bibliothek (Pfadleiste, Hoch-Taste und Zurück-Geste, Unterordner mit Anzahl, optional inklusive Unterordnern). Beides wird lokal aus der Datenbank berechnet und funktioniert deshalb auch offline.
- Teilen-Symbol auf Buchcovern, Listenzeilen und Serien: „Von dir geteilt“ bzw. „Mit dir geteilt von …“ (mit Inhaltsbeschreibung für Screenreader).
- Datenbank (Version 3): neue Buchfelder
shared,ownerundsharedOut; beim Update startet automatisch ein vollständiger Abgleich, der sie füllt.
Behoben
- Beim Drehen des Geräts sprang der Reader an die Position zurück, an der das Buch geöffnet wurde, und speicherte diese als Lesestand. Jetzt bleibt die aktuelle Seite erhalten (auch geänderte Reader-Einstellungen).
Geändert
- Der Reiter „Serien“ zeigt weiterhin direkt alle Serien (kein Filter); die Tab-Leiste ist jetzt scrollbar.
0.2.1
Hinzugefügt
- Store-Grafiken für Google Play: App-Symbol (512 × 512) und Vorstellungsgrafik (1024 × 500) unter
fastlane/metadata/android/de-DE/images/, erzeugt mitscripts/store_graphics.py.
Geändert
- Play-Console-Leitfaden nennt keine echte Serveradresse und keinen echten Prüfer-Benutzer mehr (Platzhalter);
.gitignoreschließt Signaturschlüssel, Play-Service-Account-Dateien und.envaus.