source: Klonkt/CHANGELOG.de.md@ d039264

main
Last change on this file since d039264 was 421046c, checked in by roboburr <roboburr@…>, 2 months ago

fix(audio): gapless MSE playback - background auto-advance survives on Android

Root cause of "next track plays 1 second, then pauses and the media
notification closes" on backgrounded mobile Chrome/PWA: every track
change did pause() + audio.src=<new blob> + load() + play(), which the
browser treats as a NEW playback session - and Chrome's background media
policy pauses new sessions started in the background. Only a CONTINUING
session may keep playing.

The player now has two engines:

  • MSE chain (Chrome/Firefox/Android): one MediaSource + one 'audio/mpeg' SourceBuffer (every track is uniform transcoder mp3). The next track's bytes are appended into the same buffer, so the whole queue is one continuous playback session; auto-advance is just the timeline flowing past a segment boundary - no pause/src/load/play at all. Track chrome, per-track time display, seek, lock-screen position state and session save/restore all work in track coordinates via a segment table. Played data is pruned (~2 tracks buffered), ID3 tags are stripped between appends, QuotaExceeded evicts and retries.
  • Blob fallback (iOS Safari - no MSE; or runtime MSE failure): the previous per-track objectURL behaviour, now fed from shared byte fetches. An audio error while the MSE chain is active permanently falls back to blobs for the session and retries the same track.

Manual actions (play/next/prev/queue click/restore) start a fresh chain -
those happen in the foreground where a new session is allowed.

Verified in-browser (desktop Chrome, two 8s test tones): auto-advance
crosses the boundary with ZERO pause/play events (old engine: one pair
per track), per-track time display correct, manual next resets the
chain, in-track seek works, queue wrap-around is gapless, no console
errors.

  • src/assets/js/audio-player.js - the two-engine pipeline (fetchTrackBytes, MSE chain: chainStart/appendSegment/ensureNextAppended/pruneBuffer/ maybeCrossBoundary/displayTimes; applyBlobBytes fallback; updateTrackChrome extraction; MediaSession positionState)
  • src/views/shell.ejs - cache-buster v31 -> v32
  • CHANGELOG(.nl/.de).md - user-facing entry under Unreleased (3 languages)

Co-Authored-By: Claude <noreply@…>

  • Property mode set to 100644
File size: 13.0 KB
Line 
1# Änderungen — Klonkt
2
3Alle nennenswerten Änderungen an Klonkt. Das Neueste oben.
4Versionen folgen [SemVer](https://semver.org/lang/de/) (`1.0.0-beta.N` während der Beta).
5
6## [Unreleased]
7
8### Behoben
9- **Musik läuft auf Android im Hintergrund weiter.** Wenn ein Titel endete,
10 während das Handy gesperrt oder die App im Hintergrund war, startete der
11 nächste Titel und stoppte nach einer Sekunde wieder. Der Player führt die
12 Warteschlange jetzt als einen durchgehenden Stream zu, sodass das
13 Weiterspringen zum nächsten Titel nicht mehr als "neue" Wiedergabe zählt,
14 die der Browser pausieren darf.
15
16## [1.3.0] — 2026-07-02
17
18### Hinzugefügt
19- **Wähle eine helle oder dunkle Teilen-Karte.** Das automatisch erzeugte Teilbild folgt deinem
20 Site-Thema; unter Verwaltung → SEO kannst du es jetzt fest auf hell oder dunkel stellen.
21- **Eine Erwähnung ist jetzt eine Benachrichtigung.** Wenn dich jemand im Fediverse in einem
22 Beitrag erwähnt — auch in einem, der keine Antwort an dich ist — erscheint das in deinen
23 Fediverse-Benachrichtigungen mit einem Link zum Original.
24- **Cover-Art bei offen geteiltem Audio.** Ein offen im Fediverse geteilter Track trägt jetzt sein
25 Cover (oder das Beitragscover) mit, sodass Audio-Player, die Artwork unterstützen, es statt einer
26 leeren Kachel anzeigen.
27- **Einen Beitrag im Fediverse melden.** Von einem Fediverse-Beitrag aus kannst du ihn jetzt den
28 Moderatoren seines Heimatservers melden, mit optionaler Begründung — und meldet jemand deine Seite,
29 erscheint die Meldung in deinen Fediverse-Benachrichtigungen.
30- **Sprache eines Beitrags festlegen.** Wähle, in welcher Sprache du einen Beitrag geschrieben hast —
31 im Fediverse funktionieren damit der Sprachfilter der Timeline und die Übersetzen-Schaltfläche.
32- **Alt-Text für Bilder.** Gib deinem Titelbild eine Beschreibung (Inline-Bilder behalten ihren
33 eigenen Alt-Text) — sie föderiert ins Fediverse und lässt Screenreader das Bild beschreiben.
34- **Erwähne Personen in einem Beitrag.** `@benutzer@server` in einem Beitrag verlinkt jetzt auf ihr
35 Profil und benachrichtigt sie im Fediverse — auch wenn sie dir nicht folgen — wie eine Erwähnung
36 in einer Antwort.
37- **Kurze Videos im Feed spielen automatisch ab und wiederholen sich.** Ein animiertes Cover oder ein
38 kurzer (≤30s) Clip im News-Feed wird jetzt automatisch stumm in Schleife abgespielt, wie ein GIF;
39 längere Videos behalten ihre Steuerung.
40- **Über Fediverse-Umfragen abstimmen.** Eine Umfrage von einem Konto, dem du folgst, erscheint jetzt
41 im News-Feed mit Optionen und aktuellen Ergebnissen, und du kannst abstimmen — das föderiert zurück
42 wie eine normale Mastodon-Stimme.
43- **Erstelle eigene Umfragen.** Ein Beitrag kann jetzt eine Umfrage enthalten (Einfach- oder
44 Mehrfachauswahl, mit einer Laufzeit). Sie föderiert als echte Fediverse-Umfrage, sodass deine
45 Mastodon-Follower aus ihrer eigenen App abstimmen können; die Live-Ergebnisse stehen am Beitrag und
46 die Umfrage schließt sich selbst, sobald die Zeit abgelaufen ist.
47
48### Geändert
49- **Audio offen zu teilen ist jetzt unumkehrbar.** Sobald ein Track offen im Fediverse geteilt wurde,
50 ist die Datei verbreitet — erneutes "Schließen" wäre Scheinsicherheit. Der Editor sperrt die Wahl
51 nach dem Öffnen und warnt dich, bevor du sie ankreuzt.
52
53### Behoben
54- **Entfernte Videos zeigen ein Vorschaubild.** Ein Video im News-Feed oder auf einer Zirkel-Kachel
55 (z.B. von Loops oder PeerTube) erschien als schwarze Fläche, bis man auf Abspielen drückte; jetzt
56 gibt es ein echtes Posterbild. (Längere Videos behalten bewusst ihre Steuerung — nur Clips unter
57 30 Sekunden laufen automatisch wie ein GIF.)
58- **Erwähnungen, Hashtags und Links in Klammern funktionieren jetzt.** Eine Erwähnung wie
59 `(@benutzer@server)`, ein `(#hashtag)` oder eine URL in Klammern föderierte als reiner Text —
60 und die erwähnte Person wurde nie benachrichtigt. Sie verlinken (und benachrichtigen) jetzt wie
61 ohne Klammern.
62- **Nackte Webadressen werden im Fediverse zu Links.** Eine einfache URL in einem Beitrag oder einer
63 Antwort föderiert jetzt als klickbarer Link statt als reiner Text.
64
65## [1.2.0] — 2026-07-01
66
67### Hinzugefügt
68- **PeerTube-Videos im Feed.** Ein PeerTube-Link in einem Beitrag zeigt jetzt einen eingebetteten
69 Player im News-Feed, wie es YouTube, Spotify und SoundCloud bereits taten.
70- **Helle Teilen-Bilder.** Seiten mit einem hellen Standard-Theme erhalten beim Teilen einer Seite
71 nun eine passende helle Open-Graph-Karte statt immer einer dunklen.
72- **Eigene Besuche aus der Statistik ausschließen.** Als Administrator kannst du jetzt deine eigene
73 IP-Adresse aus deiner Seitenstatistik ausschließen, für ein wahreres Bild der echten Besucher.
74- **Rechtsklick „Speichern" ist bei Covern, Bildern und Videos deaktiviert** — eine leichte Hürde,
75 damit das Artwork nicht mit einem Klick gespeichert werden kann (Reibung, kein Schutz).
76
77### Behoben
78- **Animierte Video-Cover werden jetzt überall korrekt angezeigt.** Im Zirkel und im Raster konnten
79 sie als kaputtes Bild oder leere Kachel erscheinen; sie werden nun als echtes, sich wiederholendes
80 Video angezeigt, das das Quadrat füllt, zentriert. Ein Rechtsklick auf ein Cover zeigt das normale
81 Link-Menü statt der Video-Steuerung des Browsers.
82- **Jemandem zu folgen bleibt nicht mehr hängen.** Eine Follow-Anfrage, deren erste Zustellung
83 fehlschlägt (der andere Server kurz nicht erreichbar), wird jetzt automatisch mit Backoff erneut
84 versucht, statt für immer auf „ausstehend" zu bleiben.
85- **Geboostete Beiträge zeigen ihren echten Text** im Zirkel, statt eines „RE: <Link>"-Präfixes.
86- **Robustere Fediverse-Verarbeitung** — strengere Signaturprüfungen bei eingehenden Aktivitäten,
87 Blockierungen erfassen jetzt auch einen Boost eines blockierten Autors, und die Synchronisierung
88 angehefteter Beiträge kollidiert nicht mehr, wenn du mehrmals schnell speicherst.
89
90## [1.1.0] — 2026-06-30
91
92### Hinzugefügt
93- **Animierte Cover spielen überall flüssig.** Lade ein animiertes WebP als Cover hoch, und Klonkt
94 erstellt zusätzlich ein stummes, sich wiederholendes Video davon. iOS Safari — wo animiertes WebP
95 ruckelt — bekommt das flüssige Video, jeder andere Browser behält das scharfe WebP, und im Fediverse
96 federiert das Cover als Video, das in Mastodon und seinen Apps abspielt. Sichtbar im Beitrag, im
97 Raster, im Feed und bei verwandten Beiträgen.
98- **Medienbibliothek (Verwaltung → Medien).** Sieh jedes hochgeladene Bild, wo es verwendet wird,
99 kopiere die URL und räume ungenutzte Dateien mit einem Klick auf — einschließlich des übrigen
100 Videos/Posters eines animierten Covers. Bilder, Audio und Playlists teilen sich jetzt eine Tab-Leiste.
101- **Teilen-Button** unter jedem Beitrag (natives Teilen-Menü oder Link kopieren).
102- **Ersetze die Audiodatei eines Tracks**, ohne den Track neu zu erstellen.
103- **Musik im Fediverse (erster Schritt).** Audio-Beiträge tragen jetzt schema.org *MusicRecording* /
104 *MusicAlbum*-Daten, und ein Schalter pro Beitrag kann einen gehosteten Track als echten
105 Fediverse-Audioanhang teilen, der in den Feeds der Follower abspielt.
106
107### Geändert
108- **Sauberere Embeds auf Mastodon.** Ein Beitrag mit einem YouTube/Spotify/SoundCloud-Link lässt
109 Mastodon jetzt seine Player-Karte anzeigen; Link-only-Tracks teilen ihre Streaming-Links. Das Cover
110 bleibt in anderen Klonkt-Feeds sichtbar. (Auf deiner eigenen Seite ändert sich nichts — Player und
111 Cover werden wie zuvor angezeigt.)
112- **Zirkel bleiben auf die Fediverse-Art synchron** — Bearbeitungen und verpasste Beiträge holen über
113 Standard-ActivityPub automatisch auf, sodass ein Zirkel nicht mehr veraltet.
114- **Alles, was Klonkt federiert, ist jetzt gültiges AS2 / JSON-LD**, durch einen Test abgesichert,
115 damit striktere Server es akzeptieren.
116- Die Trackliste ist **nach Neueste zuerst** sortiert.
117
118### Behoben
119- **Animierte WebP-Cover werden nicht mehr auf ein einzelnes Bild eingefroren** (der Zuschneide-Editor
120 und der Thumbnailer machten sie statisch).
121- **Link-only-Tracks** (Spotify/YouTube, keine hochgeladene Datei) lassen sich wieder in einen Beitrag
122 einfügen.
123- **Link-Vorschauen** (og:image / Twitter-Karte) verwenden jetzt absolute Bild-URLs, damit sie auf
124 Signal, WhatsApp und anderen Scrapern erscheinen.
125- Mehrere **Fediverse-Zustellungs-Fixes**: Cover/Links werden auf Mastodon keine schwarze Kachel mehr,
126 rohe Audiodateien überladen keinen Beitrag, der bereits einen Player hat, und tote Links eines
127 umbenannten Remote-Beitrags heilen sich selbst.
128- Der **mobile Feed** lädt Cover in voller Auflösung; lange Titel brechen um, statt überzulaufen.
129- **Self-Hosting-Updates** sind zuverlässiger: ein erneuter Lauf des Installers behält deinen Kanal,
130 und der Updater startet nicht mehr neu (oder behauptet kein Update), wenn du bereits aktuell bist.
131
132## [1.0.0] — 2026-06-30
133
134### Hinzugefügt
135- **Klonkt ist jetzt im Fediverse (ActivityPub).** Deine Seite ist ein echtes
136 Fediverse-Konto: Menschen auf **Mastodon** — oder auf einem anderen **Klonkt** — können
137 dir folgen, und deine Beiträge landen in ihren Feeds. Du kannst Konten folgen und ihre
138 Beiträge in einem **News**-Feed lesen, **Benachrichtigungen** erhalten und Beiträge
139 **liken, teilen und beantworten**. Eingehende Aktivität wird überprüft, sodass gefälschte
140 Antworten, Likes und Follower abgewiesen werden.
141- **Jede:r kann deine Beiträge aus dem Fediverse beantworten, liken oder teilen** —
142 Besucher:innen interagieren von ihrem eigenen Konto aus (sie geben einfach ihren Server
143 ein); ein Konto auf deiner Seite ist nicht nötig.
144- **Circles**: Folge anderen **Klonkt**-Seiten und zeigt euch gegenseitig die öffentlichen
145 Beiträge in eurem **Circle** — dezentral, ohne zentrale Plattform.
146- **Sensible (NSFW) Beiträge** mit eigenem Warnhinweis-Text: auf der ganzen Seite
147 verschwommen mit Klick zum Anzeigen, und im Fediverse als Inhaltswarnung dargestellt.
148- **Blockiere** ein Konto oder eine ganze Domain, von der du lieber nichts hören möchtest.
149- Die Suche findet jetzt auch **Tracks** (nach Titel, Künstler:in und Album), direkt aus den
150 Ergebnissen abspielbar mit einem Link zum Beitrag, in dem sie vorkommen — und die
151 Beitragssuche zeigt Treffer schon beim Tippen.
152- **Live-Theme-Vorschau** in Verwaltung → Seiteneinstellungen: Akzent, Theme und Palette
153 aktualisieren sich sofort, noch bevor du speicherst.
154- Hochgeladene Bilder werden automatisch zu **WebP** optimiert, für schnellere Seiten.
155- Ein großzügigeres **mobiles Schreiberlebnis**: Tippe, um einen ablenkungsfreien
156 Vollbild-Editor zu öffnen, wobei die Formatierungsleiste über der Tastatur sichtbar bleibt.
157
158### Geändert
159- **Paletten auf 8 überarbeitet**: das neutrale **Klonkt** (goldener Akzent) ist der neue
160 Standard, dazu sieben Vollfarb-Themes — **Forest**, **Ocean**, **Teal**, **Lilac**,
161 **Sunset**, **Candy** und **Amber**.
162
163### Entfernt
164- **Hub-Modus** — **Klonkt** ist jetzt **solo oder Circles**; ein Kollektiv oder Label baust
165 du über **Circles** auf (föderierte, eigenständige Seiten).
166- **Native Kommentare und Google-Login** — Antworten, Likes und Boosts laufen jetzt komplett
167 über das Fediverse.
168- **Lokale Favoriten (♥)** — ersetzt durch das ⭐ Fediverse-Like.
169
170### Behoben
171- Der Mini-Player springt und scrollt zum gerade laufenden Track — auch aus einem Album oder
172 einer Playlist — und hält ihn hervorgehoben.
173- Leere Album-/Playlist-Cover greifen jetzt auf das Cover des ersten Tracks zurück.
174- Ein Profilfoto, das nach dem Wechsel zu **WebP** im Header kaputtging, repariert sich nun
175 selbst.
176- Viele Korrekturen am **mobilen Beitrags-Editor**: zuverlässiges Scrollen, eine
177 Formatierungsleiste, die an Ort und Stelle bleibt, keine Seitensprünge beim Tippen auf eine
178 Schaltfläche, und eine Speicherleiste, die direkt über der Tastatur sitzt.
179
180## [1.0.0-beta.2] — 2026-06-19
181
182Erste Veröffentlichung, bei der wir die Version aktiv mitverfolgen (im Fußbereich angezeigt —
183klick darauf für diese Seite).
184
185### Hinzugefügt
186- Versionsverfolgung: Die Versionsnummer im Fußbereich verlinkt auf diese Changelog-Seite.
187- Acht Premium-Funktionen (über **Patreon** freigeschaltet): Newsletter/Mailingliste,
188 Download-für-E-Mail, Veröffentlichungsplanung + Vorschauen nur für Fans, **EPK**/Pressekit,
189 Profi-Statistiken, Link-in-Bio + Klickstatistiken, einbettbarer Player sowie Konzertkalender
190 + Benachrichtigung.
191- Newsletter-Anmeldefeld im Fußbereich (ein/aus in Verwaltung → Einstellungen).
192- **SMTP**-Einstellungen in Verwaltung → Einstellungen konfigurierbar (keine Bearbeitung der
193 Konfigurationsdatei mehr nötig), mit einer Test-Mail-Schaltfläche.
194
195### Geändert
196- Aufgeräumtere Einstellungsformulare (gestapelte Beschriftungen, Eingabefelder in voller
197 Breite).
198- Das **EPK**/Pressekit zeigt die 10 meistgehörten Tracks.
199- Schönere 404-Seite (mobilfreundlich) und klarere Login-Fehlermeldungen.
200
201### Behoben
202- Der seitenweite Audioplayer lud keine Tracks.
203- Schaltflächentext wurde beim Überfahren unlesbar.
204- Datumsauswahlen folgen jetzt dem Theme.
205- Die Vor-/Zurück-Navigation zeigt keinen doppelten Header mehr.
Note: See TracBrowser for help on using the repository browser.