Skip to content

v2.14.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@superKalo superKalo released this 26 Jun 14:43
· 2191 commits to v2 since this release
1f7516a

Changelog:

  • Added: Entry point 0.7.0 🎉 #749
  • Added: New action toast message (on action-window open) #783
  • Added: Humanizer modules: curve, trader joe, across, kyberswap, 1inch #819
  • Added: Add extra networks as consts for the deployed benzin humanization #832
  • Changed: Refactoring Accounts #817 and #829
    • Added a required key preferences to the Account interface
    • Introduced a new AccountsController that combines and encapsulates the common logic for accounts from the MainController and
    • SettingsController
    • Expose the forceEmitUpdate method publicly for each class, allowing it to be called externally
  • Changed: Improvements for the updateSelectedAccount mechanism #826
    • Add AccountsController to the PortfolioController as a prop when constructing
    • Remove the accounts prop from updateSelectedAccount in favor of getting it from the accounts ctrl directly in the portfolio
    • portfolio tests code optimizations
  • Changed: Humanizer: file structure improvements #818
    • Move all humanizer module tests to their respective folder.
    • Fix dependency cycles
    • Improving readability/modularity
  • Changed: Environment variables changes #823
    • Get VELCRO_URL from env or tests/config
    • Get relayerUrl in tests from tests/config.
  • Changed: Improve simulations #825
    • Simulate only for the currently active accountOp for Basic Accounts
    • Remove redundant FE code from common and move to ambire-app
    • Fix: account in dApps does not change on accountSelect
    • Improve simulation calculations in portfolio
  • Fixed: Portfolio controller race conditions ⚡ #808
    • Fix: Implement a queue to prevent race conditions when calling updateSelectedAccount. All calls are queued by network and account. Each time updateSelectedAccount is invoked to update the latest or pending state, the call is added to the queue. If a previous call is still running, the new call will be queued and executed only after the first one completes, regardless of whether it succeeds or fails. Before implementing this queue, multiple updateSelectedAccount calls made in a short period of time could cause the response of the latest call to be overwritten by a slower previous call.
    • Add a Jest test to ensure that the portfolio controller queue's logic chains the requests in order.
    • Change: Pull out updatePortfolioState as a controller method, instead of an inner function of updateSelectedAccount, for better readability.
    • Document how we should refactor portfolio force updates and apply account ops intent optimization once we implement issue #2335.
    • Ensure the queue doesn't result in a memory leak. What's the difference between this article (https://cribl.io/blog/promise-chaining-memory-leak/) and our implementation? First of all, our portfolio method will always resolve, so we can't end up in a promise chain waiting for the first promise to resolve. Second, in the article, they are creating a recursive queue—if the promise doesn't resolve, they add the same method again to be invoked, and they do this for hundreds of calls. In our case, we don't have recursion. We simply chain the next portfolio update and don't retry the same method if it fails.
  • Fixed: Portfolio additional assigning criticalError on an empty error object (causing a glitch that the extension shows that the gas tank and rewards networks are not loaded, where they actually are) #816
  • Fixed: withStatus not working with minification #820 and #828
  • Fixed: L2 broadcast no ERC-4337 #830
    • EP authorization only for 0.7.0 accounts
    • 0.6.0 accounts can only broadcast with EOA - fix the L2 broadcast so txns are successfull by including estimate_gas in the erc-4337 estimation if there's no erc 4337 estimation
    • Remove the custom Arbitrum estimation and rely on estimate_gas instead
  • Fixed: All controllers fetch ref should come from the Main controller #815
    • Added: Expose the verified invite code (inside the Invite controller)
    • Changed: Update the node-fetch lib (and types) to the latest (lib used for the unit tests only now)
    • Fixed: All controllers should use the fetch ref incoming from the MainController. This wasn't the case, causing some of the logic to use the global (native) fetch, and others - to use the node-fetch import (which also shouldn't be the case, except for the tests where this doesn't matter).

Full Changelog: v2.13.0...v2.14.0