Changelog
#
4.0.0 (2023-04-04)#
Features- WalletConnect: Support for WalletConnect 2 has been added. This means that wallets that support Tezos and WalletConnect 2 (eg. TrustWallet) can easily add support for Tezos dApps. Read more about the supported WalletConnect 2 messages here: https://docs.walletconnect.com/2.0/advanced/rpc-reference/tezos-rpc. WalletConnect 2 support works out of the box, but some options can be customised by dApps.
- TrustWallet: Support for TrustWallet has been added
- UI: Beacon now includes a completely new Pairing UI. The new modal provides a better onboarding experience for new users, as certain wallets are highlighted and the setup of wallets is explained. The list of the new UI is opinionated, but it can be adjusted by the dApps to include other wallets. The following code can be used to adjust the highlighted wallets:
- Analytics: DApps can now choose to pass an analytics instance to the beacon-sdk, where some events like clicks in the UI modal will be tracked. This feature is turned off by default and has to be explicitly enabled by dApps!
- Naan: Naan logo updated
- SDK: Changed from browserify to webpack
#
3.3.4 (2023-02-16)#
Features- Internal: Update build environment
#
Fixes- Pairing: Remove Alert Overflow
#
3.3.3 (2023-02-09)#
Features- Wallet: Add Umami Mobile
- Wallet: Add Atomex Mobile
- Wallet: Update Naan Metadata
- Wallet: Update AltMe Logo
- Internal: Add support for svg logos
- Internal: Use NPM Workspaces
#
3.3.2 (2023-01-10)#
Features- Wallet: Add Atomex Wallet
- Tezos: Add Limanet and Mumbainet
#
3.3.1 (2022-12-30)#
Features- Wallet: Add Altme Wallet
- Wallet: Add Infinity Wallet
- Wallet: Update Autonomy logo
- Wallet: Update AirGap logo
#
Fixes- Storage: Improve typescript typings
#
3.3.0 (2022-10-13)#
Features- SDK: Multi Region Support: The Beacon SDK now supports multiple server regions. With this feature, the SDK will always try to select the server closest to the user to improve performance. (Note: There is currently only one region being used. This feature will only have an impact once more servers in different regions are being added.)
- Tezos: Human Readable Contract Errors: Sometimes when trying to do a contract call, the contract returns an error. Those errors are often numbers or short strings that tell developers what is wrong, but they are not useful to users. In this update, we added a way to add a simple mapping of error codes to a short description, which will be displayed to the user.
- SDK: Notification Support: The Beacon SDK now supports sending notifications to wallets. This feature is brand new and will require wallets to add support for it. So at the moment, the feature cannot be used, besides for testing on the side of wallet developers. Any wallet that is interested in adding support for notifications through beacon should reach out to us. We're still in the process of writing a proper documentation.
#
3.2.0 (2022-09-21)#
Features- SDK: Replace
libsodium
with@stablelib
. This change will reduce the bundle size and solve build issues related tolibsodium
.
#
Fixes- Matrix: Prepare for an API change in newer synapse versions
#
3.1.4 (2022-09-01)#
Features- API: Add
getDAppClientInstance(config)
method. This method should be used instead ofnew DAppClient(config)
. The advantage of using the new method is that it makes sure there is only one instance created. If it is called multiple times, the same same (cached) instance is returned. This is important because creating multiple client instances can lead to problems. - Tezos: The
TezBlockExplorer
was replaced byTzktExplorer
because tezblock.io now redirects to tzkt.io. - Tezos: Update Autonomy wallet metadata
#
Fixes- Tezos: The value in the TezosNetworks enum for "dailynet" was wrong.
#
3.1.3 (2022-07-06)#
Features- Tezos: Add Kathmandunet, the latest Tezos testnet
#
3.1.2 (2022-06-30)#
Features- Tezos: Add Ghostnet, a persistent testnet
- Tezos: Add Mondaynet, a testnet that resets every Monday
- Tezos: Add Dailynet, a testnet that resets every day
- Pairing Alert: If a browser extension is not installed, clicking on it will now open its website
- EventEmitter: Remove the dependency on the node 'events' module, which caused build issues in some projects
- Error Logger: Developers can now overwrite the error logger used in the SDK to enable features like adding Sentry error logging.
#
Fixes- QR: The button that appears when hovering over the QR code will no longer cover the QR code
#
3.1.1 (2022-06-05)#
Changes- Readme: Added readmes to the individual packages so they are not empty on NPM.
#
Fixes- compatibility: There was a bug where the version of a message was set to the incorrect value, causing compatibility issues in some circumstances.
#
3.1.0 (2022-05-24)#
Features- Sapling: Added basic sapling support. A section about sapling will be added to the docs soon.
- Temple Mobile: Added Temple Mobile Wallet
#
3.0.0 (2022-04-21)Version 3 of the Beacon SDK brings a couple of important changes. The most important ones are:
#
Support for multiple blockchainsThe Beacon network and SDK have always been primarily focussed on providing a secure and flexible communication method between dApps and wallets. Blockchain specific functionalities have always been kept to a minimum to make sure external changes (eg. blockchain upgrades) don't affect the connection.
In this release, we took this idea one step further. We separated the blockchain specific logic from the commmunication logic. This allows for new blockchains and new types of messages to be added more easily.
The first additional blockchain that was added was Substrate
, which will support Kusama
and Polkadot
, as well as any other substrate based chains.
The next feature that will be added in this context is support for Sapling messages on the Tezos network.
#
Multipackage architectureThe different parts of the beacon-sdk are now released as separate packages to NPM. This allows dApps and wallets to have more control over which parts they want to include. For example, the @airgap/beacon-wallet
package does not contain any dApp specific code.
IMPORTANT: Tezos dApps can update to 3.0.0
without any changes. We made sure that 3.0.0
is backwards compatible and contains no breaking changes. All new features (eg. multi blockchain) are using new APIs. Those new APIs will be described in our docs soon.
The following packages are available:
#
PackagesPackage | Description | Version | Downloads | Links |
---|---|---|---|---|
@airgap/beacon-sdk | The backwards compatible version of the beacon-sdk , which contains everything needed to run on a Tezos dApp and wallet. | README.md | ||
@airgap/beacon-dapp | This package contains everything you need to use it on a Tezos dApp. | README.md | ||
@airgap/beacon-wallet | This package contains everything you need to use it in a Tezos wallet. | README.md | ||
@airgap/beacon-blockchain-tezos | This package contains code specific to the Tezos blockchain. | README.md | ||
@airgap/beacon-blockchain-substrate | This package contains code specific to Substrate blockchains. | README.md | ||
@airgap/beacon-core | Components that are shared between dApps and wallets. | README.md | ||
@airgap/beacon-types | Type definitions. | README.md | ||
@airgap/beacon-ui | UI elements that are used in dApps. | README.md | ||
@airgap/beacon-utils | Utility functions. | README.md | ||
@airgap/beacon-transport-matrix | Code specific to the P2P transport. | README.md | ||
@airgap/beacon-transport-postmessage | Code specific to the PostMessage transport. | README.md |
#
Features- Tezos: Add support for Jakartanet
#
2.3.13 (2022-04-13)#
Fixes- UI: On Android, the "Connect Wallet" button was not displayed.
#
2.3.12 (2022-04-08)#
Fixes- UI: Fixed an issue that could result in build issues for projects that use SSR (server-side rendering)
#
2.3.11 (2022-04-08)A security vulnerability was fixed in this release, it is important that all dApps update the beacon-sdk version as soon as possible! For more information, please read this announcement.
#
Features- p2p: Remove deprecated node
beacon-node-0.papers.tech:8448
- p2p: Add
beacon-node-1.hope-5.papers.tech
node
#
2.3.10 (2022-03-14)#
Feature- network: Add Ithacanet
#
2.3.9 (2022-01-04)#
Feature- wallet: Add Naan Wallet
- wallet: Add Autonomy Wallet
#
2.3.8 (2021-11-24)#
Feature- p2p: Add 5 new beacon nodes to the array of default nodes.
#
2.3.7 (2021-11-10)#
Feature- network: Add Idiazabalnet.
#
Fix- toast: The content of the toasts was not responsive in some cases.
#
2.3.6 (2021-11-04)#
Fix- p2p: Improve the reconnection logic if a server is not available anymore.
#
2.3.5 (2021-10-11)#
Fix- toast: Add back "open" button for Kukai and other wallets in toast.
- toast: Make sure the "Reset Connection" option is always shown in the "Request sent" toast.
#
2.3.4 (2021-10-08)#
Fix- reconnect: If an error is encountered during the sending of a message, it will now always show an alert that lets the user reset the connection.
- licence: Add LICENCE file (MIT).
#
2.3.3 (2021-09-29)#
Fix- network: Add support for Hangzhounet.
- web-wallet: Open new tab on button press so it will not be blocked by the browser popup blocker.
- kukai: Update icon.
- ui: Add space between wallet name and logo in "Preparing" toast.
#
2.3.2 (2021-09-10)#
Fix- ui: Dynamically update pairing alert if new extension detected
- migration: Remove migration code for matrix.papers.tech server.
- ui: Avoid listener memory leak in pairing alert.
#
2.3.1 (2021-07-21)#
Fix- types: The "disclaimerText" was not properly set as optional.
- ui: When clicking on "AirGap Wallet" in the pairing alert, the loader was shown instead of the QR code.
#
2.3.0 (2021-07-16)#
Features- wallet: Add Umami wallet to the wallet list
- pairing alert: The connection to the beacon network is now estabilished "lazily". This means that the connection is only established if the user selects a wallet that communicates over the beacon network. Users that select an extension wallet will no longer open an unused connection.
- pairing alert: The
DAppClientOptions
new includes adisclaimerText
field, which will be displayed in the Pairing Alert. - pairing: If the wallet rejects the initial permission request, the active peer will be reset and on the next action the user will be prompted to select his wallet again.
- wallet list: The wallets in the wallet list now include a
key
property, which will allow developers to uniquely identify the wallet. - ui: A new "Prepare" UI state. This UI state can optionally be triggered by the developer in case there is a calculation or network request before the beacon request is sent. This will improve usability because there will be immediate feedback. If you are using taquito, the UI state will be triggered for you internally.
- ui: After clicking on a desktop or web wallet, the alert will show a "connecting" state to indicate that the dApp is waiting for the response of the wallet.
- ui: The wallet list is now ordered alphabetically.
- p2p: Rooms created on the beacon nodes are now
public
instead ofprivate
. This will allow us to improve the reconnection flow in the future. - internal: Improve example dApp and example wallet
- internal: Add E2E tests
#
Fix- peers: The
activePeer
is now no longer persisted in localStorage, which will improve the behavior if users refresh the page during a connection attempt. - ui: Small improvements and bug fixes in the alert.
#
2.2.10 (2021-07-05)#
Features- p2p: Add
beacon-node-2.sky.papers.tech
node to the default nodes
#
2.2.9 (2021-06-16)#
Features- ui: Add "open wallet" button to "request" toast. This button will appear when paired with Kukai Wallet or a mobile wallet (while on mobile)
- p2p: Replace
matrix.papers.tech
node withbeacon-node-1.sky.papers.tech
- p2p: Use
room_version v5
when creating rooms - p2p: Add
forceNewConnection
parameter toaddPeer
on theWalletClient
class. The property istrue
by default (previous behavior), but it can be set to false in case an existing peer is re-added, but no new connection should be initiated.
#
Fixes- p2p: Using the "Reset Connection" button no longer requires a refresh
#
2.2.8 (2021-06-03)#
Fixes- p2p: Cached rooms are updated whenever a message is received or a new invite is received. This prevents peers from sending messages to "old" rooms where the other peer potentially no longer has access to
- p2p: Improved the behaviour of the "re-pairing" for previously connected dApps. To prevent old state from affecting the connection, a new room is now always created when a connection is initialised
- p2p: "Reset Connection" now works properly by making sure all old state is reset
- p2p: Deterministically select the relay server based on the public key so it's always the same on by default
- p2p: The SDK now resumes the connection after the server was unreachable for a while
#
2.2.7 (2021-05-16)#
Features- network: Add Granadanet
- p2p: Add second beacon-node to default nodes array
- p2p: Improve reconnect behaviour if the previously used node is not reachable
#
Fix- ui: Limit toast width, which was causing styling issues on some devices
#
2.2.6 (2021-04-29)#
Fixes- ui: Ignore styling from parent page
- types: Make operation request properties optional instead of omitting them
#
2.2.5 (2021-04-26)#
Fixes- p2p: Remove unknown rooms and retry
#
2.2.4 (2021-04-16)#
Features- florencenet: Add Florencenet
- p2p: Support federated matrix servers
#
Fixes- p2p: Fix timing issues during connection setup to improve reliability
#
2.2.3 (2021-03-24)#
Fixes- UI: Make alert scrollable
#
2.2.2 (2021-03-03)#
Features- temple: Rename "Thanos" to "Temple"
- kukai: Add edonet URL
#
Fixes- error: Fix removing of dom element that would result in an error
#
2.2.1 (2021-02-08)#
Fixes- signing: The validation of the
OPERATION
andMICHELINE
payloads is now correct - alert: The page no longer scrolls down when the alert opens
- alert: Alert width fixed on mobile
- toast: Toasts are now sticky to the top of the window, not the top of the page
- toast: Toast height fixed on iOS
- toast: If an acknowledge message is received after the response, it will be ignored
- toast: The close button will now always be shown in the "awaiting" state
- toast: Remove unnecessary "href" from link in error toast
- toast: New toasts that are triggered while another one is being shown will now be handled correctly
#
2.2.0 (2021-02-03)#
FeaturesUI Improvements: We changed the flow of the UI from the ground up. When a new message is sent from the dApp, the "request sent" toast now sticks to the top right of the page. It shows a loading animation and also includes the name (and logo) of the wallet where the request has been sent to. The toast will update whenever new information is received from the wallet (eg. request acknowledgement or response). Only the pairing information and details of errors will be displayed in a blocking alert. As always, all of these UI elements can be overwritten if dApp developers want to use their own UI.
UI Improvements: Default UI Elements in Beacon now use Shadow Dom. This will encapsulate the styling of the UI elements, so the styling of the page will no longer affect the styling of the beacon-sdk UI elements, and vice versa.
Dark Mode: The dApp developer can now choose between a "dark" and "light" color theme. This will change the look of both alerts and toasts.
Errors: The
beacon-sdk
now allows for RPC-Errors to be passed in theTRANSACTION_INVALID_ERROR
response. Errors MUST be displayed in the wallet. This change does not change that. It simply allows dApps that expect certain errors to provide more insights into what went wrong. dApps are not required to display the details of an error, but they can choose to do so if it improves the user experience.Debug: New debug methods have been introduced. To activate logs from the
beacon-sdk
during development, it is possible to callsetDebugEnabled(true)
. This will enable logs throughout thebeacon-sdk
.
The beacon-sdk
will now also listen to the beaconSdkDebugEnabled
variable on the global window object. This will allow browser extensions (eg. Spire) to set the debug flag to true on production websites, which will help debugging on production dApps.
- UI Elements: All default UI Elements / Event Handlers can be removed at once by setting the
disableDefaultEvents
flag in theDAppClientOptions
to true. Keep in mind that this will also disable the Pairing Alert. If you want to keep the Pairing Alert, you will have to add those default handlers again. An example would be:
- Alert: A click outside the alert will now dismiss the alert
- Logs: Add warning logs when the QR code gets too big and when muliple Clients are created
- SigningType: Add
OPERATION
andMICHELINE
SigningTypes. The payload of theOPERATION
type has to start with03
and theMICHELINE
type has to start with05
- Beacon Extension: The "Beacon Extension" has been renamed to "Spire".
- dApp / Wallet metadata: The dApp and wallet metadata (name and icon) are now included in the pairing request / response
#
Fixes- Matrix Performace Improvements: Fixed a timing issue that lead to slower responses
- DAppClient:
setActiveAccount
now updates and persists the active peer - Types: The type of
matrixNodes
was incorrect - Docs: Fixed a typo in link a docs link
#
2.1.0 (2021-01-22)#
Featuresedonet: Add Edonet
carthagenet: Remove Carthagenet
accessibility: Close alerts with "ESC" button
accessibility: Tab through selection on pairing alert and select item with enter
DAppClient: add
clearActiveAccount()
method. This is just a wrapper forsetActiveAccount()
but should make it more clear how to clear an account.
#
Bug Fixes- errors: Error messages were thrown internally in some cases and could not be caught by the developer
- broadcast-error: The "Broadcast" error was mistakenly displayed as a "Network not supported" error
- init: If the
init
method was called manually by the developer, the following requests would never resolve - pageload: The transport is now set on pageload even if
init
is not called - pageload: If a peer was connected but no permissions were shared, a refresh will now reconnect to the previous peer
- deeplink: Deeplinks on iOS did not work in some browsers
- pairing: Center QR code
- types: "kind" of the
OriginationOperation
was wrong
#
2.0.1 (2021-01-11)#
Features- pairing: Add Galleon Desktop Wallet
#
2.0.0 (2020-12-08)Beacon v2.0.0 is a big update from v1.x. The APIs on the DApp and Wallet side stayed mostly the same. There may be some minor changes in the object structure, but the majority of the changes are internal and should not affect the developers.
We highly encourage developers to upgrade to v2. The most notable new features are:
- Support for multiple Browser Extensions (eg. Thanos and Spire)
- Support for mobile, browser and desktop Wallets
- Mobile support via Deeplinking
- Secure and encrypted communication between DApp and Browser Extension
#
Notable changesall: changed
beaconId
tosenderId
in all objectssenderId: The senderId property now has to be a hash of the publicKey of the sender
P2PTransport: The pairing-response from the Wallet is no longer only an encrypted public key, but rather an object including the public key (with additional metadata)
P2PPairInfo: Now includes a version and additional metadata
P2PPairInfo: JSON is now
base58check
encoded (eg. QR code)PostMessageTransport: The communication is now encrypted
PostMessageTransport:
getAvailableExtensions
returns an array of available browser extensionsDAppClient: Having an Extension installed on page load will no longer automatically select that extension as the active peer. The user always has to select his preferred wallet type.
Acknowledge Message: The Wallet will now send an acknowledge message immediately after a request is received.
Disconnect Message: There is now a disconnect even that can be sent from both sides and indicates that the connection will no longer be listened to
Error Message: A new error message type that makes it clear the message is an error
#
1.2.0 (2020-11-13)#
Features- delphinet: Add delphinet support
#
1.1.1 (2020-08-21)#
Features- build: Add esmodule files
- libsodium: Update to 0.7.8
#
1.1.0 (2020-06-16)#
Features- build: Add es5 build
#
1.0.5 (2020-06-10)#
Bug Fixes- events: The
P2P_CHANNEL_CONNECT_SUCCESS
event will now return theP2PPairInfo
of the newly connected peer.
#
1.0.4 (2020-06-09)#
Bug Fixes- active-account: calling
await dappClient.getActiveAccount()
will now always wait for the storage to be read, so it will only be undefined if there was actually no active account set before.
#
1.0.3 (2020-06-05)#
Bug Fixes- p2p: ignore dupliacte messages
- alert: fix timeout not working if multiple alerts are open
#
1.0.2 (2020-06-04)#
Bug Fixes- error: the alert for beacon errors was not displayed
#
1.0.1 (2020-06-04)#
Bug Fixes- operation-request: use network settings of ActiveAccount by default
- alert: multiple alerts can now all be closed independently
- storage: update stored information if newer one is available (eg. AccountInfo after a second PermissionRequest)
#
1.0.0 (2020-05-29)#
Bug Fixes- peer: type of peer methods was
string
instead ofP2PPairInfo
#
0.7.0 (2020-05-28)#
Breaking Changes- all: changed
pubkey
andpubKey
topublicKey
everywhere - events: added new event type "INTERNAL_ERROR" that will be triggered when an important handled error occurs, for example if
requestOperation
is called but there is noactiveAccount
. - account-info / permission-info: Change
connectedAt
type fromDate
tonumber
. - all: due to the changes in the interfaces, the storage of accounts and permissions will be invalid and has to be reset (eg. clearing application cache)
#
Features- DAppClient: when removing peers, remove related accounts as well
- DAppClient: when removing an account that happens to be the activeAccount, set activeAccount to null
- WalletClient: persist appMetadata and permissions
- WalletClient: when removing peers, remove related permissions as well
#
Bug Fixes- storage: clone default values before returning to prevent them from being overwritten
#
0.6.1 (2020-05-22)#
Bug Fixes- storage: remove FileStorage because it references the "fs" module and can cause issues when used in the brower
#
0.6.0 (2020-05-21)#
Breaking Changes- QR: fixed a bug where the QR data object was stringified 2 times, resulting in an escaped string
#
Bug Fixes- P2P: show QR Alert again if no peer has connected
- P2P: do not throw error when decryption fails, because this is expected to happen sometimes
- P2P: fixed error when persisting matrix room, resulting in an error when trying to read rooms from local storage
- BigNumber: use BigNumber instead of native BigInt to support Safari
#
0.5.0 (2020-05-15)#
Internals- typescript: update to 3.9.2
- typescript: enable strict mode
#
Bug Fixes- account-identifier: pass Buffer to bs58check encode method
#
0.4.4 (2020-05-14)#
Breaking Changes- p2p-communication-client: make methods async
#
0.4.3 (2020-05-13)#
Features- alert: link to correct network
#
0.4.2 (2020-05-13)#
Features- alert: improve styling and wording
#
0.4.1 (2020-05-12)#
Bug Fixes- alert: inline beacon logo
#
0.4.0 (2020-05-12)#
Internals- matrix: replace
matrix-js-sdk
with internal implementation
#
0.3.0 (2020-05-08)#
Breaking Changes- events: pass overrides in constructor
#
Features- alert: improve styling and wording
- events: send success events when receiving a beacon response
#
Bug Fixes- get-address-from-pubkey: handle edpk public keys
#
0.2.0 (2020-04-30)#
Breaking Changes- beacon: remove read_address permission
- account-identifier: remove account identifier from beacon message
#
Features- beaconId: generate keypair and use public key as
beaconId
- errors: add human readable messages
#
Bug Fixes- transport: fix detection of chrome extension
#
0.1.1 (2020-04-29)#
Internals- exposed-promise: use class instead of function to preserve internal state
#
Bug Fixes- active-account: read active account as early as possible
#
0.1.0 (2020-04-29)Initial stable beta release