Auto-generated from all feature plans. Last updated: 2025-11-25
@7), BBC audiowaveform CLI (waveform generation, dev-time only), ffprobe (duration extraction, optional dev-time), HTML5 Audio API (browser-native) (001-dj-mix-hosting)_djmixes/*.md YAML front matter), browser localStorage (playback positions, LRU cap 20 mixes), filesystem binary assets (assets/djmixes/{slug}/waveform.dat) (001-dj-mix-hosting)@7), BBC audiowaveform CLI (waveform generation, dev-time only), ffprobe (duration extraction, dev-time optional) (001-dj-mix-hosting)_djmixes/*.md YAML front matter); browser localStorage (playback positions, LRU cap 20 mixes); filesystem binary assets (assets/djmixes/{slug}/waveform.dat) (001-dj-mix-hosting)github-pages gem) — no new dependencies (002-mix-download-link)_djmixes/*.md files (new optional field audio_download_url) (002-mix-download-link)github-pages gem); Liquid templates; HTML + Minimal Mistakes theme v4.19.3 (remote); Disqus (already configured, shortname: andymadge) (003-disqus-djmix)_sass/music-player.scss (006-fix-firefox-download-icon)AudioPlayer, TrackHighlighter, navigator.mediaSession Web API (already wired in _layouts/mix.html; no new deps) (007-ios-media-metadata)analytics_consent, 12-month expiry, SameSite=Lax) (008-google-analytics)_pages/ with YAML front matter (009-privacy-policy)_djmixes/*.md files (010-mix-home-screen)_sass/music-player.scss (011-square-cover-images)YAML front matter in _djmixes/*.md files (012-cover-share-image)
_djmixes/ # Jekyll collection: one .md file per mix
_layouts/ # mix.html, mix-index.html
_includes/ # audio-player.html, tracklist.html, mix-cover.html, mix-image.html, wavesurfer-loader.html
_sass/ # music-player.scss
assets/js/ # audio-player.js, playback-persistence.js, track-highlighter.js
assets/djmixes/ # per-mix waveform .dat files
scripts/ # add-mix.sh, generate-waveforms.sh
Development server (native Ruby — preferred):
bundle install # first time or after Gemfile changes
bundle exec jekyll serve --livereload # start dev server at http://localhost:4000
Development server (Docker — alternative):
docker compose up # start dev server at http://localhost:4000
docker compose up --build # rebuild image first (after Gemfile changes)
docker compose down # stop
Build only (native):
bundle exec jekyll build
Build only (Docker):
docker compose run --rm jekyll bundle exec jekyll build
Ruby (Jekyll 3.9+), JavaScript ES6+, Liquid, SCSS: follow standard conventions for each language
_sass/music-player.scss