github safe-global/safe-wallet-monorepo web-v1.105.0

5 hours ago

🚀 Release web-v1.105.0

📊 Release Statistics

  • Total commits: 279
  • Features: 24
  • Bug fixes: 48
  • Mobile changes: 0
  • Breaking changes: 0

✨ Features

Change PR/Commit Author
feat(web): warn about look-alike addresses in address book and add-Safe flows [WA-3894] #9174 Tong Yao
feat(web): look-alike address warning UI and confirm dialog fixes [WA-3893] #9173 Tong Yao
feat(safenet): track check submission and result in Mixpanel #9277 Fbartoli
feat(spaces): add CSV import and export to Local contacts #9425 Tong Yao
feat(Policies): Hide allowlist creation when experimental toggle is off #9423 Varya
feat(policies): compose the allowlist form and enable Next #9272 Tim
feat(policies): add the allowlist recipients section #9271 Tim
feat(policies): add the allowlist tokens section #9270 Tim
feat(policies): match the allowlist guard banners and flow header to the prototype #9268 Tim
feat(policies): add the allowlist form state and UI building blocks #9267 Tim
feat(policies): wire Active Allowlist to the real data #9290 Varya
feat(policies): Stories for Allowlist: Active and Pending #9257 Varya
feat(policies): add the recipient allowlist entry point and setup flow shell #9142 Tim
feat(spaces): add the v2 address book behind WORKSPACES_ADDRESS_BOOK_V2 [WA-3867] #9171 Tong Yao
feat(policy-guard): use the policy indexer's deployment addresses #9232 Tim
feat(policies): wire experimental toggle for Recipients Allowlist to backend #9187 Varya
feat(spaces): add flag-gated transactions page scaffold #9138 Clóvis Neto
feat(safenet): read checks from the Aegis deployment #9180 Fbartoli
feat(safenet): send checks to the workspace-scoped route #9139 Fbartoli
feat(policies): Experimental Feature section UI and gating #9099 Varya
feat(policy-guard): add the policy guard contract layer and guard detection #9091 Tim
feat(spaces): ship the new plan design #9028 valleXYZ
feat(security-hub): show "Update" instead of a risk for Safes on an older official version #9076 Tong Yao
feat: add PRO label for gated buttons #9079 Varya

🐛 Bug Fixes

Change PR/Commit Author
fix: count the pending signer address debounce as resolving #9458 Daniel Dimitrov
fix: name the QR chain-prefix switches and test the Receive dialog #9417 Daniel Dimitrov
fix(walletconnect): settle session proposals that were left hanging #9446 Daniel Dimitrov
fix: give the explorer link a tooltip and name when no title is set #9455 Daniel Dimitrov
fix(safenet): show warning-rule risks in orange outside Safe Shield #9427 Fbartoli
fix(safe-shield): show no Pro upgrade before a Workspace flow picks a Safe #9292 Fbartoli
fix(web): let the last signer of an m/n Safe execute without signing first #9426 Pooya Raki
fix(safenet): ignore the previous transaction's cached check #9189 Fbartoli
fix(recovery): accept any official MultiSendCallOnly in the malicious check #9419 Zalens
fix: Custom plan "add payment method" #9399 Yago Pérez Vázquez
fix(spaces): keep the Safe when it is added to a Workspace before the router is ready #9385 Daniel Dimitrov
fix(tests): pass the session to storeSubscription in the Business Workspace seed #9309 Daniel Dimitrov
fix(proposers): show the pending-add conflict and cover the proposer UI in Jest #9294 Daniel Dimitrov
fix(tests): export the spending limit selector that tx_queue_replace_btn imports #9296 Daniel Dimitrov
fix(web): sign messages with a Safe signer through EIP-1271 #9278 Daniel Dimitrov
fix(web): give the Hide suspicious switch an accessible name #9258 Daniel Dimitrov
fix(web): let the batch drawer scroll so the confirm button stays reachable #9131 Zalens
fix: keep EIP-1271 contract signatures when rebuilding a queued tx (GS021) #8809 Jason McPheron
fix: keep the error code when asError redacts a thrown object #9250 Daniel Dimitrov
fix(web): number bulk review rows without gaps for skipped transactions #9225 Daniel Dimitrov
fix: keep the nested tx card rendering on malformed approveHash data #9231 Daniel Dimitrov
fix(recovery): nest cancel-recovery rows on the group's grey surface #9170 Tong Yao
fix(tx-details): render any decoded value and contain decoding errors #9230 Daniel Dimitrov
fix(web): treat a plain EIP-1193 rejection object as a wallet rejection #9215 Daniel Dimitrov
fix(tx-flow): keep bulk Submit disabled until the batch can be sent [WA-3943] #9221 Daniel Dimitrov
fix(bridge): show an unknown fee when the gateway could not decode it #9222 Pooya Raki
fix(recovery): keep Execute disabled until a recovery proposal can be sent [WA-3902] #9177 Daniel Dimitrov
fix(observability): start Datadog RUM only after analytics consent #9179 Tim Daubenschütz
fix(tx-flow): show the risk confirmation in the bulk execute review [WA-3899] #9160 Daniel Dimitrov
fix(recovery): stop the queue crash on out-of-range Delay cooldowns #9167 Daniel Dimitrov
fix(proposers): wrap a contract wallet's delegate signature for EIP-1271 #9176 Pooya Raki
fix(analytics): load Google Analytics only after analytics consent #9096 Tim Daubenschütz
fix(web): label Safe signers instead of unknown recipients #9169 Daniel Dimitrov
fix(spaces): size the Add member button to its label again #9166 valleXYZ
fix(safe-pro): update Safe Pro banner copy and link to the launch post #9105 Tong Yao
fix(web): send one tx creation event for a new 1/n tx #9103 Pooya Raki
fix(web): show the last signature notice on the sign step #9102 Pooya Raki
fix(spaces): show Enterprise support in its own section #9136 valleXYZ
fix(web): add experimentalFeatures to the step-up-auth Workspace mock #9126 valleXYZ
fix(policies): load spending limits when a token is not an ERC-20 #9074 Tim
fix(audit-log): name the copy control by the address it copies #9106 wavey
fix(web): show execution errors on the execute step #9101 Pooya Raki
fix(web): show the execute step after signing on 1/n Safes #9100 Pooya Raki
fix(safe-shield): keep the risk confirmation when an analysis arrives late #9093 Daniel Dimitrov
fix(web): restore the sidebar label on the nested Safes list event #9097 Daniel Dimitrov
fix(safe-shield): keep the risk confirmation on Execute for nested txs #9090 Pooya Raki
fix(spaces): open Safes in their Workspace from any entry route [WA-3790] #8979 Daniel Dimitrov
fix(oidc-auth): keep the gateway path prefix in sign-in, step-up and logout URLs #9064 Daniel Dimitrov

🔧 Chores & Maintenance

Change PR/Commit Author
chore(ci): give lint, type-check and unit-test workflows a required result #9462 Daniel Dimitrov
chore(e2e): run only Playwright shards in the isolated workflow #9412 Daniel Dimitrov
chore(ci): remove the page and Storybook screenshot workflows #9457 Daniel Dimitrov
chore(ci): save caches only from trusted events and skip them in deploy jobs #9452 Daniel Dimitrov
chore(ci): let the Next.js build reuse an older cache #9451 Daniel Dimitrov
chore: update @safe-global dependencies for whitechain #9447 Zalens
chore(ci): Send a Datadog DORA event on web dev and staging deploys #9422 Diego Pazos
chore(web): upgrade Next.js to 16.4.2 #9338 Tim Daubenschütz
chore(ci): stop caching Docker image layers in the Actions cache #9450 Daniel Dimitrov
chore: back-merge web-v1.104.2 from main into dev 95eb4dd5c Pooya Raki
chore(ci): generate the contract types for the mobile type-check and unit tests #9435 Tim Daubenschütz
chore(store): regenerate the CGW client from the staging schema #9429 Tim Daubenschütz
chore(ci): save Yarn caches only outside pull requests #9416 Daniel Dimitrov
chore(e2e): serve Tenderly simulations to the isolated wallet build #9354 Daniel Dimitrov
chore(e2e): poll every 2 s in the isolated E2E build #9353 Daniel Dimitrov
chore(deps): bump qs from 6.14.2 to 6.16.1 #9347 dependabot[bot]
chore(deps-dev): bump storybook from 10.6.0 to 10.6.2 #9346 dependabot[bot]
chore(deps): bump zod from 3.25.76 to 4.6.6 #9364 dependabot[bot]
chore(deps): bump undici from 7.29.1 to 7.30.1 #9363 dependabot[bot]
chore(deps): bump anthropics/claude-code-action from 1.0.248 to 1.0.253 #9362 dependabot[bot]
chore(deps): bump actions/create-github-app-token from 3.2.0 to 3.3.0 #9361 dependabot[bot]
chore(deps): bump CatChen/eslint-suggestion-action from 4.1.36 to 4.1.37 #9360 dependabot[bot]
chore(e2e): serve the config service logos on the isolated stack #9332 Daniel Dimitrov
chore: upload Storybook screenshots to Argos weekly #9325 Daniel Dimitrov
chore: back-merge main to dev after release web-v1.104.1 b5f7b08fe GH Signer Bot
chore: update @safe-global dependencies #9304 Zalens
chore: update Node to 24.22.1 for the October 2026 security release #9254 Daniel Dimitrov
chore: back-merge web-v1.104.0 from main into dev b9c2845ea valleXYZ
chore(ci): bump cypress-io/github-action to v7.4.6 #9243 Daniel Dimitrov
chore(views): lint raw colours with @shadcn/lint #9242 Tim Daubenschütz
chore(ci): run Cypress without Cypress Cloud recording #9204 Daniel Dimitrov
chore(deps): bump follow-redirects from 1.16.0 to 1.16.1 #9236 dependabot[bot]
chore(deps-dev): bump vite from 8.3.0 to 8.3.3 #9235 dependabot[bot]
chore(deps): bump handlebars from 4.7.9 to 4.7.10 #9234 dependabot[bot]
chore(e2e): update the isolated Transaction Service to v6.11.0 #9211 Daniel Dimitrov
chore: backmerge web-v1.103.0 from main into dev 735f226ba Pooya Raki
chore(e2e): give the isolated wallet build a WalletConnect project ID #9196 Daniel Dimitrov
chore(e2e): run every isolated spec on each pull request #9130 Daniel Dimitrov
chore(e2e): run the Queue Service in the isolated backend #9085 Daniel Dimitrov
chore: keep private data out of the public repository #9186 Tim Daubenschütz
chore: reduce verify memory use and stop orphan test processes #9168 Daniel Dimitrov
chore(store): generate the Safenet checks endpoint #9140 Fbartoli
chore(store): regenerate the CGW schema from staging #9163 valleXYZ
chore(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 #9150 dependabot[bot]
chore(deps): bump linear/linear-release-action from 0.18.0 to 0.18.1 #9149 dependabot[bot]
chore(deps): bump cypress-io/github-action from 6.10.9 to 7.4.6 #9148 dependabot[bot]
chore(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 #9147 dependabot[bot]
chore(deps): bump anthropics/claude-code-action from 1.0.241 to 1.0.248 #9146 dependabot[bot]
chore(storybook): stop shipping the store with every story and pre-gzip the preview #9127 Tim Daubenschütz
chore: lock GitHub Actions dependencies with actions.lock #9095 Daniel Dimitrov
chore(store): regenerate the CGW schema from staging #9125 Tong Yao

📦 Other Changes

Change PR/Commit Author
tests: stop ticking the risk checkbox for trusted journey Safes #9480 Daniel Dimitrov
tests: fail isolated E2E steps after 20 s, not 60 to 120 s #9460 Daniel Dimitrov
tests: seed journey Safes as trusted, check the untrusted risk once #9459 Daniel Dimitrov
tests: cover the Sign and relay paths of the last signer of an m/n Safe #9454 Daniel Dimitrov
tests: render a short slice of the recorded history in PaginatedTxns #9472 Daniel Dimitrov
tests: cover Workspace wallet sign-in, dashboard and invite in Playwright #9414 Daniel Dimitrov
tests: cover proposer validation, Safe Apps signing and the WalletConnect prompt in Jest #9413 Daniel Dimitrov
tests: replace swap, staking and tx history Cypress tests with fixture tests #9402 Daniel Dimitrov
tests: delete Cypress tx history tests already covered by unit and component tests #9401 Daniel Dimitrov
tests: move the mastercopy warning check to Playwright #9410 Daniel Dimitrov
tests: cover queue reject, replace and share-link checks in Jest #9409 Daniel Dimitrov
tests: sample the isolated runner specs from the registry, not by name #9456 Daniel Dimitrov
tests: cover tx creation, notes and fallback warnings below Cypress #9398 Daniel Dimitrov
tests: delete Cypress tx creation checks already covered elsewhere #9397 Daniel Dimitrov
tests: cover the swap sanctions check and swap entry points in Jest, drop their Cypress tests #9396 Daniel Dimitrov
tests: delete the TWAP widget and Safe Shield copilot Cypress tests #9395 Daniel Dimitrov
tests: cover nested Safe curation, funding and navigation, drop Cypress #9400 Daniel Dimitrov
tests: delete Cypress regression tests that other tests already cover #9392 Daniel Dimitrov
tests: cover removing a counterfactual Safe from the Safe list in Jest #9408 Daniel Dimitrov
tests: cover multichain signer warnings, creation and selector in Jest and Playwright, drop the rest of the Cypress group #9386 Daniel Dimitrov
tests: give each Safe Shield contract fixture its own default details #9389 Daniel Dimitrov
tests: cover Safe creation in Jest and remove the create-Safe Cypress specs #9394 Daniel Dimitrov
tests: delete the Cypress create-Safe checks that Jest and journeys cover #9393 Daniel Dimitrov
tests: replace address book Cypress specs with a Playwright regression #9390 Daniel Dimitrov
tests: cover address book and data import with unit and component tests #9388 Daniel Dimitrov
tests: delete multichain, safe selector and sidebar Cypress cases that are already covered #9384 Daniel Dimitrov
tests: cover asset table sorting and paging in Jest, drop Cypress tokens #9379 Daniel Dimitrov
tests: remove Cypress assets, NFT and positions tests covered elsewhere #9378 Daniel Dimitrov
refactor(views): move Identicon to @safe-global/views #9241 Tim Daubenschütz
tests: delete the Cypress smoke suite that Playwright and Jest cover #9375 Daniel Dimitrov
tests: cover the Safe Shield recipient and bridge findings below E2E #9371 Daniel Dimitrov
tests: stop importing Safe Shield hooks directly in review test #9383 Daniel Dimitrov
tests(e2e): fix the Ledger and WalletConnect nested signer specs on the isolated stack #9372 Daniel Dimitrov
tests: expect the hair space after the currency sign in the positions tests #9382 Daniel Dimitrov
Revert "chore(deps): bump zod from 3.25.76 to 4.6.6" (#9373) #9364 Daniel Dimitrov
tests(e2e): add a Safe Shield recurring-recipient journey on the isolated stack #9357 Daniel Dimitrov
tests(e2e): check Assets › Positions against the positions that Zerion reports #9369 Daniel Dimitrov
tests: cover the Safe Shield copilot states in Jest, drop their Cypress copies #9355 Daniel Dimitrov
tests: cover bulk execution and batch rows in Jest, drop Cypress #9351 Daniel Dimitrov
tests(e2e): require conflicting proposals in the queue widget smoke test #9370 Daniel Dimitrov
tests: block a sanctioned swap recipient for every order type #9352 Daniel Dimitrov
docs: drop the Cypress migration status file and guide #9368 Daniel Dimitrov
tests: cover the recovery execute, cancel and remove review screens #9345 Daniel Dimitrov
tests(e2e): serve a local Zerion to the gateway on the isolated stack #9356 Daniel Dimitrov
tests(e2e): check the queue widget, the token lists and the batch review in Playwright #9350 Daniel Dimitrov
tests: delete the Cypress smoke specs that Playwright and Jest already cover #9349 Daniel Dimitrov
tests: cover loading a Safe in Jest and a journey, delete load_safe_2 and load_safe_3 #9366 Daniel Dimitrov
tests: delete the Cypress recovery checks that Jest and the journey cover #9339 Daniel Dimitrov
tests: restore the inputName step that load_safe_3 still uses #9341 Daniel Dimitrov
tests(e2e): deploy multichain Safes on every network, check one address #9335 Daniel Dimitrov
tests: show Spaces page stories with Safes and contacts #9334 Daniel Dimitrov
tests: make four weak Cypress checks verify their title #9340 Daniel Dimitrov
tests: delete the Cypress tests that repeat another test #9337 Daniel Dimitrov
tests: fold the three Cypress queue decoding specs into tx_queue #9336 Daniel Dimitrov
tests: make two Cypress page-object checks able to fail #9333 Daniel Dimitrov
tests: delete the Cypress visual tests that Storybook stories cover #9203 Daniel Dimitrov
tests(e2e): relay a transfer at a Business Workspace's expense #9330 Daniel Dimitrov
tests(e2e): send a Transaction Builder call in a journey, drop the last Cypress happy path #9327 Daniel Dimitrov
tests: give the MultiAccountContextMenu stories a mock store #9329 Daniel Dimitrov
tests(e2e): start the forks that Playwright specs need, create a Safe on several networks #9326 Daniel Dimitrov
tests(e2e): create a Safe and a nested Safe in journeys, drop their Cypress happy paths #9323 Daniel Dimitrov
tests(e2e): filter the history in a journey and retire the weekly Cypress happy path job #9322 Daniel Dimitrov
tests: cover the Modules route to the recovery removal in Jest, drop its Cypress happy path #9321 Daniel Dimitrov
tests(e2e): execute a transfer with the relay, drop the Cypress relay happy path #9319 Daniel Dimitrov
tests: delete the Cypress happy paths that the isolated journeys cover #9318 Daniel Dimitrov
tests: delete the API-only E2E tests and run the credentials tests with node #9316 Daniel Dimitrov
tests: cover the export button and summary and the address book rows in Jest #9328 Daniel Dimitrov
tests(e2e): pay an ENS name and suggest a signer's ENS name on the isolated stack #9317 Daniel Dimitrov
tests: move the Cypress smoke form and storage checks to Jest #9311 Daniel Dimitrov
tests(e2e): group the Auth0 specs and share their helpers #9310 Daniel Dimitrov
tests: cover the step-up of the Workspace billing actions #9081 Daniel Dimitrov
tests(e2e): add a Workspace policies journey for the proposer policy #9300 Daniel Dimitrov
tests(e2e): add a policy indexer mock to the isolated stack #9299 Daniel Dimitrov
tests: delete the Cypress proposer checks that journeys and Jest replace #9295 Daniel Dimitrov
tests(e2e): add and delete a proposer in the Safe settings #9288 Daniel Dimitrov
tests: cover the batched transaction list in the bulk review #9285 Daniel Dimitrov
tests(e2e): name the repeated journey steps once #9303 Daniel Dimitrov
tests(e2e): say in each journey who is connected and who owns the Safe #9302 Daniel Dimitrov
tests: delete the Cypress owner checks that the journey and Jest cover #9301 Daniel Dimitrov
tests(e2e): add, replace and remove a signer in the Safe settings #9297 Daniel Dimitrov
tests(e2e): execute a transaction that an owner Safe confirmed with EIP-1271 #9282 Daniel Dimitrov
tests(e2e): confirm and propose through the parent Safe over WalletConnect #9279 Daniel Dimitrov
tests(e2e): sign a child Safe message through a 2/2 child and a 2/2 parent #9293 Daniel Dimitrov
tests(e2e): sign a message for a child Safe 1.5.0 through its parent over WalletConnect #9281 Daniel Dimitrov
tests(e2e): propose, execute and delete transactions as a delegate proposer #9286 Daniel Dimitrov
tests: cover the mass payout form rules in Jest, drop Cypress #9284 Daniel Dimitrov
tests: delete the Cypress bulk execution checks that the journey covers #9283 Daniel Dimitrov
docs: keep business logic out of @safe-global/views #9280 Tim Daubenschütz
tests(e2e): show a connected non-owner why Send is disabled #9274 Daniel Dimitrov
tests: cover the spending limit send options and Max, drop Cypress #9275 Daniel Dimitrov
tests(e2e): confirm and pick the parent Safe signer of a child Safe #9263 Daniel Dimitrov
tests(e2e): sign a child Safe transfer through its parent Safe in the app #9262 Daniel Dimitrov
tests: delete the Cypress tx history specs that Jest and the smoke cover #9259 Daniel Dimitrov
tests: cover the tx history smoke rows with recorded data and a Playwright smoke #9256 Daniel Dimitrov
refactor(spending-limits): render the limit review details in a presentational component #9252 Daniel Dimitrov
tests: cover the spending limit reviews and the single allowance call #9249 Daniel Dimitrov
tests: assert the theme token classes that #9242 introduced #9251 Daniel Dimitrov
tests: delete the Cypress message specs that Jest and the journey cover #9245 Daniel Dimitrov
docs: build design prototypes as reusable views in packages/views #9244 Tim Daubenschütz
tests: validate CoW mock settlement bodies without a type cast #9207 Daniel Dimitrov
tests(e2e): sign a pending off-chain message with a second owner #9238 Daniel Dimitrov
tests: fix the isolated E2E tests that fail on every PR #9233 Daniel Dimitrov
tests: cover NFT transfer and payout review in Jest, drop Cypress #9226 Daniel Dimitrov
tests(web): cover connected-Safe signer detection and isSafeSigner #9213 Daniel Dimitrov
tests(e2e): show a user rejection when the parent Safe discards a nested request #9216 Daniel Dimitrov
tests(e2e): execute a child Safe transfer through its parent over WalletConnect #9212 Daniel Dimitrov
tests(e2e): connect a parent Safe as the signer of its child over WalletConnect #9210 Daniel Dimitrov
tests: cover the batch review and sidebar with component tests #9224 Daniel Dimitrov
tests: delete the Cypress NFT checks that Jest now covers #9223 Daniel Dimitrov
tests: add Earn and Swap stories for the state after consent #9220 Daniel Dimitrov
tests: delete the Cypress role checks that Jest wiring tests cover #9206 Daniel Dimitrov
tests: delete the Cypress tests that the isolated journeys replace #9205 Daniel Dimitrov
tests: wait for play functions and add the missing visual states as stories [WA-3888] #9132 Daniel Dimitrov
tests(e2e): sign a message, reject a request and disconnect over WalletConnect #9198 Daniel Dimitrov
tests(e2e): pair a dApp over WalletConnect and execute its transaction #9197 Daniel Dimitrov
tests: sign and execute Safe transactions with an emulated Ledger #9094 Daniel Dimitrov
tests: add the recovery lifecycle journeys on the isolated stack [WA-3871] #9159 Daniel Dimitrov
tests: cover the recovery queue item states [WA-3871] #9158 Daniel Dimitrov
tests: add the two-signer confirm journey on the isolated stack [WA-3871] #9157 Daniel Dimitrov
tests: add the NFT, mass payout and spending limit journeys [WA-3871] #9156 Daniel Dimitrov
tests: add the batch and bulk-execute journeys on the isolated stack [WA-3871] #9155 Daniel Dimitrov
tests: add the reject, replace and delete journeys on the isolated stack [WA-3871] #9154 Daniel Dimitrov
tests: add the harness for the isolated-stack journeys [WA-3871] #9153 Daniel Dimitrov
tests: harden the isolated-stack mocks #9162 Daniel Dimitrov
Revert "chore: keep private data out of the public repository" (#9199) #9186 Tim Daubenschütz
tests(web): stop awaiting the void trackTxEvent in TxFlowProvider tests #9185 Pooya Raki
tests: rewrite the isolated-stack mocks in TypeScript #9087 Daniel Dimitrov
tests: test our side of the third-party integrations [WA-3887] #9129 Daniel Dimitrov
tests: cover the role gating of the batch button in the header #9121 Daniel Dimitrov
tests: record tx history fixtures and move tx_history_2 to Jest [WA-3873] #9120 Daniel Dimitrov
tests: cover the reject, replace and delete flows below E2E [WA-3871] #9119 Daniel Dimitrov
tests: remove duplicate E2E tests [WA-3879] #9118 Daniel Dimitrov
tests: cover the message rendering in Jest and fix an on-chain message check [WA-3875] #9117 Daniel Dimitrov
tests: cover the role gating of the asset send, swap and NFT send buttons #9116 Daniel Dimitrov
tests: cover the wallet role hooks #9115 Daniel Dimitrov
tests: cover the role gating of the sign, reject and new transaction buttons #9114 Daniel Dimitrov
tests: cover the role gating of the settings buttons #9113 Daniel Dimitrov
tests: add a role helper and cover the remaining CheckWallet rules [WA-3872] #9112 Daniel Dimitrov
tests: keep the browser-only step-up-auth cases and type their mocks [WA-3878] #9111 Daniel Dimitrov
tests: cover the NFT list rows and the preview modal in NftCollections #9110 Daniel Dimitrov
tests: move the members table checks to Jest [WA-3877] #9109 Daniel Dimitrov
docs(web): ask agents not to add replaceable next/* imports #9123 Tim Daubenschütz
tests(web): find the signer copy control by its new name #9108 Daniel Dimitrov
tests(web): re-render the confirm batch flow with a fresh element #9104 Pooya Raki
tests: update story snapshots for the Track wrapper class #9098 Daniel Dimitrov
refactor(web): move remaining tracking to useTrackOnce and Track #9080 Zalens
refactor(web): move My accounts and common component tracking to useTrackOnce and Track #9071 Zalens
refactor(web): move Workspace viewed and click tracking to useTrackOnce and Track #9069 Zalens
refactor(web): track Workspace API events from a store listener #9068 Zalens
tests: fix the failing Cypress regression, happy path and visual specs #9083 Pooya Raki
tests: wait for the real app state in the Spaces basic flow spec #9084 Daniel Dimitrov
tests: cover the step-up of every Workspace action inside and outside a Workspace #9075 Daniel Dimitrov
tests: cover email sign-in and Workspace step-up end to end #9065 Daniel Dimitrov
tests: add an Auth0 mock for email sign-in and step-up to the isolated stack #9063 Daniel Dimitrov

Generated from main..dev on 2026-10-29 16:05:51 UTC


🔗 IPFS release

Don't miss a new safe-wallet-monorepo release

NewReleases is sending notifications on new releases.