Test two MuseHub badge designs against the existing yellow CTA. Linux
stays on the control button since MuseHub doesn't ship on Linux. Adds
?ab= query-string override to force a variant for QA.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add showInFooter flag to FeatureEntry; tag relevant features
- Add compressor and speed-changer entries to features list
- Rename change-pitch shortTitle to 'Pitch Changer'
- Restructure footer into multi-column grid (Links, Features, Downloads)
- Footer Features column renders only flagged entries
- Add Shortcut.astro: renders kbd shortcuts with auto-derived Mac variants
- Add OsToggle.astro: pill toggle to switch win/mac shortcut display
- Wire OS detection script into BaseLayout before first paint
- Inject OsToggle into FeaturePageLayout prose area
- Add .shortcut-win/.shortcut-mac CSS to toggle correct variant
- Add startDate/endDate fields to PromoData type
- Extract isPromoDateActive helper, evaluated at runtime in the browser
- Remove date check from getFilteredPromos (build-time safe)
- Apply isPromoDateActive in PromoBanner and ExitIntentPopup
- Tag speakerDiarizationPro banner with Apr 14–28 2026 campaign dates
Add whitespace-nowrap to the CTA button so text like "Get it on MuseHub"
doesn't wrap at narrow viewports. Add px-4 to the banner container so
content doesn't touch the edges of the page.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Downloads and Social sections were accidentally nested inside the Links
list item, causing them to stack in a single column instead of appearing in
their own grid columns. Also improved responsive spacing: single column on
mobile, evenly spaced at md, and side-by-side at lg.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Netlify Edge Function sets persistent aud_ab_id cookie for cohort assignment
- Deterministic hash (djb2) maps user ID + experiment name to variant slot
- Experiment registry with weighted variant support (src/assets/data/experiments.ts)
- React hook useExperiment() for component-level variant rendering
- Matomo Custom Dimension 1 repurposed for experiment tracking
- Sample 'nav-logo' 50/50 experiment: control (logo+text) vs text-only
- Unit tests for hash distribution and variant assignment