Non-breaking dependency hygiene on a static site (all flagged packages are
build/dev-time tooling):
- bun update for in-range bumps (astro 5.17 -> 5.18, @astrojs/check, sitemap,
prettier, lint-staged, etc.).
- overrides pinning patched, same-major versions of transitive deps:
defu, devalue, fast-uri, h3, mdast-util-to-hast, postcss, rollup, smol-toml,
svgo, tar, undici, vite, yaml.
Clears every high-severity advisory that had a clean in-major fix. Verified
with astro build, the unit suite, and the Playwright E2E suite (all green).
Remaining 6 are non-exploitable here and need the Astro 6 / Tailwind 4 major
migration (deferred): picomatch (build-time glob ReDoS, trusted patterns) and
two Astro advisories that don't apply (define:vars uses static config; no
server islands; static output).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Make the Confluence promo calendar the single source of truth for partner
campaign promos (bun run pull-campaigns -> campaigns.ts), keep site-owned
promos in firstParty.ts, and add a lean Playwright E2E suite covering the
front page, downloads, and the promo banner date-window logic.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Cover the three flows that must never silently break:
- front page: hero + real Windows installer link, release video, nav.
- downloads: /download OS targets, and real Windows/macOS installer links on
the per-OS pages.
- promo banner: fake the browser clock to prove the date-window logic holds —
an active campaign banner renders inside its window and disappears the day
after it ends. Data-driven from campaigns.ts so it survives future pulls.
Setup: playwright.config.ts runs against `bun run dev`; `bun test` is scoped to
src/scripts so it ignores the .spec.ts files; e2e artifacts gitignored (and the
stale tracked test-results/ untracked).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Make the Confluence "Promo Calendar" page the single source of truth for
MuseHub partner campaign promos, and reshape the promo data layer around a
clear superset/subset split:
- promos (umbrella) = campaigns (Confluence-sourced, time-boxed) + first-party
(hand-authored, evergreen).
- `bun run pull-campaigns` (scripts/pull-campaigns.ts) fetches the page,
deterministically extracts the calendar table (URLs preserved verbatim),
resolves year-less date ranges, keeps only active/upcoming promos, maps them
to typed PromoData, validates every emitted URL traces back to source, and
writes src/assets/data/promos/campaigns.ts. Opt-in --clean-copy runs an LLM
pass that may only tidy copy text. Never commits or pushes.
- Site-owned promos (audio.com exit popup, Audacity 4 alpha/video, survey) move
to src/assets/data/promos/firstParty.ts.
- Delete legacy banners.ts / videos.ts / popups.ts; promotions.ts now merges
firstParty + campaign promos only.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
These now live in src/assets/img/beta and ship via astro:assets, so the
copies in public/ are unused.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Moves the five beta screenshots into src/assets/img/beta and renders
them with Astro's Image component so they get optimized output, baked
dimensions, and async decoding instead of plain <img> from /public.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds webp screenshots for the four hero feature cards (envelope, label
tracks, spectral editing, cloud projects) and the page hero. Drops the
old placeholder png. Reworks the secondary feature list with new icons
and copy, restructures sections, and adds the "How we're building
Audacity 4" video under "While you wait".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Activates the beta pre-release entry with no binaries yet so /next shows a
"coming soon" page. Rewrites BetaDetails with new copy, hero image, and
sections for what's new, what's not coming over, and a while-you-wait link
to the Alpha 2 release.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>