Skip to content

chore: back-merge main → dev (2026-08-09) - #2652

Merged
Hugo0 merged 6 commits into
devfrom
chore/backmerge-main-into-dev-20260809
Aug 9, 2026
Merged

chore: back-merge main → dev (2026-08-09)#2652
Hugo0 merged 6 commits into
devfrom
chore/backmerge-main-into-dev-20260809

Conversation

@Hugo0

@Hugo0 Hugo0 commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Routine back-merge. Clean — zero conflicts.

Supersedes #2643, which was opened 2026-08-07 17:04Z, minutes before the badge-platform UI merge landed, and has been mergeable=false/dirty since. The badge platform (and the [Object] Sentry fix, 3b80afb27) already reached dev by another route, so this carries only what main picked up afterwards.

What comes across

Verification

  • Merge: no conflicts (ort, 3 files)
  • pnpm typecheckclean
  • 228 suites, 2903 passed, 3 skipped, 0 failed

Worth noting the Sentry fix coming across is adjacent to the badge warning fixed in #2647: that one made the unavailable-campaign payload readable, this one stops a console.warn from swallowing network errors wholesale. Both are Sentry-signal quality, and they don't overlap.

Hugo0 and others added 6 commits August 8, 2026 11:25
captureConsoleIntegration listens on ['error','warn'], so the console.warn in
fetchWithSentry became a SECOND Sentry event for every non-2xx in the app —
grouped by that call site rather than by request. The result was a single
bucket holding ~32k events across every endpoint, titling itself after
whichever request happened to fail most recently.

That is actively misleading, not just noisy. It read this morning as
"invites/accept failed, 80 users" and was triaged as the top production issue;
the real rate for that endpoint is 1 event in 7 days.

The explicit captureMessage two lines below is the real report — it already
fingerprints on [method, url, status] and carries headers, body and response.
So this only needs to stop double-reporting: console.info, exactly as the
catch block below already does for the same reason.

Also skips /tokens/price 404. That means the upstream price provider declined
the lookup (in practice a Mobula 429); the UI falls back to token denomination,
so it is a degraded display and never a wrong number. The backend already
downgraded its own log for this (PEANUT-API-75) — reporting it from the client
re-created the same page-per-lookup noise as PEANUT-UI-QKY.

Deliberately NOT removing the captureException in useTokenPrice: its comment
says beforeSend already drops the fetch-error wrapper, so it still surfaces
genuine non-fetch errors.
The bare prefix also matched /tokens/price-history and any nested path, so a
404 from one of those would have skipped its captureMessage and gone
unreported. Bounded to the path end or a query/fragment.
…t-network-warn

fix(sentry): stop one console.warn from swallowing every network error
…a8dd1b)

Bumps src/content on production (main) from f33d67f → 8a8dd1b
(peanut-content latest = mono@0488f9a). Single-file submodule
pointer change. Publishes content already merged + mirrored from mono that the
dev-targeted auto-PRs never promote to main.
…202608091940

content: publish latest to production (src/content → peanut-content@8a8dd1b)
@vercel

vercel Bot commented Aug 9, 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 Aug 9, 2026 7:01pm

Request Review

@cursor

cursor Bot commented Aug 9, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Code-analysis diff

Painscore total: 7158.75 → 7159.01 (+0.26)
Findings: 0 net (+2 new, -2 resolved)

🆕 New findings (2)

  • medium high-mdd — src/utils/sentry.utils.ts:395 — fetchWithSentry: MDD 58.8 (uses across many lines from declarations)
  • low high-dlt — src/utils/sentry.utils.ts:395 — fetchWithSentry: DLT 27 (calls 27 distinct functions — high context load)

✅ Resolved (2)

  • src/utils/sentry.utils.ts:389 — fetchWithSentry: MDD 53.8 (uses across many lines from declarations)
  • src/utils/sentry.utils.ts:389 — fetchWithSentry: DLT 27 (calls 27 distinct functions — high context load)

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

🧪 UI test report — ✅ all green

Suites

  • unit: 2906 ran, 0 failed, 0 skipped, 50.2s

📊 Coverage (unit)

metric %
statements 66.1%
branches 50.9%
functions 56.2%
lines 66.9%
⏱ 10 slowest test cases
time test
3.9s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › never places two stickers in heavy overlap (broad seed sweep)
1.2s src/utils/__tests__/demo-api.test.ts › isDemoMode() is false when not running under Capacitor
0.4s src/utils/__tests__/auth-token.test.ts › authReady does not park — hydrates the plain token without an unlock
0.3s src/utils/__tests__/sentry.utils.test.ts › defaults to the client budget under a browser global
0.3s src/app/actions/__tests__/api-headers.test.ts › should include Content-Type in validateInviteCode
0.3s src/app/(mobile-ui)/withdraw/__tests__/withdraw-states.test.tsx › Bank withdrawal keeps the $1 minimum for sub-$1 amounts
0.3s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › every sticker stays within canvas at any count
0.3s src/utils/__tests__/sentry.utils.test.ts › still lets a per-call timeoutMs win over the default
0.3s src/utils/__tests__/auth-token.test.ts › returns the token hydrated from Preferences after authReady
0.3s src/utils/__tests__/auth-token.test.ts › ignores the guarded marker and falls back to the plain token
📍 Inline annotations are in the **Unit test report** check above. Coverage artifact: `coverage-unit`. Generated by `.github/workflows/tests.yml`.

@Hugo0
Hugo0 merged commit d707166 into dev Aug 9, 2026
19 checks passed
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