0.2.55 (2026-04-26)

  • Added a narrow Voxhelm consumer integration for transcripts: generate_transcripts can now submit a batch job for an episode/audio URL, poll for completion, download Voxhelm Podlove/DOTe/WebVTT artifacts, and persist those files onto the existing Transcript model without consumer-local transcript conversion.

  • Added the remaining Wagtail-admin Voxhelm workflow: editors can now trigger transcript generation from episode and audio edit views, and site admins can manage Voxhelm API base URL/token plus optional model/language defaults through Settings -> Voxhelm settings.

  • Made Wagtail transcript generation non-blocking for the Voxhelm admin flow: Episode and Audio admin actions now submit the Voxhelm job, persist narrow local queued/running/succeeded/failed state, and finish transcript polling and artifact persistence in a Django Tasks background worker.

  • Hardened the Audio edit-view transcript action by moving it onto its own POST form and returning editors to a clean, usable edit surface with persisted transcript-generation status instead of leaving the admin form in a broken or partially rendered state.

  • Kept generate_transcripts as the synchronous/operator-facing fallback while documenting the required Django Tasks database-backend configuration for the editor-facing async flow.

  • Hardened malformed modelsearch input handling for public post filtering, modal facet counts, and audio/video admin searches so null bytes, repeated hyphens, and very long query strings no longer cause server errors.

  • Declared modelsearch as a runtime package dependency so wheel installs include the full-text search integration used by filters and media admin searches.