Product updates, fixes, and release notes

Studio + Sites changelog

Track selector

Release Status

Apps: Studio 4.2.14 · Sites 4.1.19

Latest: 4.0.1

Suggested bump: minor

Next version: 4.1.0

UnreleasedPending

Features

  • Added Setlist V2 foundation across Sites/Studio with content-first rendering (`/l/{subdomain}` + preview), Editor B controls, preview URL handling, and dashboard funnel support.
  • Added Studio `Creatives Lab` (`/creatives`) with a Noir Jazz contact-card workflow: asset-driven auto-compose, two-sided editing, interactive shader preview, and print-ready PNG/PDF export (EU 85x55 mm with bleed/crop options).
  • Added a global Studio bug feedback flow with a floating launcher, annotated screenshot capture, and Convex-backed report submission.
  • Added a Studio `/feedback` inbox page so creators can review their reports and admins can triage status (`new`, `triaged`, `resolved`).
  • Added admin-to-studio editor impersonation workflow with audited support sessions, editor-only scope lock, read-only default mode, and explicit write enable.
  • Added Bolden multi-channel contact rendering with direct Email/WhatsApp/Phone actions, plus setlist contact fallback priority (`email > whatsapp > phone`) when multiple methods are configured.

Fixes

  • Fixed Bolden demo hero/media URL normalization so root-relative demo assets (`/demo/...`) no longer get rewritten to malformed `https:///...` image URLs that caused 502s in production-like environments.
  • Fixed Bolden demo events island refresh behavior to avoid calling live `/api/public/events` for static demo data, removing recurring `username=bolden` 404 noise.
  • Added compatibility note for Convex Tickets V2 mutation patch-helper compatibility guard (Biome exception to preserve `hasOwnProperty.call`) so shared deploy pipelines keep passing with current TS target.
  • Added compatibility note for Convex Tickets V2 patch-guard runtime compatibility (`hasOwnProperty.call`) to keep shared production deploy/typecheck pipelines green.
  • Fixed Editor B preview section navigation so re-selecting the same section (for example Bio) now re-triggers iframe scroll targeting instead of being ignored as a duplicate navigation event.
  • Fixed Studio Bio editor runtime crash caused by repeated local-draft feedback loops: local preview updates now emit only on user input (not on component mount/re-render), preventing React maximum-update-depth and hydration mismatch failures when opening the Bio section.
  • Fixed Studio Bio draft detection/publish blocking while typing by adding debounced autosave with serialized saves; pending changes now register without requiring a manual blur dance before publish becomes available.
  • Fixed Sites App Router segment config validation by replacing computed `revalidate` expressions with static literals on public profile routes (`/l/[username]`, `/u/[username]`, `/u/host/[hostname]`), unblocking production builds on Next.js 16.
  • Fixed Studio auth proxy middleware so `/api/stripe-webhook` bypasses login redirects; Stripe webhook deliveries now reach the server handler instead of returning HTTP `307`.
  • Secured Sites draft preview routes by requiring short-lived preview access tokens and validating token route/target server-side, while enabling Admin Users to open audited Site/Setlist preview links without exposing public preview URLs.
  • Hardened custom domain support for production: canonical apex storage (`domain.com`) with automatic `www` alias management, runtime hostname resolution in Sites, canonical SEO on custom hosts, and idempotent Vercel sync/remove behavior.
  • Fixed Studio dashboard sidebar hydration mismatch by deferring cached profile read (`localStorage`) until after mount.
  • Fixed Admin local impersonation launch to prefer `http://localhost:3001/editor` when Admin is running on localhost, even if `NEXT_PUBLIC_STUDIO_URL` points to production.
  • Refactored Setlist/editor-side modules into smaller files to satisfy guardrails (`file-length`, lint/type checks) while preserving current behavior.
  • Labeled Studio Editor B Setlist controls as `Preview` to clarify the feature is still in early refinement.
  • Reordered Studio Editor B `Site Setup` control cards to prioritize `Template`, then `Theme & Mode`, `Header`, `Music Player`, and `Content Sections`.
  • Hardened Studio Editor B section dragging so the grab/grabbing cursor stays locked to drag state and the drag overlay no longer drifts away from the grabbed block.
  • Fixed Studio bug feedback screenshot capture fallback so CSS `color(...)` tokens no longer break capture; flow now retries with `foreignObjectRendering` before surfacing an error.
  • Tuned Studio bug feedback UX with a slightly larger modal, improved canvas layering/pointer handling to keep annotations visible, and updated copy to "bugs & suggestions" across supported locales.
  • Fixed Studio bug feedback capture so the temporary "Preparing screenshot..." overlay is excluded from the final screenshot sent in reports.
  • Fixed Studio bug feedback capture to include live Site Preview iframe content in submitted screenshots (via secure cross-origin preview capture handshake).
  • Changed Studio bug feedback capture to require browser tab capture permission and removed fallback screenshot generation to avoid sending low-fidelity captures after cancel/failure.
  • Fixed Studio Editor draft loss when navigating to Settings (for example after changing site URL) by restoring local session edits and auto-saving them on return to `/editor`.
  • Hardened Studio custom-domain Vercel sync authorization by adding team scope fallbacks (`teamId`/`slug`/no-scope), legacy env compatibility (`VERCEL_TOKEN`, `VERCEL_PROJECT_NAME`), and clearer auth-misconfiguration error responses.
  • Fixed Studio custom-domain sync target selection so domain connect/remove always uses the Sites Vercel project (`VERCEL_SITES_PROJECT_ID` / `VERCEL_SITES_PROJECT_NAME`) instead of accidentally attaching user domains to the Studio project.
  • Fixed Studio custom-domain connect behavior when a hostname is already attached to another Vercel project: the flow now surfaces a real conflict error instead of silently showing `Pending DNS`.
  • Simplified Studio custom-domain DNS guidance so users see plain step-by-step records with full hostnames (including subdomain setups) instead of root/alias technical labels.
  • Upgraded Studio custom-domain setup UX to a guided 3-step flow (domain, DNS, verification) with friendly status messaging, localized help links, copyable DNS records, and controlled auto-refresh while DNS is pending.
  • Fixed Sites middleware host routing so third-party subdomains (for example `test.example.com`) resolve via custom-domain hostname lookup instead of being misread as internal tenant subdomains (`/u/test`), preventing false 404s on connected custom domains.
  • Fixed custom-domain rewrites to target a routable internal path (`/u/host/:hostname`) instead of a private App Router segment, resolving persistent 404s on connected external domains.
  • Fixed Events preview fidelity: when a creator has real events but none are currently publish-ready (`confirmed` + visible + future), preview now falls back to real non-cancelled events instead of sample placeholders.
  • Fixed Studio Events defaults so switching an event to `confirmed` enables `Visible on site` by default, preventing “published but hidden” event confusion.
  • Improved Studio Events form layout by moving the `Visible on site` toggle directly below `Status` so creators can find publish visibility controls faster.
  • Updated the Studio bug feedback annotator to use a custom pen cursor on the drawing canvas for clearer interaction affordance.
  • Refactored Studio bug feedback UI into smaller components to satisfy file-length guardrails without changing behavior.
  • Finalized Studio bug feedback annotator sizing to stay within enforced file-length limits after formatter output (guardrail-compatible).
  • Fixed Studio language selector rendering by shipping a custom dropdown with explicit flag assets (including Catalan) and removing duplicate/missing icon states.
  • Fixed media asset usage reconciliation for legacy URL-only references by deriving `assetId` from internal `/o/*` and `/v/*` media URLs, preventing false `Unused` status in the asset library.
  • Fixed site asset rendering to restore Cloudflare-first responsive delivery with width-aware variant requests, reducing oversized downloads without relying on Vercel image optimization.
  • Fixed media URL canonicalization fallback so `workers.dev` sources are only rewritten to the configured CDN domain when `NEXT_PUBLIC_MEDIA_CDN_BASE_URL` is explicitly set.
  • Fixed Cloudflare image rendering path so `next/image` keeps generating responsive `srcset` URLs (instead of forcing `unoptimized`), while still serving bytes from Cloudflare variants.
  • Fixed image delivery fallback so when no dedicated Cloudflare media CDN host is configured, Sites falls back to Next image optimization instead of serving untransformed `workers.dev` originals.
  • Fixed Cloudflare variant cache bust defaults (`mv=4`) after enabling real edge resizing, so previously cached oversized variant URLs are skipped automatically.
  • Reduced LCP and image waste by prioritizing only the hero focal image, lowering decorative hero image priority, tightening image quality/sizes for hero and project cards, and requesting exact responsive widths from the media loader.
  • Fixed Bolden contact email rendering on small screens by using fluid typography and smarter line wrapping so long addresses no longer get clipped.
  • Reduced initial unused JS for Bolden pages by dynamically loading section components that are not always present on every profile.
  • Raised Sites browser baseline to Safari/iOS 15.4+, reducing legacy polyfills for modern browsers and shrinking initial JavaScript payload.
  • Tuned Next responsive image candidate widths and lowered hot-path image quality for Bolden hero/project media to reduce remaining LCP image waste reported by Speed Insights.
  • Moved public profile template orchestration to a server component path and removed client-side template context dependency from event refresh logic, reducing initial client JavaScript on `/u/[username]`.
  • Reduced hero avatar LCP bytes further by switching from `fill + sizes` to intrinsic dimensions plus stronger compression defaults.
  • Removed Bolden hero entrance animation classes from the critical header/avatar layers so primary above-the-fold text paints immediately and avoids LCP delays from staggered reveal timing.
  • Moved Bolden standard/new-release hero wrappers to server-rendered components and replaced the hero scroll button handler with a plain anchor target, reducing hydration work in the LCP path.
  • Swapped public profile section navigation to a static server-rendered nav (keeping the richer interactive nav in preview/editor flows), cutting client bundle weight on `/u/[username]`.
  • Lowered additional image quality defaults on avatar/new-release/project cards to reduce transferred bytes under Speed Insights without changing content layout.
  • Fixed a production crash on public profile pages by ensuring Cloudflare image loader functions are no longer serialized from server to client components.
  • Improved Bolden project/release detail modals with full-bleed media composition and responsive blending, including bottom fade treatment on mobile and right-side fade on desktop.
  • Improved release modal mobile readability by stabilizing spacing and making platform link buttons fill available width.
  • Fixed Studio Bolden hero variant switching so standard/new-release override settings persist when toggling through full-photo mode instead of resetting.

