Skip to content

feat(ios): Purse UI for the CASH card - #1867

Open
filvecchiato wants to merge 24 commits into
hosts/ios-funding-2-corefrom
hosts/ios-funding-3a-purse
Open

filvecchiato wants to merge 24 commits into
hosts/ios-funding-2-corefrom
hosts/ios-funding-3a-purse

Conversation

@filvecchiato

@filvecchiato filvecchiato commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Part of #1267. Stacked on #1866.

The Purse: what the CASH card opens into on the wallet screen.

  • The leather-wallet card (AssetDetailsBalanceCard), the coinage split bar and coin field, and the asset-details layout with Total amounts. The Total panel with its split bar replaces CoinageBalanceBreakdownView, which is deleted; the card's view model drops the ready balance and logo it no longer draws.
  • Coins arriving after the first layout drop into their place in the stack from just above it (CoinageCoinField.dropping(onto:)).
  • The Get and Send tiles are restyled, titled with the Funding.card* strings and subtitled with the payment asset's symbol (cash.symbol). The old Get/Send and wallet-card strings they replace are removed.
  • PurseMotion/PurseScroll: the card collapses into the navigation bar as the Purse scrolls (PurseFloatingCard, PurseTitleView), with Reduce Motion respected. PurseMotion holds only the collapse and Total panel timings here; the activity rows' timings land with them in feat(ios): funding overlay screens and activity #1868.
  • WalletMainViewController puts the Purse title view in the navigation bar while the Purse is open, and clears it again when the Purse closes on iOS below 26, where the main title sits on the left.
  • FundingCash+Current.swift holds FundingCash.current, the app's payment asset.
  • Funding.xcstrings gains the strings the Purse uses.
  • Tests: PurseMotionTests (collapse progress and frames, smoothstep, fades, sticky bar, split bar share and stripes). PurseSnapshotTests is a manual check, not an assertion: when PURSE_SNAPSHOT_DIR is set (TEST_RUNNER_PURSE_SNAPSHOT_DIR through xcodebuild) it writes PNGs of the open Purse at fixed scroll offsets for checking by eye, and is skipped otherwise.

Get/Send and the funding entry points are wired in #1345.

Stack (iOS funding, review bottom-up):

  1. feat(ios): load products from the app bundle; funding-only workers; headless worker prompts #1865 load products from the app bundle (base main)
  2. feat(ios): funding core integration — FFI bindings, session model, provider listing, worker exits #1866 funding core integration (base funding/host-gaps, feat(truapi)!: crypto networks, learned limits, retrying, payout and refunds for the funding screens #1344)
  3. feat(ios): Purse UI for the CASH card #1867 Purse UI for the CASH card
  4. feat(ios): funding overlay screens and activity #1868 funding overlay screens and activity
  5. feat(ios): wire the CASH card and the core to the funding overlay; remove the getcash path #1345 wiring and getcash removal

Split out of #1345 as requested in review.

@filvecchiato
filvecchiato requested review from a team as code owners November 3, 2026 16:41
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

This pull request touches an app, which is not built by default. Add a label for each build you want:

  • iOS simulator build, ci:ios-simulator: builds the iOS app and attaches a build for the iOS Simulator on a Mac; its unit tests run on every pull request.
  • iOS device build, ci:ios-device: attaches a signed build that installs on a registered iPhone or iPad.

Each starts as soon as it is added and follows the branch from then on.

@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Bundle size report

Compared with main at 951466e.

Raw Gzip Brotli
truapi-host 8.57 MiB 5.89 MiB 5.55 MiB
truapi-provider 4.04 MiB 1.27 MiB 961.3 KiB
truapi 7.92 MiB 1.11 MiB 920.7 KiB
trinity-stack 634.3 KiB 247.5 KiB 204.7 KiB
Total 21.14 MiB 8.51 MiB 7.58 MiB

WebAssembly modules

Raw Gzip Brotli
truapi-host/wasm/web/truapi_server_bg.wasm 3.44 MiB 1.19 MiB 908.8 KiB
truapi-host/wasm/web/truapi_verifiable_bg.wasm 4.89 MiB 4.64 MiB 4.61 MiB
truapi-provider/truapi_provider_bg.wasm 3.99 MiB 1.26 MiB 953.5 KiB
trinity-stack/wasm/trinity_stack_bg.wasm 564.5 KiB 230.5 KiB 190.0 KiB

No file changed size.

Commit: 1b2872e

@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

CI Status: 24 required jobs green, 16 passed and 8 skipped by path filter.

All job results
job result
android-app skipped
android-bindings skipped
bundle-size success
changes success
changeset-guard skipped
cli-package skipped
codegen success
e2e skipped
explorer success
headless-install success
host-wasm success
ios-app skipped
ios-bindings success
licenses success
playground success
provider-android-bindings skipped
release-guard success
rust success
ts-client success
ts-debugger success
ts-host success
ts-trinity-stack success
wasm-provider success
workflow-lint skipped

Signing credentials: valid as of 2026-11-06

Commit 1b2872e0 · run log

@filvecchiato
filvecchiato added this pull request to stack #1931 November 5, 2026 15:25
…osts/ios-funding-3a-purse

# Conflicts:
#	hosts/ios/polkadot-app/Modules/AssetDetails/AssetDetailsViewLayout.swift
#	hosts/ios/polkadot-app/Modules/AssetDetails/Model/Coins/CoinageBalanceBreakdownView.swift
#	hosts/ios/polkadot-app/Modules/Wallet/WalletMain/WalletMainViewController.swift

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1000 lines or more; split it, or say in the description why it cannot be status:waiting-on-review Ready for a reviewer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant