Skip to content

feat(badges): NOT_SO_SHHHH 'Loud Mouth' badge icon + invite mapping#2227

Open
0xkkonrad wants to merge 1 commit into
devfrom
feat/not-so-shhhh-badge
Open

feat(badges): NOT_SO_SHHHH 'Loud Mouth' badge icon + invite mapping#2227
0xkkonrad wants to merge 1 commit into
devfrom
feat/not-so-shhhh-badge

Conversation

@0xkkonrad

Copy link
Copy Markdown
Contributor

What

FE side of the NOT_SO_SHHHH ("Loud Mouth") link badge — the inverse of SHHHHH, for finluencers who loudly promote the Peanut card.

  • public/badges/not_so_shhhh.svg — sticker-style asset (flat red shouting lips, kawaii eyes, sound lines), generated via the badge-draft / badges-recraft pipeline to match house style.
  • badge.utils.tsBADGES entry (icon path + profile copy: "You couldn't keep it quiet — and you got paid for it.").
  • campaign-maps.tsnotsoshhhNOT_SO_SHHHH in INVITE_CODE_TO_CAMPAIGN_MAP.

campaign-maps.test.ts (guards every map value exists in BADGES) + badge.utils.test.ts pass.

Cross-repo

Paired with peanut-api-ts#1023 (backend registry + award whitelists). Deploy order: the api PR must deploy before the badge is grantable; this one before the icon renders (otherwise it falls back to Peanutman).

🤖 Generated with Claude Code

FE side of the link-granted Loud Mouth badge (inverse of SHHHHH): the sticker
SVG, its BADGES entry (icon path + profile copy), and the notsoshhh invite-code
→ NOT_SO_SHHHH campaign mapping. Backend wiring is the paired peanut-api-ts PR.
@vercel

vercel Bot commented Jun 15, 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 16, 2026 12:03am

Request Review

@coderabbitai

coderabbitai Bot commented Jun 15, 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: efe9152d-ccbe-45ac-aa80-d0cc72bbee74

📥 Commits

Reviewing files that changed from the base of the PR and between 5573129 and 95cc470.

⛔ Files ignored due to path filters (1)
  • public/badges/not_so_shhhh.svg is excluded by !**/*.svg
📒 Files selected for processing (2)
  • src/components/Badges/badge.utils.ts
  • src/components/Invites/campaign-maps.ts

Walkthrough

Adds a new NOT_SO_SHHHH entry to the BADGES record in badge.utils.ts with an SVG asset path and description, and registers the invite code notsoshhh mapped to the NOT_SO_SHHHH campaign tag in INVITE_CODE_TO_CAMPAIGN_MAP.

Changes

NOT_SO_SHHHH Badge and Invite Code Registration

Layer / File(s) Summary
Badge catalog entry and invite code mapping
src/components/Badges/badge.utils.ts, src/components/Invites/campaign-maps.ts
Adds the NOT_SO_SHHHH entry to the BADGES record pointing to /badges/not_so_shhhh.svg with a description, and maps invite code notsoshhh to NOT_SO_SHHHH in INVITE_CODE_TO_CAMPAIGN_MAP.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • peanutprotocol/peanut-ui#2024: Adds a SUPPORT_SURVIVOR badge entry to badge.utils.ts following the same pattern as this PR's NOT_SO_SHHHH addition.
  • peanutprotocol/peanut-ui#2033: Adds the survivorSUPPORT_SURVIVOR mapping to INVITE_CODE_TO_CAMPAIGN_MAP, directly parallel to this PR's notsoshhhNOT_SO_SHHHH mapping.
  • peanutprotocol/peanut-ui#2162: Extends the BADGES catalog in badge.utils.ts with new badge code entries in the same manner as this PR.

Suggested reviewers

  • Hugo0
  • jjramirezn
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main changes: adding a new badge entry and its invite code mapping.
Description check ✅ Passed The description comprehensively covers the changes, explains the badge's purpose, lists the modified files, and mentions test coverage and deployment considerations.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions

Copy link
Copy Markdown
Contributor

Code-analysis diff

Painscore total: 5793.76 → 5794.21 (+0.45)
Findings: 0 net (+2 new, -2 resolved)

🆕 New findings (2)

  • high complexity — src/components/Badges/badge.utils.ts — CC 10, MI 49.12, SLOC 123
  • medium hotspot — src/components/Badges/badge.utils.ts — 21 commits, +271/-95 lines since 6 months ago

✅ Resolved (2)

  • src/components/Badges/badge.utils.ts — CC 10, MI 49.41, SLOC 120
  • src/app/(mobile-ui)/withdraw/crypto/page.tsx — 21 commits, +369/-254 lines since 6 months ago

@github-actions

Copy link
Copy Markdown
Contributor

🧪 UI test report — ✅ all green

Suites

  • unit: 1433 ran, 0 failed, 0 skipped, 20.1s

📊 Coverage (unit)

metric %
statements 51.4%
branches 33.6%
functions 39.4%
lines 51.4%
⏱ 10 slowest test cases
time test
0.3s src/app/actions/__tests__/api-headers-extended.test.ts › should not include apiKey in updateUserById body
0.3s src/app/actions/__tests__/api-headers.test.ts › should include Content-Type in updateUserById
0.2s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › every stamp stays within canvas at any count
0.2s 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 › Perk claimed shows shake class + go home button
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle maximum length (17 digits) US account
0.1s src/components/Request/__tests__/request-states.test.tsx › API failure shows error message and toast
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle too long for US account
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid US account with spaces
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle minimum length (6 digits) US account
📍 Inline annotations are in the **Unit test report** check above. Coverage artifact: `coverage-unit`. Generated by `.github/workflows/tests.yml`.

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