Skip to content

chore: back-merge main → dev (2026-07-29) - #2566

Merged
Hugo0 merged 13 commits into
devfrom
main
Jul 29, 2026
Merged

chore: back-merge main → dev (2026-07-29)#2566
Hugo0 merged 13 commits into
devfrom
main

Conversation

@jjramirezn

Copy link
Copy Markdown
Contributor

Back-merge of everything on main but not yet on dev — 8 commits:

Why this PR is main → dev directly instead of the usual chore/backmerge-* branch: the content-bot commit 5008b3e on main is unsigned, and the "All branches" ruleset (required signatures, no bypass actors) rejects any push/API-merge that introduces it to a new branch — a signed local merge was rejected too (GH013 flags the unsigned ancestor, not the merge commit). Merging this PR creates a GitHub-signed merge commit on dev, the same path those commits took into main (#2561). If the rule complains at merge time, merge with gh pr merge --admin.

Zero conflicts (verified via a local test merge). No manual edits.

🤖 Generated with Claude Code

Hugo0 and others added 12 commits July 28, 2026 11:59
Third fix, same root cause each time: I verified in an environment that was not
the one it runs in.

GitHub runs the step as `bash -e {0}`. Combined with `set -o pipefail` that
means any non-zero anywhere kills the script at that line with NO output — a red
run and an empty log, which is the least debuggable possible failure. It hit
twice: the Actions-API 403, then `grep` returning 1 because a commit touched no
mirrored paths. grep exiting 1 on no-match is a normal answer, not an error, and
it was the very first loop iteration — so the last run produced literally
nothing between the env block and `exit 1`.

`set +e` explicitly. Every branch here decides for itself and reports why; `-e`
adds nothing but the ability to die mid-check without saying so.

Also filter LIVE/TIP/EXPECTED through a 40-hex check. On failure `gh` prints its
error body to stdout, which was landing in those vars and being compared as if
it were a sha; now a broken call resolves to empty and trips the labelled
DEGRADED branch instead.

Verified by extracting the step and running it under `bash -e` against the real
APIs, both paths: healthy -> "production content is current", exit 0, silent;
broken token -> one WATCHDOG DEGRADED line, exit 1. That is the check I should
have been running from the first commit.
fix(watchdog): stop the script dying silently under bash -e
The end-to-end test found the real defect. merge-on-green did everything right
for #2547 — content-only diff, ci-success 2/2 green — then failed at the last
step:

    Merging #2547 — diff is exactly src/content, ci-success green (2/2)
    merge failed for #2547 (already merged, or bypass unavailable)

Being an OrganizationAdmin does not make `gh pr merge` bypass "Protect Prod".
gh enforces the branch policy and requires an explicit `--admin`. I hit this
exact error merging #2544 by hand an hour earlier, added the flag, and did not
carry it back into the workflow.

`--admin` also waives the required status check, so note what it is not waiving:
this job has already established for itself that the diff is exactly
`src/content` and that every ci-success run on the commit is green. The gate is
enforced in code above; --admin only drops the human review, which is the entire
purpose of this workflow.

A merge we decided to make and then failed to make now fails the run loudly
instead of logging a warning and going green. That warning is why the pipeline
looked healthy for 40 minutes while Konrad's content sat unpublished — the exact
silent failure this work exists to remove.

Two more from the same class, found by running the step under `bash -e`:
`set +e` with explicit checks, because -e kills the loop mid-flight with no
output; and numeric validation of TOTAL/GREEN/PRS, because gh prints its JSON
error body to stdout and the loop was iterating over the words of an error
message as if they were PR numbers.

Verified under `bash -e`: bogus SHA -> "not green (-1/0)", exit 0; real commit
with no candidate PR -> "No open content-publish candidates", exit 0.
fix(automerge): pass --admin, and stop swallowing a failed merge
…53d925)

Bumps src/content on production (main) from c268e5d → 153d925
(peanut-content latest = mono@f4a21dc). Single-file submodule
pointer change. Publishes content already merged + mirrored from mono that the
dev-targeted auto-PRs never promote to main.
…202607281706

content: publish latest to production (src/content → peanut-content@153d925)
…0728-185158

content: publish latest to production (src/content → peanut-content@6ad0006)
PR #2505 switched history ENS resolution to GET /ens/reverse/:address,
but its backend dependency (peanut-api-ts#1237) was never merged or
deployed — prod returns 404, so activity history silently fell back to
raw addresses for every user. Reverting restores the working JustaName
client-side lookup on web. Re-land #2505 once #1237 is live in prod.

This reverts commit d5e9789.
…lable

the server-first hook shipped in #2505 before its backend endpoint
(peanut-api-ts#1237) deployed, so prod 404s every lookup and history
shows raw addresses. instead of reverting, keep server-first (needed
for native, where the mainnet RPC blocks WebView origins via CORS) and
engage JustaName's client-side lookup only when the server call fails.

web gets ENS names back immediately; native picks up the server path
automatically once #1237 deploys, with no frontend re-land. non-OK now
throws instead of caching a negative result for 24h.
… call

coderabbit: the previous waitFor only observed the fetch being fired, so
the undefined assertion could pass before the query resolved. wait for
the post-resolve re-render and assert the client fallback stays disabled
when the server answers authoritatively.
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 629f4eae-79f8-4c5b-862d-3321606d2d48

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@vercel

vercel Bot commented Jul 29, 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 Jul 29, 2026 2:06pm

Request Review

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Code-analysis diff

Painscore total: 6655.8 → 6657.76 (+1.96)
Findings: -1 net (+2 new, -3 resolved)

🆕 New findings (2)

  • high hotspot — src/components/TransactionDetails/TransactionCard.tsx — 32 commits, +272/-187 lines since 6 months ago
  • medium complexity — src/hooks/usePrimaryNameServer.ts — CC 8, MI 60.13, SLOC 32

✅ Resolved (3)

  • src/components/TransactionDetails/TransactionCard.tsx — 30 commits, +264/-179 lines since 6 months ago
  • src/hooks/usePrimaryNameServer.ts — CC 5, MI 63.92, SLOC 25
  • src/hooks/usePrimaryNameServer.ts — 1 any annotation(s)

📈 Painscore deltas (top movers)

File Before After Δ
src/hooks/usePrimaryNameServer.ts 6.6 7.8 +1.2

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

🧪 UI test report — ✅ all green

Suites

  • unit: 2307 ran, 0 failed, 0 skipped, 34.2s

📊 Coverage (unit)

metric %
statements 60.9%
branches 44.2%
functions 50.1%
lines 61.4%
⏱ 10 slowest test cases
time test
2.9s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › never places two stickers in heavy overlap (broad seed sweep)
0.8s src/utils/__tests__/demo-api.test.ts › isDemoMode() is false when not running under Capacitor
0.3s src/utils/__tests__/sentry.utils.test.ts › defaults to the client budget under a browser global
0.3s src/components/Card/share-asset/__tests__/shareAssetLayout.test.ts › every sticker stays within canvas at any count
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/utils/__tests__/sentry.utils.test.ts › still lets a per-call timeoutMs win over the default
0.3s src/app/actions/__tests__/api-headers-extended.test.ts › should not include apiKey in validateInviteCode body
0.2s src/app/actions/__tests__/api-headers.test.ts › should include Content-Type in validateInviteCode
0.2s src/utils/__tests__/auth-token.test.ts › returns the token hydrated from Preferences after authReady
0.1s src/utils/__tests__/demo-balance.test.ts › keeps a spent-down balance across a cold start within the TTL
📍 Inline annotations are in the **Unit test report** check above. Coverage artifact: `coverage-unit`. Generated by `.github/workflows/tests.yml`.

…-side-2505

fix(history): restore ENS names via client-side fallback while /ens/reverse is undeployed
@Hugo0
Hugo0 merged commit 1895f86 into dev Jul 29, 2026
25 of 27 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.

4 participants