Skip to content

chore: release v1.1015.0#12098

Merged
0xApotheosis merged 32 commits intomainfrom
release
Mar 5, 2026
Merged

chore: release v1.1015.0#12098
0xApotheosis merged 32 commits intomainfrom
release

Conversation

@gomesalexandre
Copy link
Contributor

Production changes - testing required

Bitcoin RBF and WalletConnect

Enables Replace-By-Fee on all Bitcoin transactions (nSequence = 0xFFFFFFFD) for fee bumping stuck txs. Also adds full Bitcoin (BIP122) namespace support to WalletConnect - both as a wallet (external dApps connect to ShapeShift) and as a dApp (ShapeShift connects to external BTC wallets like Xverse/OKX). Test BTC sends to confirm RBF flag is set, test WC pairing with a BTC-capable wallet, and test WC dApp mode by connecting an external BTC dApp and signing a transaction.

Yield and staking fixes

Fixes mobile yield page layout (scroll, padding, back arrow positioning) and surfaces proper error messages for Ledger blind signing failures instead of generic toasts. Also adds Mixpanel tracking for yield.xyz deposit/withdraw/claim flows and shows an error state when the pools endpoint is down. Test yield flows on mobile viewport, test Lido ETH staking on Ledger with blind signing disabled to verify the toast, and verify pools page handles API failure gracefully. Note for Mixpanel tracking: disabled in private build.

FOX ecosystem

Fixes TON-backed asset errors on the FOX ecosystem page, routes the trade CTA to FOX context instead of generic trade, disables the rFOX Claim button when no unstaking requests have expired cooldown, and updates the rFOX IPFS hash for February rewards. Test /fox-ecosystem with no console errors for TON assets, verify trade CTA opens with FOX pre-selected, and verify the Claim button is disabled with no claimable requests.

Trade and input fixes

Fixes fiat input retaining a trailing zero after deletion and fixes the limit order expiry dropdown being clipped/unscrollable. Test typing/deleting amounts in fiat mode and verify all 5 expiry options are visible in Trade > Limit.

Send

Constrains the send address input to max 3 rows with scroll overflow. Test pasting a very long string in the Send modal address field - it should cap at 3 rows then scroll.

Legal links

Fixes broken Terms of Service and Privacy Policy links in MobileConnect that were returning 404. Test tapping both links on mobile to verify they navigate correctly.

Fixes, deps, and infra

No testing required. CI fix for public-api Docker builds, strict peer deps enforcement with whitelisted mismatches, security overrides for transitive deps (elliptic, react-router, validator, etc.), BSC fallback RPC env/CSP wiring, and hotfix release script fix to ship only hotfix commits with patch bump.


Dev/local only - no production testing required

Chainflip lending (behind CHAINFLIP_LENDING flag)

Wires Chainflip lending safe mode gating into pool actions, fixes LTV gauge layout in modals, integrates lending operations into the Action Center with toast notifications, and polishes the information architecture revamp (route compat, data-testids, repay asset locking).

Dev tooling and QA

Agent tooling improvements - Codex/Claude instruction unification, qabot exploration mode with no-go zones, qabot reliability checklist, and PORT env override for parallel local dev servers.

0xApotheosis and others added 30 commits March 3, 2026 15:04
#12022)

* fix: hotfix release flow ships only hotfix commits and uses patch version bump

The hotfix option in `yarn release` was shipping all commits since the last tag
instead of just the hotfix commits. This happened because `getCommits()` used
`${latestTag}..origin/${branch}` for hotfix branches, which includes develop
history.

- Use `origin/main..origin/${branch}` range for hotfix branches so only commits
  not on main are included
- Add programmatic verification that the hotfix branch is actually based on
  origin/main (not just the user's confirmation)
- Use patch version bump for hotfixes instead of minor
- Detect hotfix vs regular release at merge time via PR title prefix

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

* fix: redesign hotfix release to cherry-pick from develop instead of requiring manual branch

Hotfix flow now fetches unreleased commits (origin/main..origin/develop), presents
them as checkboxes, cherry-picks selected commits onto main, tags with patch version,
and syncs private + develop - eliminating the need to manually create a branch off main.

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

* fix: use raw git exec for getUnreleasedCommits to parse multi-line output correctly

simple-git's .log() collapses custom --pretty=format output into a single
entry. Switching to pify(exec) gives us raw stdout we can split by newline.

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

* fix: handle pify(exec) return type safely in getUnreleasedCommits

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

* fix: use simple-git format API correctly and harden cherry-pick loop

Use simple-git's object-style format option instead of raw --pretty flag
which broke internal parsing. Reverse cherry-pick order to oldest-first
and add error handling with abort on failure.

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

* fix: harden release script commit parsing and hotfix rollback

* fix: print release commits one per line

* fix: satisfy release script lint formatting

* fix: satisfy release script lint formatting

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

* fix: add defensive parsing guard and develop merge error handling

Guard against empty commit subjects in getUnreleasedCommits where
spaceIdx === -1 would corrupt the hash via slice(0, -1).

Add try/catch around the merge-main-into-develop step in both hotfix
and regular release flows so a conflict doesn't leave develop in a
broken state with no recovery guidance.

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

* fix: add missing await on doHotfixRelease()

Without await, the script could exit mid-operation or swallow errors
as unhandled rejections during cherry-picks, tags, pushes, and
develop merges.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 4, 2026

Important

Review skipped

Draft detected.

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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 834d1759-b6b5-493d-bd8c-1366268e6cad

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release

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.

0xApotheosis and others added 2 commits March 5, 2026 12:58
* fix: unrug public-api Railway CI - copy patches dir and add .railwayignore

Two fixes for Railway deployment failures:

1. Copy patches/ directory in Dockerfile before pnpm install - pnpm
   requires patch files during install even with --ignore-scripts because
   patched dependencies are referenced in the lockfile.

2. Add .railwayignore to reduce repo snapshot size - Railway's "Failed to
   snapshot repository" error was caused by the repo being ~74MB of tracked
   files. Excludes frontend source, images, tests, and other files not
   needed for the public-api Docker build.

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

* fix: add patches dir to swap-widget Dockerfile and update .railwayignore

The swap-widget Dockerfile had the same missing patches/ dir bug as
public-api — pnpm install fails with ENOENT for patched dependencies.
Also add swap-widget *.md exception to .railwayignore.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…12100)

* fix: use copy package-import-method in Docker to avoid pnpm ENOENT

pnpm's default hard-link strategy fails intermittently on Docker's
overlay filesystem with "ENOENT: rename _tmp -> secp256k1". Setting
package-import-method=copy via env var (Docker-only, doesn't affect
local dev .npmrc) fixes the atomic rename race condition.

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

* fix: add retry loop for pnpm install in Docker builds

The ENOENT rename failure persists even with package-import-method=copy
because pnpm's hoisting/linking phase still does atomic renames that
race on Docker's overlay filesystem. Since it's intermittent and all
packages are cached in the store after the first attempt, a retry with
clean node_modules is fast and reliable.

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

* fix: restrict swap-widget tsconfig types to prevent auto-discovery

Without an explicit `types` field, TypeScript auto-discovers all
@types/* packages hoisted to root node_modules. The deprecated stub
@types/ethereumjs-util (from hdwallet-ledger devDeps) has no .d.ts
files, causing TS2688 during Docker builds. Restricting to
["vite/client"] matches the pattern used by the root tsconfig.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@0xApotheosis 0xApotheosis merged commit ad1e24d into main Mar 5, 2026
10 checks passed
@railway-app railway-app bot temporarily deployed to widget / production March 5, 2026 22:33 Inactive
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