Skip to content

Handle Trading: surface for-sale/offer on name-check + expiry/listing in the list; add auto-renewal & bulk actions #211

Description

@Giri-Aayush

Summary

From a Discord support ticket (Signal2o). Handle trading works, but a few things are hard to discover or missing. The offer flow and expiry display already exist on the handle detail page — they're just not surfaced from the name-check screen or the trading list — and two trading conveniences aren't built yet. This is an enhancement bundle, not a bug report. (The separate "Failed to load floor/listings/sales" he also saw is a backend issue and is being routed to the backend team, not included here.)

Requests

1. Name-check result should surface for-sale status + link to the offer flow

Checking a taken name in DomainRegistration currently just shows "taken" (website/src/components/explore/DomainRegistration.tsx:425), with no indication it may be for sale and no path to make an offer. The offer flow and listing status already exist on the handle detail page (website/src/components/handles/HandleDetail.tsx — Make offer at line 377, ListingPanel at line 364), so the taken result should link there, and ideally show for sale · <price> when a listing exists.

2. Surface expiry + for-sale status in the trading / registry list

Expiry is shown on the detail page (HandleDetail.tsx:358, identity.expiresAt) but not in the trading/registry list, so users can miss renewal deadlines. Show expiry (and listing/for-sale status) in the list view too.

3. Auto-renewal

Not implemented today. Add auto-renewal, ideally both per-handle and a global "auto-renew all my handles" toggle, so handles aren't lost to a missed deadline.

4. Bulk actions

Not implemented today. Add multi-select on your own handles to renew several at once, or list several for sale at once.

Not bugs (verified against latest main, for reviewers)

  • Make offer on a taken handle already works on the detail page (HandleDetail.tsx:373-435, createOffer.mutate).
  • Expiry visibility already exists on the detail page (HandleDetail.tsx:355-360).
  • "Failed to load floor/listings/sales" — the client is wired via website/src/hooks/use-identity-market.ts (GraphQL); that failure is on the backend (backend-tinyplace, /marketplace/identities/floor and siblings), so it belongs there, not in this repo.

Reporter

Discord support ticket — Signal2o (no GitHub account, filed on their behalf).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions