From 179f88a4d8bf5dc22b85a359c300c68ea28950e0 Mon Sep 17 00:00:00 2001 From: Den <2119348+dzianisv@users.noreply.github.com> Date: Sat, 18 Jul 2026 11:53:21 -0700 Subject: [PATCH] feat(demo): funnel server-less users to the OpenCode Connect waitlist (#127) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Co-authored-by: Claude Fable 5 --- app/demo.tsx | 9 +++++++++ src/lib/i18n/en.json | 3 ++- src/lib/i18n/zh-Hans.json | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/demo.tsx b/app/demo.tsx index 8ab03c0..6a59030 100644 --- a/app/demo.tsx +++ b/app/demo.tsx @@ -85,6 +85,13 @@ export default function DemoScreen() { > {t("demo.connectButton")} + + {t("demo.hostedCtaLink")} + 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" }, }) diff --git a/src/lib/i18n/en.json b/src/lib/i18n/en.json index 02745dd..8981093 100644 --- a/src/lib/i18n/en.json +++ b/src/lib/i18n/en.json @@ -432,6 +432,7 @@ "ctaTitle": "Like what you see?", "ctaSubtitle": "This was a scripted demo. Connect your own opencode server to do this for real.", "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" } } diff --git a/src/lib/i18n/zh-Hans.json b/src/lib/i18n/zh-Hans.json index 14b0f71..447aa4e 100644 --- a/src/lib/i18n/zh-Hans.json +++ b/src/lib/i18n/zh-Hans.json @@ -432,6 +432,7 @@ "ctaTitle": "喜欢这个体验吗?", "ctaSubtitle": "这是一个脚本化的演示。连接您自己的 opencode 服务器即可真正体验。", "connectButton": "连接您自己的服务器", - "setupGuideLink": "如何设置服务器" + "setupGuideLink": "如何设置服务器", + "hostedCtaLink": "没有服务器?加入 OpenCode Connect 候补名单 — 托管,无需搭建" } }