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:
Den
2026-07-18 11:53:21 -07:00
committed by GitHub
parent 6aee78e840
commit 179f88a4d8
3 changed files with 13 additions and 2 deletions

View File

@@ -85,6 +85,13 @@ export default function DemoScreen() {
>
<Text style={s.connectButtonText}>{t("demo.connectButton")}</Text>
</TouchableOpacity>
<TouchableOpacity
style={s.hostedCtaLink}
onPress={handleConnectPress}
testID="demo-hosted-cta"
>
<Text style={s.hostedCtaLinkText}>{t("demo.hostedCtaLink")}</Text>
</TouchableOpacity>
<TouchableOpacity
style={s.setupGuideLink}
onPress={() => Linking.openURL(SETUP_GUIDE_URL)}
@@ -140,6 +147,8 @@ const s = StyleSheet.create({
alignItems: "center",
},
connectButtonText: { color: "#ffffff", fontWeight: "600", fontSize: 15 },
hostedCtaLink: { marginTop: 14 },
hostedCtaLinkText: { fontSize: 14, fontWeight: "600", color: "#8b5cf6", textAlign: "center" },
setupGuideLink: { marginTop: 14 },
setupGuideLinkText: { fontSize: 14, fontWeight: "600", color: "#6366f1" },
})