0.2.60 (2026-06-16)
Pre-release
Pre-release
0.2.60 (2026-06-16)
Highlights
- Added an optional dependency-free custom audio player: a vanilla-TypeScript web component (transport, interactive transcript, and chapter navigation) that can replace the Podlove Web Player on episode detail pages. Enable it with the new
CAST_AUDIO_PLAYER = "custom"setting (default"podlove"keeps the existing behaviour). It follows the host site's colors via CSS custom properties, ships ~10 KB gzip (versus the ~138 KB Podlove embed), and loads the transcript lazily from a public, sanitized endpoint the first time the reader opens the Transcript panel. - Security: the public audio and transcript object endpoints now require the requested object to be reachable through a live, viewable episode/post before any content is served. Bare object ids that no live episode references, mismatched
episode_id/post_idanchors, and episodes/posts whose Wagtail view restrictions (login, password, group) are not satisfied all return404. Editors keep access to their own drafts, public RSS feeds are unaffected, and object existence is never leaked.
Improvements
- Custom player transcript polish: diarized transcripts read as dialogue with speaker heading rows, trimmed speaker-name comparison, visually-hidden speaker prefixes for screen readers, a loading spinner with
aria-busy, and a reduced-motion-aware reveal animation. - Transport keyboard shortcuts (Space/K, arrow seek, Home/End) are now page-global and routed to the active player, while being ignored when focus is on a form field, button, link, or the transcript search. Clicking a transcript line now seeks and starts playback.
- Calmer current-cue highlight (accent left border plus a translucent tint) replacing the full-width underline band, follow-along look-ahead via
scroll-margin-block, instant far jumps instead of multi-second smooth scrolls, and search that suspends follow-along so the highlight never scrolls away from the match being read. - Added a
data-share="none"/transport_share=Falseopt-out for the in-transport share button, for hosts that own a page-level share UI. - Updated bundled htmx from 2.0.8 to 2.0.10.
Fixes
- Custom player: made the transport keyboard shortcuts reachable. The player is now focusable (
tabindex=0,role="group",aria-keyshortcuts) with a focus-visible ring, and clicking the play button moves focus to the player so the shortcuts work immediately. - Custom player: an advertised transcript that resolves to zero cues (e.g. a stored file missing from media storage), or a failed transcript fetch, now shows "No transcript available for this episode." and hides the search/follow toolbar instead of rendering a dead, empty panel.
Docs / Maintenance
- Added
just js-bundlesto report the raw and gzip sizes of the frontend bundles shipped with django-cast (coloredrichtables with friendly names and a gzip comparison bar;--plainor a missingrichfalls back to plain text). - Updated JavaScript release dependencies and rebuilt shipped assets.