Activity Overview

Commits and releases over time

  • Commits
  • Releases
  • Authors

Repository Explorer

87 commits in all time Jun 25, 2026 14:18 – Sep 23, 2026 14:18 UTC
yasincaliskan connect
Merge 9255a4d1373e48d01a18a8bbb5d677527ac114ce into 08f19f9a80b2fb657a96fc9bd00fc8b6f7945b89
Git Commit 8d7ece42 Branch pull/216/merge Document 1/5 ++ 1 --
yasincaliskan connect
docs: document the WalletConnect v1 transport and what signData signs
Add a WalletConnect section stating that the SDK talks to the Pera
mobile app over WalletConnect v1 through the maintained
@perawallet/walletconnect client, that v2 is not supported, and that
sessions run on Pera-hosted bridges, so no WalletConnect Cloud project
ID is needed.

Replace the signData claim that the SDK "uses signBytes behind the
scenes"; the SDK never calls it. The wallet signs each item with the
"MX" prefix, exactly like algosdk.signBytes, so signatures verify with
algosdk.verifyBytes or verifySignature.

Refs #140, #149
Git Commit 9255a4d1 Branch docs/walletconnect-v1-and-signdata Document 1/5 ++ 1 --
yasincaliskan connect
Merge da2cfa15deeca5cca81c380eb71b894b50eb9c3f into 08f19f9a80b2fb657a96fc9bd00fc8b6f7945b89
Git Commit 058f9330 Branch pull/211/merge Document 4/78 ++ 4 --
yasincaliskan connect
fix: fall back to a Pera-hosted bridge instead of the retired public bridge
When wc.perawallet.app/config.json is unreachable or lists no servers,
connect() fell back to https://bridge.walletconnect.org. WalletConnect
retired that host in 2023 and it no longer resolves, so every user who
reached the fallback got a QR code against a dead bridge and a hang.

Fall back to wallet-connect-fallback.perawallet.app instead, a
Pera-controlled DNS name that can be repointed at any bridge without an
SDK release. Precedence is unchanged: the dApp `bridge` option, then
config.json, then the fallback.

