Skip to content

feat(card): 'Tweet to appeal' CTA on the waitlist cooldown screen#2301

Closed
Hugo0 wants to merge 1 commit into
mainfrom
hotfix/waitlist-appeal-cta
Closed

feat(card): 'Tweet to appeal' CTA on the waitlist cooldown screen#2301
Hugo0 wants to merge 1 commit into
mainfrom
hotfix/waitlist-appeal-cta

Conversation

@Hugo0

@Hugo0 Hugo0 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

What

The waitlist-joined cooldown screen (CardWaitlistJoinedScreen) only had a "Back to home" button — a dead end. Per Konrad/Hugo it should let users beg to jump the queue.

  • Primary CTA: "Tweet to appeal" — reuses the rejection screen's pickRejectionCaption() and fires the X intent tagging @joinpeanut. Text-only (no asset to capture on the friendly cooldown screen — same path the rejection screen falls back to on desktop).
  • Secondary: "Back to home" (demoted to variant="stroke").

Notes

  • Hotfix off main (launch is live). dev has an unreleased BadgesRow addition on this same file, so the back-merge will need to keep both BadgesRow + this CTA — flagged.
  • No asset/image share here by design; if you want the full image-share (capture + native share) instead of a text tweet, say so and I'll wire it.

The waitlist-joined cooldown screen was a dead end (only 'Back to home'). Add a primary 'Tweet to appeal' (text X-intent tagging @joinpeanut, reusing the rejection screen's caption picker) so users can beg to jump the queue; 'Back to home' demoted to secondary. Launch-day polish (Konrad/Hugo).
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
peanut-wallet Ready Ready Preview, Comment Jun 29, 2026 1:03pm

Request Review

@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7ccfc5ba-c475-40fd-9bc4-87d17bb8b66f

📥 Commits

Reviewing files that changed from the base of the PR and between 91be7b6 and 12c0d19.

📒 Files selected for processing (1)
  • src/components/Card/CardWaitlistJoinedScreen.tsx

Walkthrough

CardWaitlistJoinedScreen gains a handleAppeal function that calls pickRejectionCaption(), emits a CARD_SHARE_ASSET_SHARED posthog event, and opens a Twitter intent URL. The CTA area is updated to show a "Tweet to appeal" button alongside the existing "Back to home" navigation.

Tweet-to-appeal on CardWaitlistJoinedScreen

Layer / File(s) Summary
handleAppeal handler and CTA wiring
src/components/Card/CardWaitlistJoinedScreen.tsx
Imports pickRejectionCaption; adds handleAppeal that picks a caption, records a posthog event with source: 'waitlist-cooldown' and method: 'twitter-intent', and opens the Twitter intent URL in a new tab. CTA area is reworked to include a "Tweet to appeal" button calling handleAppeal and a "Back to home" button navigating to /home.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • peanutprotocol/peanut-ui#2274: Implements the same pickRejectionCaption + Twitter intent + posthog share event pattern on the card rejection screen, which this PR mirrors for the waitlist joined screen.
  • peanutprotocol/peanut-ui#2286: Updates the REJECTION_CAPTIONS pool consumed by pickRejectionCaption(), directly affecting the tweet text generated by the new handler.

Suggested labels

enhancement

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding a Tweet-to-appeal CTA to the waitlist cooldown screen.
Description check ✅ Passed The description matches the changeset and explains the new CTA, the tweet intent flow, and the secondary home button.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot added the enhancement New feature or request label Jun 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Code-analysis diff

Painscore total: 5846.74 → 5847.48 (+0.74)
Findings: 0 net (+1 new, -1 resolved)

🆕 New findings (1)

  • medium high-mdd — src/components/Card/CardWaitlistJoinedScreen.tsx:30 — CardWaitlistJoinedScreen: MDD 29.7 (uses across many lines from declarations)

✅ Resolved (1)

  • src/components/Card/CardWaitlistJoinedScreen.tsx:29 — CardWaitlistJoinedScreen: MDD 32.0 (uses across many lines from declarations)

📈 Painscore deltas (top movers)

File Before After Δ
src/components/Card/CardWaitlistJoinedScreen.tsx 5.2 6.0 +0.7

@github-actions

Copy link
Copy Markdown
Contributor

🧪 UI test report — ✅ all green

Suites

  • unit: 1601 ran, 0 failed, 0 skipped, 25.4s

📊 Coverage (unit)

metric %
statements 54.5%
branches 37.0%
functions 42.1%
lines 54.4%
⏱ 10 slowest test cases
time test
3.6s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › never places two stickers in heavy overlap (broad seed sweep)
0.5s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › every sticker stays within canvas at any count
0.3s src/app/actions/__tests__/api-headers.test.ts › should include Content-Type in updateUserById
0.3s src/app/actions/__tests__/api-headers-extended.test.ts › should not include apiKey in updateUserById body
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid 9-digit US account
0.1s src/app/(mobile-ui)/qr-pay/__tests__/qr-pay-states.test.tsx › Manteca PIX form ready shows merchant card + amount input + pay button
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle invalid ETH address (missing 0x prefix)
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid ETH address
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid ETH address with surrounding spaces
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid US account with spaces
📍 Inline annotations are in the **Unit test report** check above. Coverage artifact: `coverage-unit`. Generated by `.github/workflows/tests.yml`.

@Hugo0

Hugo0 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Superseded: the waitlist cooldown screen is being removed (hotfix/waitlist-end-on-rejection). The rejection screen is now terminal and keeps the appeal asset + Tweet-to-appeal, so a separate cooldown CTA is moot.

@Hugo0 Hugo0 closed this Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant