Skip to content

PE-9205: Release v2.88.1 - #2230

Merged
vilenarios merged 5 commits into
masterfrom
release-v2.88.1
Sep 16, 2026
Merged

vilenarios merged 5 commits into
masterfrom
release-v2.88.1

Conversation

@vilenarios

Copy link
Copy Markdown
Collaborator

devmaster for 2.88.1. Two fixes on staging since a5e89950c: Turbo credits on the wallet somebody signed in with (#2227), and a payment sheet that an older preparation can no longer overwrite (#2228), plus the version bump (#2229).

master is merged into this branch rather than the other way round, matching #2226. The resulting tree is byte-identical to dev, so this release is exactly what is on staging.

What's new

Turbo credits on the wallet you signed in with. Signing in with a Solana or Ethereum wallet gives you an Arweave account, and that account is what pays for uploads. Credits bought in Turbo's own console went to the wallet instead, so the upload sheet said you had none and offered to sell you more. It now says where your credits are, and stops offering a top-up.

Use them in one press, with a Solana wallet. On the web, one signature lets your ArDrive account spend those credits. It only signs from the wallet the credits are on. Anywhere that cannot sign, or if sharing does not go through, the sheet shows your full Arweave address to copy, so you can share the credits in Turbo yourself.

Under the hood

  • A slow credit lookup or an older preparation of the upload sheet can no longer replace a newer one, for example after a double tap on Skip or Replace when files conflict
  • Closing the upload sheet while it refreshes is no longer logged as a failed preparation

Notes for upgraders

  • No database migration: schemaVersion unchanged at 29
  • No config change: configVersion unchanged at 3
  • The upload pipeline and encryption are unchanged: ardrive_uploader, ardrive_crypto, lib/core/upload and lib/core/crypto have no changes. The work is in the payment sheet and the Turbo services it calls

Pre-flight

schemaVersion 29 both sides, no .drift changes
configVersion 3 both sides, no asset changes
Uploads / crypto ardrive_uploader, ardrive_crypto, lib/core/upload, lib/core/crypto: zero lines changed. lib/blocs/upload changed: the payment sheet only
Tests Full suite 2,159 passing at 2e8e61b43; 21 behaviours each checked by reverting the code
Review CodeRabbit full reviews completed on the final commits of #2227 and #2228, every thread resolved
Staging Green. #2227 and #2228 deployed and served (last at 22:27 UTC); every staging run on this branch succeeded
Tree vs dev Empty diff
Not covered by tests The real Phantom signature and Turbo shareCredits call; the web path is VM-untestable. A manual pass is recommended before merging. If it fails, the effect is contained: a Solana reader on a refusing sheet sees "That did not go through." and their whole Arweave address to share in Turbo by hand, instead of the old offer to buy more credits

After merging

The merge is the deploy: production.yaml runs on every push to master, and no workflow is triggered by a tag or a release. Once that run is green and app.ardrive.io/version.json reads 2.88.1, publish the GitHub release v2.88.1 pinned to the merge commit, so the tag names exactly what shipped.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AAvnj5uGsaASPN47BViH8D

vilenarios and others added 5 commits September 15, 2026 16:45
…more PE-9205 (#2227)

A Solana user bought Turbo credits in Turbo's console, and ArDrive told them
they had none, then offered to sell them more. Signing in with another chain's
wallet derives the Arweave account ArDrive bills, and Turbo keeps a balance per
chain, so the credits sat on the sign-in wallet's account, out of reach.

- When the payment sheet is refusing and the reader signed in with another
  chain's wallet, it looks up that wallet's Turbo balance and says where the
  credits are, in place of every top-up offer, in both selector modes.
- On the web, for a Solana sign-in, one press shares them: Turbo is
  authenticated as the sign-in wallet and approves the derived address for the
  balance found. It refuses unless the extension's connected account is that
  wallet. Spending then works unchanged through `receivedApprovals`,
  `effectiveBalance` and `x-paid-by`.
- Everywhere else, and after a share that did not go through, the notice shows
  the whole Arweave address to copy for sharing in Turbo by hand.
- The lookup is awaited after the emit rather than raised as a second event,
  which could add to a closed bloc and report a closed sheet as a failed
  preparation.

Uploads and encryption are unchanged. The web signing path cannot run in VM
tests and needs a manual Phantom pass on staging, including once with a
different account selected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AAvnj5uGsaASPN47BViH8D
… sheet PE-9205 (#2228)

Follow-up to #2227, from two CodeRabbit findings. `UploadPaymentMethodBloc`
runs events concurrently, and a double tap on Skip or Replace in the upload
conflict dialogs starts two preparations. Whichever finished last won, so an
older preparation could replace the newer payment sheet, and a credit lookup
could attach its answer to a sheet it was never asked about.

Each preparation now takes a number. Every emit in the preparation handler,
the loading state, a wallet mismatch, the prepared result and a failure, and
the credit lookup's result are applied only if no newer preparation has begun.
A counter rather than a `restartable` transformer, which would also change how
switching payment method is handled.

Tests cover a late lookup, and an older preparation finishing late with a
result, with a failure, and after the newer one has loaded. Each guard was
checked by reverting it and confirming a test fails.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AAvnj5uGsaASPN47BViH8D
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AAvnj5uGsaASPN47BViH8D
@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

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: Advanced

Run ID: 9f540add-2e43-42d9-8d15-4cccbe884689

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

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.

@vilenarios
vilenarios merged commit 08e8941 into master Sep 16, 2026
1 check passed
@vilenarios
vilenarios deleted the release-v2.88.1 branch September 16, 2026 00:14
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