diff --git a/apps/mobile/app/(app)/pairing.tsx b/apps/mobile/app/(app)/pairing.tsx index 43e402f..76a38aa 100755 --- a/apps/mobile/app/(app)/pairing.tsx +++ b/apps/mobile/app/(app)/pairing.tsx @@ -30,6 +30,7 @@ import { getPendingInviteCode, clearPendingInviteCode } from "../../src/lib/pend import { checkClipboardForInviteCode } from "../../src/lib/clipboardInviteOffer"; import { ApiError } from "../../src/lib/apiClient"; import { hasSeenPairedUnlock } from "../../src/lib/pairedUnlockSeen"; +import { PAIRING_PRIVACY_SUMMARY } from "../../src/lib/pairingPrivacyCopy"; export default function PairingScreen() { const { fetchCouple, fetchUser, couple, partner, sealedCount, user, isLoading: isAuthLoading } = useAuthStore(); @@ -536,7 +537,7 @@ export default function PairingScreen() { - Answer privately. Compare your shared discoveries together. + {PAIRING_PRIVACY_SUMMARY} diff --git a/apps/mobile/src/__tests__/lib/pairingPrivacyCopy.test.ts b/apps/mobile/src/__tests__/lib/pairingPrivacyCopy.test.ts new file mode 100644 index 0000000..8f11346 --- /dev/null +++ b/apps/mobile/src/__tests__/lib/pairingPrivacyCopy.test.ts @@ -0,0 +1,8 @@ +import { PAIRING_PRIVACY_SUMMARY } from "../../lib/pairingPrivacyCopy"; + +describe("PAIRING_PRIVACY_SUMMARY", () => { + it("explains what each response style reveals before a user answers", () => { + expect(PAIRING_PRIVACY_SUMMARY).toContain("Vote-style answers reveal shared outcomes"); + expect(PAIRING_PRIVACY_SUMMARY).toContain("Text, audio, photo, and who-likely responses are shown after you both answer"); + }); +}); diff --git a/apps/mobile/src/lib/pairingPrivacyCopy.ts b/apps/mobile/src/lib/pairingPrivacyCopy.ts new file mode 100644 index 0000000..3525f5a --- /dev/null +++ b/apps/mobile/src/lib/pairingPrivacyCopy.ts @@ -0,0 +1 @@ +export const PAIRING_PRIVACY_SUMMARY = "Vote-style answers reveal shared outcomes. Text, audio, photo, and who-likely responses are shown after you both answer."; diff --git a/apps/web/app/join/[code]/JoinClient.test.ts b/apps/web/app/join/[code]/JoinClient.test.ts index aa2e0ae..8066730 100644 --- a/apps/web/app/join/[code]/JoinClient.test.ts +++ b/apps/web/app/join/[code]/JoinClient.test.ts @@ -73,11 +73,12 @@ describe('/join/[code] JoinClient', () => { expect(source).not.toContain('Neither of you sees the other’s individual answers.') }) - it('marks the invite-code surface out of PostHog DOM capture and replay', async () => { + it('uses PostHog-recognized selectors to exclude the invite-code DOM from capture and replay', async () => { const source = await readFile(componentPath, 'utf8') - expect(source).toContain('data-ph-no-capture') - expect(source).toContain('data-ph-mask') + expect(source).toContain('ph-no-capture ph-mask') + expect(source).not.toContain('data-ph-no-capture') + expect(source).not.toContain('data-ph-mask') }) it('shows a clear fallback message for a malformed invite code', async () => { diff --git a/apps/web/app/join/[code]/JoinClient.tsx b/apps/web/app/join/[code]/JoinClient.tsx index 734f3bb..18a015a 100644 --- a/apps/web/app/join/[code]/JoinClient.tsx +++ b/apps/web/app/join/[code]/JoinClient.tsx @@ -127,7 +127,7 @@ export function JoinClient({ code }: { code: string }) { : 'Join to compare answers together. Vote-style questions reveal shared outcomes; open text, audio, photo, and who-likely responses can be visible to you both after you have each answered.' return ( - + @@ -150,7 +150,7 @@ export function JoinClient({ code }: { code: string }) { You've been invited to compare answers {desktopCopy} - + Your invite code
{desktopCopy}