Player: Live-Stream-Unterstützung (podcast.toml [stream]-Sektion, HTML5 audio) #54
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
Status/Needs-v00-Abnahme
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Zentonic/zentonic-publisher#54
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
████░░░░░░████████░░█░░░░░░░░░████████░░████░░░░░░Feature
Der Player (Sticky Footer, Issue #53) soll neben Episoden-Playback auch den Live-Stream des Podcasts abspielen können.
HTML5
<audio>unterstützt ICY/MP3-Streams nativ via<source src="stream-url" type="audio/mpeg">.Konfiguration
In
podcast.tomlneue optionale Sektion:Wenn
[stream]nicht gesetzt → kein Stream-Button (graceful degradation).UI
stream.urlim Site-JSON vorhanden)LIVE(pulsierender Indikator) vs.OFFTechnisch
stream.url+stream.namewerden in Site-JSON (site.json, erzeugt vonbuild.sh) übernommen und per<script>ins Template eingebettetduration→ Seekbar versteckt/disabled wenn Stream aktivEinschränkung
Kann lokal nicht vollständig getestet werden (kein laufender Stream). Implementierung kann vollständig erfolgen, End-to-End-Test erst mit echtem Stream-Endpoint.
Live-Stream im Sticky Player gemerged — bereit zur v00-Abnahme
Gemerged nach
dev(feat-Branchfeat/54-livestream).Umgesetzt:
[stream] urlim Site-JSON ({% if stream and stream.url %}) → graceful degradation ohne Config.<audio>-Element → gegenseitiger Ausschluss strukturell; Inline-Episode-Player wird bei Stream-Start pausiert und umgekehrt.kind:'stream'im State: Seekbardisabled, Zeitanzeige zeigtlive, Titel ohne Episoden-Link. Toggle (Klick startet/stoppt),aria-pressed.prefers-reduced-motion-Override (statisch).scripts/build.shunverändert —toml_to_jsonreicht die[stream]-Sektion generisch durch (verifiziert).Build verifiziert (ohne
[stream]: kein Button; mit[stream]: Button +data-stream-url/data-stream-nameauf index + episode).Hinweis: Der Worker hatte eine auskommentierte
[stream]-Demo insample_project/podcast.tomlergänzt — aus dem Merge herausgehalten (podcast.toml gehört zum Feed-Config-Strang #56, Kollisionsvermeidung). Die[stream]-Demo-Config kann in #56 oder separat ergänzt werden.Für v00-Abnahme: Live-Indikator-Optik + reduced-motion (statisch), Mobile-Layout Sticky-Player mit drittem Button (<640px), Stream nur mit echtem ICY/MP3-Endpoint end-to-end testbar.
v00-Abnahme #54 — PASS ✓ (browser-verifiziert)
Abgenommen per Headless-Capture mit echtem CDP-Browser-Treiber (Chromium, Interaktion — nicht DOM-only). Build aus
aaca7c3.zt-sticky-player__streambtnrendert nur bei[stream].urlkind:'stream', Seekbar disabled, Zeitanzeige "live", State geschriebenaudio.paused)aria-pressedtrue/false + Magenta-Puls-Zustand<audio>)Kein Blocker. Feature vollständig. Geschlossen durch v00.