Enhancements

  • Refactored shared Studio/Sites web infrastructure and guardrails (shared ESLint/web runtime, unused-export audit, file-length baseline cleanup), and stabilized public marketing surfaces by fixing the broken Bolden blog cover fallback plus Next image quality config for demo assets.
  • Added workspace-collaboration groundwork for P0-007: workspace-centric ACL with site-scoped invites/capabilities, Studio aggregated Sites hub (owned/shared), and agenda filters (`all/workspace/site`) backed by new workspace/site event scoping APIs.
  • Hardened Studio event tracking hooks to work both inside and outside dashboard site context providers, preventing runtime crashes on auth/i18n surfaces.
  • Added owner-first Studio multi-site operability for P0-006: active-site context, sidebar site selector, and site-scoped Settings wiring (visibility/custom-domain/editor events) with legacy-safe fallback.
  • Added P0-006 multi-site readiness: site-scoped published content (`siteContents`), `siteId`-aware drafts/public/domain flows, and owner-first Studio activation path with legacy fallback continuity.
  • Exported workspace multi-site actions on the canonical `workspaces.*` API surface to keep Studio/Sites integrations on stable function paths.
  • Added workspace multi-site backend actions (`workspaces.createMyWorkspaceSite`, `workspaces.setMyWorkspacePrimarySite`, `workspaces.archiveMyWorkspaceSite`) and deterministic primary-site resolution prep for gradual `FF_WORKSPACE_MODEL` rollout.
  • Updated Studio media queries to exclude deleted assets from list/search results, preventing broken `/assets` URL rendering for creators.
  • Made `productEvents.trackUserEvent` best-effort for unauthenticated sessions (`{ logged: false }` instead of throwing), reducing noisy login-surface tracking errors in Studio/Sites.
  • Added workspace-model cohort rollout support via `FF_WORKSPACE_MODEL_ALLOWLIST` (email/username/profileId/siteSubdomain) so Studio/Sites can validate workspace reads per tester before global activation.
  • Added compatibility note for shared Admin Tickets V2 backend rollout (canonical workflow semantics, optimistic ticket versioning, and ticket event tracing APIs).
  • Added regression coverage for Studio preview navigation dedupe keys so same-section reselects remain scrollable when navigation signal increments.
  • Bumped Studio and Sites app versions to `4.2.13` (Studio) and `4.1.18` (Sites).
  • Started P0-006 workspace/site migration kickoff with Convex dual-write compatibility (`workspaceId`/`siteId`), idempotent profile backfill (`workspaces.backfillProfileWorkspaces`), and `FF_WORKSPACE_MODEL`-gated read path activation.
  • Refactored Studio/Sites pricing comparison and Stripe helpers into smaller modules to satisfy file-length guardrails while keeping billing behavior unchanged.
  • Bumped Studio and Sites app versions to `4.2.10` (Studio) and `4.1.15` (Sites).
  • Added compatibility note for shared Admin gate dashboard rollout (Phase-B readiness panel and check rendering from `adminGetPricingGateStatus`).
  • Added compatibility note for shared admin API-barrel export of pricing gate query (`adminGetPricingGateStatus`) used in operational rollout decisions.
  • Added pricing phase-gate runbook support with backend limit snapshot APIs (`entitlements.getMyPlanLimitsV1`) and formal go/no-go query (`adminGetPricingGateStatus`).
  • Completed pricing funnel instrumentation by adding server-side `checkout_completed` tracking from Stripe webhook flow for Studio/Sites monetization analytics.
  • Added pricing v1 packaging/billing foundation across Studio/Sites/Admin with staged Stripe prices (`promo/base`), explicit `free/pro/max` plan metadata, and grandfather-window compatibility for promo subscribers.
  • Refactored shared custom-domain and editor draft internals into smaller modules to satisfy repository file-length guardrails without changing external behavior.
  • Bumped Studio and Sites app versions to `4.2.8` (Studio) and `4.1.13` (Sites).
  • Bumped Studio and Sites app versions to `4.2.9` (Studio) and `4.1.14` (Sites).
  • Bumped Studio and Sites app versions to `4.2.7` (Studio) and `4.1.12` (Sites).
  • Bumped Studio and Sites app versions to `4.2.4` (Studio) and `4.1.9` (Sites).
  • Bumped Studio app version to `4.2.6`.
  • Reworked Studio template selector cards with a shared template taxonomy (audience, format, objective, focus), localized labels (`en/es/ca/fr/ja`), and grouped detail popovers to support future filtering/recommendation flows.
  • Switched public site routing to canonical `siteSubdomain` keys, including legacy subdomain redirect support and cache/revalidation updates for subdomain migrations.
  • Bumped Studio and Sites app versions to `4.2.3` (Studio) and `4.1.8` (Sites).
  • Added shared backend compatibility note for admin ticket archiving (`archivedAt` / `archivedByEmail`) and new board archive filtering semantics used in internal support tooling.
  • Added public-site interaction tracking (`/api/track/interaction`) for outbound/contact link clicks and wired those events into admin analytics drilldowns.
  • Refined interaction tracking internals by splitting parsing helpers and tightening route error handling for guardrail-compliant file sizes.
  • Added Studio lint compatibility suppressions for intentional raw-image preview surfaces used in bug feedback and creative previews.
  • Bumped Studio and Sites app versions to `4.2.2` (Studio) and `4.1.7` (Sites).
  • Added shared-backend compatibility note for the admin tickets Kanban rollout, including bug-to-ticket conversion and image attachment metadata support.
  • Updated Asset Manager status copy to show `In use` instead of `Ready` for assets actively referenced by draft/published content.
  • Hid the Studio `Creatives Lab` sidebar entry while the feature remains in internal iteration (route stays directly accessible).
  • Bumped Studio and Sites app versions to `4.1.0`.
  • Added shared backend/docs compatibility notes for the new `bugFeedback` Convex module and `bugFeedbackReports` schema wiring.

