Peanut wallet - #1529
Peanut wallet#1529
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Walkthroughpackage.json updated with dependency version bumps: next from 15.3.1 to 15.3.6, react from ^19.1.0 to ^19.2.1, and react-dom from ^19.1.0 to ^19.2.1. No functional or API changes detected. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes
Pre-merge checks and finishing touches❌ Failed checks (2 warnings)
✅ Passed checks (1 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (1)
package.json(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: jjramirezn
Repo: peanutprotocol/peanut-ui PR: 827
File: src/components/Claim/Link/Initial.view.tsx:120-126
Timestamp: 2025-04-30T21:31:27.790Z
Learning: The `sendLinksApi.claim` function in the Peanut Protocol UI accepts both username and wallet address as the first parameter.
Learnt from: jjramirezn
Repo: peanutprotocol/peanut-ui PR: 919
File: src/components/Withdraw/views/Initial.withdraw.view.tsx:87-87
Timestamp: 2025-06-18T19:56:55.443Z
Learning: In withdraw flows for Peanut Wallet, the PeanutActionDetailsCard should always display "USDC" as the token symbol because it shows the amount being withdrawn from the Peanut Wallet (which holds USDC), regardless of the destination token/chain selected by the user. The TokenSelector is used for choosing the withdrawal destination, not the source display.
Learnt from: jjramirezn
Repo: peanutprotocol/peanut-ui PR: 669
File: src/lib/validation/recipient.ts:21-56
Timestamp: 2025-02-17T14:07:49.883Z
Learning: In the peanut-ui repository, wrapping switch case blocks in braces to comply with linter rules and avoid variable leakage is considered a non-blocking style improvement.
Learnt from: Zishan-7
Repo: peanutprotocol/peanut-ui PR: 1089
File: src/components/LandingPage/noFees.tsx:282-285
Timestamp: 2025-08-14T12:46:10.706Z
Learning: In the peanutprotocol/peanut-ui project, loading states are implemented only after they have been properly designed by the design team to ensure consistency across the application.
Learnt from: Zishan-7
Repo: peanutprotocol/peanut-ui PR: 1094
File: src/components/AddWithdraw/DynamicBankAccountForm.tsx:279-279
Timestamp: 2025-08-14T08:02:26.705Z
Learning: For hotfixes in the peanut-ui codebase, prefer generic error messages over specific validation error details until the copy can be reviewed with the team, even when the validation functions return detailed error messages.
Learnt from: jjramirezn
Repo: peanutprotocol/peanut-ui PR: 551
File: src/components/Request/Create/Views/Initial.view.tsx:151-156
Timestamp: 2024-12-02T17:19:18.532Z
Learning: In the `InitialView` component at `src/components/Request/Create/Views/Initial.view.tsx`, when setting the default chain and token in the `useEffect` triggered by `isPeanutWallet`, it's acceptable to omit the setters from the dependency array and not include additional error handling for invalid defaults.
Learnt from: Hugo0
Repo: peanutprotocol/peanut-ui PR: 942
File: src/components/AddMoney/consts/index.ts:2151-2162
Timestamp: 2025-06-30T10:44:08.048Z
Learning: Hugo0 often agrees with refactoring suggestions but defers implementation due to time constraints, preferring to track improvements as follow-up issues when they're part of larger architectural changes.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Deploy-Preview
| "lottie-react": "^2.4.0", | ||
| "multicoin-address-validator": "^0.5.22", | ||
| "next": "15.3.1", | ||
| "next": "15.3.6", |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
cat -n package.json | sed -n '65,115p'Repository: peanutprotocol/peanut-ui
Length of output: 2211
🌐 Web query:
@types/react @types/react-dom React 19 latest versions npm
💡 Result:
As of today (Dec 4, 2025):
- react (npm "latest" tag): 19.1.1. [1]
- React 19.2 (release announced Oct 1, 2025) — available details on the React site. [2]
- @types/react: 19.2.3. [3]
- @types/react-dom: 19.2.3. [4]
Sources:
[1] npm react package (versions/tags).
[2] React 19.2 release post — react.dev (Oct 1, 2025).
[3] @types/react releases (npm / ReleaseAlert).
[4] @types/react-dom releases (npm / ReleaseAlert).
Update TypeScript type definitions to match React 19.2.1 runtime version.
The runtime dependencies are being upgraded to React 19.2.1 and react-dom 19.2.1, but the type definitions in devDependencies (lines 109–111) remain pinned to version 18 (@types/react@^18.3.12 and @types/react-dom@^18.3.1). This mismatch will cause TypeScript compilation errors and type checking failures throughout the codebase.
Update the type definitions to @types/react@^19.2.3 and @types/react-dom@^19.2.3:
- "@types/react": "^18.3.12",
- "@types/react-csv": "^1.1.10",
- "@types/react-dom": "^18.3.1",
+ "@types/react": "^19.2.3",
+ "@types/react-csv": "^1.1.10",
+ "@types/react-dom": "^19.2.3",Also applies to: 71-71, 73-73
🤖 Prompt for AI Agents
In package.json around lines 69, 71 and 73 (and the devDependencies block around
lines ~109–111), the runtime React/react-dom versions were upgraded to 19.2.1
but the TypeScript type packages remain pinned to @types/react@^18.x and
@types/react-dom@^18.x; update those devDependencies to @types/react@^19.2.3 and
@types/react-dom@^19.2.3 so the type definitions match the React 19.2.1 runtime
and avoid TypeScript type errors.
…error Decouples the Initials group from peanut-api-ts#1529. Until that ships the API rejects `letter.*` at the schema pattern, and the picker's save path turned that 400 into a red "could not save your avatar" toast plus a tile that snapped back — on the most prominent group in the drawer, replacing a button that worked. A rejected letter is now mirrored to localStorage instead, per account, and read back in preference to the server key. Any save the server DOES accept clears the mirror, so the two can never disagree about which pick came last, and the day #1529 deploys a letter write starts succeeding and promotes itself to the durable copy with no further change here. Letters only, deliberately. Basics and badge avatars are validated server-side against the user's own pool, which is what stops a badge avatar being worn without the badge; a device-local fallback there would hand that art to anyone who can edit localStorage. Letters unlock for everyone, so there is nothing to enforce and nothing to bypass — and a rejected sticker still reports as before. useAvatarKey takes the server key as an argument rather than reading it. There is no single source to read: useHomeFlow takes the user from the redux store while the profile surfaces take it from authContext. The first cut read authContext internally and returned null on the home screen, where redux holds the pick; useHomeFlow's own test caught it and now pins it. The mirror is presentation-only and degrades to nothing — safe-storage returns null wherever localStorage is blocked, and the avatar falls back to the username initial exactly as it does today.
No description provided.