RECORDGOD/site
type-two e8013a4633 feat(shop): DECKS — two-channel preview mixer on release pages (Serato internal-mode vibe)
Pure Web Audio, zero deps (site/decks.js, self-contained UI):
- deck A/B with waveform (client-computed peaks), click-to-seek, play/pause, CUE
- ±8% varispeed pitch (playbackRate — turntable behaviour, deliberately no keylock)
- channel gains + equal-power crossfader, DynamicsCompressor master limiter
- AudioContext lazily created on first load (autoplay policy safe)

Sources:
- local preview MP3s: PREVIEWS_DIR (default ./previews, gitignored) served at
  /previews, discovered via GET /shop/local-previews/{release_id}
  ({release_id}.mp3 / {release_id}-*.mp3|.m4a); on prod bind-mount the collection
- Apple 30s previews: GET /shop/preview-proxy?u= (STRICT whitelist
  *.itunes.apple.com / *.mzstatic.com) — Apple CDN sends no CORS, Web Audio needs it
- YouTube/Beatport/Bandcamp embeds untouched: iframes can never enter a mixer

release.html: A/B load buttons per track preview + local-cut rows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:57:47 +10:00
..
admin.html feat(admin): legacy-panel banner — new admin lives at robotmonster.party/admin + copy-my-token 2026-07-02 17:40:40 +10:00
builder.html feat(builder): P1 page editor — live preview now renders a REAL release from the catalog (real covers/tracklist) so block-arranging is WYSIWYG; + View-live link 2026-06-23 01:00:28 +10:00
dash.html feat(nav): light/dark switch every page + store→rack→crate navigator 2026-06-22 19:33:24 +10:00
decks.js feat(shop): DECKS — two-channel preview mixer on release pages (Serato internal-mode vibe) 2026-07-06 22:57:47 +10:00
index.html feat(nav): light/dark switch every page + store→rack→crate navigator 2026-06-22 19:33:24 +10:00
kiosk.html feat(shop): per-track Apple previews (lazy iTunes) + jog mini-player + dead-YouTube check 2026-06-23 23:44:17 +10:00
login.html feat(auth): staff email+password login + password reset (login stays token-based under the hood) 2026-06-26 16:24:34 +10:00
nav.js feat(nav): light/dark switch every page + store→rack→crate navigator 2026-06-22 19:33:24 +10:00
pos.html feat: Woo customer sync (non-destructive, in refresh.sh) + AusPost rates mirror & quote calc 2026-06-24 00:55:56 +10:00
receipt-logo.webp feat(pos): receipt logo + Monster Robot template (store name/address/footer) 2026-06-23 17:33:08 +10:00
records.html feat(shop): entity browse pages — artist/label/genre/style storefront views 2026-06-23 01:18:15 +10:00
release.html feat(shop): DECKS — two-channel preview mixer on release pages (Serato internal-mode vibe) 2026-07-06 22:57:47 +10:00
search.html feat(app): payments/packs/discogs-mp/dealgod modules + admin, shop, sales route work 2026-07-02 23:07:28 +10:00
shop.html feat: clean stub URLs (/builder /shop /admin /dash) + store geometry + storefront 2026-06-21 23:16:57 +10:00
wantlist.html feat(shop): P4 wantlist — public 'request a record' page + admin queue 2026-06-23 01:29:00 +10:00