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

safe-global / safe-client-gateway / 25036580642 / 1
90%
main: 90%

Build:
DEFAULT BRANCH: main
Ran 28 Apr 2026 06:04AM UTC
Files 2241
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

28 Apr 2026 05:58AM UTC coverage: 78.756% (-0.4%) from 79.168%
25036580642.1

push

github

web-flow
feat: private address book contacts and request-to-add workflow (#3026)

* feat: add private address book contacts and request-to-add workflow

Allow non-admin Space members to create private contacts visible only
to them, and request to add those contacts to the shared space address
book. Admins can approve or reject pending requests.

New tables:
- user_address_book_items: per-user private contacts scoped to a space
- address_book_requests: pending approval requests with status enum

New endpoints:
- GET/PUT/DELETE /v1/spaces/:spaceId/address-book/private
- GET/POST /v1/spaces/:spaceId/address-book/requests
- PUT /v1/spaces/:spaceId/address-book/requests/:id/approve
- PUT /v1/spaces/:spaceId/address-book/requests/:id/reject

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: preserve original author when approving address book requests

Add createdByOverride to upsertMany so approved contacts keep the
requester's wallet address as createdBy instead of the admin's.
The approve flow looks up the private contact to get the original
author's wallet address.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: load requestedBy.wallets relation for Requested by column

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: resolve requestedBy wallet via IWalletsRepository instead of nested relation

The requestedBy.wallets nested relation caused a TypeORM joinColumns error
because the Wallet entity wasn't registered in SpacesModule. Instead,
resolve the wallet address via IWalletsRepository.findByUser() in the
service layer.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: fix CI lint, prettier and license-headers

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix: persist requester wallet on address-book requests

Stores the requester's wallet on `address_book_requests` at creation, so
attribution is stable across private-cont... (continued)

2480 of 4404 branches covered (56.31%)

Branch coverage included in aggregate %.

27801 of 34045 relevant lines covered (81.66%)

243.27 hits per line

Source Files on job run-integration-tests - 25036580642.1
  • Tree
  • List 2241
  • Changed 316
  • Source Changed 5
  • Coverage Changed 316
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 25036580642
  • 8465f19f on github
  • Prev Job for on main (#24999258699.1)
  • Next Job for on main (#25101828287.2)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc