Das Format basiert auf „Keep a Changelog“, und dieses Projekt folgt den Regeln des Semantic Versioning.
[1.2.15] – 02.09.2026
Geändert
- Die eingebundene Streaming-Bibliothek wurde auf hls.js 1.7.2 aktualisiert.
- Die festgelegte hls.js-CDN-Standardversion und der Subresource-Integrity-Hash wurden auf 1.7.2 angehoben.
[1.2.14] – 27.08.2026
Hinzugefügt
- Gemeinsamer Layout-Breakpoint (
75rem) für das Desktop-Layout mit rechtsseitigem Wiedergabelistenbereich im Vergleich zum gestapelten Layout. - Überlaufmenü der Steuerleiste bei schmalen Ansichtsfenstern und wenn die links angeordneten Schaltflächen nicht passen; die Playlist-Umschaltung wird auf Mobilgeräten in das Überlaufmenü verschoben, während „Zurück“, „Wiedergabe/Pause“, „Weiter“ und die Lautstärkeregelung sichtbar bleiben.
Behoben
- Der Puffer-Indikator wird auf der sichtbaren Medienfläche zentriert (gleiche Positionierung wie das Wiedergabe-Overlay).
- Videowiedergabelisten mit einem rechten Bereich verwenden wieder Overlay-Steuerelemente mit automatischem Ausblenden; Untertitel werden nicht mehr hinter den stets sichtbaren In-Flow-Steuerelementen verdeckt.
- Mixed-Media-Playlists zeigen das Cover der Audiospur an, nachdem von einer abgespielten Videospur gewechselt wurde (das Poster wird beim Neuaufbau des Players nicht mehr überschrieben).
- Das Layout des Playlist-Panels auf der rechten Seite bleibt beim Neuaufbau des Mixed-Media-Players (Video ↔ Audio) erhalten, indem
vidply-has-playlistund durch die Anwendung der Rasterregeln ausvidply-playlist-panel-rightallein. - Audio-Wiedergabelisten mit einem rechten Seitenbereich dehnen den Medien-Wrapper nicht mehr auf die Höhe der Wiedergabeliste aus; Untertitel, Steuerelemente und Titelinformationen bleiben unter dem Coverbild.
- Das Wiedergabe-Overlay wird auf die sichtbare
<video>Oberfläche im Layout mit rechtem Bereich und im mobilen Layout zentriert, anstatt auf dem gesamten Wrapper. - Das Wiedergabe-Overlay wird in YouTube-, Vimeo- und SoundCloud-Iframes/Containern zentriert, nachdem externe Renderer den Fokus der Host-
<video>. - Die Fokusumrandungen der Steuerleiste werden bei schmalen Breiten nicht mehr abgeschnitten (
0.125remAbstand bei Clustern links/rechts). - Externe Einbettungs-Tracks blenden doppelte Playlist-Cover aus, solange das Overlay zur Einwilligung in die Datenschutzbestimmungen sichtbar ist (auch wenn das Host-Element noch
<video>).
[1.2.13] – 18.08.2026
Behoben
- SoundCloud-Sets in Mixed-Media-Playlists springen nach dem ersten Titel nicht mehr automatisch zum nächsten Playlist-Eintrag;
endedwird erst ausgegeben, wenn der letzte Titel des Sets beendet ist.
[1.2.12] – 18.08.2026
Geändert
- Die festgesteckte dash.js-CDN-Standardversion und SRI wurden auf 5.2.1 (modern UMD) aktualisiert.
Behoben
- Demo-Entwicklungsserver: Relative Navigationslinks verlieren nicht mehr das
/demo/Präfix ab, wenn die Indexseite als/demo(Weiterleitung mit abschließendem Schrägstrich +serve.jsonUmschreibungen für Demo-URLs auf Stammebene). - Steuerleiste:
[hidden]auf Schaltflächen wird wieder berücksichtigt (CSS erzwingt nicht mehrdisplay: inline-flexbei ausgeblendeten Steuerelementen). - Nur-Live-Benutzeroberfläche: „Go Live“ und das „LIVE“-Symbol werden aus dem DOM entfernt, wenn
liveStream: false, oder unterliveStream: 'auto', anstatt hinter denhidden. - VOD-Steuerelementen: HTML5-Manifeste mit endlicher Dauer und statische DASH-Manifeste bestätigen VOD, sodass „Neustart“ und „Vorwärtsspringen“ bei Audio-/Video- und DASH-VOD-Streams angezeigt werden.
- DASH-VOD: Manifest auswerten
typeaufMANIFEST_LOADEDund beiSTREAM_INITIALIZEDwennisDynamic()noch nicht bereit war. - Wiedergabelisten: Für Wiedergabelisten-Player werden Funktionen zum Zurückspulen und Vorspulen erstellt; bei Gebärdensprache werden die Elemente pro Titel
signLanguageSrcaus der Wiedergabeliste.
Tests
- E2E- und Unit-Abdeckung für VOD-Suchsteuerelemente, Gebärdensprache für Wiedergabelisten und DASH/HTML5-Live-Erkennung.
[1.2.11] – 16.08.2026
Behoben
- HLS-VOD-Transkript: Abruf aller WebVTT-Segmente aus segmentierten Untertitel-Wiedergabelisten statt nur des ersten ~6-Sekunden-Segments; Ungültigmachen des unvollständigen VTT-Caches, wenn weitere TextTrack-Cues eintreffen.
- Neuaufbau der Steuerleiste: Sichtbarkeit der Live-/VOD-Schaltflächen nach
updateControlBar(), sodass der Neustart- und Go-Live-Status korrekt bleibt, wenn HLS-Untertitel-Schaltflächen hinzugefügt werden. - VOD-Steuerelemente: Die Schaltfläche „Vorwärts springen“ wird wieder angezeigt (bei „Live-at-Edge“ bleibt sie ausgeblendet, bis der Zuschauer in Rückstand gerät).
- Live-/HLS-Steuerelemente vor der Wiedergabe: Die nur bei VOD vorhandenen Schaltflächen „Vorwärts springen“ und „Neustart“ ausblenden, bis bestätigt ist, dass es sich bei der Quelle um VOD handelt; die Level-Wiedergabeliste beim Parsen des Manifests abfragen, damit Live-Streams wie ARD vor Beginn der Wiedergabe die richtigen Steuerelemente erhalten.
- Live-Steuerelemente vor der Wiedergabe: „Neustart“ ist standardmäßig ausgeblendet; die Steuerleiste wird aktualisiert, sobald die Überprüfung der Level-Playlist „Live/VOD“ meldet.
- Automatische Erkennung von Live-Streams: VOD-HLS-Quellen (z. B. Apple BipBop) zeigen das „LIVE“-Symbol nicht mehr an – hls.js stellt auch für VOD einen endlichen
liveSyncPositionauch für VOD bereit, sodass die Erkennung nun stattdessenlatestLevelDetails.live. - Automatische Erkennung von Live-Streams: Eine unbekannte Mediendauer (bevor HLS-Level-Playlists geladen sind) löst das LIVE-Abzeichen nicht mehr aus; dies geschieht nur
InfinityDauer oder eine explizite Live-Playlist. - Automatische Erkennung von Live-Streams: VOD-HLS wechselt beim Start nicht mehr in den Live-Modus, wenn MSE
Infinitybeim Start eine Dauer meldet; die HLS-Cue-Abfrage passt sich dynamisch an den Live-/VOD-Modus an, sodass Untertitel auch nach Beginn der Wiedergabe weiterhin funktionieren.
[1.2.10] – 16.08.2026
Barrierefreiheit
- Transkriptfenster (schwebendes Layout):
aria-modal, Tab-Fokus-Falle und Hintergrundinertbei gleichrangigen Elementen des Players. - Transkriptfenster: Markiert den Video-Wrapper (und die Steuerelemente) nicht mehr als inaktiv, solange es geöffnet ist; die Player-Steuerelemente bleiben neben dem Transkriptfenster weiterhin bedienbar.
- Dialogfeld „Untertitelstil“:
aria-modal="true"und Tab-Fokus-Falle. - Dialogfeld „Tastaturhilfe“: Hintergrund
inertauf gleichrangige Elemente des Players, solange er geöffnet ist. - Fortschritts- und Lautstärkeregler:
aria-orientation. - Optionen für die Wiedergabelisten-Listbox:
aria-selectedanstelle vonaria-checked. - Größenänderungsgriffe für das Transkript:
aria-labelwenn der Zeiger-Größenänderungsmodus aktiv ist.
Hinzugefügt
- Live-Stream-Modus (
liveStream: 'auto' | boolean): Erkennt HLS-/DASH-/HTML5-Live-Quellen automatisch, zeigt anstelle der Dauer ein „LIVE“-Symbol an, blendet die Funktionen zum Neustart und zur Wiedergabegeschwindigkeit aus, behält die Rückwärtssprungfunktion bei und zeigt die Vorwärtssprungfunktion sowie „Go live“ nur an, wenn der Rückstand gegenüber dem Live-Rand mehr alsliveBehindThresholdSekunden hinter der Live-Kante liegt (Standard: 5 s). An der Live-Kante wird die Roh-Zeitleiste ausgeblendet; bei Rückstand gegenüber der Live-Übertragung zeigt die Zeitanzeige einen Versatz wie z. B. −12:34 an. - Hilfe zu Tastaturkürzeln: Fügt einen Abschnitt „Live-Stream-Steuerung“ hinzu, wenn eine Live-Quelle erkannt wird; blendet Geschwindigkeitskürzel aus und verdeutlicht das Vorlaufverhalten bei Live-Inhalten.
- Player-API:
isLiveStream(),isBehindLive(),getLiveSeekRange(),seekToLive(); Ereignisselivechangeundliveedgechange. showTrackInfoPlayer-Option zum Unterdrücken des eigenständigen.vidply-track-infoHeader zu unterdrücken.
Geändert
- Die Dauer wurde aus dem „Standalone“-Header entfernt
.vidply-track-info; Wiedergabelisten zeigen beim Wechseln zwischen Titeln weiterhin die Dauer im Titel-Info-Header an.
Behoben
- HLS-Live-Untertitel: Automatische Auswahl der Standard-Untertitelversion in hls.js, wenn Untertitel oder Transkript aktiviert sind, damit fortlaufende WebVTT-Cues während der Live-Wiedergabe geladen werden.
- HLS-Live-Transkript: Das einmalige VTT-Massenabrufen wird übersprungen (gilt nur für VOD) und das Transkript wird stattdessen schrittweise aus TextTrack-Cues erstellt.
- Live-Transkript: Duplikate bei fortlaufenden HLS-Cues entfernen und inkrementell anhängen, anstatt bei jeder Untertitelaktualisierung die gesamte Liste neu zu erstellen (behebt doppelte Zeilen).
- Live-Transkript-Deduplizierung: Untertitel-Zeitstempel in Gruppen zusammenfassen und nahezu identische Zeilen ignorieren, die von hls.js mit verschobenem PTS erneut veröffentlicht werden.
- Deduplizierung des Live-Transkripts: Erweitern Sie das Überlappungsfenster auf 30 Sekunden, scannen Sie alle Einträge und sortieren Sie diese nach jeder Synchronisierung chronologisch (behebt Duplikate bei Segmentüberlappungen im Abstand von mehreren Sekunden sowie ein durcheinandergebrachtes DOM).
- Live-Transkript: Die Synchronisierung wird auch nach den ersten Minuten fortgesetzt – rollierende HLS-Untertitel-Fenster unterbrechen nun nicht mehr die Abfrage von Cue-Updates oder Fragment-Ereignisse, wenn die Cue-Anzahl stagniert; der automatische Bildlauf folgt bei Live-Streams dem zuletzt gestarteten Cue.
- Untertitel standardmäßig bei HLS: Anwenden
captionsDefault, wenn Untertitelspuren nach dem Parsen des Manifests erscheinen, nicht nur bei der anfänglichen Player-Einrichtung. - Lautstärke/Stummschaltung bei Initialisierung: CMS-Optionen werden atomar angewendet, sobald der Renderer bereit ist, und eine verspätete
volumechangeSynchronisationsverzögerungen (Chrome-Timing). - Persistierte Player-Einstellungen: Speichern einer
configKeyaus dem CMSmuted|volume, damit veraltete „localStorage“-Werte nach Änderungen im Editor nicht länger die Backend-Standardeinstellungen überschreiben.
Barrierefreiheit
TrackInfoView: Titel, Interpret, Datum, Beschreibung und die Umschaltfunktion für die Langbeschreibung für assistive Technologien verfügbar machen, anstatt sie mitaria-hidden; verwende ein beschriftetesrole="region"und die Schaltfläche zum Ein- und Ausblenden mitaria-controls. Änderungen an Titeln in der Wiedergabeliste werden weiterhin über einen eigenen, unaufdringlichen Live-Bereich angekündigt. Textmetadaten verwenden semantische<p>Elemente anstelle von generischen<div>Wrapper.
[1.2.9] – 15.08.2026
Geändert
- Die von Drittanbietern bereitgestellte Streaming-Bibliothek wurde auf hls.js 1.7.0 aktualisiert.
- Den festgelegten hls.js-CDN-Standard und den Subresource-Integrity-Hash auf 1.7.0 angehoben.
[1.2.8] – 14.08.2026
Geändert
resumePlaybackist nun standardmäßig aktiviertfalse. Die Wiedergabe ab der letzten Position muss explizit über die Player-Optionen aktiviert werden.
Hinzugefügt
TrackInfoView: Der Titel-Info-Header oberhalb des Players kann eine ein- und ausklappbare ausführliche Beschreibung (longDescriptionin den Titel-/Player-Optionen) mit einem bereinigten RTE-Inhalt und einer barrierefreien Umschaltfunktion zum Ein- und Ausblenden anzeigen.- Neue
playButtonOverlayOption ('auto' | true | false, Standard'auto'), die die zentrierte Wiedergabetaste bei Audio-Playern ermöglicht. Bei Audio-Inhalten wird das Overlay als echtes, i18n-beschriftetes Element<button>über dem Titelbild dargestellt – ein<audio>Element bietet keine Klickfläche – und sein barrierefreier Name richtet sich nach dem Wiedergabe-/Pausenzustand.'auto'behält das bisherige, rein auf Videos beschränkte Verhalten bei,falsedeaktiviert das Overlay vollständig. PlaylistTrack.date: ein optionales, vorformatiertes und bereits lokalisiertes Veröffentlichungsdatum. Es wird in den Zeilen des Wiedergabelistenbereichs (.vidply-playlist-item-date) sowie in den Informationen zum aktuell wiedergegebenen Titel (.vidply-track-date) und ist imaria-label, sodass es zusammen mit Titel und Dauer angesagt wird. Die Bibliothek gibt die Zeichenkette unverändert wieder; die Sprachlokalisierung erfolgt weiterhin durch die Host-Anwendung.- Titelbezogene Downloads in Wiedergabelisten:
PlaylistTrack.downloadUrl(sowie optionaldownloadFormatunddownloadFileSize) sorgt dafür, dass die Download-Schaltfläche der Steuerleiste der Auswahl folgt – sie bietet die Datei des aktuellen Titels an, benennt sich entsprechend dem Format und der Größe dieser Datei um und wird bei Titeln ausgeblendet, die keinedownloadUrl. Ein bekanntesdownloadFileSizeüberspringt zudem die HEAD-Anfrage, die die Schaltfläche andernfalls senden würde. Wiedergabelisten, die keine URL auf Titelebene festlegen, verwenden weiterhin das playerweitedownloadUrl/data-vidply-download-urlZiel.
Behoben
- Mixed-Media-Wiedergabelisten luden YouTube-, Vimeo- und SoundCloud-Titel zwei- oder
dreimal, wenn sie im Bedienfeld ausgewählt wurden.
PlaylistManager.play()wurdeplayer.play()mit einem 100-ms-Timer, bevorload()sie fertig waren; da der Renderer noch null war,Player.play()wird die Wiedergabeliste erneut aufgerufen und es kommt zu doppelten Ladevorgängen. Titelwechsel warten nunload()vor der Wiedergabe, undPlayer.play()der Playlist-Fallback wird ignoriert, solange ein Titelwechsel im Gange ist. screenReaderAnnouncements: falsehatte keine Auswirkungen mehr auf die Ansagen zu Wiedergabe/Pause, Lautstärke, Stummschaltung, Untertitel, Vollbild und Geschwindigkeit. Diese wurden vom Tastatur-Handler auf Player-Ereignisse verlagert, sodass nun auch bei Zeiger- und Touch-Bedienung Ansagen erfolgen und die Optionsprüfung zurückblieb. Nun werden sie wieder gesteuert.showNotice()Und die Hinweise zum Ziehen und Größenändern in Gebärdensprache werden weiterhin angesagt, da eine Unterdrückung dazu führen würde, dass die zugehörige Aktion ohne Rückmeldung bliebe.- Jeder Player meldete beim Laden der Seite seine eigene Lautstärke an Screenreader. Eine
aus dem Speicher wiederhergestellte Lautstärke wird erst nach
ready, sodass es alsvolumechangeder Listener nicht von einem echten unterscheiden konnte; auf einer Seite mit zwei Playern bedeutete das, zweimal „Lautstärke 53 Prozent“ zu hören, bevor man etwas berührte. Der Pegel wird nun nur noch angesagt, wenn er sich tatsächlich vom zuletzt angesagten unterscheidet, so wie es beim Stummschaltungsstatus bereits der Fall war. - Die Download-Schaltfläche in Wiedergabelisten bot für jeden Titel die Datei auf Elementebene an, sodass eine Wiedergabeliste immer nur einen Download bereitstellen konnte (in der Regel gar keinen, da Streaming-Manifeste keine progressive URL haben).
- Die Tastaturhilfe und die Einstellungsdialoge waren auf Audio-Playern unlesbar.
Sie befinden sich innerhalb des Player-Feldes, das bei Audio lediglich aus der
Steuerleiste besteht, daher
max-height: 80%sie auf etwa 80 Pixel zusammengedrückt wurden. Bei Audioplayern ist das Overlay nun am Viewport verankert (und die Layout- Einschränkung wurde dort aufgehoben, da sie andernfalls das feste Overlay im Player gefangen halten würde). - Seiteninhalt konnte einen geöffneten Dialog überdecken. Ein Dialogfeld ragt über den Player-Rahmen
hinaus, nicht jedoch über dessen Stapelkontext; daher führte ein Host-Stylesheet, das dem Player
eine eigene Stapelebene zuweist – eine gängige Methode, um ihn über die Seitengestaltung zu heben –,
dazu, dass alles, was über dieser Ebene gestapelt war, das Dialogfeld überdeckte. Der Player wird nun
selbst auf die modale Ebene angehoben (
vidply-modal-open), solange ein Dialog geöffnet ist.
1.2.5 – 23.07.2026
Sicherheit
- URLs von Postern/Grafiken werden nun validiert und CSS-escaped, bevor sie
in die
--vidply-poster-imagebenutzerdefinierten Eigenschaft geschrieben werden. Dadurch kann ein von einem Angreifer manipulierter Poster-Wert nicht mehr aus dem CSS-url(...)(PosterManager,Player.load). - Metadata-Cue-Direktiven (
PAUSE/FOCUS:/#hashtags) werden von einem einzigen, auf den Container beschränkten Prozessor verarbeitet. Die doppelte Pipeline in der Transcript-Ebene, dieFOCUS:Selektoren dokumentweit auflöste, wurde entfernt, sodass ein nicht vertrauenswürdiges VTT-Cue den Fokus nicht mehr auf beliebige Elemente auf der Host-Seite verlagern kann (Aktivierung übermetadataDirectives: 'global'für das alte dokumentweite Verhalten). - Die Standard-CDN-Builds von hls.js und dash.js werden nun mit einem integrierten
„Subresource Integrity“-Hash geladen, sodass die angehefteten Skripte sofort
nach dem Laden verifiziert werden. Ein benutzerdefiniertes
hlsScriptUrl/dashScriptUrlbenötigt weiterhin einen eigenen*ScriptIntegrityWert; der integrierte Hash wird nur auf die festgesteckte Standard-URL angewendet. - Die Platzhalterersetzung in
i18n.t()fügt Werte nun wörtlich ein, sodass$-Sequenzen ($&,$1,$$,$`) in einem ersetzten Wert können nicht mehr alsString.prototype.replaceMuster interpretiert werden.
Behoben
- Typdeklarationen werden nun tatsächlich
dist/typeswährend des Builds ausgegeben (dertypesEinstiegspunkt hing zuvor in der Luft, datscmitnoEmit); CI stellt sicher, dassdist/types/index.d.tsexistiert. - Ein doppeltes Metadaten-
cuechange/loadedmetadataListener-Registrierung in der Transkript-Ebene entfernt, die sich im Zuge von Änderungen an der Quelle angesammelt hatte. - Die Renderer-Auswahl bei Quelländerungen verwendet nun ein stabiles
rendererTypeFeld anstelle vonconstructor.name, das von Minifiern in Produktions-Builds verfälscht wird – wodurch unnötige Neuerstellungen des Renderers (oder fehlgeschlagene Wechsel) in minifizierten Bundles behoben werden. - Das Neuerstellen des Players für einen anderen Track-Typ führt nicht mehr zu einem Hänger, wenn der
neue Player bereits bereit ist, bevor der
readyListener angehängt wird; die Wartezeit endet sofort, sobald er bereits bereit ist, und verfügt über ein Sicherheits-Timeout. - Aufgeschobene Callbacks der Wiedergabeliste (automatische Wiedergabe, Zurücksetzen von Guard-Flags, Löschen von Live-Regionen
, Fokuswechsel) werden nun nachverfolgt und abgebrochen
destroy(), sodass sie nicht mehr bei einem bereits abgebrochenen Player ausgelöst werden können. - Der Player baut nun den iOS-Pseudo-Vollbild-Fallback ab,
destroy()und stellt dabei die Scroll-Sperre für Body/Dokument, Hintergrundstile, Viewport-Meta-Elemente und inaktive Geschwisterelemente wieder her, falls er im Pseudo-Vollbildmodus zerstört wird. - Beim Neuaufbau der Steuerleiste (Funktionserkennung / Aktualisierung der Wiedergabeliste /
Wechsel des Renderers) werden keine doppelten Player-Ereignis-Listener mehr gestapelt,
ResizeObserveroder DOM-Handler für das automatische Ausblenden – jeder Neuaufbau der Steuerleiste trennt nun seine bisherigen Listener vor dem erneuten Anfügen unddestroy()entfernt sie alle. - Auf Seiten mit mehreren Playern führt das Öffnen eines Menüs (Lautstärke, Kapitel, Qualität, Geschwindigkeit, Untertitel, Untertitelstil, Überlauf) nicht mehr dazu, dass das geöffnete Menü eines anderen Players geschlossen oder umgeschaltet wird: Die Überprüfung auf „bereits geöffnet“ beschränkt sich auf den eigenen Container des Players statt auf das gesamte Dokument.
- Der YouTube-Video-ID-Parser fügt nachgestellte Abfrage-/Hash-Segmente
nicht mehr in die ID ein (z. B.
youtu.be/ID?t=60,.../embed/ID?autoplay=1) und verarbeitet nun auchvals späterer Abfrageparameter auftritt,/shorts/sowie ältere/v/Pfade sowieyoutube-nocookie.com.
Barrierefreiheit
- Die verschiebbaren/in der Größe veränderbare Ein-Buchstaben-Shortcuts (
d/r) werden nicht mehr überlagert, während in ein Formularfeld oder ein „contenteditable“-Element getippt wird oder wenn eine Modifikatortaste (Strg/Cmd/Alt) gedrückt gehalten wird (z. B. Strg+D, Cmd+R). - Die Fortsetzungsaufforderung („Wo waren wir?“) fängt nun die Tasten Tab/Umschalt+Tab innerhalb des
Dialogfelds ab, solange dieses geöffnet ist, und stellt den Fokus auf das zuvor fokussierte
Element wieder her (mit Fallback auf die Wiedergabetaste), wenn es geschlossen wird, entsprechend seiner
role="dialog"/aria-modalSemantik (WCAG 2.4.3).
Geändert
- Erkennung von „Source-URL“ → „Renderer“ wurde in einem einzigen
classifyRendererType()Hilfsfunktion zusammengefasst, die von beiden_detectRendererClass(welcher Renderer erstellt werden soll) als auchshouldChangeRenderer(ob ein Austausch erfolgen soll), sodass die beiden nicht mehr auseinanderlaufen können;youtube-nocookie.comwird nun als YouTube-Quelle erkannt. - Die Auflösung der angehefteten „hls.js/dash.js“-Standard-URL sowie der Subresource-Integrity
wird in einem gemeinsamen
loadPinnedScript()Loader, wodurch die Regel „Der integrierte Hash gilt nur für die festgesteckte Standard-URL“ an einem Ort zusammengefasst wird. - Fokusringe und Akzente im hellen Design beziehen sich nun auf die
--vidply-primarybenutzerdefinierte Eigenschaft statt auf eine wiederholt festcodierte#0a406e, sodass die Anpassung der Primärfarbe zu einer einheitlichen Neugestaltung führt.
Entfernt
- Die nicht mehr benötigte
SettingsDialogKomponente und ihre nicht erreichbaren Verknüpfungen (die Schaltfläche „Einstellungen“ wurde nie gerendert undshowSettings()war ein No-Op-Stub); die öffentlichenshowSettings()/hideSettings()Methoden bleiben als Veraltungs-Stubs erhalten.
Build
- Die
devServer-Abhängigkeit (serve) ist nun eine festgelegte „devDependency“ und wird aus der lokalen Installation ausgeführt, anstatt zur Laufzeit übernpx serve, wodurch ein Abruf aus der Lieferkette zur Laufzeit entfällt. - Produktions-Bundles (minifiziert) geben nun externe Source-Maps aus: Die esbuild-
Bundle-Map wird über Terser weitergeleitet, sodass
dist/prod/dist/legacy.min.jsDateien für die Feld-Fehlersuche auf das ursprüngliche TypeScript zurückverweisen. - CI führt nun die Unit-/Integrations-Suite mit Codeabdeckung durch (
test:coverage), sodass die konfigurierten Abdeckungsschwellenwerte die Builds tatsächlich steuern; die Schwellenwerte wurden als Regressions-Mindestwerte an die aktuell gemessene Abdeckung angepasst.
Tests
- Es wurden adversarische Unit-Suiten für den „Prototype-Pollution“-Sanitizer
(
Sanitize) sowie für die Poster-URL-Whitelist und das CSS-Escaping (UrlSafe), sowie eine spezielleMetadataAlertsManagerSuite, die den Unterschied zwischen bereichsgebundenen und globalenFOCUS:Auflösung. - Es wurden Regressionstests für das
i18n$-escape, die Schutzmechanismen für Tastaturkürzel zum Ziehen und Ändern der Größe sowie den Identifikator für den stabilen Renderer-Typ. - Die YouTube-Suite
extractVideoIdSuite, um exakte IDs (ohne Abfrage/Hash) zu überprüfen und?si=Teilen-Links,vals späteren Abfrageparameter/shorts/,youtube-nocookie.com, sowie#fragments abzudecken. - Es wurden Unit-Suiten für den
classifyRendererTypeURL-Klassifizierer und dieloadPinnedScriptRegeln zur Auflösung von Standard-URLs und SRIs.
1.2.4 – 07.07.2026
Geändert
- GitHub Actions CI: Lint- und Playwright-E2E-Jobs, GitLab-CI-Pipeline, erweitert
.editorconfigsowie GitHub-Actions-Artefakt-/Cache-Aktionen v6 (Node 24).
Behoben
- ESLint-CI-Fehler:
no-this-aliasinMediaSessionManagerund implizite Typumwandlungswarnungen in „player/renderers“.
1.2.3 – 27.06.2026
Hinzugefügt
- Einstellungen für Untertitel bleiben über Sitzungen hinweg erhalten: Der Player merkt sich, ob Untertitel ein- oder ausgeschaltet waren und welche Sprache ausgewählt wurde, und stellt diese Auswahl beim nächsten Besuch wieder her (wobei die zuletzt gewählte Sprache auch dann beibehalten wird, wenn die Untertitel ausgeschaltet sind).
Geändert
- Der Hilfedialog für Tastaturkürzel listet nun nur noch die für den jeweiligen Player relevanten Kürzel auf. Funktions-Tastenkombinationen (Untertitel, Untertitel-Stil, Geschwindigkeit, Qualität, Kapitel, Transkript, Vollbild) werden nur angezeigt, wenn die jeweilige Funktion verfügbar ist, und die Liste wird beim Öffnen neu erstellt, sodass später geladene Funktionen (z. B. HLS- Untertitel/Qualitäten) angezeigt werden, sobald sie bereit sind.
1.2.2 – 27.06.2026
Hinzugefügt
- Integration der Media Session API (
mediaSessionOption, standardmäßig aktiviert): Stellt Metadaten zum aktuell wiedergegebenen Titel (Titel/Interpret/Album/Cover) bereit und leitet Steuerbefehle des Betriebssystems, des Sperrbildschirms, der Benachrichtigungen sowie des Headsets (Wiedergabe, Pause, Stopp, Springen sowie vorheriger/nächster Titel bei Wiedergabelisten) zurück an den Player. Neuetitle/artist/albumOptionen zur Bereitstellung der Metadaten; Playlist-Einträge haben Vorrang. Der Positionsstatus wird an den Betriebssystem-Scrubber gemeldet und wird bei mangelnder Unterstützung stillschweigend heruntergestuft. - Hilfedialog für Tastaturkürzel: Ein fokusgebundener, für Screenreader geeigneter modaler Dialog,
der die aktiven Tastenbelegungen auflistet. Erreichbar über eine neue Hilfe-Schaltfläche in der Steuerleiste
(
helpButtonOption, standardmäßig aktiviert), die?Tastaturkürzel sowie über dieplayer.toggleKeyboardHelp()/showKeyboardHelp()/hideKeyboardHelp()API. Vollständig übersetzt (en, de, es, fr, ja).
Behoben
- Medien-Session: Auf Seiten mit mehreren Playern steuern die Betriebssystem-Steuerelemente nun den
Player, der tatsächlich abspielt. Die einzige, dokumentweite
navigator.mediaSessionwird vom zuletzt abgespielten Player beansprucht; Hintergrund-Player übernehmen es bei der Initialisierung nicht mehr und löschen es beim Beenden nicht mehr. Behebt das Problem, dass die Schaltflächen „Wiedergabe/Pause/Springen/Weiter/Zurück“ im Betriebssystem-Dialog erscheinen, aber keine Funktion haben.
1.2.1 – 14.06.2026
Hinzugefügt
descriptionSpeechManagermit Modus-Routing, Optionen, Ereignissen und Tests.- Dokumentation und Demoseite zum Audiobeschreibungsmodus.
Geändert
- Lazy-Load von Audiobeschreibungen und Gebärdensprache-Segmenten nur dann, wenn deren Inhalt vorhanden ist.
- „devDependencies“ aktualisiert und neu kompiliert
dist. - Erzwingung von LF-Zeilenenden über
.gitattributes.
1.2.0 – 04.06.2026
Geändert
- Verbesserungen durch Code-Review: Korrekturen in den Bereichen Barrierefreiheit, Speicherlecks, Bundle-Größe und Typsicherheit.
1.1.19 – 29.05.2026
Geändert
- Die von Drittanbietern bereitgestellten Streaming-Bibliotheken wurden auf hls.js 1.6.16 und dash.js 5.2.0 aktualisiert.
- Die festgelegten CDN-Standardversionen für hls.js und dash.js wurden auf 1.6.16 bzw. 5.2.0 angehoben.
1.1.18 – 18.05.2026
Behoben
- Video-Poster
max-width/width. - Das automatisch schwebende PiP-Fenster dockt beim Zurückblättern nicht wieder an.
1.1.16 – 05.05.2026
Hinzugefügt
- Das Transkript wird aus dem Mini-Player ausgeblendet und der frei gewordene Platz mit einem zentrierten PiP-Symbol verziert.
Geändert
- Entfernt: ~2,1k Zeilen veralteten, nicht mehr genutzten Codes und Behebung von Speicherlecks bei Dokument-/Fenster-Listenern (-18 % ESM-Bundle); Badges für den Gebärdensprachmodus sind nun übersetzbare DOM-Knoten.
- Strict TypeScript: Alle
any, entfernteslint-disableund 91 Lint-Warnungen behoben. - Der Build zielt nun auf Node 24 ab.
Korrektur der
- Weiße Farbe in Batches.
- Die README↔Types-Drift-Prüfung berücksichtigt Generika, Standardwerte für verschachtelte Klammern und geerbte EventEmitter-Methoden.
1.1.10 – 03.05.2026
Geändert
- Sicherheits-/Barrierefreiheits-/Qualitätsprüfung.
Behoben
- Behandlung gemischter Wiedergabelisten.
- Untertitel und Transkript: vollständiger VTT-Abruf, HLS-Unterstützung und Endonym-Bezeichnungen.
1.1.9 – 25.04.2026
Behoben
- DASH-Renderer: Vorhersehbare anfängliche Auswahl der Audiospur.
- DASH-Spur mit der Bezeichnung „null“, aber einem gültigen Sprachcode (z. B.
de). - dash.js auf Version 5.1.1 festgelegt.
- Konsolenfehler bei Vorschaubildern in HLS und DASH.
- Anzeige von Untertiteln und
langAttribute im Sprachumschalter anzeigen.
1.1.6 – 23.04.2026
Behoben
- Der Pfeil im Tooltip blieb grau, wenn sich der Player im Hellmodus befand.
- Die Schaltfläche für die Lautstärke auf dem Desktop wurde <percent>von „Stummschalten“</percent> in „Lautstärke <percent>%“</percent> umbenannt<percent>.</percent>
1.1.5 – 21.04.2026
Behoben
- Die Handhabung der Größenänderung für den schwebenden/PiP-Player wurde angepasst.
1.1.4 – 21.04.2026
Hinzugefügt
FloatingPlayerManager/ PiP-Player-Modul.- Anzeige von Dateiformat und -größe auf der Beschriftung/im Tooltip der Download-Schaltfläche.
1.1.3 – 19.04.2026
Geändert
- Dokumentation und Demos aktualisiert (TypeScript-Migration, SoundCloud-Renderer, Puffer-Ladeanzeige, Download-Button, native iOS-HLS-Brücke).
Behoben
- Synchronisierung der hls.js-Untertitelspur beim Sprachwechsel und Abhören von
textcuesupdate.
1.1.0 – 16.04.2026
Hinzugefügt
- Der Puffer-Indikator wird so lange angezeigt, bis die Medien wiedergegeben werden können.
Geändert
- ES-Module wurden in striktes TypeScript konvertiert; Build- und Typdefinitionen wurden aktualisiert.
1.0.50 – 12.04.2026
Hinzugefügt
- Unterstützung für MPEG-DASH-Streaming über dash.js.
- Untertitel, Transkripte und Qualitätssteuerung auf Apple-Plattformen über die native HLS-TextTrack-API.
Behoben
- Anzeige der Menüschaltfläche im Vollbildmodus unter iOS.
Geändert
- HTML-Funktionsabschnitte und README für DASH-Unterstützung aktualisiert.
1.0.44 – 03.04.2026
Barrierefreiheit
- WCAG 2.2 AA-Konformität: Zielgröße und Ziehbewegungen.
Geändert
- npm esbuild-Update.
1.0.43 – 27.03.2026
Hinzugefügt
- Testbeispiel für Video und Audio.
Geändert
- npm-Updates (vitest, esbuild).
Behoben
- Anzeige der Dauer und Vorlauf in Firefox, wenn das Feld für die Dauer leer ist.
- Timing bei der Initialisierung der Audiobeschreibungsquelle; Demoseiten verwenden
data-vidplyautomatische Initialisierung. - Nicht verwendetes CSS in den Demodateien entfernt.
1.0.41 – 21.02.2026
Hinzugefügt
- Dynamische HLS-Untertitelverarbeitung und Korrekturen am hellen Design.
Geändert
- Aktualisiertes Copyright und Dokumentation.
Behoben
- Ein blockiertes Akamai-Video wurde von der HLS-Stream-Seite entfernt.
1.0.40 – 11.02.2026
Behoben
- Überlauf des Transkript-Dialogfelds bei Videoplayern in voller Breite (WCAG 1.4.10).
1.0.38 – 09.02.2026
Hinzugefügt
- vitest- und Playwright-Tests hinzugefügt.
Geändert
- esbuild-Update auf 0.2.73.
Behoben
- HTML5-Validierungsfehler bei Barrierefreiheit und Medienelementen.
1.0.37 – 01.02.2026
Hinzugefügt
- Option für den Anzeigemodus „Gebärdensprache“ und ein neues PiP-Symbol.
- Testseiten für Einzelspieler-Modus und Wiedergabelisten.
Behoben
- Umfassende Verbesserungen im Vollbildmodus.
- Vollbildmodus wird geschlossen, wenn sich externe Medien in der Vorschau-Liste der Wiedergabeliste befinden.
1.0.35 – 05.01.2026
Hinzugefügt
- Ziehen und Größenänderung per Touch-Geste über Pointer-Events.
Behoben
- Zahlreiche Korrekturen an iOS-Wiedergabelisten.
- Höhe des mobilen Überlaufmenüs, wenn es unterhalb des Auslösers positioniert ist.
- Das Seitenverhältnis wird nur auf die Vimeo-/YouTube-Ebene angewendet.
- Ziehmodus über die Tastatur.
1.0.33 – 27.12.2025
Hinzugefügt
- Die Wiedergabelistenauswahl lädt Metadaten ohne automatische Wiedergabe; zeigt die anfängliche Dauer an; verschiebt das Laden von Audio-/Video-/HLS-Dateien bis zur Wiedergabe.
Geändert
- Dokumentation und Demodateien aktualisiert.
1.0.32 – 25.12.2025
Geändert
- npm-Update.
Behoben
- Ausblenden der Geschwindigkeitssteuerung für HLS-Streams (erkannt durch
.m3u8Quelle erkannt). - Veraltetes JS entfernt.
1.0.31 – 22.12.2025
Hinzugefügt
- Miniaturansichten für Videovorschauen und automatische Poster-Erstellung in Wiedergabelisten.
1.0.30 – 22.12.2025
Hinzugefügt
- Miniaturansichten für Videovorschauen und automatische Erstellung von Postern.
Geändert
- esbuild-Update.
1.0.29 – 16.12.2025
Hinzugefügt
- Transkript: Beschreibungen immer anzeigen und bei Videos mit Audiodeskription die Tonspuren vertauschen.
Behoben
- Das Vertauschen der Untertitelspuren für Audiodeskriptionen in Wiedergabelisten.
1.0.25 – 11.12.2025
Hinzugefügt
- Veröffentlichung des
distVerzeichnis auf GitHub bereitgestellt. - ESM-Optimierung mit Legacy-Code als Option.
1.0.22 – 03.12.2025
Geändert
- Theme-Gestaltung überarbeitet: Ein WCAG-konformer Hellmodus wurde hinzugefügt,
color-scheme, anschließend wurde die Unterstützung für den hellen Modus zugunsten von rem-Einheiten entfernt.
1.0.21 – 01.12.2025
Hinzugefügt
- Optionales Posterbild für Audio im Einzel- und Wiedergabelistenmodus.
Behoben
- Barrierefreiheit der Wiedergabeliste und automatisches Scrollen.
- Der Schaltfläche „Qualität“ wurde ein Titel hinzugefügt; die Schaltfläche „Qualität“ wurde im HLS-Modus zu Chrome hinzugefügt.
- Übersetzungen für Wiedergabelisten hinzugefügt.
1.0.20 – 20.11.2025
Behoben
- Probleme im iOS-Vollbildmodus behoben, bei denen Videos falsch positioniert waren und Playlists nicht durch Wischen gesteuert werden konnten.
1.0.19 – 20.11.2025
Hinzugefügt
- Horizontales, automatisch ausblendbares Wiedergabelisten-Fenster für den Vollbildmodus.
- Neues Uhrensymbol zum Ein- und Ausblenden von Zeitstempeln.
- Wiedergabeliste: WCAG-Barrierefreiheit und deklarative Konfiguration.
Geändert
- Transkript: Verbessertes semantisches HTML und verbesserte Benutzererfahrung für Screenreader.
Behoben
- Vollbildmenüs des Portals auf Containerebene angepasst, sodass sie über dem Wiedergabelistenbereich angezeigt werden (WCAG).
- Positionierung des Vollbild-Overlays der Wiedergabeliste im Hochformat.
- Verhinderung doppelter Ansagen durch Screenreader beim automatischen Scrollen des Transkripts.
- Menü-Layout: Vermeidung horizontaler Bildlaufleisten und Verbesserung der Vollbildanzeige.
- Eigenes Kapitel-Symbol, um Überschneidungen mit dem Wiedergabelisten-Schalter zu vermeiden.
- Nicht verwendeter Code wurde entfernt.
1.0.18 – 18.11.2025
Hinzugefügt
- Fußzeile auf allen Demoseiten mit verbesserter Barrierefreiheit.
Geändert
- Barrierefreiheit und Unterstützung für Screenreader verbessert.
Behoben
- Der Zeitstempel des Transkripts ist nun standardmäßig ausgeblendet und optional.
1.0.17 – 17.11.2025
Hinzugefügt
- Unterstützung für den iOS-Vollbildmodus mit einem Pseudo-Vollbild-Fallback.
- Verbesserte Formularbeschriftungen und Screenreader-Unterstützung für Zeitanzeigen.
Behoben
- Multiplayer-IDs und die Wiedergabe von Gebärdensprache unter iOS.
- Tastaturnavigation und ARIA-Semantik in den Einstellungsmenüs.
- iOS-Touch-Ereignisse und Drag-and-Drop auf Touch-Geräten.
- Probleme im Querformat auf Touch-Geräten.
- Stummschalt-Schaltfläche auf Touch-Geräten ohne Schieberegler.
- Vollbild-Schaltfläche im Querformat.
- Entfernen des Überlaufmenüs im Querformat oder auf Desktops mit einer Auflösung von mehr als 768 px.
1.0.14 – 16.11.2025
Hinzugefügt
- Responsives Überlaufmenü und Transkriptansicht für Audio-Player.
- Verbesserte Beschriftungen der Schaltflächen zum Ziehen und Ändern der Größe mit Tastenkombinationen und vollständiger i18n-Unterstützung.
forced-colorsUnterstützung für Steuerungssymbole.
Geändert
- Optimierte mobile Benutzererfahrung durch dynamische Positionierung von Untertiteln und Overlays sowie Verbesserungen der Barrierefreiheit.
- Breakpoint für die mobile Ansicht auf 768px festgelegt.
Behoben
- Umschaltfunktion für Audiodeskription mit Untertitel-basierter Synchronisation bei unterschiedlichen Videolängen.
- Die Zeitanzeige wurde neben den Fortschrittsbalken verschoben.
1.0.11 – 15.11.2025
Hinzugefügt
- Mehrsprachige Unterstützung für Gebärdensprachvideos.
- Einstellungsmenü in der Kopfzeile des Gebärdensprachvideos.
- Lizenz.
Geändert
- Das i18n-System wurde überarbeitet und die Barrierefreiheit verbessert.
- Die Standardsprache wurde auf Englisch umgestellt.
Behoben
- Barrierefreie Beschriftungen der Sprachauswahlfelder.
- Positionierung des Menüs für Gebärdensprach-Einstellungen, Tastaturnavigation und Anzeige des Symbols zum Ändern der Größe.
- Fokus und Schließverhalten von Dropdown-Menüs; verbesserte Fokusverwaltung für Menüs und Dialoge.
- HTML-Validierung und CSS-Parsing-Fehler.
1.0.10 – 09.11.2025
Geändert
- Verbesserte Barrierefreiheit von Transkripten und Umschalten der Audiodeskription.
1.0.9 – 08.11.2025
Behoben
- Die Sprachauswahl für Transkripte wurde verbessert und die Zeitachsen der Untertitel wurden korrigiert.
- Audiodeskription zum ersten Video hinzugefügt; Demo-Codeblöcke mit den Implementierungen synchronisiert.
1.0.8 – 05.11.2025
Geändert
- Die Audiodeskription wurde durch das Vertauschen von Quelle und Spur verbessert.
1.0.7 – 31.10.2025
Geändert
- Besserer Kontrast auf den Demoseiten und im Player.
Behoben
- Verhindern von Drag-Eingaben bei UI-Interaktionen; vollständige i18n-Unterstützung.
1.0.6 – 27.10.2025
Geändert
- npm esbuild-Update.
Behoben
- Hinzugefügt
playsinlineUnterstützung für die Wiedergabe auf iOS-/Android-Mobilgeräten. - Die Videoabmessungen werden beim Verlassen des Vollbildmodus mit der ESC-Taste nicht zurückgesetzt.
1.0.4 – 15.10.2025
Hinzugefügt
- Verbesserte Barrierefreiheit und Benutzererfahrung bei Wiedergabelisten.
Behoben
- Kein „Focus Hijacking“ mehr beim Laden.
- Das visuelle Zeitformat wurde für Screenreader durch natürliche Sprache ersetzt.
1.0.3 – 13.10.2025
Hinzugefügt
- Umfassende Tastaturnavigation und Barrierefreiheit.
Behoben
- Der Beschriftungscontainer wird nur angezeigt, wenn Text aktiv ist.
1.0.2 – 12.10.2025
Behoben
- Korrekte Anordnung der Z-Indizes und Platzierung der Gebärdensprache-Videos.
- Das Gebärdensprache-Video wird relativ zu den Steuerelementen positioniert.
- Der Kreis wurde aus dem SVG-Element für die Gebärdensprache entfernt.
- Untertitel-Popups werden über dem Wiedergabebedienelement positioniert und sind nun kürzer.
1.0.0 – 11.10.2025
- Erstveröffentlichung des barrierefreien Media-Players „vidply“.