- fixed: Correctly update info-server payload in the background.
- changed: Log unknown swap errors as a crash.
- fixed: Barcode login works again.
- added: Support HMAC-based API keys.
- changed: Allow transactions tagged with actions through spam filter
- added:
minReceiveAmount
toEdgeSwapQuote
- the minimum amount that can be received from the swap
- added: Report key wallet creation dates.
- added:
EdgeContext.fetchChallenge
, to request an account-creation CAPTCHA. - added: Accept a challengeId in
EdgeContext.usernameAvailable
- added: Log HTTP 409 errors from login server with breadcrumbs.
- fixed: Use full URI to determine whether a request has previously succeeded CORS
- added:
EdgeStreamTransactionOptions.spamThreshold
.
- added:
EdgeCurrencyEngine.otherMethodsWithKeys
. These methods will be added toEdgeCurrencyEngine.otherMethods
, but the core will insert private keys as the first parameter.
- added:
EdgeCurrencyTools.getDisplayPublicKeys
to get the master public keys for a wallet. - added:
EdgeCurrencyConfig.getTokenId
to create a tokenId from an EdgeToken
- added:
EdgeCurrencyWallet.signBytes
to sign raw bytes with a private key. - changed: Randomize data-sync start times.
- fixed: Work with React Native bridgeless mode on iOS and Android.
- added:
EdgeCurrencyConfig.getTokenId
to create a tokenId from an EdgeToken
- fixed: Edge case for filtering transactions with empty txs (zero amount & fee)
- added: Add
makeMemoryWallet
method to ephemeral wallet objects that can query balances and spend funds
- fixed: Correctly handle
null
fetch bodies on Android.
- fixed: Filter transactions with empty (zero) nativeAmount and networkFee
- changed: Replace the CORS proxy servers with a fully native fallback on React Native.
- added: New
enableRbf
field onEdgeSpendInfo
- changed: Deprecated
rbfTxid
field onEdgeSpendInfo
- fixed: Add missing Swift import statement.
- added: Better documentation comments for the
EdgeObjectTemplate
types. - changed: Expose the
EdgeTransaction.feeRateUsed
provided by the engine, and only use the on-disk copy as a fallback.
- added:
EdgeContextOptions.airbitzSupport
, for loading legacy Airbitz data from disk. - fixed: Export the
EdgeObjectTemplate
type. - fixed: TypeScript v5 compatibility.
- added: New
'failed'
value to confirmations field onEdgeTransactions
- added:
EdgeCorePluginOptions.infoPayload
, containing arbitrary JSON provided by the info server. - added:
EdgeCurrencyPlugin.updateInfoPayload
, called when we the core fetches a fresh payload from the info server.
- fixed: Correctly save
enabledTokenIds
when creating a new wallet.
- added: Accept an
enabledTokens
parameter to thecreateCurrencyWallets
method.
- fixed: Token activation causing error and insufficient funds when used with core 1.x plugins
- added: Make swap timeouts adjustable.
- fixed: Provide a
currencyCode
fallback toEdgeCurrencyEngine.getMaxSpendable
.
- added: Missing asset action types (claim, claimOrder, swapNetworkFee, and transferNetworkFee).
- fixed: Avoid superfluous property updates.
- fixed: Correctly populate
tokenId
onmakeSpend
when using legacy currency plugins. - fixed: Correctly write
assetAction
to disk.
- added:
EdgeCurrencyWallet.saveTxAction
to add/editEdgeTransaction.savedAction
- added:
EdgeTransaction.assetAction
&EdgeSpendInfo.assetAction
for action info that is saved per token in a transaction. - added:
EdgeTransaction.savedAction
&EdgeSpendInfo.savedAction
as editable version ofchainAction
- added:
EdgeTxActionFiat
action type for fiat buy/sells - added:
EdgeTxActionTokenApproval
action type for token approval transactions - changed: Extend
EdgeTxActionSwap
to fully replaceEdgeSwapData
- changed: Make
EdgeCurrencyInfo.defaultSettings
andEdgeCurrencyInfo.metaTokens
optional. - changed: Rename
EdgeTransaction.action
tochainAction
- changed: Require
tokenId
to be null or string and eliminatecurrencyCode
inEdgeCurrencyWallet.getTransactions/getReceiveAddress
,EdgeSpendInfo
,EdgeSwapRequest
,EdgeTxAction.EdgeAssetAmount
,saveTxMetadata
- removed:
EdgeAccount.rateCache
and related types, as well as the rate plugin concept. - removed:
EdgeContext.deleteLocalAccount
- removed:
EdgeContext.listUsernames
- removed:
EdgeContext.pinLoginEnabled
- removed:
EdgeCurrencyInfo.symbolImage
andsymbolImageDarkMono
. - removed:
EdgeLoginRequest.displayImageUrl
- removed:
listRecoveryQuestionChoices
and related types. - removed:
validateMemo
methods and related types.
- added:
EdgeCurrencyCodeOptions.tokenId
. This upgradesgetBalance
,getNumTransactions
, andgetReceiveAddress
. - added:
EdgeCurrencyEngineCallbacks.onTokenBalanceChanged
, which is thew new balance-update callback. - added:
EdgeCurrencyWallet.balanceMap
, which reports balances by tokenId. - added:
EdgeParsedUri.tokenId
- added:
EdgeTokenId
type definition. - added:
EdgeTransaction.tokenId
. - added: Allow deleting metadata fields by passing
null
tosaveTxMetadata
. - deprecated:
EdgeCurrencyEngineCallbacks.onBalanceChanged
. UseonTokenBalanceChanged
instead. - deprecated:
EdgeParsedUri.currencyCode
. UsetokenId
instead. - deprecated:
EdgeTransaction.currencyCode
. UsetokenId
instead.
- added: Extra cors servers to distribute load
- added:
EdgeAccount.createCurrencyWallets
, for creating multiple wallets at once.
- added: Accept an
onNewTokens
callback fromEdgeCurrencyEngine
. - added: Emit an
enabledDetectedTokens
event when auto-enabling tokens. - added: Expose auto-detected tokens as
EdgeCurrencyWallet.detectedTokenIds
. - changed: Save enabled tokens by their tokenId, not by their currency code.
- fixed: Add missing
export
to theEdgeCorePluginFactory
type definition.
- added:
EdgeAccount.fetchSwapQuotes
, to return all relevant quotes, and not just the best one.
- added:
EdgeTransaction.action
to tag known smart contract transaction types (swap, stake, etc.).
- added: Support optimized login syncing, checking to see if our credentials are up-to-date before performing a periodic login.
- added: Export cleaners for server types and testing data types.
- deprecated:
EdgeContext.listRecoveryQuestionChoices
. The GUI provides its own localized strings now.
- added: Add a
ChallengeError
and related types, which will allow the login server to request CAPTCHA validation. - fixed: Correctly pass
EdgeSpendTarget.memos
through to currency plugins. - fixed: Do not let
EdgeTransaction.memos
be undefined, even for legacy plugins. - fixed: Restore "0x" prefix support for legacy hex memos.
- added: Currency-info support for multiple memos per transaction.
- added:
EdgeCurrencyInfo.memoOptions
, lists acceptable memo types. - added:
EdgeCurrencyInfo.multipleMemos
, set if a currency supports multiple memos in the same transaction. - deprecated:
EdgeCurrencyInfo.memoMaxLength
- deprecated:
EdgeCurrencyInfo.memoMaxValue
- deprecated:
EdgeCurrencyInfo.memoType
. Note: If it is not set correctly, legacy plugins will no longer receive memos. Some buggy plugins forgot to do this, so those plugins will stop receiving memos. This is not a breaking change, though, since this field was always mandatory.
- added:
- added: Spending support for multiple memos.
- added:
EdgeSpendInfo.memos
- deprecated:
EdgeSpendTarget.memo
- added:
- added: Transaction history support for on-chain memos.
- added:
EdgeTransaction.memos
- deprecated:
EdgeTransaction.spendTargets.memo
- added:
- added: New infoServer and syncServer options for EdgeContextOptions
- fixed: Allow PIN changes on accounts without usernames.
- changed: Change the
error
event type toany
. This will becomeunknown
in a future breaking release.
- changed: Reduced YAOB throttle to 50ms and apply throttle to return bridge calls
- added: canBePartial and maxFulfillmentSeconds to EdgeSwapQuote
- added: skipBlockHeight config option
- changed: Throttle the react-native bridge to 500ms. This will create some lag, but should improve overall performance.
- changed: Move the Android namespace definition out of the
AndroidMaifest.xml
and into thebuild.gradle
file.
- fixed: Interpret HTTP 418 responses from the CORS proxy as errors.
- changed: Remove
fetch
fallback logic. No proxy servers will be used. - changed: The
fetchCors
method is no longer deprecated. Use this if CORS might be an issue. Do not use this for any secrets or credentials.
- fixed: Escape bridge strings closer to serialization, for possibly better performance.
- fixed: Fallback to CORS-safe fetch functions on all errors to fix inconsistency with error messages across platforms.
- changed: Add fallback to bridged
fetch
if request to edge-cors-proxy server fails.
- changed: Added a fallback to edge-cors-proxy server to
fetch
method onEdgeIo
.
- fixed: Enable WebView debugging on iOS 16.4+
- fixed: Correctly return transactions after a resync.
- added: Add an
EdgeAccount.getPin
method. - fixed: Allow the
EdgeAccount.username
property to update after callingchangeUsername
.
- added: Add an
EdgeCurrencyWallet.streamTransactions
method. - deprecated: Pagination options for
getTransactions
. UsestreamTransactions
if you need pagination. - fixed: Add the correct URI to
changeUsername
, so it works. - fixed: Send a 'transactionsChanged' event when editing metadata.
- added: Add an
EdgeContext.forgetAccount
method. - deprecated:
EdgeContext.deleteLocalAccount
. UseEdgeContext.forgetAccount
instead. - fixed: Do not throw a "No username in reply" error when logging into light accounts via barcode.
- fixed: Do not crash when accessing
EdgeAccount.username
on an account that has none.
- changed: Convert
createAccount
to named parameters - changed: Return an array from
fetchLoginMessages
- changed: Fix the
listRecoveryQuestionChoices
return type - changed: Allow usernames to be
undefined
- removed: Ethereum hacks
- Ethereum address derivation.
EdgeAccount.signEthereumTransaction
- removed: Deprecated client-side token methods
EdgeCurrencyEngine.getEnabledTokens
(no longer used)EdgeCurrencyEngine.getTokenStatus
(no longer used)EdgeCurrencyWallet.addCustomToken
EdgeCurrencyWallet.changeEnabledTokens
EdgeCurrencyWallet.disableTokens
EdgeCurrencyWallet.enableTokens
EdgeCurrencyWallet.getEnabledTokens
- removed: Deprecated display-key properties
EdgeCurrencyWallet.displayPrivateSeed
EdgeCurrencyWallet.displayPublicSeed
- removed: Deprecated
EdgeAccount.loginKey
property - removed: Deprecated
keys
properties onEdgeAccount
andEdgeCurrencyWallet
- removed: Deprecated
EdgeTransaction.amountSatoshi
- removed: Deprecated
options
prop from theMakeEdgeContext
component. - removed: Unused
EdgeTransaction.wallet
- removed: Unused
getTransactions
parameters - removed: Unused type definitions
EdgeBitcoinPrivateKeyOptions
EdgeCreatePrivateKeyOptions
- removed: No longer allow the OTP key to be passed as
EdgeAccountOptions.otp
. This parameter only accepts 6-digit OTP codes now. Pass the key asEdgeAccountOptions.otpKey
instead.
- deprecated:
EdgeContext.pinLoginEnabled
. UseEdgeContext.localUsers
instead. - fixed: Correctly handle
startEntries
ingetTransactions
, by always returning the requested number of transactions.
- added:
EdgeAccount.changeUsername
. - added:
EdgeAccount.getLoginKey
. - deprecated:
EdgeAccount.loginKey
. UseEdgeAccount.getLoginKey
instead. - deprecated:
EdgeContext.listUsernames
. UseEdgeContext.localUsers
instead.
- fixed: Return transactions from getTransactions, even if they have no on-disk metadata
- changed: Remove deprecated methods in unit tests
- fixed: Return transactions from getTransactions, even if they have no on-disk metadata
- added:
EdgeUserInfo.username
. - added: Provide
EdgeAccount
methods for reading public and private keys:getDisplayPrivateKey
getDisplayPublicKey
getRawPrivateKey
getRawPublicKey
- added: Matching
EdgeCurrencyTools
methods for getting display keys. - deprecated:
EdgeCurrencyEngine
methods for getting display keys. - deprecated:
EdgeAccount
andEdgeCurrencyWallet
key properties.
- added: Log any swap plugins that time out.
- added:
EdgeParsedUri.minNativeAmount
. Note: This is not a breaking change, but we incorrectly updated the version number as if it were.
- fixed: Stop incorrectly writing metadata for sends. This should make editing metadata more stable.
- fixed: Remove check that spentTargets.length > 0 in makeSpend
- changed: Removed private keys from
walletInfo
formakeCurrencyEngine
- added: Add an
EdgeTransaction.isSend
flag.
- fixed: Remove check that spentTargets.length > 0 in makeSpend
- fixed: Incorrectly formed
privateKeys
argument forsignTx
call to the engine
- fixed: Passing only the private keys to
EdgeEnginePrivateKeyOptions['privateKeys']
forsyncNetwork
, instead of the entireEdgeWalletInfo
- added: Pass private keys to
EdgeCurrencyEngine.signTx
and similar functions. - changed: Only accept base-10 integer balances from currency engines, and ignore all other balance strings.
- removed: Make deprecated token methods optional on
EdgeCurrencyEngine
, so they can be removed.
- added: Add
expireDate
toEdgeParsedUri
- fixed: Update
denominationToNative
andnativeToDenomination
to look atallTokens
, instead of the legacy token lists.
- added:
EdgeAccount.currencyEngineErrors
- these are set for wallets that fail to load. - added:
EdgeAccount.waitForAllWallets()
- resolves once all wallets have either loaded or failed (but balances may still be syncing).
- added: Provide login request images for both dark & light mode apps as
EdgeLoginRequest.displayImageDarkUrl
andEdgeLoginRequest.displayImageDarkUrl
. - added:
EdgeFakeContextOptions.allowNetworkAccess
, which allows non-Edge traffic to pass through to the real network. - added:
EdgeWalletInfoFull.migratedFromWalletId
, which can be saved when sweeping funds from an old wallet to a new wallet. - deprecated:
EdgeLoginRequest.displayImageUrl
. Use the new dark or light mode images instead.
- added: Support for token activation
- changed: Convert source code to TypeScript internally. No changes should be visible externally, aside from some file locations.
- added: New 'syncing' to confirmations API
- fixed: Bug in
validateConfirmations
function incorrectly inferring a transaction as 'dropped'
- fixed: Re-publish with missing files.
- changed: Make sensitive account & wallet properties, like keys, non-enumerable.
- changed: Use the pluginId as the wallet logging prefix, instead of the currency code.
- added: Always-enabled tokens. The currency engine checks these for balances and transactions, but they do not appear in the per-wallet enabled token lists.
EdgeCurrencyConfig.alwaysEnabledTokenIds
EdgeCurrencyConfig.changeAlwaysEnabledTokenIds
- added:
EdgeCurrencyTools.checkPublicKey
, which provides a mechanism for currency plugins to refresh their cached public keys if necessary. - added:
EdgeSwapInfo.isDex
andEdgeSwapRequestOptions.preferType
, to always prefer DEX swaps over centralized swaps. - changed: Always select the "transfer" plugin if it returns a quote, regardless of price.
- added: Accelerate Transaction API
- fixed: Clean swap quotes before logging to prevent circular reference error
- fixed: Export more accurate TypeScript definitions for our React Native components.
- added: New options for getReceiveAddress
- changed: Upgrade biggystring to 4.0.0
- changed: Increase BCH replay protection transaction value amount
- changed: Upgrade redux to 4.2.0
- changed: Upgrade redux-keto to 0.3.5
- fixed: Login server override testing
- added:
EdgeTransaction.walletId
. - added: Add the swap request to the quote object as
EdgeSwapQuote.request
. - changed: Change login server to login.edge.app, and filter which domains we allow.
- deprecated:
EdgeTransaction.wallet
. UseEdgeTransaction.walletId
instead.
- added: Specifying token spends by their ID, instead of their imprecise currency code:
EdgeSpendInfo.tokenId
EdgeSwapRequest.fromTokenId
EdgeSwapRequest.toTokenId
- deprecated: Spending tokens by their currency code.
EdgeSpendInfo.currencyCode
EdgeSwapRequest.fromCurrencyCode
EdgeSwapRequest.toCurrencyCode
- fixed: Correctly pass
EdgeSpendInfo.pendingTxs
to the currency plugin.
- added: Include the
loginId
inEdgeContext.localUsers
. - added: Accept an optional metadata parameter to
EdgeSwapQuote.approve
.
- added:
hex
option for memoType
- fixed: Correctly pass
EdgeSpendInfo.skipChecks
to the currency plugin.
- added:
EdgeContext.clientId
. - added:
EdgeSpendInfo.pendingTxs
andEdgeSpendInfo.skipChecks
flags. - fixed: Show useful information when logging errors, instead of just
{}
.
- changed: Allow individual plugins to resist being loaded by returning
undefined
instead of anEdgeCurrencyPlugin
object.
- changed: Randomly generate loginIds so recycled usernames don't cause conflicts
- fixed: Upgrade edge-sync-client to include patch
- added: Add optional from/to parameter to min and max swap errors
- upgrade: yaob dependency to include error serialization fix
- added: New
deleteRemoteAccount
function to theEdgeAccount
object
- fixed: Loosen constraint for checking tx confirmation status in 'getTransaction' and Make the condition identical to the condition in onBlockHeightChanged.
- added: New Confirmations API on
EdgeTransaction
type
- fixed: Do not uselessly re-save the custom tokens on every login.
- fixed: Correctly load custom tokens (regression from last release).
- fixed: Correctly load tokens from the legacy settings file.
- fixed: Correctly report errors when adding invalid custom tokens.
- added:
EdgeCurrencyConfig.allTokens
. - fixed: Do not erroneously enable tokens when editing their currency codes.
- fixed: Never return
undefined
forEdgeCurrencyConfig.customTokens
. - fixed: Handle token edits that change the
tokenId
orcurrencyCode
. - removed: Do not treat parent currencies as tokens. This logic was unused, so update the documentation.
- added:
EdgeCurrencyWallet.currencyConfig
. - changed: Save custom tokens to disk.
- added:
EdgeCurrencyConfig.addCustomToken
. - added:
EdgeCurrencyConfig.changeCustomToken
. - added:
EdgeCurrencyConfig.removeCustomToken
. - deprecated:
EdgeCurrencyWallet.addCustomToken
.
- added:
- changed: Save enabled tokens to disk.
- added:
EdgeCurrencyWallet.changeEnabledTokenIds
- added:
EdgeCurrencyWallet.enabledTokenIds
- deprecated:
EdgeCurrencyWallet.changeEnabledTokens
- deprecated:
EdgeCurrencyWallet.disableTokens
- deprecated:
EdgeCurrencyWallet.enableTokens
- deprecated:
EdgeCurrencyWallet.getEnabledTokens
- added:
- changed: Update the token API for currency plugins. Plugins should implement the new methods, then turn the old methods to no-ops.
- added: Optional
EdgeCurrencyEngine.changeCustomTokens
- added: Optional
EdgeCurrencyEngine.changeEnabledTokenIds
- added: Optional
EdgeCurrencyTools.getTokenId
- deprecated:
EdgeCurrencyEngine.addCustomToken
- deprecated:
EdgeCurrencyEngine.disableTokens
- deprecated:
EdgeCurrencyEngine.enableTokens
- deprecated:
EdgeCurrencyEngine.getEnabledTokens
- deprecated:
EdgeCurrencyEngine.getTokenStatus
- added: Optional
- fixed: Avoid an internal crash on logout while reloading addresses.
- fixed: Make our code compatible with older Java versions again.
- fixed: Use the correct React dependency in the iOS podspec.
- changed: Allow individual log sources to be set to
silent
. - changed: Move some string manipulations off of the main Java thread.
- changed: Perform React Native disk accesses on their own threads.
- added:
EdgeCurrencyInfo.canReplaceByFee
. - changed: Make
denominationToNative
andnativeToDenomination
only look at the currencies available on the current wallet.
- fixed: Stop adding
undefined
entries toEdgeAccount.currencyWallets
.
- added: Define a new
EdgeToken
type and make that available asEdgeCurrencyConfig.builtinTokens
andEdgeCurrencyConfig.customTokens
. - added: Define a new
EdgeCurrencyPlugin.getBuiltinTokens
method, and use that to populateEdgeCurrencyConfig.builtinTokens
when available. - added: Pass
EdgeToken
fields toEdgeCurrencyEngine.addCustomToken
, along with the existingEdgeMetaToken
fields. - deprecated:
EdgeCurrencyInfo.defaultSettings
- deprecated:
EdgeCurrencyInfo.metaTokens
- deprecated:
EdgeCurrencyInfo.symbolImage
- deprecated:
EdgeCurrencyInfo.symbolImageDarkMono
- added: Include an
imported
flag with all new wallet keys, to indicate whether they were derived freshly or imported from user-entered data. - fixed: Do not hang forever if creating a currency engine fails.
- changed: Add comments and improve organization in the public types file.
- changed: Use cleaners to load & save many files for additional safety.
- fixed: Improve wallet start-up performance by loading fewer files.
- changed: Send the optional
keyOptions
parameter through theimportKey
methods. - fixed: Remove JCenter from the Android build file.
- added:
EdgeCurrencyWallet.stakingStatus
, along with matching engine methods for returning and updating this. - fixed: Removed unnecessary C++ compiler flags.
- fixed: Correctly select swaps with the best price.
- fixed: Correctly prefer swap plugins with active promo codes.
- changed: Add more logging to the swap procedure.
- fixed: Only write the
deviceDescription
on sent transactions. - fixed: Add a native
requiresMainQueueSetup
method to silence a warning on iOS.
- changed: Write files atomically on Android, so out-of-disk and other errors do not lead to data corruption.
- fixed: Upgrade edge-sync-client, so info server errors are no longer fatal.
- fixed: Do not destroy the core WebView when opening Safari links on iOS.
This release completely changes the way React Native works, both to improve performance and to make integration and debugging much easier.
- changed: Simplify the React Native integration to "just work".
- Stop depending on external libraries such as react-native-fast-crypto, react-native-randombytes, or react-native-webview.
- Use React Native auto-linking to integrate all native code, HTML, and Javascript needed to run the core.
- Accept core plugins via a
pluginUris
prop toMakeEdgeContext
orMakeFakeEdgeWorld
. - Allow core debugging by running
yarn start
in this repo to start a dev server, and then setting thedebug
prop to true. - Accept an
allowDebugging
prop on Android to enable WebView debugging in general (useful for debugging plugins).
- changed: Require
EdgeCurrencyEngine
methods to return promises. - changed: Mark methods as
readonly
in the TypeScript definitions, to match what Flow was already doing.
- fixed: Allow logins with an appId to approve or reject vouchers.
- added: Allow maximum swaps by passing "max" to
EdgeSwapRequest.quoteFor
. - added: Add an
EdgeCurrencyEngine.getMaxSpendable
method for native max-spend calculations.
- added:
EdgeSpendTarget.memo
, which is a renamed version ofEdgeSpendTarget.uniqueIdentifier
. - added:
EdgeCurrencyInfo.memoType
,EdgeCurrencyInfo.memoMaxLength
,EdgeCurrencyInfo.memoMaxValue
. Use these to learn which currencies support memos. - added:
EdgeCurrencyTools.validateMemo
&EdgeCurrencyWallet.validateMemo
. Use these to check memos for validity before sending. - deprecated:
EdgeSpendTarget.uniqueIdentifier
. UseEdgeSpendTarget.memo
instead.
- fixed: Gracefully handle errors while reading the exchange-rate hint cache.
- fixed: Correctly match server-returned children with their on-disk stash entries. This produces more accurate errors if the server loses a child.
- fixed: onWcNewContractCall callback type
- fixed: Bitcoin and Bitcoin xpub documentation
- added: Implement TypeScript utilities in Flow
- added: Wallet Connect types and onWcNewContractCall callback
- updated: Ethereum, Bitcoin, and Bitcoin xpub documentation
- fixed: Type-safety and null checks
- fixed: Allow
import 'edge-core-js/types'
to work in TypeScript.
- changed: Upgrade cleaners to v0.3.11
- fixed: Restore Webpack production mode
- fixed: Limit the number of documents uploaded to the sync server in one request.
- fixed: Upgrade to edge-sync-client v0.2.1, which improves the sync-server retry logic.
- changed: Use edge-sync-client to retrieve the list of sync servers instead of a hard-coded list.
- fixed: If multiple metadata files exist for a single transaction, always load the oldest one.
- fixed: Ensure that transactions never have
undefined
as anativeAmount
. - fixed: Change the WebPack build settings to allow easier debugging.
- fixed: Fix the React Native WebView bundle to work on really old devices.
- Replace nullish coalescing operator with ternary
- added: Save the device description on sent transactions.
- added: Add an optional
InsufficientFundsError.networkFee
field. - fixed: Avoid performing back-to-back initial syncs.
This is a breaking release to remove various deprecated features that have accumulated.
- Remove several methods and properties:
EdgeAccount.exchangeCache
- UseEdgeAccount.rateCache
instead.EdgeContext.getRecovery2Key
- UseEdgeUserInfo.recovery2Key
instead.EdgeContext.pinExists
- UseEdgeUserInfo.pinLoginEnabled
instead.EdgeContext.on('login')
- UseEdgePendingEdgeLogin.watch('account')
instead.EdgeContext.on('loginError')
- UseEdgePendingEdgeLogin.watch('error')
instead.EdgeContext.on('loginStart')
- UseEdgePendingEdgeLogin.watch('username')
instead.EdgeCurrencyWallet.exportTransactionsToCSV
- Moved to edge-react-gui project.EdgeCurrencyWallet.exportTransactionsToQBO
- Moved to edge-react-gui project.EdgeCurrencyWallet.getBalance
- UseEdgeCurrencyWallet.balance
instead.EdgeCurrencyWallet.getBlockHeight
- UseEdgeCurrencyWallet.blockHeight
instead.EdgeCurrencyWallet.getDisplayPrivateSeed
- UseEdgeCurrencyWallet.displayPrivateSeed
instead.EdgeCurrencyWallet.getDisplayPublicSeed
- UseEdgeCurrencyWallet.displayPublicSeed
instead.EdgeCurrencyWallet.startEngine
- UseEdgeCurrencyWallet.changePaused(false)
instead.EdgeCurrencyWallet.stopEngine
- UseEdgeCurrencyWallet.changePaused(true)
instead.EdgeEncodeUri.legacyAddress
- UseEdgeEncodeUri.publicAddress
instead.EdgeEncodeUri.segwitAddress
- UseEdgeEncodeUri.publicAddress
instead.
- Remove the
options
prop on theMakeEdgeContext
React Native component.- Just pass any context options as normal props.
- Remove the
type
property from all error classes, as well as the globalerrorNames
table.- Use the new error-identification methods, such as
asMaybePasswordError
, to determine if an error is a specific type.
- Use the new error-identification methods, such as
- Stop allowing
null
in places where we expect anEdgeAccountOptions
object.- Just pass
undefined
if this parameter isn't used.
- Just pass
- Return the
EdgeAccount.otpResetDate
as aDate
object.
The following changes affect Edge core plugins:
- Remove
EdgeIo.console
- UseEdgeCorePluginOptions.log
instead. - Define
EdgeCurrencyEngine
methods to returnPromise<void>
instead ofPromise<mixed>
. - The core will no longer upgrade
pluginName
topluginId
for legacy currency plugins.
- Add a
paused
flag toEdgeCurrencyWallet
, and a matchingchangePaused
method. - Deprecate
EdgeCurrencyWallet.startEngine
- UseEdgeCurrencyWallet.changePaused(false)
instead. - Deprecate
EdgeCurrencyWallet.stopEngine
- UseEdgeCurrencyWallet.changePaused(true)
instead. - Clean legacy Airbitz wallet files to prevent potential crashes at login.
- Enable safari10 option in webpack minimizer to fix stuck loading screens on iOS 10
- Add
crash
andbreadcrumb
methods toEdgeLog
for crash reporting. - Deprecate the
options
prop on theMakeEdgeContext
React Native component.- Just pass any context options as normal props.
- Reset the wallet sync ratio as part of a resync.
- Deprecate several methods:
EdgeContext.getRecovery2Key
- UseEdgeUserInfo.recovery2Key
instead.EdgeCurrencyWallet.exportTransactionsToCSV
- Moved to edge-react-gui project.EdgeCurrencyWallet.exportTransactionsToQBO
- Moved to edge-react-gui project.EdgeCurrencyWallet.getDisplayPrivateSeed
- UseEdgeCurrencyWallet.displayPrivateSeed
instead.EdgeCurrencyWallet.getDisplayPublicSeed
- UseEdgeCurrencyWallet.displayPublicSeed
instead.
- Upgrade build scripts to use Webpack 5.
- Fix an error which was causing all new 2FA-protected logins to fail.
- Add cleaners for all core error types, such as
asMaybeOtpError
. These provide a type-safe way to identify different error objects that may have been thrown. - Deprecate the old
errorNames
table.
- Fix a code-packaging error in the previous release.
- Improve the
EdgePendingEdgeLogin
API.- Add a
state
field to track the progress of the barcode login. - Add other fields to hold the outcome of the barcode login.
- Add a
watch
method to track changes to these fields.
- Add a
- Allow
EdgeCurrencyEngine.dumpData
to return a promise. - Cache exchange-rate hints from all local accounts to speed up initial rates query.
- Validate incoming & outgoing network requests even more thoroughly.
- Fix the
EdgeContext.listRecoveryQuestionChoices
method.- Fix the runtime data validation to accept the actual server return values.
- The return type of
Promise<string[]>
has always been incorrect, so the correct return type is nowPromise<EdgeRecoveryQuestionChoice[]>
. - As a stop-gap measure, though the return-type definitions is now
any
. We will insert the correct return type definition in the next breaking release.
- Load all supported currency pairs at launch to improve exchange rate loading. List is replaced by enabled wallets once the wallets are loaded.
- Fix the
parentNetworkFee
field missing in certainEdgeTransaction
instances. - Fix missing transactions while searching.
- Perform more data validation on network requests.
- Fix a bug that would prevent login vouchers from working on Airbitz accounts with 2fa turned on.
- Expose periodic 2fa errors through the context's
error
event. - Add an
EdgeAccount.repairOtp
method.
- Ensure all crypto to crypto exchange rates have a route to USD
- Add currency code column to CSV exports
- Update
EdgeCurrencyEngine
to allowgetFreshAddres
,addGapLimitAddresses
, andisAddressUsed
to return promises.
- Periodically perform a re-login to sync logged-in account credentials with the server.
- Fix a bug that would prevent the
EdgeContext.logSettings
property from updating.
- Add an
EdgeContextOptions.logSettings
property to control logging verbosity, along with anEdgeContext.changeLogSettings
method. - Deprecate the
EdgeEncodeUri.legacyAddress
andEdgeEncodeUri.segwitAddress
parameters. Just pass the address inEdgeEncodeUri.publicAddress
, regardless of format. - Update the swap logging to give more information about failed quotes.
- Upgrade Airbitz accounts with secret-key login
- Filter duplicates from rateHints
- Add low priority edgeRates bias
- Update linting
- (feature) Add ability to filter
getTransactions()
withsearchString
option - (feature) Add requested currency pair to rateHints if it cannot be served by searchRoutes()
- (feature) Identify enabled currency and fiat pairs to pass to exchange rate plugins
- (feature) RBF Transaction Support
- Adds new
rbfTxid
optional string toEdgeSpendInfo
type definition - Adds new
rbfTxid
to the returnedEdgeTransaction
object inmakeSpend
onEdgeCurrencyWallet
objects
- Adds new
- Include sync keys in the logs
- (feature) Add onAddressChanged callback
- This allows a plugin to inform the GUI of address or account name updates (e.g. when an EOS account becomes activated)
- (fix) Don't crash when using a barcode to log into accounts with pending OTP resets.
- (fix) Correctly expire any vouchers on the device while doing a barcode login.
- (fix) Upgrade to node-fetch v2.6.1.
- (fix) Switch to the new voucher endpoint.
- (fix) Always return
OtpError.voucherId
when available. - (feature) Expose an
EdgeAccount.pendingVouchers
field. - (feature) Expose as
EdgeUserInfo.voucherId
field.
- (feature) Add a
keyLoginEnabled
flag toEdgeUserInfo
. - (feature) Add a
lastLogin
date toEdgeUserInfo
andEdgeAccount
.
- (feature) Add a login voucher system. When a new device tries to log into an account with 2-factor security, the server can issue a voucher along with the
OtpError
. Existing devices with the 2-factor token can then log in and either approve or deny the voucher usingEdgeAccount.approveVoucher
orEdgeAccount.rejectVoucher
. TheEdgeLoginMessages
type also includes a list of pending vouchers now. - (chore) Upgrade to hash.js v1.1.7 and redux-keto v0.3.4.
- (feature) Allow users to pass 6-digit OTP codes directly. This means
EdgeAccountOptions.otp
is deprecated for passing the secret. UseEdgeAccountOptions.otpKey
to pass the secret, orEdgeAccountOptions.otp
to pass the 6-digit code. - (feature) Save usernames for first-time logins that fail 2fa.
- (feature) Save & return the account creation date as
EdgeAccount.created
. - (fix) Harden server response parsing.
- (fix) Upgrade many dev dependencies.
- Restore sync failure messages in the UI
- Allow the user to pass an
onLog
callback to the context constructor- This allows our CLI to silence the core and supports more flexibilty in GUI log handling
- Apply cleaners to the login stashes as well as remove some legacy disklet API usage
- Support date filters for
getTransactions
- Save fee information in the spend metadata
- Send sync failures to the logs, not the UI
- Fix BSV replay protection feature broken by commit 11e752d8
- Update info server URI
- Add bias for Coinmonitor exchange rate provider
- Fix type annotations on some optional parameters that were accidentally marked as mandatory.
- Work around an issue in edge-currency-bitcoin that prevented spends from saving metadata.
- Expose an
EdgeAccount.rootLoginId
.
- Save the decryption keys for Monero spends (requires a matching Monero plugin change).
- Replace git2.airbitz.co with git1.edge.app in the sync server list.
- Save transaction metadata with spends.
- Save an
EdgeTransaction.spendTargets
list with every spend. - Save an optional
EdgeTransaction.swapData
field with swap transactions.
- Prioritize the
wazirx
rate plugin when available.
- Use constant-time comparisons for encryption & decryption.
- Upgrade redux-keto dependency & fix uncovered type errors.
- Improve git server error messages & rotation logic.
This is a breaking release to address some issues in the swap API.
This release also renames all pluginName
instances to pluginId
. This affects all plugin types, but the core contains compatibility code so old currency plugins continue working (but not for rate or swap plugins, which are easier to just upgrade).
- Breaking changes to the swap API:
- Return a new
EdgeSwapResult
structure fromEdgeSwapQuote.approve
. This now contains thedestinationAddress
andorderId
that used to exist on theEdgeSwapQuote
type. - Merge the
EdgeSwapPluginQuote
andEdgeSwapQuote
types into one.- The
EdgeSwapQuote.isEstimate
flag is no longer optional, but must betrue
orfalse
. - Remove
EdgeSwapQuote.quoteUri
. Just concatenateEdgeSwapInfo.orderUri
withEdgeSwapResult.orderId
to get this.
- The
- Rename
EdgeSwapInfo.quoteUri
toorderUri
. - Remove the deprecated
plugins
option fromEdgeSwapRequestOptions
.
- Return a new
- Other breaking changes:
- Remove deprecated
EdgeAccount.currencyTools
. UseEdgeAccount.currencyConfig
. - Remove deprecated
EdgeAccount.exchangeTools
. UseEdgeAccount.swapConfig
. - Remove deprecated
EdgeAccount.getExchangeQuote
. UseEdgeAccount.fetchSwapQuote
. - Remove deprecated
EdgeAccount.pluginData
. UseEdgeAccount.dataStore
. - Remove deprecated
EdgeIo.WebSocket
.
- Remove deprecated
- Prioritize swap providers with active promo codes.
- Simplify the API for providing plugin swap promo codes.
- Quick re-publish to fix Flow bug in previous release.
- Fix the TypeScript type definitions.
- Add a way to prioritize different exchange-rate plugins.
- Add a way to pass promotion codes & disable swap providers on-the-fly while quoting.
- Deprecate
pluginName
fields in favor ofpluginId
, which is a less confusing name. - Add a way to pass a preferred plugin to
fetchSwapQuote
.
- Add
EdgeCurrencyInfo.xpubExplorer
.
- Record auth server failures in the log.
- Type updates:
- Deprecate
EdgeIo.console
. - Supply our own types for
EdgeIo.fetch
, which clarify our supported feature set. - Fix
EdgeOtherMethods
to be read-only.
- Deprecate
- New features:
- Pass a
log
method to plugins and engines. - Add an
EdgeIo.fetchCors
method on platforms that support it.
- Pass a
- Fixes:
- Fix Edge login network error handling.
- Use the
log
method internally, which changes our message format.
- Work around a balance update bug.
- Add a
hidden
wallet state.
- Generate TypeScript type definitions from the public Flow types.
- Add Flow type definitions to the error types.
- Perform the React Native polyfill more safely.
- Add an
EdgeCurrencyWallet.changeEnabledTokens
method.
- Save 2-factor keys sent back from the auth server.
- Expose the
recovery2Key
inEdgeContext.localUsers
.
- Include a default API key in the core, in case the user initializes the context with a blank
apiKey
.
- Add a
currencyCode
toInsufficientFundsError
. - Update the readme with helpful information.
- Fix swap quote prioritization logic to always prefer exact quotes.
- Add an
EdgeCurrencyConfig.importKey
method. - Add optional properties to
EdgeCurrencyInfo
:canAdjustFees
canImportKeys
customFeeTemplate
customTokenTemplate
- De-duplicate dependencies.
- Enable minification on React Native builds.
- Always prefer top-level currency codes over tokens, if there is a conflict.
- Close unused swap quotes.
- Update YAOB correctly when plugin configurations change.
- Simplify the react-native WebView debug appearance.
- Update linting and build tooling.
- Add a new
EdgeContext.paused
control for stopping background work.
- Fix OTP settings to only apply to the root login.
- Add
close
events to Flow type definitions. - Apply timeouts to the exchange-rate fetching logic.
- Add polyfills for old React Native WebView implementations.
- Pass
otherParams
through theEdgeCurrencyWallet
implementation.
- Fix exchange-rate fetching again (for real this time?).
- Fix exchange-rate fetching again.
- rn: Re-start the core when the
WebView
reloads.
- Improve swap error-ranking logic.
- Make exchange-rate fetching more robust.
- Indicate which swap quotes are only estimates, and de-prioritize those.
Breaking changes:
- Remove swap plugins from core. These now live in the
edge-exchange-plugins
project. - Tighten up spending-related Flow types
Fixes:
- Do not fail login when accounts contain broken Ethereum keys.
- Support
react-native-webview
^5.0.1. - Pass custom tokens to currency plugin URI logic.
- Improve logging & error messages.
- Remove unused
EdgeSpendInfo
fields.
- Do not let missing files crash
EdgeCurrencyWallet.getTransactions
. - Fix a packaging error that would wrongly include
src/index.js
in the distribution. - Work around bad Litecoin defaults in the bitcoin plugin.
- Cache public keys at wallet start-up.
- Reduce logging related to missing fiat amounts.
- Throttle wallet updates.
- Upgrade to disklet v0.4.0.
- Add an optional
EdgeCurrencyTools.importPrivateKey
method.
- Delay bridge crash
- Harden the react-native WebView bridge to avoid crashes.
- Add Flow types for the plugin initialization functions.
- Work around bugs in the Bitcoin plugin resulting in missing wallets.
- Do not send rate plugin errors to
EdgeContext.on('error')
.
- Fix out of range errors for ChangeNOW.
- Add a standalone
fetchLoginMessages
for react-native. - Add a secret
unfilteredIndex
hack toEdgeCurrencyWallet.getTransactions
to work around a missing transaction bug. - Add an
EdgeCurrencyWallet.publicWalletInfo
property.
This is a major release with large numbers of breaking changes for all platforms:
- Remove legacy type names.
- Remove legacy account and context callbacks.
- Remove
EdgeAccount.fetchSwapCurrencies
. - Rename
EdgeSwapQuoteOptions
toEdgeSwapRequest
. - Replace
makeFakeEdgeContexts
with a newmakeFakeEdgeWorld
API. - Replace
makeFakeIos
withmakeFakeIo
. - Remove
error
namespace. - Rework plugin loading:
- Plugins must now provide their own networking and crypto.
- The
addEdgeCorePlugins
/lockEdgeCorePlugins
functions install plugins. - The
makeEdgeContext
function accepts a plain JSON plugin configuration object.
- Swap plugins:
- Remove
pluginType
property - Remove
makeTools
method - Remove
EdgePluginEnvironment
&EdgeSwapTools
types - Add
checkSettings
method &EdgeSwapPluginStatus
type - Add
fetchSwapQuote
method
- Remove
- Rate plugins:
- Rename
EdgeExchangePairHint
toEdgeRateHint
- Rename
EdgeExchangePair
toEdgeRatePair
- Rename
EdgeExchangePlugin
toEdgeRatePlugin
- Rename
exchangeInfo
torateInfo
- Rename
rateInfo.exchangeName
torateInfo.displayName
- Rename
fetchExchangeRates
tofetchRates
- Rename
- Currency plugins:
- In
EdgeCurrencyInfo
- Change
walletTypes
towalletType
- Rename
currencyName
todisplayName
- Change
- In
EdgeCurrencyPlugin
- Rename
makeEngine
tomakeCurrencyEngine
- Move
changeUserSettings
to the engine. - Move all other features behind a
makeCurrencyTools
method &EdgeCurrencyTools
type - Make methods fully async
createPrivateKey
derivePublicKey
parseUri
encodeUri
- Rename
- In
EdgeCurrencyEngineOptions
- Rename
optionalSettings
touserSettings
- Remove legacy disklet
- Rename
- In
EdgeCurrencyEngine
- Remove unused options from
isAddressUsed
&addGapLimitAddresses
- Remove
EdgeUnusedOptions
type - Remove
EdgeDataDump.pluginType
- Remove unused options from
- In
For React Native in particular, we have the following changes:
- Replace
makeEdgeContext
with a<MakeEdgeContext />
React component. - Replace
makeFakeContexts
with a<MakeFakeEdgeWorld />
React component. - Remove
makeReactNativeIo
. - The assets in
lib/react-native
need to be installed into the app bundle and pulled in via HTML:- Android:
file:///android_asset/edge-core/index.html
- iOS:
file://${main-bundle-path}/edge-core/index.html
- Android:
- Plugins need to be compiled as standalone scripts and installed in the same way.
- Ship the library as debug-friendly ES 2018 code. Non-standard features like Flow are still transformed out.
- Add an
edge-core-js/types
entry point containing just Flow types. - Remove
peerDependencies
, which was causing problems for users on platforms other than React Native.
- Add
payinAddress
anduniqueIdentifier
to swap metadata.
- Fix
getTransactions
for compatibility withedge-currency-accountbased
Ethereum. - Fix AUD currency lookup bug.
- Clean up Flow types
- Fix
EdgeGetTransactionsOptions.startEntries
type. - Add an
EdgePluginMap
helper type.
- Fix
- Upgrade build tools to fix Travis.
- Fix
peerDependencies
spelling. - Expose repo syncing through the secret internal API.
- Add Faa.st swap plugin.
- Log more steps during login.
- Upgrade to Flow v0.89.0.
- Upgrade to redux-pixies v0.3.6 to fix ghost wallets appearing at login.
- Sync the account keys during a
loginWithKey
.
- Fix
getTransactions
to return token transactions in the requested range. - Fix ChangeNOW 400 errors.
- Fix ChangeNOW support email & quote URI.
- Add
EdgeSwapQuote.destinationAddress
. - Re-apply replay protection when splitting BCH->BSV a second time.
- Fix ChangeNOW out of range errors.
- Add ChangeNOW swap plugin.
- Upgrade to disklet v0.3.0
- Replace
folder
andlocalFolder
withdisklet
andlocalDisklet
in all API's to use the new Disklet API.
- Replace
- Removed deprecated API's:
- Renamed API's:
EdgeCurrencyConfig.changePluginSettings
(usechangeUserSettings
)EdgeCurrencyConfig.changeSettings
(usechangeUserSettings
)EdgeCurrencyConfig.pluginSettings
(useuserSettings
)EdgeCurrencyConfig.settings
(useuserSettings
)EdgeSwapConfig.exchangeInfo
(useswapInfo
)EdgeSwapConfig.settings
(useuserSettings
)EdgeSwapConfig.changeSettings
(usechangeUserSettings
)EdgeSwapCurrencies.exchanges
(usepluginNames
)EdgeSwapQuote.exchangeService
(usepluginName
)
- Legacy swap API:
EdgeCurrencyWallet.getQuote
EdgeContext.getExchangeSwapRate
EdgeContext.getExchangeSwapInfo
- Renamed API's:
- Upgraded to Disklet v0.3.0 API:
EdgeAccount.folder
->EdgeAccount.disklet
EdgeAccount.localFolder
->EdgeAccount.localDisklet
EdgeCurrencyWallet.folder
->EdgeCurrencyWallet.disklet
EdgeCurrencyWallet.localFolder
->EdgeCurrencyWallet.localDisklet
- Made
convertCurrency
async. - Made
makeFakeContexts
async. - Make
EdgeContextOptions.apiKey
&EdgeContextOptions.appId
mandatory. - Optimize the build system.
- Fixed an issue with
wallet.getTransactions()
that sometimes it wouldn't return the oldest transactions. - Small cleanups and type fixes
- Fix the splitting/replay protection from Bitcoin Cash to Bitcoin SV
- Some flow fixes
- Add metadata to replay protection transactions
- Do not await on
reloadPluginSettings
, This prevents network roundtrips from blocking login. Upwards of 30s saved on really slow networks.
- When splitting from Bitcoin Cash to Bitcoin SV, preform a max spend to self to have replay protection before splitting the wallet
- Fix detecting and throwing of ShapeShift errors due to geo location or unverified accounts
- Improve
fetchSwapQuote
error hierarchy with rich information about different possible error conditions.
- Fix
getTransactions
from only returning a subset of transactions - Fix swap exchange to gracefully fallback if one exchange errors
- Properly filter out a swap provider if they don't support a
getQuote
currency pair
- Do not call
makeEngine
on wallets which are archived or deleted
- Allow
createPrivateKey
,derivePublicKey
,parseUri
, andencodeUri
methods from currency plugins to be async
- Fix a potential crash on logout.
- Allow swap plugins to be disabled.
- Add
supportEmail
toEdgeSwapInfo
. - Fix swapping from coins with unique id's using Changelly.
- Log more swap steps.
- Upgrade to Disklet v0.2.8.
- Remove change to types of
createPrivateKey
andderivePublicKey
due to Flow errors
- Fix throw when user account doesn't have a Shapeshift auth token
- Fix Changelly to use legacy addresses except for DGB
- Add denomination conversion helper routines.
- Add Changelly support to the swap API.
New:
EdgeSwapConfig.needsActivation
for exchanges that need KYC or other data.EdgeSwapQuote.networkFee
for outgoing network fee.SwapBelowLimitError
&SwapAboveLimitError
for failed quotes.
Deprecations:
EdgeContext.getAvailableExchangeTokens
EdgeContext.getExchangeSwapInfo
EdgeContext.getExchangeSwapRate
EdgeCurrencyWallet.getQuote
Renames (old names deprecated):
EdgeAccount.currencyTools
->EdgeAccount.currencyConfig
EdgeAccount.exchangeTools
->EdgeAccount.swapConfig
EdgeAccount.getExchangeCurrencies
->EdgeAccount.fetchSwapCurrencies
EdgeAccount.getExchangeQuote
->EdgeAccount.fetchSwapQuote
EdgeCurrencyTools.settings
->EdgeCurrencyConfig.userSettings
EdgeCurrencyTools.changeSettings
->EdgeCurrencyConfig.changeUserSettings
EdgeExchangeQuote.exchangeSource
->EdgeSwapQuote.pluginName
EdgeExchangeCurrencies.exchanges
->EdgeSwapCurrencies.pluginNames
- Fix a packaging issue with the client-side methods.
- Move the client-side methods into their own file.
- Add a new Shapeshift API (still experimental & subject to change).
- Rename
EdgeCurrencyTools.pluginSettings
toEdgeCurrencyTools.settings
. - Rename
EdgeCurrencyTools.changePluginSettings
toEdgeCurrencyTools.changeSettings
.
- Do not use legacy address for Digibyte when using ShapeShift
- Add a
waitForCurrencyWallet
helper. - Work around 0 block-height problem with some currency plugins.
- Update to
yaob
0.3.0. This one changes the timing on some callbacks a bit (breaking).
- Add a fake user with several test wallets.
- Hack around weird GUI Flow bug.
- Update the readme file.
- Work around a GUI crash.
-
Make the core API bridgeable using Yaob.
-
Add a private key hiding mode.
-
Add a user list to the context object.
-
Remove the ability to pass a node-style callback to any asynchronous API method instead of getting a promise.
-
Fail earlier if the
apiKey
is missing. -
Rename
EdgeEdgeLoginRequest
toEdgePendingEdgeLogin
- Fix the git server list again.
- Fix the git server list.
- Upgrade disklet dependency.
- Add more git servers.
- Fix a type error that Flow somehow doesn't catch when run in this repo, but does catch when this library is in somebody else's
node_modules
.
- Expose the wallet sync ratio as a property
- Rename the account data store API
- Many, many code cleanups & fixes:
- Fix an edge login race condition.
- Do not allow users to delete logged-in accounts from disk.
- Fix a hang if anything goes wrong creating wallets (redux-pixies upgrade).
- Remove deprecated context properties & options
- Remove
EdgeContext.io
- Remove
EdgeContext.getCurrencyPlugins
- Make many methods async:
EdgeCurrencyWallet.getNumTransactions
EdgeAccount.listSplittableWalletTypes
EdgeCurrencyWallet.dumpData
EdgeCurrencyWallet.parseUri
EdgeCurrencyWallet.encodeUri
- Add wallet properties for balances, block heights, and seeds
- Fix QBO & CSV export crash
- Another fix to QBO export 255-character limit (memo field)
- Pass options to
EdgeCurrencyPlugin.createPrivateKeys
.
- Fix QBO export error.
- Fix minor Flow bug.
- Upgrade Flow.
- Improve Flow types in currency wallet code.
- Fix bug where Edge could not edit Airbitz metadata.
- Add a basic
EdgeAccount.currencyTools
API. - Fix QBO export bug.
- Fix more incorrect wallet key types.
- Add a
NoAmountSpecifiedError
.
- Fix a return value error in
listSplittableWalletTypes
.
- Fix Flow type bugs
- Fix incorrect platform detection on Web.
- Fix payment request Flow types.
- Implement plugin data API.
- Fix Edge login unhandled promise rejection error.
- Fix the Flow type for the transaction export denomination.
- Export the
Error
types directly.
- Fix Shapeshifting XMR and XRP.
- Add
EdgeCurrencyInfo.requiredConfirmations
and associatedPendingFundsError
types.
- Move the unit tests out of the
src
directory.
- Replace flow-copy-source with rollup-plugin-flow-entry to fix a packaging bug.
- Add
uniqueIdentifier
toEdgeParsedUri
.
- Improve various flow typing issues, both inside and outside the core
- Add
getTxids
& related callback to the CurrencyEngine.
- Auto-correct mis-typed 2fa secrets
- Expose
hmacSha256
for the CLI - Fixed spelling mistake
- Storage and Wallet flow coverage
- Rename storage and exchange related files
- Change createPrivateKey and derivePublicKey to Object instead of {}
- Remove empty strings in the QBO export
- Flow type fix
- Add QBO & CSV export
- Add private key sweeping
- Add
EdgeCurrencyWallet.getNumTransactions
- Remove deprecated methods
- Throttle wallet callbacks
- Do not crash on really long passwords when running in the web.
- Fix Edge login race conditions.
- Support Shapeshift precise transactions
- Do not report transactions that have been dropped
- Fix incorrect array dereference when saving transaction metadata
- Optimize getTransactions to only decrypt data for the range queried
- Prevent bitcoin segwit wallets from being split to bitcoin cash
- Add
legacyAddress
toEdgeEncodeUri
- Fix git sync on timer after login
- Fix wallet splitting issues
- Fix git syncing issues for large wallets
- Add a
listSplittableWaleltTypes
function
- Renamed the library to edge-core-js
- Fix build issues on React Native & web.
- Properly handle Shapeshift HTTP error codes.
- Add a
getAvailableExchangeTokens
function to the context.
- Fix login checksum errors exposed by previous release.
- Fall back on the app name for unnamed wallets.
- Fixes exchange rate multipliers for custom tokens.
- Handle plugin errors more gracefully.
- Make PIN changes fully recursive across all apps
- Allow the PIN to be enabled / disabled
- Fixes to Flow types, including brand-new flow types for
EdgeCurrencyWallet
. - Fixes for Shapeshift spends (Bitcoin Cash addresses, proper fees).
- Redux state cleanups
- Fix accelerated crypto on React Native.
- Remove
core-js
polyfill. The main GUI needs to pull this in, if needed, since including it too late in the setup process can break React. - Switch to
regenerator
instead ofnodent
for async / await support. This is slower but more compatible.
- Renamed the library to edge-login, massive development work.
Fixes:
- Logging into partner apps works again (round 2)
Fixes:
- Logging into partner apps works again
New:
- New plugin format
- Exchange rate cache
looginWithKey
method- Store transaction metadata on first detection
Fixes:
- Code cleanup & reorganization
- Fixes to the transaction list
- Fixes to the transaction metadata format
Breaking changes:
- No longer expose the internal
login
orloginTree
on the account.
New:
- Currency wallet support
- Wallet sort / archive / delete support
- Support for legacy wallet keys
Breaking changes:
- Fix the wallet id derivation algorithm
Fixes:
- The library explicitly depends on
buffer
now, fixing React Native - Build system cleanups
- Many, many code cleanups
New:
- Error types all have a
name
property, which will replace thetype
- Use the
disklet
library for all storage needs - Expose
hashUsername
for the CLI
Breaking changes:
- api: Make
removeUsername
async - The on-disk repo format has changed, requiring a re-sync
New:
- Accept the
io
object as amakeContext
option
Breaking changes:
- Move the CLI tool to its own package
- api: Make
usernameAvailable
produce a bool - api: Make
listUsernames
async - api: Make
pinExists
&pinLoginEnabled
async - api: Remove deprecated exports
- api: Remove obsolete C++ error code system
- api: Remove platform-specific context constructors
- Make the auth server configurable
- Switch back to the production auth server by default
Breaking changes:
- Edge login v2
- New on-disk storage format
- Quick fix to package.json to exclude node-isms from the browser
Breaking changes:
- Make
checkPassword
async - Remove
runScryptTimingWithParameters
New:
- Add a
removeUsername
method to the context makeContext
accepts arandom
function- Add a
makeRandomGenerator
helper for RN - Many CLI improvements
- Better error types
Fixes:
- Faster
scrypt
- Switch to the
fetch
API - Troublesome dependencies are now bundled and isolated
- Port project to ES2015
Fixes:
- Sync server rotation support
- HTTPS connections to sync servers
- Removed
asmcrypto.js
- Made the CLI executable & installable
- Pruned the list of files we publish to NPM