v4.0.12026-02-17

Fixes

  • Fixed shared draft publish flow to auto-enable `siteEnabled` and `isPublic` only on first publish when visibility was never configured, preventing published sites from staying hidden in draft mode.
  • Fixed publish revalidation scheduling to use the updated profile state after publish.

Enhancements

  • Bumped Studio and Sites app versions to `4.0.1`.

v0.4.02026-02-17

Features

  • Added Editor B as an adaptive Studio editing experience with guided hierarchical flow and context-aware preview navigation.
  • Introduced a calmer editor stack workflow with focused variant switching and streamlined sidebar interactions.

Fixes

  • Improved Editor B preview synchronization to reduce stale state while switching variants and editing nested sections.
  • Smoothed header variant editing transitions so field state remains stable across quick mode changes.

Enhancements

  • Expanded site analytics visit debug tracking with richer per-visit metadata for faster diagnostics in pre-launch.
  • Consolidated Studio sidebar popovers by extracting a shared shell and reusing it for profile and jazz popovers.
  • Updated Sites section overlays to use theme variables and removed hardcoded black/white utilities in hero and mobile-sheet overlays.
  • Added a musical confetti celebration when signing in to Studio and on first publication, with jazz instrument emoji effects.
  • Updated studio dashboard analytics country outputs to include country flags/emojis in top regions, tooltips, and country ranking lists.
  • Added Studio i18n foundation (`en/es/ca/fr/ja`) with global language selector, locale persistence (cookie/local storage), and profile-level locale sync.

v0.3.02026-02-13

Features

  • Split public changelog into per-track routes (`mobile`, `studio-sites`, `admin`) with a track index page.
  • Rolled out the redesigned Studio dashboard shell with a responsive/collapsible sidebar, animated profile popover, and Jazz Radio controls (including a compact popover in collapsed mode).
  • Added a technical system status pilot and rotating jazz status line to the Studio dashboard header.
  • Upgraded analytics presentation in Studio with a dedicated snapshot section and rich country-map hover tooltips.
  • Added a flattened parallax hero treatment in Sites Bolden pages for a cleaner visual depth effect.

Fixes

  • Fixed Bolden light mode rendering so `siteSettings.theme` is respected when no `design.themeMode` is set.
  • Fixed `publicSite.updateSiteSettings` to preserve nested `siteSettings` fields (for example `design` and `hero`) on partial updates.
  • Synced the Sites section navigation with rendered section visibility to prevent stale anchors.
  • Replaced heavy parallax blur with an elegant dim overlay in Sites hero media for better readability.
  • Improved Studio light-theme contrast in sidebar/header UI, founder badge treatment, and profile popover transitions.
  • Kept Studio theme handling isolated from site accent constraints and corrected dark map contrast behavior.
  • Hardened Bolden default accent fallback behavior (`light`, `dark`, `auto`) to avoid low-contrast states.

Enhancements

  • Removed the gallery format selector from Studio and simplified Convex/site gallery payloads to avoid implied crop behavior.
  • Added semantic overlay tokens for Sites and migrated template/section overlays, modals, and hero text away from hardcoded black/white utilities.
  • Added `check:sites-theme` guardrail to block hardcoded black/white utility classes in Sites templates and sections.
  • Studio changelog dashboard now reads the `studio-sites` track and shows both Studio and Sites app versions.
  • Consolidated template scope around Bolden-only implementation across Studio, Sites, and mobile template selection.
  • Simplified shared template-design typing and appearance normalization for Bolden design defaults.
  • Moved public site URL access into the Site Status card and removed duplicate dashboard actions.

v0.1.02026-02-10

Features

  • Added a public changelog page for Sites (`/changelog`).
  • Added a Studio changelog view so creators can follow updates from the dashboard.

Enhancements

  • Added a changelog guardrail to require changelog updates when product code changes.
  • Added automatic next-version suggestion (SemVer) based on unreleased categories.