feat(demo): funnel server-less users to the OpenCode Connect waitlist (#127)
The demo's only exit CTA was 'Connect your own server' — useless for the majority of installers who have no server (the exact churn/retention segment). Adds a secondary CTA pointing them to the OpenCode Connect (hosted, no-setup) waitlist, which is the monetization funnel per the founder strategy. Additive, reuses the existing waitlist on /connection/add and the demo's exit-tracking; i18n en+zh in parity. Claude-Session: https://claude.ai/code/session_01T12AhSnQVrSxNnvwfCx2z6 Co-authored-by: engineer <engineer@macbookpro.lan> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,13 @@ export default function DemoScreen() {
|
|||||||
>
|
>
|
||||||
<Text style={s.connectButtonText}>{t("demo.connectButton")}</Text>
|
<Text style={s.connectButtonText}>{t("demo.connectButton")}</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={s.hostedCtaLink}
|
||||||
|
onPress={handleConnectPress}
|
||||||
|
testID="demo-hosted-cta"
|
||||||
|
>
|
||||||
|
<Text style={s.hostedCtaLinkText}>{t("demo.hostedCtaLink")}</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={s.setupGuideLink}
|
style={s.setupGuideLink}
|
||||||
onPress={() => Linking.openURL(SETUP_GUIDE_URL)}
|
onPress={() => Linking.openURL(SETUP_GUIDE_URL)}
|
||||||
@@ -140,6 +147,8 @@ const s = StyleSheet.create({
|
|||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
},
|
},
|
||||||
connectButtonText: { color: "#ffffff", fontWeight: "600", fontSize: 15 },
|
connectButtonText: { color: "#ffffff", fontWeight: "600", fontSize: 15 },
|
||||||
|
hostedCtaLink: { marginTop: 14 },
|
||||||
|
hostedCtaLinkText: { fontSize: 14, fontWeight: "600", color: "#8b5cf6", textAlign: "center" },
|
||||||
setupGuideLink: { marginTop: 14 },
|
setupGuideLink: { marginTop: 14 },
|
||||||
setupGuideLinkText: { fontSize: 14, fontWeight: "600", color: "#6366f1" },
|
setupGuideLinkText: { fontSize: 14, fontWeight: "600", color: "#6366f1" },
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -432,6 +432,7 @@
|
|||||||
"ctaTitle": "Like what you see?",
|
"ctaTitle": "Like what you see?",
|
||||||
"ctaSubtitle": "This was a scripted demo. Connect your own opencode server to do this for real.",
|
"ctaSubtitle": "This was a scripted demo. Connect your own opencode server to do this for real.",
|
||||||
"connectButton": "Connect your own server",
|
"connectButton": "Connect your own server",
|
||||||
"setupGuideLink": "How to set up a server"
|
"setupGuideLink": "How to set up a server",
|
||||||
|
"hostedCtaLink": "No server? Join the OpenCode Connect waitlist — hosted, no setup"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -432,6 +432,7 @@
|
|||||||
"ctaTitle": "喜欢这个体验吗?",
|
"ctaTitle": "喜欢这个体验吗?",
|
||||||
"ctaSubtitle": "这是一个脚本化的演示。连接您自己的 opencode 服务器即可真正体验。",
|
"ctaSubtitle": "这是一个脚本化的演示。连接您自己的 opencode 服务器即可真正体验。",
|
||||||
"connectButton": "连接您自己的服务器",
|
"connectButton": "连接您自己的服务器",
|
||||||
"setupGuideLink": "如何设置服务器"
|
"setupGuideLink": "如何设置服务器",
|
||||||
|
"hostedCtaLink": "没有服务器?加入 OpenCode Connect 候补名单 — 托管,无需搭建"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user