feat: #3622688 Ship real audio and matching transcripts for the demo podcast episodes
Issue: #3622688 The article and podcast episode pages do not follow the design
This covers the remaining task "Ship audio URLs and real transcripts with demo episodes". Before this change, the seven demo podcast episodes had no audio, and their transcripts were identical placeholders (from #3622689).
What changed
config/canvas.content_template.node.podcast.full.yml: addssdc.vartheme_bs5_rightup.audio-player-localto the episode banner'scol_1, right after the existing remote player. Itsaudio_urlis bound tofield_audio → entity:file → uri. One dependency line is added too. Nothing else in the template changed.- 7 episode nodes in
content/node/: each one gets afield_audioreference to its own file entity (plus the matching_meta.dependsentry),field_durationset to "2 Mins", and a new transcript. No other field changed. - 7 new MP3s,
content/file/rightup-podcast-ep{11..17}-<slug>.mp3(about 4.9 MB in total), and 7 new file entity YAMLs (audio/mpeg, permanent,public://rightup/).
About the audio
- There are 7 made-up two-person conversations, one per demo episode, written from each episode's title and description. The hosts are the ones already shipped (Idris Calloway on episodes 11, 13, 15 and 17; Noor Fasi on 12, 14 and 16), and each episode has a named fictional guest. Each transcript matches the spoken audio word for word.
- Licensing: the voices were generated with Piper TTS, using only four public domain voice models:
en_US-norman-medium(LibriVox),en_GB-cori-high(LibriVox),en_US-ljspeech-high(LJ Speech) anden_US-john-medium(LibriVox). Voices under CC BY-NC-SA (ryan,hfc_male) or with unconfirmed licences were left out on purpose, because shipped assets must be GPL-compatible. The intro and outro are generated sine chimes. There is no third-party music. - Format: MP3, 44.1 kHz, mono, 64 kbps, about -17 LUFS, 85 to 99 seconds each, with ID3 tags set.
Verification
-
Fresh install from this branch on Varbase 11:
drush site:install varbase … add_ons=rightupsucceeded with 0 watchdog errors and no "exists already and does not match". -
Files: all 7 episodes have a permanent
audio/mpegfile, and each file's size on disk matches its entity. -
Pages: every episode page returns 200, and its h1 matches the title. Each page has exactly one
<audio>whose src is that episode's own MP3 (200audio/mpeg, and a byte-range request returns 206). The remote player stays in its hidden empty state. -
In a browser (Playwright, real clicks) on 3 episodes: Play starts playback (currentTime about 2.9s after 3s, readyState 4, no media error). The label switches between Play and Pause, and the time shows 0:02 / 1:33. Skip forward moves +15s, and a second click pauses. The durations shown (1:33, 1:27, 1:25) match the files.
-
Local pipeline (gitlab-ci-local) on this exact change: green for every job that can produce a valid result on this machine.
📦 Composer validate: pass📐 YAML lint: pass, 320 files, 0 invalid🔤 Cspell: pass, 80 files, 0 issues🟨 ESLint: pass🧩 Cucumber dry-run: pass, 286 scenarios and 1961 steps resolve🧩 Drupal CMS install: pass, the job that builds a plain Drupal CMS host and installs this recipe through the installer
The functional smoke job could not produce a valid result on this host, so the functional matrix gates on the remote pipeline. On this branch it failed 3 of 22 scenarios, all of them the same
I warm up "<path>" at all testing breakpointsstep timing out at 45s. To find out whether that was caused by this change, the same job was run on unmodified 1.0.x (f940f342, none of this change): it also failed 3 of 22 on that same step, on pages this change does not touch,/,/news,/studios,/architectureand/podcasts. Host load average was between 13 and 27 on 8 cores at the time. A gate that fails on already-merged code cannot certify this change either way, so the 24 functional jobs and the report are left to the remote pipeline.Testing to ensure no regressionstays unticked.
Notes
- One console 404 shows up on episode pages:
styles/drimage_improved_focal_520_520/.../circle-of-chairs.jpg.webp. It is not caused by this change. A site installed from the published 1.0.x shows the same 404, and this change does not touch that image. - Related: #3622689 (the placeholder transcripts replaced here).
AI-Generated: Yes
Checkpoints:
- File an issue
- Addition/Change/Update/Fix
- Testing to ensure no regression
- Automated unit testing coverage
- Automated functional testing coverage
- UX/UI designer responsibilities
- Readability
- Accessibility
- Performance
- Security
- Developer Documentation
- User Guide Documentation
- Reviewed by human
- Code review by maintainers
- Full testing and approval
- Credit contributors
- Review with the product owner
- Release notes snippet
- Release