The plan: Check that every "Connect an app" row on the platform — across all four activatable assistants, before and after activation — follows the new two-control design: a badge that shows which app(s) are in play (with a dropdown arrow only when there are 2+ apps), and a separate status button that only handles connect/disconnect, never mixed together.
What we tested: Walked the Connect screen for On-Brand Support, Waitlist + Launch, Retreat Booking, and Workshop Booking — both the "setting it up" screen and the "already running" screen for the two assistants that are live. Opened every badge and every status menu we could safely open without touching a real connection or a live booking assistant someone else was actively testing.
What we found: The core redesign works — rows for a single app (WhatsApp, AI Model) never show an unnecessary dropdown, and rows for multiple apps (Waitlist's WhatsApp + Resend, Storage's Google Sheets/Supabase/MystFlo) do. But we found two real inconsistencies: (1) the "Choose a different AI model" option shows up on the AI Model menu even though there's nothing to switch to yet — it should be hidden, not just grayed out; (2) the "Disconnect" option on the Waitlist assistant's Communication row (which has 2 apps behind it) looks identical to a normal, one-click single-app disconnect — missing the visual warning that it should ask which app first. We also found a likely-fixed bug: the "Switch account" menu item on an active assistant now correctly explains "pause first" instead of just doing it — that looked broken in the plan's notes from two weeks ago, and it isn't broken anymore.
What we fixed: Nothing — this is a read-only QA walk. Findings are flagged below for follow-up, not filed as new issues (that's a team-lead call per this plan's scope).
Readiness call: About 75% proven. The row-shape contract holds up cleanly everywhere we could look. The two real misses are both small, targeted UI fixes. Three things still need a dedicated, single-owner re-run: the multi-app "Disconnect" click-through (stopped short for safety — it risks the account's one shared WhatsApp connection), the narrow-screen (375/768px) layout check (the shared browser window made resizing unreliable), and the Retreat Booking pre/post label check (no Retreat Booking instance is active to compare against).
resize_window
calls to test 375px did not reliably change the shared window's actual rendered
viewport, so the 640px stack-boundary scenario is marked environment-blocked rather than
faked. Two destructive-risk clicks (a live multi-app Disconnect, and pausing a
currently-in-use booking assistant) were deliberately stopped short of completion — see
the relevant scenarios below.
| # | Result |
|---|---|
| 1 | PASS — /explore renders signed-out, no auth redirect |
| 2 | PASS — On-Brand Support: Communication/AI Model/Alerts rows, none carry a caret, no Storage row |
| 3 | PASS — Waitlist + Launch: Communication badge "WhatsApp Business + Resend ▾" WITH caret; Storage badge "Google Sheets ▾" WITH caret |
| 4 | PARTIAL — in-place expansion confirmed, but ONE flat "2 apps" list instead of two headed pick-groups; Gmail visible ("coming soon") though the plan says it should be hidden |
| 5 | PASS — Retreat Booking: TWO rows, not legacy V1 checkmark list |
| 6 | PASS — Workshop Booking: same shape, closes V4 suspicion |
| 7 | BLOCKED — width repeat not reliably executable (shared window) |
Left as the plan's own note marks it: stale, superseded by tmpl-wmkt01-test-plan.md §12.
| # | Result |
|---|---|
| 1 | PASS — real "Connected ⌄" status, Communication caret present |
| 2 | PASS — Storage status menu: plain "Disconnect" (no ellipsis, muted), helper text points to the badge instead |
| 3 | PASS — Storage badge expands into a real radiogroup (MystFlo Storage / Google Sheet / Supabase); did not change selection |
| 4 | PASS — Retreat Booking: TWO rows confirmed |
| 5 | BLOCKED — width repeat not executed |
| # | Result |
|---|---|
| 1 | PASS — no caret on any of the three rows, no Storage row |
| 2 | PASS — AI Model badge does nothing on tap |
| 3 | FAIL — AI Model status menu contains a disabled "Switch account…" item — the plan requires it never appear here (see finding below) |
| 4 | PASS — Workshop Booking: Communication no caret, Storage caret |
| 5 | PASS (by inspection) — same component family as On-Brand Support's Communication row |
| 6 | BLOCKED — width repeat not executed |
AiModelPicker is meant to carry its own distinct, sanctioned AI-model switcher, not the generic account-switcher label even in a disabled state.| # | Result |
|---|---|
| 1 | PASS — identical shape to pre-activation, no V2 boxed cards |
| 2 | PASS — no caret on either single-app row |
| 3 | NOTABLE — "Switch account…" opens a muted "Pause to switch this connection" explainer instead of acting directly. The plan (dated 2026-08-10) says this is confirmed NOT BUILT pending #3120 and expects the item to be plain/always-enabled. What's live today already matches the intended design — likely #3120 shipped since the plan was written |
| 4 | Not directly tested — no broken connection exists to confirm Reconnect independently |
| 5 | BLOCKED — no Active Retreat Booking instance on this account |
| 6 | BLOCKED — width repeat not executed |
Step 1's premise (menu shows Switch account MUTED with an explainer, not acting directly) is already true today per CT-CONNECT-05 step 3 — this contradicts the plan's "expected to fail" framing pending #3120.
NOT ATTEMPTED — SAFETY Steps 2–5 (actually pause/resume the instance) were deliberately skipped: this is one of only two Active instances on the shared account, and it logged a real booking 11 minutes before this scenario ran from the concurrent parallel session. Pausing it mid-flow risked breaking their test.
| # | Result |
|---|---|
| 1–2 | PASS — pre-activation Communication label reads exactly "Communication", NOT the DB's literal "Where guests message you" |
| 3–4 | BLOCKED — no Active Retreat Booking instance exists to compare the post-activation label against; this is the same open item the plan's own team-lead notes flagged as highest priority |
| 5 | PASS — Storage row carries a caret even with one real destination (internal-only exception, task #5, confirmed) |
| # | Result |
|---|---|
| 1 | PASS — badge "WhatsApp Business + Resend ▾" with caret |
| 2 | PARTIAL — functionally correct three-state health, but one flat list not two headed groups; Gmail visible not hidden |
| 3 | PASS — collapses cleanly |
| 4 | FAIL — status button menu reads plain "Disconnect", no ellipsis — visually identical to a normal single-app disconnect with no signal it opens a which-app picker first |
| 5–7 | NOT ATTEMPTED — SAFETY — clicking through risks immediately disconnecting the account's one real, shared WhatsApp Business connection (used by 2 assistants, one mid-flow in the concurrent session) |
Re-checked at execution as instructed: the Connects hub shows all 6 connections ("MystFlo AI", "MystFlo Storage", "WhatsApp Business", "Google Workspace", "Stripe", "Slack") reading Healthy. No warning/critical connection exists right now.
resize_window to 375×800 reported success but did not reliably change the
tab's actual rendered viewport in this shared browser window (screenshot stayed
1456×821 afterward; window.innerWidth/outerWidth read
inconsistent values). Forcing a real resize risked corrupting the concurrent session's
own in-flight responsive layout. Needs a dedicated, non-shared browser window.
AiModelPicker's own sanctioned control (CT-CONNECT-04 step 3).Full scenario detail, Data In/Data Out, and environment context: docs/testing/click-through/connect-tab-consistency-findings-2026-08-27.md.