• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-client-gateway / 38392915172
91%

Build:
DEFAULT BRANCH: main
Ran 13 Oct 2026 11:51AM UTC
Jobs 4
Files 1043
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 Oct 2026 11:49AM UTC coverage: 90.087%. Remained the same
38392915172

push

github

web-flow
fix(messages): keep the safe field in typed-data domains (#3603)

Adding a proposer to a nested Safe fails with 422 "Could not calculate messageHash". Since the delegate v3 migration, the web app signs the Safe Queue Service delegate typed data, whose EIP-712 domain has a non-standard `safe` field, and posts it as an off-chain message on the parent Safe. `_TypedDataDomainSchema` stripped unknown keys, so `domain.safe` was gone while `types.EIP712Domain` still listed it, and viem's `hashTypedData` threw `Address "undefined" is invalid`.

The schema now keeps `safe` as an optional, checksummed address. With the domain intact, viem's hash matches the client's delegate hash exactly (checked against the payload the web app sends). Messages without `safe` parse exactly as before: Zod 4 leaves out absent optional keys, so no existing output changes.

**Note for reviewers:** `domain.safe` is now forwarded as part of the message to the queue service (or the transaction service when the queue is off). It has to be, because the queue service needs the full domain to rebuild the hash the parent Safe owner signed. Reads also keep it, since `SafeQueueMessageSchema` reuses `TypedDataSchema`. Not verified: whether the queue service's `POST /api/v1/safes/:safe/messages` accepts a `safe` key in the domain. Draft until that is confirmed on staging.

Safe-shield threat analysis also uses `TypedDataSchema`, so it now receives the full domain instead of a stripped one.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

4635 of 5392 branches covered (85.96%)

Branch coverage included in aggregate %.

11742 of 12787 relevant lines covered (91.83%)

366.31 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
93.67
-0.6% src/modules/safe/domain/safe.repository.ts
Jobs
ID Job ID Ran Files Coverage
1 run-integration-tests-1 - 38392915172.1 13 Oct 2026 11:51AM UTC 1043
38.61
GitHub Action Run
2 run-unit-tests - 38392915172.2 13 Oct 2026 11:51AM UTC 1043
67.39
GitHub Action Run
3 run-integration-tests-2 - 38392915172.3 13 Oct 2026 11:51AM UTC 1043
42.29
GitHub Action Run
4 run-integration-tests-3 - 38392915172.4 13 Oct 2026 11:51AM UTC 1043
43.75
GitHub Action Run
Source Files on build 38392915172
  • Tree
  • List 1043
  • Changed 13
  • Source Changed 2
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #38392915172
  • dae7babb on github
  • Prev Build on main (#38271941207)
  • Next Build on main (#38549656755)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc