Replace the Workspaces section's placeholder stage with a faithful
Audacity 4 UI built from the @dilsonspickles/components 0.2.3
playbook. Each tab (Classic, Music, Modern, Custom) renders the same
WorkspaceCanvas driven by a per-workspace config (track list, toolbar
flags, playhead) so the workspace selector visibly reshapes the app:
- ApplicationHeader (File/Edit/…/Help), ProjectToolbar with centered
Audio setup/Share audio/Get effects (GhostButton) and right-side
Workspace dropdown + undo/redo
- Transport row composed from Toolbar primitives: transport group,
envelope/multi-clip/wave tools, 5-button zoom, conditional
trim/silence, beats:bars TimeCode, NumberStepper BPM, time-signature
Dropdown, Snap Checkbox + Bar Dropdown, mic + MasterMeter, gear in
rightContent
- TrackControlSidePanel (carrying the "+ Add new" button) on the left,
TimelineRuler + TrackNew rows on the right, PlayheadCursor overlay
- SelectionToolbar status bar at the bottom
- Stage clipped to top 25% (aspect-[64/9]) so the chrome differences
per workspace are what reads on the marketing page
- Fade transition on tab switch (180ms) so the swap isn't jarring
Also bumps the design system to 0.2.3 (Track DPR fix, AGENTS.md
playbook bundled, workspace primitives polished).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a new /about page introducing Audacity 4. Sections so far:
- Hero with GSAP-animated product video and entrance for title + CTA
- Editing experience: 2x2 card grid; Multiselect card renders a live
Track canvas with three clips cycling through a selection animation,
remaining three use single Clip showcases
- Tool improvements: sticky stage with selectable tool list on the left
- Workspaces: tab-style picker with preview stage (placeholders)
Wires /about into the main nav (replaces FAQ/Plugins/Blog/Forum), bumps
@dilsonspickles/components to 0.2.1 (Track DPR fix), and adds Vite
React dedupe + design-system SSR config so hooks resolve to a single
React instance across the app and the design system.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The design system 0.2.0 makes ThemeProvider and AccessibilityProfileProvider
optional — components now fall back to sensible defaults when neither
provider is in the tree. Drops the wrapper ceremony from the smoke test
so it reflects the real consumption pattern: import, render, done.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Wires up GitHub Packages auth via .npmrc + GITHUB_TOKEN env var and
installs @dilsonspickles/components@0.1.0. Adds a noindex smoke-test
page at /dev/design-system-smoke-test that renders a Toolbar with
TransportButton + ToolButton, wrapped in ThemeProvider and
AccessibilityProfileProvider.
Parked here pending @dilsonspickles/components 0.2.0 which should make
both providers optional so static consumers (marketing site, manual)
can use components without app-shell ceremony.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a "manual" content collection, dynamic routes, sidebar navigation,
and a hub landing page combining Pagefind search with an interactive UI
map for visual drill-down. Wires up MDX so manual pages can embed
interactive components (AudacityButton, Shortcut, Callout, UIMap) inline.
Pagefind runs as a postbuild step (`pagefind --site dist`) and scopes
indexing to the manual via data-pagefind-body.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
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>