Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
7d295fc
feat(card): redesign launch share asset as a sticker collage
0xkkonrad Jun 23, 2026
abc0faf
fix(card): match share-asset keep-outs to rendered hero + pill
0xkkonrad Jun 23, 2026
8cd3cb3
feat(card): Berghain-style "not tonight" rejection on the waitlist path
0xkkonrad Jun 23, 2026
444f480
chore(card): silence styled-jsx eslint error on rejection asset
0xkkonrad Jun 23, 2026
3728bb1
fix(card): don't drop the appeal silently when capture/share fails
0xkkonrad Jun 23, 2026
57ab76f
feat(card): force-directed sticker layout so badges stop overlapping
0xkkonrad Jun 24, 2026
1aaf95e
fix(card): restore keep-out fixes on force-directed layout + kill cor…
0xkkonrad Jun 24, 2026
57b13c4
feat(card): "hide username" anti-dox toggle on the win share asset
0xkkonrad Jun 24, 2026
693d26f
fix(card): hide-username toggle now restores the pill instantly
0xkkonrad Jun 24, 2026
1e295d6
feat(card): rotate the win-share caption from a 16-line pool
0xkkonrad Jun 24, 2026
49e51e8
chore(card): straight apostrophes in win captions for consistency
0xkkonrad Jun 24, 2026
337a5e7
fix(card): bake @joinpeanut handle into rejection asset image
0xkkonrad Jun 24, 2026
2c1bb95
chore(card): address CodeRabbit nitpicks
0xkkonrad Jun 24, 2026
aff35ea
chore: drop accidentally-committed scratch state log (local/ not giti…
0xkkonrad Jun 24, 2026
e2332cb
feat(card): appeal also joins the waitlist (manual-grant queue, no au…
Hugo0 Jun 24, 2026
cc3995a
feat(card): tag @joinpeanut in every win caption; drop baked-in image…
0xkkonrad Jun 25, 2026
eaabeef
feat(withdraw): re-enable cross-chain stablecoin withdraw with honest…
kushagrasarathe Jun 25, 2026
6d6d265
fix: minor ui bug fixes
kushagrasarathe Jun 25, 2026
84b6cb3
Merge pull request #2281 from peanutprotocol/fix/ui-bugs
kushagrasarathe Jun 25, 2026
9c88ef3
fix(card): show a friendly message when card reveal fails
abalinda Jun 25, 2026
155e8c6
fix(card): bound reveal-failure telemetry to keep raw upstream text o…
abalinda Jun 25, 2026
da033f4
Merge pull request #2282 from peanutprotocol/fix/card-reveal-friendly…
jjramirezn Jun 25, 2026
a26296c
feat(withdraw): keep all destinations, communicate fees honestly (not…
kushagrasarathe Jun 25, 2026
059af2e
docs(config): fix stale disableXchainWithdraw comment
kushagrasarathe Jun 26, 2026
2fd8728
fix(withdraw): sum the rounded fee in 'You pay' so displayed numbers …
kushagrasarathe Jun 26, 2026
0cd7cad
fix(withdraw): restrict token selector to Rhino-supported chains/tokens
kushagrasarathe Jun 26, 2026
aa4e20b
fix(chains): use bundled Arbitrum icon (arbiscan URL blocks hotlinking)
kushagrasarathe Jun 26, 2026
f9b49ba
fix(rhino): send Rhino API chain names for Polygon + BNB
kushagrasarathe Jun 26, 2026
6f52af7
fix(withdraw): show loading state for quote-dependent rows while calc…
kushagrasarathe Jun 26, 2026
9ae4197
fix(withdraw): use InfoCard (info variant) for the high-fee heads-up
kushagrasarathe Jun 26, 2026
32638b4
fix(withdraw): honest 'You pay' for bridge path + insufficient-balanc…
kushagrasarathe Jun 26, 2026
e296f5a
fix(withdraw): reword heads-up to 'Note', drop space between $ and am…
kushagrasarathe Jun 26, 2026
f31912d
fix(withdraw): dedupe same-symbol tokens + drop empty Gnosis from sel…
kushagrasarathe Jun 26, 2026
757b2e8
feat(withdraw): add Gnosis USDC/USDT token metadata, re-enable Gnosis
kushagrasarathe Jun 26, 2026
dd0d747
fix(receipt): bake cross-chain network fee into the displayed withdra…
kushagrasarathe Jun 26, 2026
6866c4d
Merge pull request #2280 from peanutprotocol/fix/xchain-withdraw-hone…
jjramirezn Jun 26, 2026
5afc214
feat(card): tweak win + rejection share captions
0xkkonrad Jun 26, 2026
23faa0b
fix(badges): 2x the badge image in the detail modal
0xkkonrad Jun 26, 2026
40252a9
feat(card): home card-launch CTA — fat "/shhhhh"-tone splash on launc…
Hugo0 Jun 27, 2026
ad55bb6
feat(dev): /dev/home-ctas preview to review every home CTA on demand
Hugo0 Jun 27, 2026
57875be
feat(badges): make the unlock-drawer badge tap open the detail modal
0xkkonrad Jun 27, 2026
523b046
feat(badges): non-intrusive badge-earn toast on /home (TASK-19791)
Hugo0 Jun 29, 2026
13d0c80
feat(badges): add Psyops Division badge art + invite mapping (#2275)
0xkkonrad Jun 29, 2026
2c7456c
feat(badges): badge-earn toast tests + exclude BETA_TESTER (TASK-19791)
Hugo0 Jun 29, 2026
267caf0
fix(badges): make the earn toast fire exactly once (TASK-19791 review…
Hugo0 Jun 29, 2026
2704bc6
Merge origin/dev into hotfix/badge-preview-2x — resolve campaign-maps…
Hugo0 Jun 29, 2026
a45f687
Merge pull request #2292 from peanutprotocol/hotfix/badge-preview-2x
Hugo0 Jun 29, 2026
1826b18
fix(card): address CodeRabbit on launch CTA
Hugo0 Jun 29, 2026
62cb83a
Merge pull request #2295 from peanutprotocol/feat/card-launch-home-cta
Hugo0 Jun 29, 2026
adf565a
Merge pull request #2274 from peanutprotocol/feat/card-share-sticker-…
Hugo0 Jun 29, 2026
dbbf6fc
Merge pull request #2296 from peanutprotocol/feat/card-launch-cta-debug
Hugo0 Jun 29, 2026
99d6c81
feat(card): launch-day home-CTA cleanup
Hugo0 Jun 29, 2026
aa5303a
feat(shhhhh): door routes to /card for the Berghain moment; inline wa…
Hugo0 Jun 29, 2026
fb0f641
feat(shhhhh): make the 'on the waitlist' pill tap through to /card
Hugo0 Jun 29, 2026
c680a88
fix(card): drop the sparkle decoration from the launch banner
Hugo0 Jun 29, 2026
f903a54
fix(card): add breathing room below the launch banner (shadow was cro…
Hugo0 Jun 29, 2026
19d13de
fix(card): drop the shhhhh eyebrow from the launch banner
Hugo0 Jun 29, 2026
524ac7a
feat(card): delay-gate the in-app card launch CTA behind disableCardL…
Hugo0 Jun 29, 2026
de2696c
feat(card): re-enable in-app card CTA — 'shhh' copy, route to /shhhhh…
Hugo0 Jun 29, 2026
efbb2bd
fix(shhhhh): add mobile bottom padding under hero card
Hugo0 Jun 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions public/badges/founding_pioneer.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/badges/peanut-pioneer.png
Binary file not shown.
17 changes: 17 additions & 0 deletions public/badges/psyops_division.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 13 additions & 5 deletions src/app/(mobile-ui)/card/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { pollUntilApplyAdvances, pollUntilReady } from '@/components/Card/cardAp
import AddCardEntryScreen from '@/components/Card/AddCardEntryScreen'
import ApplicationStatusScreen from '@/components/Card/ApplicationStatusScreen'
import CardTermsScreen from '@/components/Card/CardTermsScreen'
import CardWaitlistScreen from '@/components/Card/CardWaitlistScreen'
import CardRejectionScreen from '@/components/Card/CardRejectionScreen'
import CardWaitlistJoinedScreen from '@/components/Card/CardWaitlistJoinedScreen'
import BadgeSkipCelebration from '@/components/Card/BadgeSkipCelebration'
import CardEligibilityCheckScreen from '@/components/Card/CardEligibilityCheckScreen'
Expand Down Expand Up @@ -471,13 +471,21 @@ const CardPage: FC = () => {
)
case 'waitlist': {
// Joined vs not-joined are two distinct screens — keeps each
// tight to its own purpose (let-down + CTA vs confirmation +
// exit). The skip-badge gallery was dropped per design: the
// not-joined view is a conversion moment, not a hunt prompt.
// tight to its own purpose. Not-joined is the Berghain-style
// "not tonight" rejection: a shareable door let-down (tags
// @joinpeanut) that doubles as the waitlist-join CTA. Once
// they join, the state machine flips to the friendly
// <CardWaitlistJoinedScreen /> cooldown.
if (cardInfo!.waitlistJoinedAt) {
return <CardWaitlistJoinedScreen onPrev={onBack} />
}
return <CardWaitlistScreen cardInfo={cardInfo!} onPrev={onBack} onJoined={refetchCardInfo} />
return (
<CardRejectionScreen
username={user?.user?.username ?? undefined}
onPrev={onBack}
onJoined={refetchCardInfo}
/>
)
}
case 'waitlist-skip-celebration': {
// Pick the freshest skip badge for the celebration headline.
Expand Down
Loading
Loading