Studio checkout target: {launchStatus.targets.studioCheckoutTarget || 'support fallback active'}
+ {liveBlockerDetails.length > 0 ? (
+
+
{launchStatus.ready ? 'Live runtime notes' : 'Current preview blockers from the live auth runtime'}
+
+ {liveBlockerDetails.map((item) => (
+
{item}
+ ))}
+
+
+ ) : null}
{releaseManifestQuery.isLoading ? (
Refreshing release-manifest download readiness from the auth server.
) : null}
@@ -1316,6 +1332,7 @@ export function DashboardOverviewPage() {
()
+
+ if (!launchStatus.readiness.windowsDownloadConfigured) {
+ details.add('Windows release lane is not configured on the live preview deployment yet.')
+ }
+ if (!launchStatus.readiness.operatorCheckoutConfigured) {
+ details.add('Operator checkout is still on support fallback in the live preview deployment.')
+ }
+ if (!launchStatus.readiness.studioCheckoutConfigured) {
+ details.add('Studio checkout is still on support fallback in the live preview deployment.')
+ }
+ if (!launchStatus.readiness.publicAuthRuntimeReady) {
+ details.add('Shared browser-auth runtime is not yet production-ready on the live deployment.')
+ }
+ if (!authHealth.billing.webhookSecretConfigured) {
+ details.add('Paddle webhook secret is not configured yet.')
+ }
+ if (!authHealth.billing.productPlanMapConfigured) {
+ details.add('Billing product-plan map is not configured yet.')
+ }
+ if (!authHealth.billing.pricePlanMapConfigured) {
+ details.add('Billing price-plan map is not configured yet.')
+ }
+
+ authHealth.runtime.errors.forEach((item) => {
+ details.add(`Runtime error: ${item}`)
+ })
+ authHealth.runtime.warnings.forEach((item) => {
+ details.add(`Runtime warning: ${item}`)
+ })
+
+ return Array.from(details)
+}
+
export {
buildPublicLaunchStatusSummary,
normalizePublicLaunchReadiness,
diff --git a/website/src/site-data.ts b/website/src/site-data.ts
index 69f57a9..122c4ec 100644
--- a/website/src/site-data.ts
+++ b/website/src/site-data.ts
@@ -1036,6 +1036,11 @@ export const publicManualRouteAtlasCards = [
] as const
export const changelogEntries = [
+ {
+ date: 'June 29, 2026',
+ title: 'Protected launch surfaces now name the concrete live preview blockers too',
+ details: 'The signed-in dashboard and protected `/app/launch-status` lane now mirror the same concrete live blocker details already shown on the public launch surface. Instead of only generic missing-label prose, signed-in operators now see whether Windows release publication, operator/studio checkout, webhook secret, billing plan maps, shared-auth runtime readiness, or live runtime warnings are the actual remaining preview blockers.',
+ },
{
date: 'June 29, 2026',
title: 'Responsive route proof and live preview-readiness were revalidated again',