Skip to content

[Emergency Release] v1.14.25#800

Merged
CassioMG merged 2 commits intoemergency-releasefrom
v1.14.25
Apr 4, 2026
Merged

[Emergency Release] v1.14.25#800
CassioMG merged 2 commits intoemergency-releasefrom
v1.14.25

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Apr 3, 2026

Summary

Emergency release to fix crashes related to stellar.expert now returning Soroban contract tokens in search results, plus a CI build fix for Xcode 26.4.

Fixes included

  • Fix crash when adding contract tokens from search (Update asset search to handle contract tokens #799, Fix crash when adding contract tokens from stellar.expert search (#799) #801) — stellar.expert now returns contract tokens where asset is a raw contract ID instead of CODE-ISSUER-TYPE. The parsing in useTokenLookup was updated to detect contract IDs and read metadata from the new top-level fields (code, decimals, token_name) with tomlInfo as fallback.

  • Prevent crash when swapping custom/Soroban tokens — Custom tokens cannot be swapped via Horizon's classic DEX. Added an early check in findSwapPath that shows "Swapping custom tokens is not supported yet" instead of crashing.

  • Fix infinite useEffect loop in SwapAmountScreen — Removed activeError from the dependency array of the path error effect. It was both set by and a dependency of the effect, creating an infinite render loop.

  • Cap CI Xcode version at 26.3 (Cap CI Xcode version at 26.3 to fix iOS build #802) — Xcode 26.4 ships a stricter Clang that breaks the fmt CocoaPod. Capped the auto-selected version until the pod is updated.

Test plan

  • Search for "dejaaa" in Add Token — both results display correctly, adding either one works
  • Search by full contract ID — works as before
  • Swap screen with custom token — shows "not supported" error, no crash or infinite loop
  • CI iOS build passes with Xcode 26.3 cap
  • All existing tests pass + 2 new unit tests for contract token parsing

🤖 Generated with Claude Code

github-actions bot and others added 2 commits April 3, 2026 21:51
… (#801)

* Fix crash when adding contract tokens from stellar.expert search (#799)

stellar.expert now returns Soroban contract tokens alongside classic
assets. The `asset` field for these is a raw contract ID instead of the
"CODE-ISSUER-TYPE" format, which caused `new Asset()` to throw when
the 56-char contract ID was used as an asset code.

Handle contract tokens in `formatTokensFromSearchResults` by detecting
contract IDs and reading metadata from the new top-level fields
(`code`, `decimals`, `token_name`) with `tomlInfo` as fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Cap CI Xcode version at 26.3 to fix iOS build

Xcode 26.4 ships a stricter Clang that breaks the `fmt` CocoaPod with
consteval errors. Cap the auto-selected Xcode at 26.3 until the Pod is
updated. The cap is a single variable (MAX_XCODE_VERSION) at the top of
the script for easy bumping.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add tests for contract token parsing from stellar.expert

Test that search results containing Soroban contract tokens (where
`asset` is a raw contract ID) are correctly parsed using the new
top-level fields, and that missing metadata falls back gracefully.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Prevent crash when swapping custom/Soroban tokens

Custom tokens cannot be swapped via Horizon's classic DEX path finder.
Detect them early in findSwapPath and show a user-friendly error instead
of letting getTokenForPayment throw an unhandled exception.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix infinite useEffect loop in SwapAmountScreen

Remove activeError from the dependency array of the pathError useEffect.
activeError was both set by and a dependency of this effect, creating an
infinite loop: setActiveError creates a new object → triggers the effect
→ setActiveError again → forever. The effect only needs to react to
pathError, sourceAmount, and destinationTokenId changes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix tokenContractId selection to prefer explicit contract field

Use explicit isContractId checks instead of || fallback to avoid picking
a non-empty classic issuer (G...) when tokenCode holds the contract ID.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* add comment

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@CassioMG CassioMG merged commit 9493993 into emergency-release Apr 4, 2026
24 of 26 checks passed
@CassioMG CassioMG deleted the v1.14.25 branch April 4, 2026 00:37
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