Skip to content

Releases: AmbireTech/extension

v5.8.0 (Browser Extensions)

18 Jun 14:42
6055296
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.58.0, see changelog in there too.
  • Added: Advanced toast links
    • onClick and url weren't used anywhere, so I decided to remove them in favour of these changes. If onClick is ever required, we can add toast buttons
    • Add link parsing support to toasts. Links can be added in the format [Text](URL)
    • Automatically parse 'contact support' strings as links. We can do the same with other often-used links if needed in the future.
  • Added: Protection for unexpected missing data
  • Added: Missing props in wallet_getPermissions and wallet_requestPermissions JSON-RPC call response
    • For wallet_requestPermissions:
      • Added: In the eth_accounts parent capability, the missing date (when the permission was granted), invoker and caveats, compliant with EIP-2255. Also added id, that is NOT mentioned in the return type in EIP-2255, but MetaMask sends it. ID gets generated when permission is granted and it gets persisted until the permission is revoked.
    • For wallet_getPermissions:
      • Added: In the eth_accounts parent capability, same as what wallet_requestPermissions returns.
      • Changed: If permissions were granted, return result even if the extension is locked.
    • For wallet_revokePermissions:
      • Changed: Allow apps to revoke their permissions with no need of an additional user confirmation.
  • 📣 Added: Support for interacting with Trezor devices via Trezor Suitpull/4860
    • Changed: Migrates to the @trezor/conntect-webextension package to v9.6.0 that has the experimental Trezor Suit connectivity mechanism. How to enable the trezor suite: https://connect.trezor.io/9/guides/new-connect-flow-in-trezor-suite/ (Basically under the Settings > Experimental features toggle).
    • Fixed: Trezor contract deployments were not working because to was undefined instead of null
  • Added: One click flow go to sign account op on batch, check networkUserRequests to determine if there's anything in the batch for the selected token's network and if there is, make "one click mode" work by opening the sign account op. Along with these, additions:
    • typehints for updating signAccountOp were fix (signingKeyAddr and signingKeyType were typehinted strings while they are Key['addr'] and Key['type']
    • Fixed: when both a signAndSwap error and a valid quote were happening at the same time (possible when doing a batch and a bridge at the same time), they overlapped and broke the page's style.
  • 📣 Added: Humanizer: fetch contract names from Etherscan
  • 📣 Added: Extend the DeFi positions with data from DeBank
  • Added: Playwright E2E transfer tests
    • Should send a transaction and pay with the current account gas tank
    • Should send a transaction and pay with the current account's ERC-20 token
    • Should batch multiple transfer transactions
    • Change: Refactor tokens identifier, in order to select it easier with Playwright. Now we can simply do page.getByTestId(option-${address}.${chain}), instead of trying to construct and match this id: option-0x0b2c639c533813f4aa9d7837caf62653d097ff85.10.usdc.false..op-mainnet
    • Fix: Playwright - When running E2E tests with headless: true (CI), window.screen is not available. As a workaround, we return a hardcoded centered window position based on a 1920x1080 viewport.
    • Change: Reduce global test timeout to 3min.
  • Added: Display service fee
  • Added: Force update DeFi positionspositions when the user manually reloads their balance from the dashboard. The force update should be triggered only if all the following conditions are met:
    • The user clicks the refresh button on the dashboard
    • The account is not view-only
    • The DeFi tab is currently focused on the dashboard
  • Changed: Calculate all Trezor accounts via requesting the public key (instead of asking for a set of Ethereum accounts)
    • Only 1 device request (Trezor popup) for getting ALL pages now
    • No need to pre-fetch addresses anymore
    • Previously, upon initial account import from Trezor, user was either informed we get a set of 50 addresses (which can be confusing - we don't communicate well that we pre-fetch 5 pages of addresses) or worse - see all addresses we export in Trezor Suit vs now, only verifying the public key which is better communicated in Trezor Suit.
  • Changed: Update TypeScript to v5 and bump up other dependencies to reduce the found vulnerabilities
    • Change: Bump up TypeScript to v5.8.3, in sync with the ambire-common update
    • Change: Bump up eth-crypto to v2.8.0 (still has vulnerabilities, but better to be on the latest v anyways)
    • Change: Remove obsolete packages that are no longer used: eth-sig-util, @ethersproject/units and web3.
    • Changed: Bump up crypto-browserify to v3.12.1 (removing web3 allowed this)
  • Changed: Benzin confetti and simplification
    • move txId, userOpHash and originated from to the "confirmed"
      • this makes sense because all of those except userOpHash can change
    • hide txId, userOpHash, originated and block number by default
    • have a "show. more" that shows them
  • Changed: Always sort rewards to the top of the app catalog
  • Changed: E2E Playwright Project migration from Puppeteer and writing new tests
    • All Puppeteer-based extension tests have been fully ported to Playwright, leveraging its native test runner and modern testing features.
    • Extension launch logic has been reimplemented using launchPersistentContext, enabling accurate simulation of extension behavior with proper argument-based loading.
    • Introduced a Page Object Model (POM) structure for critical flows such as onboarding, account import, and dashboard interactions.
    • Extracted locators and constants into centralized utility files, reducing duplication and enhancing code clarity.
    • Added a unified playwright.config.ts to standardize timeouts, retries, reporters, and environment setup across all test executions.
    • Continuous Integration (CI) scripts updated to support Playwright test runs with persistent extension loading and environment initialization.
  • Changed: Trezor Connect manifest app icon and name
  • Changed: Playwright - Structure clean-up
    • Merged config/constants and /constants into a single directory: /constants.
    • Renamed /constants/constants.ts to /constants/mainConstants.ts. This file now holds and organizes simple constants. For more structured data (e.g., tokens), we use separate files like /constants/tokens.ts. Constants are exported as a default object (e.g., export default { urls, addresses, ... }) to simplify imports: import { urls } from '/constants/mainConstants'.
    • Moved files from /config to a new directory /utils, since they include logic and don't represent pure configuration.
    • Moved common/selectors and common/locators into /constants, as these are effectively constant values as well.
  • Fixed: signAccountOp doesn't initialize after switching account opspull/4847
  • Fixed: Scientific balance notation
    • Fix: Don't parse the balance to a float number, as it results in a scientific notation when balance < 1e-6 or balance >= 1e21. Screenshots attached before/after.
    • Change: Stop deducting the gas fee when setting the maximum amount to be sent on the Transfer screen. Why:
      • It's not immediately clear why the full balance isn't populated in the input field - even when the amount isn't sufficient.
      • With the new OneClick estimation, the user will now see an "insufficient amount" message on the same screen.
      • In the long term, with EIP-7702 support, gas fees could be paid using non-native tokens (including via hardware wallets), and validating all possible fee token balances could become unnecessarily complex.
  • Fixed: Change Benzin page title to Explorer
  • Fixed: No routes error reason in Swap & Bridge
  • Fixed: Dark Mode various problems
  • Fixed: Error boundary style and show details after dark theme changespull/4876
  • Fixed: Swap and transfer content overflow in popup
  • Fixed: BottomSheetContainer component when closed on drag
  • Fixed: Arc Browser action window focus glitch (On the Arc browser, it seems like there’s either a bug or an intentional restriction that prevents extensions from programmatically focusing existing windows. So if an action window is minimized or out of focus, we can’t bring it back to the front. As a workaround, we’ll need to implement fallback logic for Arc that closes the current action window and reopens it instead.)
  • Fixed: Apps communication mechanism issue when MetaMask is installed (an issue in the detectScriptType() logic where the inpage script was incorrectly identified as a content script due to MetaMask injecting a mock chrome.runtime and chrome.tabs into the page context)
  • Fixed: isTopUp flag was always false in TransferControllerStateProvider
  • Fixed: Hide dashboard overview animation

Full Changelog: v5.7.1...v5.8.0

v5.7.1 (Browser Extensions)

12 Jun 07:18
ea0af5f
Compare
Choose a tag to compare

Changelog:

  • Fixed: Keystore setup redirect issue (when a new Ambire tab is opened it incorrectly navigates to keystore setup when keystore is already set up)

Full Changelog: v5.7.0...v5.7.1

v5.7.0 (Browser Extensions)

12 Jun 07:17
3a9affd
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.57.0, see changelog in there too.
  • 📣 Added: Dark Mode now finalized and ready to rock (can be enabled by a toggle in the hamburger menu)
  • 📣 Changed: Rename Benzin to Explorer
  • Changed: Handle Swap & Bridge estimation failures in the controller
  • Fixed: Workaround for NOT always having errors in service worker after initial start
  • Fixed: Double-check for Web HID API before using it (otherwise, this causes errors for browsers that don't support web hid, like FF)
  • Fixed: The AccountPersonalize screen was occasionally skipped after adding an account using an existing seed phrase
  • Fixed: 712 ambiguous types
  • Fixed: Missing SWAP_AND_BRIDGE_CONTROLLER_CLOSE_SIGNING_ACTION_WINDOW (The missing action is replaced with CLOSE_SIGNING_ACTION_WINDOW, which is used in transfer)
  • Fixed: Corner case being able to bypass setting device (extension) password
  • Fixed: Corner case where feeSpeeds are not yet available

Full Changelog: v5.6.0...v5.7.0

v5.6.0 (Browser Extensions)

04 Jun 14:09
51da416
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.56.0, see changelog in there too.
  • 📣 Added: Transfer and Gas Tank - built-in signing
    • Refactor Transfer controller to be initialized in the background, including context and form useEffect optimizations, as they were triggered multiple times due to non-memoized props (tokens).
    • Storage persistence for initiated Transfer and Gas Tank form changes. We detect if the form was changed by the user, and if so, the next time you open the Popup, it will automatically load your previously filled form.
    • Built-in signing and broadcasting (aka OneClick mode) for Transfers and Gas Tank top-ups.
    • Built-in re-estimation for the Transfer SignAccountOp controller every 30 seconds. If we destroy the AccountOp or change the chain, we’ve implemented a reliable AbortController to stop the estimation loop.
    • Reusable components across Transfer and Swap & Bridge. When testing, please double-check Swap & Bridge as well.
    • HW support. We need to test it carefully here.
    • Trezor guard logic to prevent other actions from being added if we are in the process of signing and broadcasting.
  • Added: Dark Mode (Part 1), behind the scenes, there is currently no theme toggle in the UI yet
    • themeConfig refactoring
    • theme context refactoring
    • removed colors constants
    • onboarding screen dark mode implemented
    • components and icons memorization
  • Added: Support for the wallet_revokePermissions JSON-RPC API call
  • Changed: Migrate Extension E2E Tests from Puppeteer to Playwright
    • All Puppeteer-based extension tests have been fully ported to Playwright, leveraging its native test runner and modern testing features.
    • Extension launch logic has been reimplemented using launchPersistentContext, enabling accurate simulation of extension behavior with proper argument-based loading.
    • Introduced a Page Object Model (POM) structure for critical flows such as onboarding, account import, and dashboard interactions.
    • Extracted locators and constants into centralized utility files, reducing duplication and enhancing code clarity.
    • Added a unified playwright.config.ts to standardize timeouts, retries, reporters, and environment setup across all test executions.
    • Continuous Integration (CI) scripts updated to support Playwright test runs with persistent extension loading and environment initialization.
  • Changed: Exclude all tests that failing in Puppeteer pipeline and remove test
    • Excluded tests that are currently failing in the Puppeteer CI pipeline to reduce noise and ensure more reliable runs.
    • Removed tests that have already been successfully migrated to Playwright, as they are now being maintained in the new test suite.
  • Changed: Always show the Gas Tank as the first broadcast option; native - second
  • Changed: Improve Batch Added screen wording
    • Changed: More generic and clear call to action texts
    • Fixed: Duplicated test id for the add-more-swaps action
    • Fixed: Delete obsolete Batch Modal component (no longer in use)
  • Changed: Do not pause updates if the Ledger connect modal is displayed
  • Changed: Optimize Swap & Bridge controller "To" token list
  • Fixed: Cut only the active route onEstimationFailure

Full Changelog: v5.5.0...v5.6.0

v5.5.0 (Browser Extensions)

28 May 13:18
3a4157b
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.55.0, see changelog in there too.
  • Added: Separate workflow that makes gecko production builds on ARM64 architecture and disables mangling to ensure bit-for-bit deterministic builds
    • Added: Temporarily introduce a separate workflow that makes gecko production builds on ARM64 architecture (via QEMU emulation). Separate, because it takes 1h 45min to complete (vs 10 min for the AMD64 architecture). When native ARM64 runners are available for private repositories in GH, remove this workflow and migrate to build-extensions.yml only.
    • Changed: Disable mangling to ensure bit-for-bit deterministic builds. This avoids differences in variable/function names (e.g. P vs x) that cause review rejections. The drawback is larger bundle size, so only do it for the gecko build.
  • Changed: Hide error msg on simulation failure (if we fail to do the simulation, do not show the error to the user as most of the times it would just confuse him)
  • Changed: Pin Extension and Open Dashboard
    • Fix a bug in the pin extension logic in the wallet-state controller.
    • Prevent the extension from opening the dashboard in a tab after successful accounts addition. Some edge cases still allow it—for example, if the user intentionally navigates the account-personalize screen into a state where no accounts remain to be added in that session. In such cases, the screen will automatically redirect to the dashboard. However, all other scenarios should be handled to avoid showing a CTA that opens the dashboard in a tab, especially in Firefox.
    • Replace the "Pin Extension" balloon image with a component for easier customization
  • Changed: Update Trezor-related libs to their latest v
  • Changed: Automated new test for network management
    • Automated the process of adding a network directly from Chainlist.
    • Verified that the network details were correctly imported and displayed in the wallet settings.
  • Changed: Migrate from LedgerJS Transport libs to the new libs under the Ledger Device Management Kit and Device Signer Kit umbrella
    • Changed: Migrate from the soon-to-be-deprecated LedgerJS Transport libs to the new libs under the Ledger Device Management Kit and Device Signer Kit umbrella. Needed for early Ledger EIP-7702 support, because it seems like Ledger are planning to implement EIP-7702 support on their new libs exclusively.
    • Changed: Migrate from EthersJS v6.8.0 to v6.13.4. Needed, because Ledger @ledgerhq/device-signer-kit-ethereum lib requires this v specifically and otherwise - two EthersJS v6 versions would have been packaged in our bundles.
    • Changed: Migrate reflect-metadata from v0.1.13 to v0.2.2. Needed, because otherwise our version was conflicting with the version used by the @ledgerhq/device-signer-kit-ethereum lib. Importing the SignerEthBuilder class statically was silently failing in the service worker - somewhere in the rpcFlow (but I was not sure where exactly, because the error was getting swallowed).
    • Fixed: Missing web worker context and web HID config in TS, causing missing type warns
  • Fixed: Expanding Dashboard overview on tab changing
  • Fixed: Swap & Bridge footer note (select route) spacing regression
  • Fixed: Try to fix slice of undefined error in Activity / txn history
  • Fixed: Missing space between account key badge text and icon
  • Fixed: Multiple Ambire Tabs Opened From ActionWindow
    • Improve the args structure of openInTab and openInternalPageInTab
    • Optimize tab-opening logic to reduce the number of Chrome API calls, which can lead to slight performance gains

Full Changelog: v5.4.0...v5.5.0

v5.4.0 (Browser Extensions)

21 May 08:27
677d67a
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.54.0, see changelog in there too.
  • 🎉 Added: Smart Settings. What should be tested:
    • The delegations page. To open, go to settings -> accounts -> pick a EOA account that can become 7702 -> dropdown -> Smart Settings. Maybe we should rename the dropdown. On the page, you can activate/deactivate your delegations. Try some txns and see the results. It doesn't work very well on Gnosis as RPCs are shit but it should be neat on other chains
    • import the same account in metamask. Make sure it doesn't have an active delegation on the chain you are going to delegate. Go to jumper and trigger a token (not native) swap. A popup in metamask should appear for enabling smart settings. Enable them and complete the transaction. Go back to ambire and check if the metamask logo, banner etc appear in the accounts dropdown + delegations page. Try to remove it -> "revoking Metamask" or something like this should appear in benzina
    • after revoking/enabling a delegation through the delegations page (only through that page), activity, txn history should display a correct humanization
  • Added: "Already added" network screen
  • Changed: Rename "Add from current recovery phrase" to "Add from stored recovery phrases"
  • Changed: Remove "Basic Account" terminology
  • Added: Tooltips for the token amounts in humanizations and simulations
  • Changed: Remove links from humanization in Activity tab
  • Changed: Hardware wallet edge case handling (during signing)
  • Changed: If there's no sponsor, say that the connected dapp is the sponsor
  • Changed: One click swap warnings
    • Add: Reusable Modals component for one-click swap/transfer and sign account op
    • Add: Prompt before sign warnings to swap and bridge
  • Changed: Improve Keystore encrypt and decrypt performance (when unlocking and adding secrets to the Keystore) on Firefox
  • Changed: Enable "File Injection" to support AmbireProvider, EthereumProvider, and content-script injection in dApps loaded as files in the browser
  • Fixed: Gas tank E2E tests
    • Enabled top up Gas Tank if it has a Gas Tank in token details
    • Fix E2E tests related to Gas Tank
  • Fixed: Onboarding flow bugs
  • Fixed: Bug with the navigation behavior of the AccountsPersonalize
  • Fixed: Sign Account Op and Sign Message screen troubles with sizing and vertical scrollability
    • Fixed: On the Sing Account Op screen (action window), the inherited height from the popup window was hiding the footer call to action buttons (including sign).
    • Fixed: Vertical scroll bar indication was missing, making it not obvious that one can scroll the inner content. I refactored the content wrappers (found two ScrollableWrappers, the latter one not needed) and moved the padding alongside the content that could potentially have a vertical scroll.
    • Fixed: Sign Message screen similar troubles

Full Changelog: v5.3.0...v5.4.0

v5.3.0 (Browser Extensions)

15 May 08:40
3a5dbcc
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.53.0, see changelog in there too.
  • 📣 Added: Disabled networks; More details: Include a rich list of disabled networks that the user can easily enable. We can source those directly from chainlist, modifying the ones that don't work well by default.
  • Changed: Make browser extension builds fully deterministic
    • Added: GitHub action that makes extension PROD builds and outputs a source code zip (including .env file) - so that the build is hopefully reproducible by the Firefox review team
    • Changed: Altering the webpack configuration so that the builds are deterministic
    • Refactored: Move clipboard logic (via expo-clipboard) in an util. The lib introduced slight non-determinism in builds across different OSs, so this was needed while I was debugging and decided to leave it as is.
    • Refactored: Remove expo-splash-screen package and biometrics context from the web build, they are mobile-only and were causing slight non-determinism in builds across different OSs
  • Changed: Smaller Action window
    • Create action window optimization - decrease the number of chrome api requests to speed up the opening of the window

Full Changelog: v5.2.3...v5.3.0

v5.2.3 (Browser Extensions)

14 May 14:48
28a03e7
Compare
Choose a tag to compare

Changelog:

  • Fixed: Action window bug with the repositioning

Full Changelog: v5.2.2...v5.2.3

v5.2.2 (Browser Extensions)

14 May 14:47
f1d3104
Compare
Choose a tag to compare

v5.2.1 (Browser Extensions)

14 May 14:46
f6d3bc0
Compare
Choose a tag to compare

Changelog:

  • Added: Migrate to ambire-common v2.52.1, see changelog in there too.
  • Added: Associate Account Keys with the Legacy Saved Seed
  • Changed: Enhance required env variables validation logic + cleanup obsolete values
  • Changed: Swap and transfer menus
    • Recipient menu to open to the bottom. It can't open as a bottom sheet because the menu is complementary to the input field.
    • The network select for the toToken to open as a bottom sheet
  • Fixed: EOA send calls (txn receipts could be null and that broke the EOA send calls confirmation)
  • Fixed: Focus window fails because of outdated window props
    • Fixed: The extension fails to focus action window if the user changes his resolution
    • Fixed: Incorrect focus position after resizing the browser window
  • Fixed: Window undefined error when trying to open Swap & Bridge from Ambire Rewards

Full Changelog: v5.2.0...v5.2.1