Django internet radio player
Find a file
mrwnslz 60dd4926cf
All checks were successful
Build and push Docker image / build (push) Successful in 15s
Test / test (push) Successful in 8m21s
Lesestand: die zuletzt gelesene Stelle gewinnt, nicht mehr die weiteste; sw v100
docs/progress-sync.md ist der Vertrag für Server, Web, Android und Desktop.

- Server: read_at (Zeit, zu der dort gelesen wurde, Uhrfehler des Geräts per
  sent_at herausgerechnet, nie nach "jetzt"), Gerät, weiteste Stelle. Ältere
  Schreibvorgänge (offline nachgereicht, liegengelassener Tab) gewinnen nicht.
  Apps ohne read_at: nur strikt vorwärts. Antwort = Zustand nach dem Schreiben.
  /books/ mit X-Server-Now, /api/sync/ mit server_now.
- Web-Reader: Zeit einer Stelle ist der Moment, in dem man durch eigenes Tun
  hinkam (Scrollen, Blättern, Tasten, Vorlesen); unverändert Liegendes
  schickt nichts bzw. nur seine alte Zeit. Vor dem Wiederherstellen und
  während eines Blicks (Fußnote, "Weit gescrollt") wird nicht gespeichert.
  Eigene Stellen in einem Ausgang (localStorage) bis der Server sie hat.
  Angebote "Auf <Gerät> weitergelesen" und "Weiteste Stelle".
- Tests: books/tests.py (Reihenfolge, Uhrfehler, Zukunft, alte Apps, weiteste
  Stelle, Liste und Snapshot).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:31:36 +02:00
.forgejo/workflows CI: data/ anlegen, bevor manage.py check läuft 2026-10-02 10:11:38 +02:00
accounts Lesestand: die zuletzt gelesene Stelle gewinnt, nicht mehr die weiteste; sw v100 2026-10-12 19:31:36 +02:00
books Lesestand: die zuletzt gelesene Stelle gewinnt, nicht mehr die weiteste; sw v100 2026-10-12 19:31:36 +02:00
diora Feed-Reader (Server): Nachrichten und Blogs, Volltext, Meldungen bündeln 2026-10-04 19:57:23 +02:00
docs Lesestand: die zuletzt gelesene Stelle gewinnt, nicht mehr die weiteste; sw v100 2026-10-12 19:31:36 +02:00
e2e Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
feeds Blogs: eigene Ordner (mehrere je Blog, umbenennen, auflösen), Lesefortschritt 2026-10-04 21:54:04 +02:00
gpodder AntennaPod-Import und automatischer Download pro Podcast 2026-10-02 11:41:04 +02:00
podcasts Feed-Reader (Server): Nachrichten und Blogs, Volltext, Meldungen bündeln 2026-10-04 19:57:23 +02:00
radio Oberfläche eingedeutscht: Radio, Bücher/Reader, Fokus, Konto, Anmeldung; sw v71 2026-10-03 13:53:01 +02:00
static Lesestand: die zuletzt gelesene Stelle gewinnt, nicht mehr die weiteste; sw v100 2026-10-12 19:31:36 +02:00
templates Einstellungen: Cloud-Verbindung bearbeiten (Name, URL, Benutzer, Unterordner, Passwort); sw v99 2026-10-08 19:22:04 +02:00
tools Podcasts im Browser: die Podcast-Seite der App statt des alten Podcast-Tabs 2026-10-02 10:26:32 +02:00
tts Vorlesen: Sprachauswahl DE/EN mit englischer Piper-Stimme (SW v43) 2026-09-01 07:04:27 +02:00
.env.example Bücher: Cloud-Import aus WebDAV/Nextcloud (SW v41) 2026-08-28 08:26:22 +00:00
.gitignore Vorlesen-Funktion im Reader: Piper/Thorsten-TTS (SW v42) 2026-08-31 22:29:13 +02:00
docker-compose.yml Add podcast feature with feed management, Docker cron, and ebook reader assets 2026-03-19 13:39:59 +01:00
Dockerfile Vorlesen: Sprachauswahl DE/EN mit englischer Piper-Stimme (SW v43) 2026-09-01 07:04:27 +02:00
Dockerfile.cron Fix cron container: switch dcron→cron, export env vars for cron jobs 2026-03-20 09:16:29 +01:00
manage.py Initial commit 2026-03-16 19:19:22 +01:00
package-lock.json Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
package.json Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
playwright.config.js Reader/UI: mehrere Fixes + Playwright-Setup (SW v21) 2026-08-04 09:01:52 +02:00
requirements.txt Feeds: Abo-Anmeldung für Seiten mit Bezahlschranke (junge Welt) 2026-10-04 21:24:59 +02:00