Skip to content

Settings: redesign Profile, Account details and Notifications - #2664

Merged
mul53 merged 1 commit into
qafrom
claude/settings-profile-redesign
Oct 7, 2026
Merged

mul53 merged 1 commit into
qafrom
claude/settings-profile-redesign

Conversation

@mul53

@mul53 mul53 commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

What changed

Profile (settings/index.tsx)

  • Avatar with an edit badge, plus the name and email.
  • Chips for "{tier} member" and "Verified". Verified shows when the card status kycStatus is approved.
  • Rewards tile (points) and Refer & earn tile (referrerUsd from the referral summary).
  • Account group: Account details, and Card. Card shows "{Cash|Credit|Smart} mode" when the card can switch spend modes. It goes to CARD_INFO for cardholders and to activate or onboarding otherwise.
  • Security & alerts group: Security ("Add 2FA" when TOTP is off, re-checked when the screen regains focus) and Notifications (On/Off, apps only).
  • Support group: Help & support, Legal & privacy.
  • Sign out button, then the version and build line.
  • Statements is intentionally left out.
  • The old DesktopSettings component is removed. It was never rendered.

Edit avatar sheet: eight colour swatches behind the initial. The choice is saved per account on the device (MMKV), because the backend has no avatar storage. The library and camera options are left out until there is somewhere to upload a photo.

Account details (settings/account.tsx)

  • Username with a copy button. Hidden for generated user_… handles.
  • Email, which opens the existing email-change screen.
  • Identity verification: Verified, In review, or Not verified.
  • Wallet address with copy.
  • Delete account opens a new sheet that replaces the old modal:
    • Balance: blocks while $1 or more is left (portfolio totalAssets, card balance included). "Withdraw" opens All assets.
    • Card payments: blocks while card transactions are pending.
    • Card cancellation: stated, for cardholders.
    • Confirmation: the button is enabled only after typing DELETE.
    • Checks that can't load show a warning instead of blocking. A failing balance read must not stop someone deleting their account.

Notifications (settings/notifications.tsx, new route)

  • The push-permission card works today: it asks if the user has never been asked, otherwise it opens the OS settings. This logic moved here from the old Settings row.
  • The category switches use GET/PATCH /accounts/v1/users/notification-preferences, with an optimistic update and rollback on failure. That endpoint does not exist yet. The switches stay hidden while it returns 404, so for now this screen shows the permission card and the email footnote.

Things reviewers should know

  • Deletion copy is accurate, not the design's. DELETE /auths/delete-account closes the account immediately, and later sign-ins get a 403. The sheet therefore says deletion is immediate and permanent. Setting DELETION_GRACE_PERIOD_DAYS in components/Profile/deleteAccount.ts switches to the 14-day copy once the backend supports it.
  • Notification preferences need backend work. It's feasible: every push goes through push.service.ts. The open questions:
    • No sender exists yet for "Earn: weekly yield summary" or for money leaving the account.
    • Whether "Product news & offers" should be tied to the existing marketingConsent field.
    • 3DS and account pushes must always be delivered.
  • Found in the backend, not addressed here:
    • delete-account only deletes card rows in our database. It doesn't cancel the card with Rain or Wirex.
    • Deleted accounts keep their push tokens, so they keep receiving pushes.
  • The sheets reuse the card screen's CardBottomSheet: Gorhom on native, a dialog on web, and a modal on desktop.

Testing

  • tsc: no new errors. The 9 errors it reports already exist on qa.
  • ESLint and Prettier are clean on all touched files.
  • Jest: new tests for the delete-account checks and copy (deleteAccount.test.ts) and the avatar helpers (avatarColors.test.ts). The existing Security tests still pass. 25 tests pass in total.
  • Not yet checked on a device. To check:
    • Sheet open/close on iOS and web.
    • The keyboard with the DELETE field.
    • "Add 2FA" clearing after enabling 2FA.
    • The Card row's destination with and without a card.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Rebuilds Settings around the new Profile design: avatar with an editable
colour, tier and verification chips, Rewards and Refer & earn tiles, and
Account / Security & alerts / Support groups with live status (card spend
mode, "Add 2FA", push on/off). Statements are left out of this release.

Account details gains Username, Email and Identity verification rows, keeps
the wallet address, and replaces the delete modal with a sheet that checks
the balance is withdrawn and no card payments are pending, then asks for
DELETE. The copy says deletion is immediate: the backend closes the account
on the spot, so the design's 14-day window is behind
DELETION_GRACE_PERIOD_DAYS until it exists.

Adds a Notifications screen with the push-permission card. Per-category
switches call /accounts/v1/users/notification-preferences and stay hidden
while that endpoint 404s, since the backend has no preferences yet.

The avatar colour is kept on the device per account; there is no avatar
storage on the backend.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 7, 2026

Copy link
Copy Markdown

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

2 Skipped Deployments
Project Deployment Actions Updated
solid-app Ignored Ignored Oct 7, 2026 10:45pm UTC
solid-app-staging Ignored Ignored Oct 7, 2026 10:45pm UTC

Request Review

@mul53
mul53 merged commit 5682617 into qa Oct 7, 2026
5 checks passed
@mul53
mul53 deleted the claude/settings-profile-redesign branch October 7, 2026 22:49
@claude

claude Bot commented Oct 7, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.


🤖 Generated with Claude Code

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