Refs #104
Git Commit da2cfa15 Branch fix/dead-bridge-fallback Document 4/78 ++ 4 --
wjbeau connect
chore: switch to beta version (#215)
Git Commit 08f19f9a Branch main Document 1/1 ++ 1 --
wjbeau connect
chore: restore prepare script
Git Commit 517b8d17 Branch pull/215/head Document 1/1 ++ 0 --
wjbeau connect
chore: switch to beta version
Git Commit eea7890d Branch pull/215/head Document 1/1 ++ 2 --
wjbeau connect
fix: make algod configurable (#214)
Git Commit 6439925c Branch main Document 17/480 ++ 48 --
wjbeau connect
Merge 46d23283c2b60da2b1d69d2ec027cfb98c539eee into 9240f6512eaccdd60e09c0ce1aba0dd79c3b420a
Git Commit 9088077a Branch pull/214/merge Document 17/480 ++ 48 --
wjbeau connect
fix: make algod configurable
Git Commit 46d23283 Branch wjbeau/algod-override Document 17/480 ++ 48 --
yasin-ce connect
Merge 520de62bdc69229acbc3339a23a30e5e54c5e8d4 into 9240f6512eaccdd60e09c0ce1aba0dd79c3b420a
Git Commit e3f6eaf7 Branch pull/208/merge Document 2/77 ++ 1 --
wjbeau connect
feat: replace arc27 with custom provider (#213)
Git Commit 9240f651 Branch main Document 25/2,078 ++ 979 --
wjbeau connect
Merge cf0a84cb306950fb577abfbeed29497e937e17c8 into eae749a84e51d281a77eb7b1b95d33943d5d0892
Git Commit 7b7f8599 Branch pull/213/merge Document 25/2,078 ++ 979 --
wjbeau connect
fix: address PR review on the window.pera provider
Session-destroying paths:
- reconnectSession() no longer routes an extension reconnect failure into
  its WalletConnect catch-all, which called disconnect() and so revoked
  the origin in the wallet. A transient -32603/-32004, or a wallet on
  another network, now rejects with the transport's own error (cause at
  error.data.type rather than buried under a second wrapper) and leaves
  the approval and the stored details intact.
- A successful extension connect retires the WalletConnect pairing left
  in flight, so a QR scan that lands afterwards can no longer overwrite
  the extension session with a mobile one.
- The connect modal comes down before the provider is awaited, so its
  close button can no longer reject a connect whose later approval still
  stores the session behind the dApp's back.

Event surface:
- The WalletConnect disconnect path now clears storage and nulls the
  connector before the handler runs, matching what the README documents
  and what the extension path already did.
- Our own killSession() (in connect() and disconnect()) no longer reaches
  the dApp as a wallet-side disconnect.
- networkChanged is gated on an extension-owned session, so a dApp on a
  mobile session is not told to repoint its algod client because the
  installed extension switched network.
- dispose() is public: an instance otherwise stays subscribed to
  window.pera for the page's life, and under StrictMode/HMR the discarded
  instance swallows the events the live one should handle.

Also: signData filters non-string entries before decoding (atob(null)
decoded "null" into three plausible-looking signature bytes) and rejects
a non-array response as SIGN_DATA; isPeraProviderError duck-types instead
of relying on instanceof across realms; and the web-wallet-unavailable
stylesheet only force-expands the accordion when a single option is left,
rather than opening both the extension and QR rows uncollapsibly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Git Commit cf0a84cb Branch wjbeau/window-pera-provider Document 11/446 ++ 54 --
wjbeau connect
Merge b8535091bb1b67e38c5bce921a5acff47052e9d0 into d30c7d7cc353aff63122f870727206596a159f1c
Git Commit 0731144b Branch pull/214/merge Document 17/480 ++ 48 --
wjbeau connect
fix: make algod configurable
Git Commit b8535091 Branch wjbeau/algod-override Document 17/480 ++ 48 --
wjbeau connect
Merge d30c7d7cc353aff63122f870727206596a159f1c into eae749a84e51d281a77eb7b1b95d33943d5d0892
Git Commit d87d3c7f Branch pull/213/merge Document 24/1,651 ++ 944 --
wjbeau connect
chore: bump minor version
Git Commit d30c7d7c Branch wjbeau/window-pera-provider Document 1/1 ++ 1 --
wjbeau connect
feat: replace arc27 with custom provider
Git Commit a9266e17 Branch wjbeau/window-pera-provider Document 23/1,650 ++ 943 --
wjbeau connect
feat: replace arc27 with custom provider
Git Commit 2af6d2de Branch wjbeau/window-pera-provider Document 22/1,597 ++ 949 --
yasin-ce connect
Merge 520de62bdc69229acbc3339a23a30e5e54c5e8d4 into eae749a84e51d281a77eb7b1b95d33943d5d0892
Git Commit d95383a8 Branch pull/208/merge Document 2/77 ++ 1 --
yasincaliskan connect
feat: resolve the ARC-60 signer for rekeyed accounts [PERA-4977] (#209)
Git Commit eae749a8 Branch main Document 9/473 ++ 14 --
yasincaliskan connect
feat: expose an algosdk TransactionSigner as `transactionSigner` (#212)
Git Commit 9c381ac3 Branch main Document 3/297 ++ 1 --
yasincaliskan connect
Merge 875a060a6179f02f43bde0716ff31666f3f74a4f into 7f7aa010078777c445aeba5ce7b1a533d7e10e4e
Git Commit 7d59141d Branch pull/212/merge Document 3/297 ++ 1 --
yasincaliskan connect
feat: expose an algosdk TransactionSigner as `transactionSigner`
Adds a memoized `transactionSigner` getter so Pera drops straight into
AtomicTransactionComposer and any API that accepts an algosdk signer:

  atc.addTransaction({txn, signer: peraWallet.transactionSigner});

The whole group is sent to the wallet in one signTransaction call; slots
not in indexesToSign are marked `signers: []` (ARC-0001) so the wallet
shows but does not sign them. Results are returned in indexesToSign
order, and a count mismatch from the wallet is rejected with a clear
SIGN_TRANSACTIONS error instead of reaching the composer as a corrupted
group.

The getter returns the same function on every access on purpose:
AtomicTransactionComposer batches transactions by signer identity, so a
fresh closure per access would mean one wallet prompt per transaction.

algosdk stays a peer dependency; TransactionSigner is imported as a type
only and the runtime bundle gains no algosdk symbols.

Closes #44
Git Commit 875a060a Branch feat/transaction-signer Document 3/297 ++ 1 --