Skip to content

feat(mobile): add agent-ready launch onboarding - #2

Open
tmad4000 wants to merge 4 commits into
mainfrom
fm/openchat-vision-launch-fable-r1
Open

tmad4000 wants to merge 4 commits into
mainfrom
fm/openchat-vision-launch-fable-r1

Conversation

@tmad4000

@tmad4000 tmad4000 commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Intent

The developer wanted the agent to finish and launch a small, high-leverage OpenChat vision slice that made the product feel ready for public use, centered on AI-integrated messaging, Thoughts/memory, Noos identity/graph, agent keys/API setup, and shareable human conversations. They required the agent to follow repo rules, create and close a Beads issue, preserve web/mobile/RN-web parity, implement a shipped product surface rather than only a plan, update launch documentation, run targeted verification, commit with the Beads id, push, open a PR, deploy via infra/deploy.sh if possible, and write a detailed report to the specified path. They explicitly constrained the work to avoid credentials in commits or reports, avoid unrelated projects or infrastructure changes, not delete production data or rotate secrets, and not silently skip deployment. After the initial ship and deploy, they added one remaining requirement: run the no-mistakes gate, record the result or exact blocker in the report, leave PR/deploy status as-is, and stop.

What Changed

  • Added an agent-ready onboarding step in the mobile app with Thoughts, Noos, agent key/API setup, and shareable conversation guidance, plus a scrollability fix so the final CTA remains reachable on constrained screens.
  • Polished the server landing page vision copy to better position OpenChat around human conversations and agent-ready context.
  • Updated launch and tester documentation, including mobile README, bot connection guidance, launch notes, and design thoughts, alongside Beads tracking updates for the completed slice.

Risk Assessment

✅ Low: The runtime change is narrowly scoped to an additional onboarding step plus a scrollability fix, and I did not find material correctness, security, performance, or regression risks in the changed code.

Testing

I exercised the changed launch surfaces visually, verified the shared RN-web/mobile bundle exports successfully after repairing local missing resolver dependencies without tracked file changes, checked the changed files for obvious secret leaks, cleaned transient Expo output, and left the worktree clean.

  • Evidence: Landing page screenshot (local file: /var/folders/04/j5yqtsfs3l527xrkvtxzy60h0000gn/T/no-mistakes-evidence/01KX9CA3ESDXNH969XZQW42BJM/landing-page.png)
  • Evidence: Agent-ready onboarding screenshot (local file: /var/folders/04/j5yqtsfs3l527xrkvtxzy60h0000gn/T/no-mistakes-evidence/01KX9CA3ESDXNH969XZQW42BJM/onboarding-agent-ready.png)
Evidence: Agent-ready onboarding RN-web render
<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>OpenChat onboarding evidence</title><style id="react-native-stylesheet">[stylesheet-group="0"]{}
body{margin:0;}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}
input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}
[stylesheet-group="1"]{}
.css-accessibilityImage-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;}
.css-text-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;}
.css-textHasAncestor-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;}
.css-textinput-11aywtz{-moz-appearance:textfield;-webkit-appearance:none;background-color:rgba(0,0,0,0.00);border-bottom-left-radius:0px;border-bottom-right-radius:0px;border-top-left-radius:0px;border-top-right-radius:0px;border:0 solid black;box-sizing:border-box;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;margin:0px;padding:0px;resize:none;}
.css-view-g5y9jx{align-content:flex-start;align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;}
[stylesheet-group="2"]{}
.r-borderColor-1awa8pu{border-bottom-color:rgba(101,119,134,1.00);border-left-color:rgba(101,119,134,1.00);border-right-color:rgba(101,119,134,1.00);border-top-color:rgba(101,119,134,1.00);}
.r-borderColor-1d4xg89{border-bottom-color:rgba(170,184,194,1.00);border-left-color:rgba(170,184,194,1.00);border-right-color:rgba(170,184,194,1.00);border-top-color:rgba(170,184,194,1.00);}
.r-borderColor-1jyn79y{border-bottom-color:rgba(0,150,136,1.00);border-left-color:rgba(0,150,136,1.00);border-right-color:rgba(0,150,136,1.00);border-top-color:rgba(0,150,136,1.00);}
.r-borderColor-4a18lf{border-bottom-color:rgba(255,0,0,1.00);border-left-color:rgba(255,0,0,1.00);border-right-color:rgba(255,0,0,1.00);border-top-color:rgba(255,0,0,1.00);}
.r-borderColor-60ke3l{border-bottom-color:rgba(0,128,0,1.00);border-left-color:rgba(0,128,0,1.00);border-right-color:rgba(0,128,0,1.00);border-top-color:rgba(0,128,0,1.00);}
.r-borderColor-9x6qib{border-bottom-color:rgba(204,214,221,1.00);border-left-color:rgba(204,214,221,1.00);border-right-color:rgba(204,214,221,1.00);border-top-color:rgba(204,214,221,1.00);}
.r-borderColor-fx7oqy{border-bottom-color:rgba(0,0,255,1.00);border-left-color:rgba(0,0,255,1.00);border-right-color:rgba(0,0,255,1.00);border-top-color:rgba(0,0,255,1.00);}
.r-borderRadius-1fuqb1j{border-bottom-left-radius:24px;border-bottom-right-radius:24px;border-top-left-radius:24px;border-top-right-radius:24px;}
.r-borderRadius-1j16mh1{border-bottom-left-radius:100%;border-bottom-right-radius:100%;border-top-left-radius:100%;border-top-right-radius:100%;}
.r-borderRadius-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;}
.r-borderRadius-1q9bdsx{border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-top-left-radius:12px;border-top-right-radius:12px;}
.r-borderRadius-1ueegzj{border-bottom-left-radius:44px;border-bottom-right-radius:44px;border-top-left-radius:44px;border-top-right-radius:44px;}
.r-borderRadius-t23y2h{border-bottom-left-radius:14px;border-bottom-right-radius:14px;border-top-left-radius:14px;border-top-right-radius:14px;}
.r-borderRadius-z2wwpe{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;}
.r-borderStyle-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;}
.r-borderStyle-eg6o18{border-bottom-style:dashed;border-left-style:dashed;border-right-style:dashed;border-top-style:dashed;}
.r-borderWidth-d045u9{border-bottom-width:2px;border-left-width:2px;border-right-width:2px;border-top-width:2px;}
.r-borderWidth-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;}
.r-display-krxsd3{display:-webkit-box;}
.r-display-xoduu5{display:inline-flex;}
.r-flex-13awgt0{flex:1;}
.r-margin-crgep1{margin:0px;}
.r-margin-ywje51{margin:auto;}
.r-overflow-1qsk4np{overflow-x:clip;overflow-y:clip;}
.r-overflow-1udh08x{overflow-x:hidden;overflow-y:hidden;}
.r-padding-1slz7xr{padding:14px;}
.r-padding-edyy15{padding:8px;}
.r-padding-t60dpp{padding:0px;}
[stylesheet-group="2.1"]{}
.r-paddingBlock-1d7mnkm{padding-bottom:15px;padding-top:15px;}
.r-paddingBlock-1mmae3n{padding-bottom:12px;padding-top:12px;}
.r-paddingBlock-ywh0we{padding-bottom:13px;padding-top:13px;}
.r-paddingInline-1rds9hb{padding-left:40px;padding-right:40px;}
.r-paddingInline-1wci7jc{padding-left:28px;padding-right:28px;}
.r-paddingInline-3pj75a{padding-left:16px;padding-right:16px;}
.r-paddingInline-cxgwc0{padding-left:24px;padding-right:24px;}
.r-paddingInline-u9wvl5{padding-left:20px;padding-right:20px;}
[stylesheet-group="2.2"]{}
.r-insetInlineStart-10s2tm5{left:0%;}
.r-insetInlineStart-16o8guy{right:100%;}
.r-insetInlineStart-dqe1q{right:0%;}
.r-insetInlineStart-rci37q{left:100%;}
[stylesheet-group="3"]{}
.r-WebkitBoxOrient-8akbws{-webkit-box-orient:vertical;}
.r-WebkitOverflowScrolling-150rngu{-webkit-overflow-scrolling:touch;}
.r-alignItems-1awozwy{align-items:center;}
.r-alignItems-1habvwh{align-items:flex-start;}
.r-alignSelf-k200y{align-self:flex-start;}
.r-animationDuration-17bb2tj{animation-duration:0.75s;}
.r-animationDuration-1ay1djp{animation-duration:1s;}
.r-animationDuration-9daxd3{animation-duration:250ms;}
.r-animationIterationCount-1muvv40{animation-iteration-count:infinite;}
.r-animationKeyframes-13aq9py{animation-name:r-animation-1iq689l;}
.r-animationKeyframes-1qulhi1{animation-name:r-animation-1pzkwqh;}
.r-animationKeyframes-1yef0xd{animation-name:r-animation-11cv4x;}
.r-animationKeyframes-ebwn4k{animation-name:r-animation-q67da2;}
.r-animationKeyframes-g3mlsw{animation-name:r-animation-t2lo5v;}
.r-animationKeyframes-xx3c9p{animation-name:r-animation-imtty0;}
.r-animationPlayState-1abnn5w{animation-play-state:paused;}
.r-animationTimingFunction-1ldzwu0{animation-timing-function:linear;}
.r-animationTimingFunction-leqjx2{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);}
.r-animationTimingFunction-s62m2j{animation-timing-function:cubic-bezier(0.47, 0, 0.745, 0.715);}
.r-appearance-30o5oe{-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none;}
.r-backgroundColor-11mpjr4{background-color:rgba(223,223,223,1.00);}
.r-backgroundColor-11udlyb{background-color:rgba(0,150,136,1.00);}
.r-backgroundColor-14lw9ot{background-color:rgba(255,255,255,1.00);}
.r-backgroundColor-14sbq61{background-color:rgba(33,150,243,1.00);}
.r-backgroundColor-1niwhzg{background-color:rgba(0,0,0,0.00);}
.r-backgroundColor-dkge59{background-color:rgba(170,184,194,1.00);}
.r-backgroundColor-u92y06{background-color:rgba(255,165,0,1.00);}
.r-backgroundImage-rs94m5{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwM

... [4430 bytes truncated] ...

olderTextColor-6taxm2:-ms-input-placeholder{color:var(--placeholderTextColor);opacity:1;}
.r-placeholderTextColor-6taxm2::-moz-placeholder{color:var(--placeholderTextColor);opacity:1;}
.r-placeholderTextColor-6taxm2::-webkit-input-placeholder{color:var(--placeholderTextColor);opacity:1;}
.r-placeholderTextColor-6taxm2::placeholder{color:var(--placeholderTextColor);opacity:1;}
.r-pointerEvents-105ug2t{pointer-events:auto!important;}
.r-pointerEvents-12vffkv>* {pointer-events:auto;}
.r-pointerEvents-12vffkv{pointer-events:none!important;}
.r-pointerEvents-633pao>* {pointer-events:none;}
.r-pointerEvents-633pao{pointer-events:none!important;}
.r-pointerEvents-ah5dr5>* {pointer-events:none;}
.r-pointerEvents-ah5dr5{pointer-events:auto!important;}
.r-position-1xcajam{position:fixed;}
.r-position-gtdqiz{position:-webkit-sticky;position:sticky;}
.r-position-u8s1d{position:absolute;}
.r-right-zchlnj{right:0px;}
.r-scrollSnapAlign-cpa5s6{scroll-snap-align:start;}
.r-scrollSnapType-1ocf4r9{scroll-snap-type:y mandatory;}
.r-scrollSnapType-mfh4gg{scroll-snap-type:x mandatory;}
.r-scrollbarWidth-2eszeu::-webkit-scrollbar{display:none}
.r-scrollbarWidth-2eszeu{scrollbar-width:none;}
.r-textAlign-1ff274t{text-align:right;}
.r-textAlign-fdjqy7{text-align:left;}
.r-textAlign-q4m81j{text-align:center;}
.r-textOverflow-1udbk01{text-overflow:ellipsis;}
.r-textTransform-tsynxw{text-transform:uppercase;}
.r-top-ipm5af{top:0px;}
.r-touchAction-19z077z{touch-action:none;}
.r-touchAction-1otgn73{touch-action:manipulation;}
.r-transform-10v3vxq{transform:scaleX(-1);}
.r-transform-173mzie{transform:scaleY(-1);}
.r-transform-agouwx{transform:translateZ(0);}
.r-transform-bi4vy9{transform:translateY(100%);}
.r-transform-ghxds0{transform:translateY(0%);}
.r-transitionDuration-13tjlyg{transition-duration:0.1s;}
.r-transitionDuration-eafdt9{transition-duration:0.15s;}
.r-transitionProperty-1i6wzkk{-moz-transition-property:opacity;-webkit-transition-property:opacity;transition-property:opacity;}
.r-userSelect-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;}
.r-userSelect-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;}
.r-visibility-11j9u27{visibility:hidden;}
.r-whiteSpace-3s2u2q{white-space:nowrap;}
.r-width-13qz1uu{width:100%;}
.r-width-19wmn03{width:20px;}
.r-width-1acpoxo{width:36px;}
.r-width-1janqcz{width:16px;}
.r-width-b8lwoo{width:100px;}
.r-width-f9dfq4{width:88px;}
.r-wordWrap-1iln25a{word-wrap:normal;}
.r-zIndex-1wyyakw{z-index:-1;}
.r-zIndex-417010{z-index:0;}
.r-zIndex-mhe3cw{z-index:10;}
.r-zIndex-sfbmgh{z-index:9999;}
@-webkit-keyframes r-animation-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
@-webkit-keyframes r-animation-1iq689l{0%{transform:translateY(0%);}100%{transform:translateY(100%);}}
@-webkit-keyframes r-animation-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
@-webkit-keyframes r-animation-imtty0{0%{opacity:0;}100%{opacity:1;}}
@-webkit-keyframes r-animation-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
@-webkit-keyframes r-animation-t2lo5v{0%{opacity:1;}100%{opacity:0;}}
@keyframes r-animation-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
@keyframes r-animation-1iq689l{0%{transform:translateY(0%);}100%{transform:translateY(100%);}}
@keyframes r-animation-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
@keyframes r-animation-imtty0{0%{opacity:0;}100%{opacity:1;}}
@keyframes r-animation-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
@keyframes r-animation-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><style>html,body{margin:0;background:#f3f5fb;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.frame-label{width:390px;margin:18px auto 8px;color:#4b5563;font-size:13px;font-weight:600}</style></head><body><div class="frame-label">RN-web render of OnboardingScreen final step</div><div class="css-view-g5y9jx r-flex-13awgt0 r-pointerEvents-12vffkv"><div class="css-view-g5y9jx r-flex-13awgt0 r-pointerEvents-12vffkv"><div style="width:390px;height:844px;margin:0 auto;border:1px solid #d7dbe7;overflow:hidden;background:#fff"><div class="css-view-g5y9jx r-flex-13awgt0 r-paddingTop-1ur9v65" style="background-color:rgba(249,250,251,1.00)"><div class="css-view-g5y9jx r-alignItems-1awozwy r-flexDirection-18u37iz r-gap-ojf8lh r-justifyContent-1777fci r-marginBottom-zd98yo"><div class="css-view-g5y9jx r-borderRadius-z2wwpe r-height-3da1kt" style="background-color:rgba(229,231,235,1.00);width:8px"></div><div class="css-view-g5y9jx r-borderRadius-z2wwpe r-height-3da1kt" style="background-color:rgba(229,231,235,1.00);width:8px"></div><div class="css-view-g5y9jx r-borderRadius-z2wwpe r-height-3da1kt" style="background-color:rgba(229,231,235,1.00);width:8px"></div><div class="css-view-g5y9jx r-borderRadius-z2wwpe r-height-3da1kt" style="background-color:rgba(59,130,246,1.00);width:20px"></div></div><div class="css-view-g5y9jx r-flex-13awgt0 r-paddingInline-1wci7jc" style="transform:translateX(0px)"><div class="css-view-g5y9jx r-WebkitOverflowScrolling-150rngu r-flexDirection-eqz5dr r-flexGrow-16y2uox r-flexShrink-1wbh5a2 r-overflowX-11yh6sk r-overflowY-1rnoaur r-transform-agouwx r-flex-13awgt0 r-scrollbarWidth-2eszeu"><div class="css-view-g5y9jx r-flexGrow-16y2uox r-justifyContent-1777fci r-paddingBottom-1uwte3a"><div class="css-view-g5y9jx r-alignItems-1awozwy"><div dir="auto" class="css-text-146c3p1 r-fontSize-rfq24y r-marginBottom-1ifxtd0">🤖</div><div dir="auto" class="css-text-146c3p1 r-fontSize-1x35g6 r-fontWeight-b88u0q r-marginBottom-15d164r r-textAlign-q4m81j" style="color:rgba(17,24,39,1.00)">Built for you and your AI</div><div dir="auto" class="css-text-146c3p1 r-fontSize-a023e6 r-lineHeight-hbpseb r-marginBottom-1nxhmzv r-maxWidth-146iojx r-textAlign-q4m81j" style="color:rgba(107,114,128,1.00)">OpenChat is agent-ready from day one.</div><div class="css-view-g5y9jx r-gap-uaa2di r-maxWidth-131bt2l r-width-13qz1uu"><div class="css-view-g5y9jx r-alignItems-1habvwh r-borderRadius-1q9bdsx r-borderWidth-rs99b7 r-flexDirection-18u37iz r-gap-uaa2di r-padding-1slz7xr" style="background-color:rgba(243,244,246,1.00);border-top-color:rgba(229,231,235,1.00);border-right-color:rgba(229,231,235,1.00);border-bottom-color:rgba(229,231,235,1.00);border-left-color:rgba(229,231,235,1.00)"><div dir="auto" class="css-text-146c3p1 r-fontSize-adyw6z r-lineHeight-135wba7">🔑</div><div dir="auto" class="css-text-146c3p1 r-flex-13awgt0 r-fontSize-1b43r93 r-lineHeight-rjixqe" style="color:rgba(107,114,128,1.00)"><span class="css-textHasAncestor-1jxf684" style="font-weight:600;color:rgba(17,24,39,1.00)">Connect an agent.</span> <!-- -->Mint a key in Settings so Claude, Cursor, or any MCP client can read and send messages as you.</div></div><div class="css-view-g5y9jx r-alignItems-1habvwh r-borderRadius-1q9bdsx r-borderWidth-rs99b7 r-flexDirection-18u37iz r-gap-uaa2di r-padding-1slz7xr" style="background-color:rgba(243,244,246,1.00);border-top-color:rgba(229,231,235,1.00);border-right-color:rgba(229,231,235,1.00);border-bottom-color:rgba(229,231,235,1.00);border-left-color:rgba(229,231,235,1.00)"><div dir="auto" class="css-text-146c3p1 r-fontSize-adyw6z r-lineHeight-135wba7">💭</div><div dir="auto" class="css-text-146c3p1 r-flex-13awgt0 r-fontSize-1b43r93 r-lineHeight-rjixqe" style="color:rgba(107,114,128,1.00)"><span class="css-textHasAncestor-1jxf684" style="font-weight:600;color:rgba(17,24,39,1.00)">Keep Thoughts.</span> <!-- -->A private stream for facts, decisions, and reminders — memory your agents can build on.</div></div></div><div aria-label="Start chatting" tabindex="0" class="css-view-g5y9jx r-transitionProperty-1i6wzkk r-userSelect-lrvibr r-cursor-1loqt21 r-touchAction-1otgn73 r-alignItems-1awozwy r-borderRadius-t23y2h r-minWidth-11v9fek r-paddingBlock-1d7mnkm r-paddingInline-1rds9hb" style="background-color:rgba(59,130,246,1.00);margin-top:24px;transition-duration:0s"><div dir="auto" class="css-text-146c3p1 r-color-jwli3a r-fontSize-1inkyih r-fontWeight-b88u0q">Start chatting →</div></div></div></div></div></div></div></div></div></div></body></html>
- Evidence: Expo RN-web export output (local file: /var/folders/04/j5yqtsfs3l527xrkvtxzy60h0000gn/T/no-mistakes-evidence/01KX9CA3ESDXNH969XZQW42BJM/expo-web-export)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 1 issue found → auto-fixed ✅
  • ⚠️ apps/mobile/src/screens/OnboardingScreen.tsx:466 - The new agent-ready step adds two multi-line cards and a CTA inside the existing non-scrollable centered onboarding container. On short native screens or with larger accessibility text, the final 'Start chatting' CTA can be pushed below the viewport, leaving a new user stuck before onboarding completion. Wrap this step, or the shared onboarding content, in a scrollable/safe-area-aware container.

🔧 Fix: Make agent onboarding scrollable
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • Inspected changed files with git diff --name-status 3736c6230565b51031031269f5a88834733c6b05..ba4b17b4078ec484ab3692379691d6d312e3b193 and targeted diffs for apps/mobile/src/screens/OnboardingScreen.tsx, apps/server/src/landing.html, and docs/launch.md.
  • Served apps/server/src/landing.html through a temporary local HTTP server mapping /, /about/icon.png, and /about/qr.svg, then captured landing-page.png with chrome-devtools-axi.
  • Generated a temporary evidence-only RN-web render harness for OnboardingScreen final step, then captured onboarding-agent-ready.png with chrome-devtools-axi.
  • Ran npx expo export --platform web --output-dir /var/folders/04/j5yqtsfs3l527xrkvtxzy60h0000gn/T/no-mistakes-evidence/01KX9CA3ESDXNH969XZQW42BJM/expo-web-export from apps/mobile; initial resolver failures were fixed with no-save installs of locked versions expo-asset@12.0.13 and nanoid@3.3.12, then the export succeeded.
  • Checked changed launch/onboarding files for obvious committed secret patterns with rg -n &#34;sk-[A-Za-z0-9]|BEGIN (RSA|OPENSSH|PRIVATE)|PRIVATE KEY|SECRET|TOKEN|Authorization: Bearer [A-Za-z0-9]&#34; docs/launch.md apps/server/src/landing.html apps/mobile/src/screens/OnboardingScreen.tsx || true; only the documented placeholder oc_your_key_here matched.
  • Removed transient apps/mobile/.expo output and confirmed git status --short was clean.
✅ **Document** - passed

✅ No issues found.

⚠️ **Lint** - 1 warning
  • ⚠️ apps/server/package.json:10 - The configured server lint command cannot run because eslint is referenced by the lint script but is not installed in the workspace dependencies, so targeted ESLint verification for the changed server file could not be completed.
✅ **Push** - passed

✅ No issues found.

tmad4000 and others added 4 commits July 11, 2026 12:54
…nch doc [OpenChat-jmu]

- Onboarding: new final step 'Built for you and your AI' introducing agent
  keys (Settings -> Connect an agent) and the Thoughts stream. Powers native,
  /m, and /d from the shared RN codebase; legacy /legacy client has no
  onboarding flow (documented platform exception).
- Landing: lede now states the full vision (agents + Thoughts + Noos
  identity); Thoughts feature card updated to shipped v1 state.
- docs/launch.md: launch-state doc grounded in shipped code, incl. the finding
  that the landing page at / was never deployed to production.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tmad4000 tmad4000 changed the title Launch slice: agent-ready onboarding + landing vision polish + launch doc [OpenChat-jmu] feat(mobile): add agent-ready launch onboarding Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant