🚀 Release web-v1.103.0
📊 Release Statistics
- Total commits: 82
- Features: 14
- Bug fixes: 26
- Mobile changes: 0
- Breaking changes: 0
✨ Features
| Change | PR/Commit | Author |
|---|---|---|
| feat(safenet): request a Safenet check after an owner signs | #9048 | Fbartoli |
| feat(safenet): count the Safenet check in the Safe Shield header | #9038 | Fbartoli |
| feat(safenet): show the check in Copilot | #9025 | Fbartoli |
| feat(safenet): show the check in transaction details | #9024 | Fbartoli |
| feat(safenet): summarise sentinel rejections and failure reasons | #9037 | Fbartoli |
| feat(safenet): link proofs from the audit log and drop the queue chip | #9023 | Fbartoli |
| feat(web): sign before execute for the last signer on m/n Safes | #9035 | Pooya Raki |
| feat(tx-flow): carry nested child tx in parent calldata envelope | #8980 | Pooya Raki |
| feat(policies): read policy token metadata from CGW | #8851 | Tim Daubenschütz |
| feat(web): sign before execute for EOA wallets on threshold-1 safes | #8198 | Pooya Raki |
| feat: delegate v3 migration | #7980 | Pooya Raki |
| feat(web): switch the delete tx signing domain with a QUEUE_SERVICE chain flag | #8904 | Pooya Raki |
| feat: link the footer to the new Legal hub instead of Terms | #8954 | Zalens |
| feat(safe-pro): track the launch funnels in Mixpanel (PLA-2046) | #8905 | Zalens |
🐛 Bug Fixes
| Change | PR/Commit | Author |
|---|---|---|
| fix(web): show fiat decimals in the assets and positions lists | #9073 | Pooya Raki |
| fix(proposers): make nested Safe proposer delegations work on the queue service | #9067 | Pooya Raki |
| fix(tx-builder): name the unit and format on the native value field | #8640 | Gr3g |
| fix(UI): Tenderly settings section with simulation API URL validation | #8990 | Varya |
| fix(web): sign before execute for Safe and smart-contract signers | #9058 | Pooya Raki |
| fix(safe-shield): keep the risk confirmation on the execute step | #9057 | Pooya Raki |
| fix(store): update API schema from staging | #9031 | valleXYZ |
| fix(Address Book): Do not show 0 contacts on error | #9004 | Varya |
| fix: AB UI fixes (no overlapping badges; show full Requested By address) | #9041 | Varya |
| fix(web-tanstack): mount the shared Safe subscriptions from _app | #9029 | Daniel Dimitrov |
| fix(tx): right-align the To address in the compact receipt | #9040 | Pooya Raki |
| fix(views): let tall outlined tabs scroll inside the panel | #9022 | Pooya Raki |
| fix(tx): show the To name chip beside the label in the receipt | #9021 | Pooya Raki |
| fix(safe-pro): show quota refusals as warnings and translate them in set-up replay | #8967 | Daniel |
| fix(earn): stop the Earn intro crashing on chains without eligible tokens | #8984 | Clóvis Neto |
| fix(safe-shield): keep the address-poisoning warning across tx-flow steps | #8968 | Daniel |
| fix(web): reload the signed tx with the Workspace Safe in the execute step | #8987 | Pooya Raki |
| fix(UI): UI improvements for the Signed In section | #8978 | Varya |
| fix(policies): let signers re-enable the module of an unenforced spending limit | #8981 | Tim |
| fix(recovery): render arbitrary Delay module durations in the review step | #8925 | Clóvis Neto |
| fix(safenet): support the Safenet deployment on Gnosis Chain | #8950 | Fbartoli |
| fix(web): keep batch items local instead of proposing them | #8769 | Pooya Raki |
| fix(spaces): send the plan on Workspace Dashboard Viewed only once it is known | #8973 | Zalens |
| fix(UI): tooltips for tokens and chains in the Policies table | #8958 | Varya |
| fix(relay): sponsor a Pro Safe from its plan only [PLA-2095] | #8927 | Daniel |
| fix: Avoid showing PRO for offchain messages | #8929 | Yago Pérez Vázquez |
🔧 Chores & Maintenance
| Change | PR/Commit | Author |
|---|---|---|
| chore(web): upgrade to Next 16 and skip the server render in next dev | #9034 | Tim Daubenschütz |
| chore(deps): bump http-cache-semantics from 4.2.0 to 4.3.0 | #9018 | dependabot[bot] |
| chore(deps): bump anthropics/claude-code-action from 1.0.235 to 1.0.241 | #9012 | dependabot[bot] |
| chore(deps): bump shogo82148/actions-upload-release-asset | #9011 | dependabot[bot] |
| chore(deps): bump MishaKav/jest-coverage-comment from 1.0.36 to 1.0.37 | #9010 | dependabot[bot] |
| chore: stop recording isolated E2E runs to Cypress Cloud | #9042 | Daniel Dimitrov |
| chore: fill the isolated E2E fork shards with plain specs | #9002 | Daniel Dimitrov |
| chore: start isolated e2e backends while the builds run | #8998 | Daniel Dimitrov |
| chore: give the slower fork specs enough isolated E2E shards | #8995 | Daniel Dimitrov |
| chore(e2e): run Cypress specs against an isolated local backend | #8956 | Daniel Dimitrov |
| chore(deps): bump hono from 4.13.5 to 4.13.12 | #8976 | dependabot[bot] |
| chore(deps): bump valibot from 1.2.0 to 1.5.0 | #8975 | dependabot[bot] |
| chore(deps): bump @modelcontextprotocol/sdk from 1.27.1 to 1.31.0 | #8972 | dependabot[bot] |
| chore(deps): bump shell-quote from 1.10.0 to 1.11.0 | #8971 | dependabot[bot] |
| chore(deps): bump proxy-addr from 2.0.7 to 2.0.8 | #8964 | dependabot[bot] |
| chore(deps): bump js-cookie from 3.0.5 to 3.0.7 | #8939 | dependabot[bot] |
| chore(deps): bump compression from 1.7.5 to 1.8.2 | #8963 | dependabot[bot] |
| chore(deps): bump seroval from 1.5.4 to 1.6.8 | #8962 | dependabot[bot] |
| chore(deps): bump docker/setup-buildx-action from 4.3.0 to 4.4.1 | #8919 | dependabot[bot] |
| chore(deps): bump codecov/codecov-action from 7.0.0 to 7.1.1 | #8918 | dependabot[bot] |
| chore(deps): bump anthropics/claude-code-action from 1.0.231 to 1.0.235 | #8917 | dependabot[bot] |
| chore(deps): bump smol-toml from 1.8.0 to 1.9.0 | #8961 | dependabot[bot] |
| chore(deps): bump pbkdf2 from 3.1.3 to 3.1.7 | #8960 | dependabot[bot] |
| chore(deps): bump http-cache-semantics from 4.1.1 to 4.2.0 | #8940 | dependabot[bot] |
| chore(deps-dev): bump the dev-minor-patch group across 1 directory with 48 updates | #8815 | dependabot[bot] |
| chore(deps): bump postcss-selector-parser from 7.1.5 to 7.1.6 | #8966 | dependabot[bot] |
| chore: back-merge main into dev | 1748e62b4
| Tim Schwarz |
| chore: Cleanup plan features | #8933 | Yago Pérez Vázquez |
📦 Other Changes
| Change | PR/Commit | Author |
|---|---|---|
| refactor(web): track Checkout started from the billing API | #9020 | Zalens |
| tests: run Playwright specs against the isolated backend | #9030 | Daniel Dimitrov |
| tests: sign before executing on 1/n Safes in the create tx specs | #9043 | Daniel Dimitrov |
| tests: fix three isolated E2E specs that fail on slow runners | #9003 | Daniel Dimitrov |
| tests: make the slowest and flakiest isolated E2E tests faster and stable | #8997 | Daniel Dimitrov |
| tests: bundle Cypress specs with esbuild | #8996 | Daniel Dimitrov |
| tests: fix the failing isolated E2E specs | #8994 | Daniel Dimitrov |
| tests: upgrade Cypress to 16 and run each isolated shard in one process | #8989 | Daniel Dimitrov |
| refactor(safenet): retire Sepolia fixtures and the plain transport | #8951 | Fbartoli |
| tests: wait for page conditions instead of fixed delays in Cypress | #8985 | Daniel Dimitrov |
| refactor(web): move pure views and shadcn/ui into a @safe-global/views package | #8988 | Tim Daubenschütz |
| refactor(web): move Safe Pro tracking out of component logic | #8974 | Zalens |
| Update CODEOWNERS to reflect new ownership | #8970 | Tim Daubenschütz |
Generated from main..dev on 2026-10-14 08:31:45 UTC