Skip to content

Conversation

@shrugs
Copy link
Collaborator

@shrugs shrugs commented Feb 1, 2026

closes #1564

Reviewer Focus (Read This First)

  1. cursorFilter in find-domains.ts — NULL-handling logic for keyset pagination. NULLs can't participate in tuple comparison in Postgres, so they're handled explicitly. explicit ::text/::bigint casts on cursor values to avoid
    parameter type inference failures in tuple context.
  2. composite DomainCursor design — cursor encodes by/dir alongside the sort column value. allows cursor validation (stale cursors with mismatched order args throw) and enables tuple comparison without subqueries. uses superjson for
    bigint encoding; decode is wrapped in try/catch for malformed input.
  3. findDomains CTE structure — unions v1 and v2 domains, joins head label for partial matching + NAME ordering, joins latest registration for REGISTRATION_* ordering. verify the LEFT JOINs and NULLS LAST behavior.

Problem & Motivation

  • Query.domains and Account.domains only supported ordering by id, making search/autocomplete UX hard to build
  • need to support ordering by NAME, REGISTRATION_TIMESTAMP, and REGISTRATION_EXPIRY
  • keyset pagination over non-id columns requires composite cursors that include the sort column value (to enable tuple comparison), otherwise pagination breaks under non-unique sort values

What Changed (Concrete)

  1. new DomainsOrderBy enum (NAME | REGISTRATION_TIMESTAMP | REGISTRATION_EXPIRY) and DomainsOrderInput input type
  2. new OrderDirection enum (ASC | DESC)
  3. order arg added to Query.domains and Account.domains connections
  4. DomainCursor — composite keyset cursor encoding { id, by, dir, value } as base64 superjson. decode catches malformed input with a clear error.
  5. findDomains refactored into a CTE-based query builder. NAME ordering uses the head label (the varying part when a concrete path is specified; equals the leaf when there's no concrete path).
  6. find-domains-by-labelhash-path extracted to its own file (no behavior change)
  7. resolveFindDomains shared resolver replaces duplicated inline pagination logic in query.ts and account.ts
  8. cursorFilter handles NULL and non-NULL cursor values, with explicit ::text/::bigint casts in tuple comparisons
  9. Event.timestamp field added (description is "TODO")
  10. superjson dep added

Design & Planning

  • composite cursor required because simple id-based cursors break when ordering by non-unique columns

  • cursor encodes by/dir to detect stale cursors when callers change order args mid-pagination

  • superjson chosen over custom bigint serializer since it already handles the type safely

  • NULLS LAST is intentional: unregistered domains (NULL registration fields) sort to the end regardless of direction

  • NAME ordering uses head label rather than leaf label — when a concrete path is specified (e.g. sub1.sub2.exam), all results share the same leaf, making leaf-based sorting meaningless. head label is the varying part. when there's no
    concrete path, head = leaf = self, so it's equivalent.

  • full canonical name sorting was considered but deferred — requires a second recursive CTE per result and the canonical name isn't materialized. head label + id tiebreaker is sufficient for autocomplete.

  • Planning artifacts: none

  • Reviewed / approved by: n/a


Self-Review

fixed cursor pagination bugs with NULL values and direction mismatch after initial draft. caught that leaf label was wrong for NAME ordering (identical across all results when concrete path is specified). added explicit type casts in tuple
comparison to avoid Postgres parameter type inference failures. wrapped cursor decode in try/catch.

  • Bugs caught: NULL cursor values in tuple comparison, leaf vs head label for NAME ordering, untyped parameters in tuple comparison, unhandled cursor decode errors
  • Logic simplified: extracted resolveFindDomains to DRY query.ts and account.ts
  • Naming / terminology improved: DomainCursor interface/namespace dual export pattern
  • Dead or unnecessary code removed: old inline pagination logic in both resolvers, leaf label join (no longer needed)

Cross-Codebase Alignment

verified pothos/plugin-relay resolveCursorConnection contract (inverted, before, after, limit). reviewed existing cursors util (still used elsewhere, not removed). find-domains-by-labelhash-path logic unchanged from prior
implementation.

  • Search terms used: resolveCursorConnection, findDomains, DomainCursor, cursors.decode
  • Reviewed but unchanged: cursors.ts (still used by other resolvers)

Downstream & Consumer Impact

  • callers: new optional order arg on Query.domains and Account.domains; defaults to NAME ASC if omitted. existing queries unaffected.

  • Public APIs affected: Query.domains(order:), Account.domains(order:)

  • Docs updated: changeset added (ensapi minor)

  • Naming decisions: DomainsOrderBy vs OrderBy — scoped to avoid collision with future ordering enums on other types


Testing Evidence

  • Testing performed: manual local integration testing
  • Unit tests for DomainCursor encode/decode, and isEffectiveDesc
  • Known gaps: no tests for cursorFilter, NULL cursor edge cases, cursor decode error handling, or cursor validation errors
  • What reviewers have to reason about manually: the NULL cursor handling branches in cursorFilter and the isEffectiveDesc XOR logic

Scope Reductions

  • cursor format validation (decode currently trusts cursor structure after base64/superjson parse) — tracked as TODO in domain-cursor.ts

  • replace correlated registration subquery with a lookup table join — tracked as TODO in find-domains.ts (ENSv2 Refactor Registration/Renewal Superceding Logic #1594)

  • full canonical name sorting (would require second recursive CTE; head label + id tiebreaker is sufficient for now)

  • tests for pagination logic

  • Why they were deferred: keep PR reviewable; lookup table is a separate infrastructure change; full name sorting adds real query cost for marginal UX benefit


Risk Analysis

  • NULL handling in cursorFilter is hand-rolled; if the logic is wrong, pagination silently skips or duplicates rows

  • cursor format change is a breaking change for any client that persists cursors across deploys

  • Risk areas: cursorFilter NULL branches, cursor invalidation on deploy

  • Mitigations: cursor validation throws on by/dir mismatch; explicit casts prevent type inference failures; NULLS LAST is consistent; malformed cursors return clear errors

  • Named owner if this causes problems: @shrugs


Pre-Review Checklist (Blocking)

  • I reviewed every line of this diff and understand it end-to-end
  • I'm prepared to defend this PR line-by-line in review
  • I'm comfortable being the on-call owner for this change
  • Relevant changesets are included (or explicitly not required)

Copilot AI review requested due to automatic review settings February 1, 2026 02:19
@changeset-bot
Copy link

changeset-bot bot commented Feb 1, 2026

🦋 Changeset detected

Latest commit: 618d7a8

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 19 packages
Name Type
ensapi Major
ensindexer Major
ensadmin Major
ensrainbow Major
fallback-ensapi Major
@ensnode/datasources Major
@ensnode/ensrainbow-sdk Major
@ensnode/ponder-metadata Major
@ensnode/ensnode-schema Major
@ensnode/ensnode-react Major
@ensnode/ensnode-sdk Major
@ensnode/ponder-sdk Major
@ensnode/ponder-subgraph Major
@ensnode/shared-configs Major
@docs/ensnode Major
@docs/ensrainbow Major
@docs/mintlify Major
@namehash/ens-referrals Major
@namehash/namehash-ui Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link
Contributor

vercel bot commented Feb 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

3 Skipped Deployments
Project Deployment Actions Updated (UTC)
admin.ensnode.io Skipped Skipped Feb 10, 2026 4:04am
ensnode.io Skipped Skipped Feb 10, 2026 4:04am
ensrainbow.io Skipped Skipped Feb 10, 2026 4:04am

@shrugs shrugs changed the base branch from main to feat/canonical-name-heuristic February 1, 2026 02:19
@coderabbitai
Copy link

coderabbitai bot commented Feb 1, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Introduces ordered, cursor-based pagination for domain queries: new OrderDirection and DomainsOrderBy enums, DomainsOrderInput, DomainCursor encoding/decoding, centralized resolveFindDomains resolver, rebuilt findDomains query builders/types, and schema updates to Query.domains and Account.domains to accept an order argument.

Changes

Cohort / File(s) Summary
Schema: ordering & integration
apps/ensapi/src/graphql-api/schema/order-direction.ts, apps/ensapi/src/graphql-api/schema/domain.ts, apps/ensapi/src/graphql-api/schema/query.ts, apps/ensapi/src/graphql-api/schema/account.ts
Add OrderDirection, DomainsOrderBy, DomainsOrderInput, and default order constants; expose order?: DomainsOrderInput on Query.domains and Account.domains; switch resolvers to use resolveFindDomains.
Central resolver
apps/ensapi/src/graphql-api/lib/find-domains/find-domains-resolver.ts
New resolveFindDomains implementing keyset cursor pagination, cursor decode/encode, SQL execution, dataloader hydration, and connection/pageInfo assembly.
Cursor codec
apps/ensapi/src/graphql-api/lib/find-domains/domain-cursor.ts
New DomainCursor encode/decode helpers (base64 + superjson) and DomainCursor interface for stable multi-column cursors.
Query builder & core logic
apps/ensapi/src/graphql-api/lib/find-domains/find-domains.ts, apps/ensapi/src/graphql-api/lib/find-domains/types.ts
New findDomains CTE/SQL builder, ordering helpers (orderFindDomains, cursorFilter, isEffectiveDesc) and supporting types for ordering/pagination.
Label-hash helpers
apps/ensapi/src/graphql-api/lib/find-domains/find-domains-by-labelhash-path.ts
Removed previous in-file orchestration; now exposes v1DomainsByLabelHashPath and v2DomainsByLabelHashPath helper exports.
Schema extras & docs
apps/ensapi/src/graphql-api/schema/event.ts, .changeset/whole-ways-grin.md, apps/ensapi/package.json
Add Event.timestamp BigInt field; changeset documenting ordering support; add superjson dependency.

Sequence Diagram

sequenceDiagram
    participant Client
    participant GraphQL as GraphQL Resolver
    participant ResolveFind as resolveFindDomains
    participant Cursor as DomainCursor
    participant Builder as findDomains / orderFindDomains
    participant DB as Database
    participant DL as DomainDataLoader

    Client->>GraphQL: Query domains(order, first/after)
    GraphQL->>ResolveFind: resolveFindDomains({ where, order, first, after })
    ResolveFind->>Cursor: decode(after)
    Cursor-->>ResolveFind: DomainCursor (id, by, dir, value)
    ResolveFind->>Builder: build base union query + cursor filter + ordering
    Builder->>DB: Execute paginated SQL
    DB-->>ResolveFind: Rows with order values
    ResolveFind->>DL: load(ids...)
    DL-->>ResolveFind: Hydrated Domain objects
    ResolveFind->>Cursor: encode(...) for edges
    ResolveFind-->>GraphQL: Connection (edges, pageInfo)
    GraphQL-->>Client: GraphQL response
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~65 minutes

Possibly related PRs

Poem

🐰
I hopped through ORDER, cursors in paw,
NAME and time and expiry — one neat law,
Encoded keys and pages in tow,
Domains parade where queries flow,
A tiny rabbit cheers this GraphQL show!

🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning One out-of-scope change found: Event.timestamp field addition in event.ts appears unrelated to domain ordering requirements and is not mentioned in the linked issue or PR objectives. Either justify why Event.timestamp is needed for domain ordering support, move it to a separate PR, or remove it from this changeset to maintain scope focus.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR implements ENSv2 domain search ordering semantics (#1564) by adding DomainsOrderInput, OrderDirection enum, cursor-based pagination, and resolver integration across Query and Account domains fields.
Docstring Coverage ✅ Passed Docstring coverage is 88.24% which is sufficient. The required threshold is 80.00%.
Title check ✅ Passed The pull request title 'ENSv2 Find Domain Ordering Support' clearly summarizes the main change: adding ordering/sorting capabilities to domain queries in the ENSv2 GraphQL API.
Description check ✅ Passed The PR description is comprehensive and well-structured, following the Lite PR template with clear sections covering summary, motivation, what changed, design decisions, testing, and risk analysis.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/domain-ordering

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for ordering domain search results in the ENSv2 API. It introduces new GraphQL input types to allow clients to specify the field to order by (NAME, REGISTRATION_TIMESTAMP, or REGISTRATION_EXPIRY) and the sort direction (ASC or DESC).

Changes:

  • Added OrderDirection enum and DomainsOrderBy enum with DomainsOrderInput type for specifying ordering in domain queries
  • Refactored findDomains function to join additional data (labels and registrations) needed for ordering
  • Implemented orderFindDomains function to build SQL ORDER BY clauses based on user input
  • Integrated ordering support into both Query.domains and Account.domains fields

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
apps/ensapi/src/graphql-api/schema/order-direction.ts New file defining OrderDirection enum (ASC/DESC)
apps/ensapi/src/graphql-api/schema/domain.ts Added DomainsOrderBy enum and DomainsOrderInput type, imported OrderDirection
apps/ensapi/src/graphql-api/schema/query.ts Added order parameter to domains query, integrated orderFindDomains function, removed unused asc/desc imports
apps/ensapi/src/graphql-api/schema/account.ts Added order parameter to Account.domains field, integrated orderFindDomains function
apps/ensapi/src/graphql-api/lib/find-domains.ts Refactored findDomains to support ordering with additional joins for labels and registrations, added orderFindDomains function

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Base automatically changed from feat/canonical-name-heuristic to main February 2, 2026 07:23
@shrugs shrugs force-pushed the feat/domain-ordering branch from f7b2e8c to 0a03e2a Compare February 2, 2026 07:29
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 2, 2026 07:29 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 2, 2026 07:29 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 2, 2026 07:29 Inactive
Copilot AI review requested due to automatic review settings February 2, 2026 07:33
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 2, 2026 07:33 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 2, 2026 07:33 Inactive
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 7 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

- Fix correlated subquery bug in latestRegistration that compared
  domainId to itself instead of outer query
- Fix partial filtering to use headLabel alias instead of schema.label
- Use NULLS LAST for both sort directions so unregistered domains
  always appear at end

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 2, 2026 09:17 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 2, 2026 09:17 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 2, 2026 09:17 Inactive
…ain methods, i.e. `Account.domains(order: { by: NAME dir: ASC })`.
Copilot AI review requested due to automatic review settings February 2, 2026 09:19
…rsors

cast cursor.value to ::text or ::bigint in tuple comparison to avoid
Postgres "could not determine data type of parameter" errors. also
wrap DomainCursor.decode in try/catch for clear error on malformed input.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings February 10, 2026 02:49
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 10, 2026 02:49 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 10, 2026 02:49 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 10, 2026 02:49 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 10, 2026 02:51 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 10, 2026 02:51 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 10, 2026 02:51 Inactive
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 13 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@vercel vercel bot temporarily deployed to Preview – ensnode.io February 10, 2026 03:10 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 10, 2026 03:10 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 10, 2026 03:10 Inactive
Copilot AI review requested due to automatic review settings February 10, 2026 03:28
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 10, 2026 03:28 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 10, 2026 03:28 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 10, 2026 03:28 Inactive
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 15 changed files in this pull request and generated 5 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +22 to +31
/**
* The criteria by which the set is ordered. One of NAME, REGISTRATION_TIMESTAMP, or REGISTRATION_EXPIRY.
*/
by: typeof DomainsOrderBy.$inferType;

/**
* The direction in which the set is ordered, either ASC or DESC.
*/
dir: typeof OrderDirection.$inferType;

Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DomainsOrderBy/OrderDirection are imported as type-only, but the DomainCursor interface uses typeof DomainsOrderBy.$inferType and typeof OrderDirection.$inferType (requires value-space access). This should be changed to use DomainsOrderByValue / OrderDirectionValue types, or import the enum refs as values.

Copilot uses AI. Check for mistakes.
export type DomainsOrderByValue = typeof DomainsOrderBy.$inferType;

export const DomainsOrderInput = builder.inputType("DomainsOrderInput", {
description: "Ordering options for domains query. If no order is provided, the default isASC.",
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in description: "default isASC" is missing a space and reads incorrectly. Please update the description string (e.g., "default is ASC").

Suggested change
description: "Ordering options for domains query. If no order is provided, the default isASC.",
description: "Ordering options for domains query. If no order is provided, the default is ASC.",

Copilot uses AI. Check for mistakes.
Comment on lines +225 to +232
export function cursorFilter(
domains: ReturnType<typeof findDomains>,
cursor: DomainCursor,
queryOrderBy: typeof DomainsOrderBy.$inferType,
queryOrderDir: typeof OrderDirection.$inferType,
direction: "after" | "before",
effectiveDesc: boolean,
): SQL {
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are no tests covering the keyset pagination filter logic in cursorFilter (NULL cursor branch and non-NULL tuple comparison branches). Since this logic is easy to regress and can silently skip/duplicate rows, adding unit tests for the main branches (per orderBy, per direction, NULL/non-NULL cursor.value) would materially reduce risk.

Copilot uses AI. Check for mistakes.
Comment on lines +17 to +18
import type { DomainsOrderBy } from "@/graphql-api/schema/domain";
import type { OrderDirection } from "@/graphql-api/schema/order-direction";
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DomainsOrderBy and OrderDirection are imported with import type, but later the file uses typeof ...$inferType in signatures. That pattern requires a value import and will fail TS compilation. Consider switching these signatures to the already-exported DomainsOrderByValue / OrderDirectionValue types (or import the enum refs as runtime values).

Suggested change
import type { DomainsOrderBy } from "@/graphql-api/schema/domain";
import type { OrderDirection } from "@/graphql-api/schema/order-direction";
import { DomainsOrderBy } from "@/graphql-api/schema/domain";
import { OrderDirection } from "@/graphql-api/schema/order-direction";

Copilot uses AI. Check for mistakes.
Comment on lines +56 to +61
timestamp: t.field({
description: "TODO",
type: "BigInt",
nullable: false,
resolve: (parent) => parent.timestamp,
}),
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New Event.timestamp field is exposed but its description is still the placeholder "TODO". Since this is a public schema field, consider giving it a concrete description (units, source, and whether it’s block timestamp).

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Contributor

github-actions bot commented Feb 10, 2026

🚀 Preview Packages - feat/domain-ordering

NPM Packages:

# Install latest preview for this branch
pnpm add @ensnode/datasources@preview-feat-domain-ordering
pnpm add @ensnode/ensnode-react@preview-feat-domain-ordering
pnpm add @ensnode/ensrainbow-sdk@preview-feat-domain-ordering
pnpm add @ensnode/ensnode-schema@preview-feat-domain-ordering
pnpm add @ensnode/ensnode-sdk@preview-feat-domain-ordering
pnpm add @ensnode/ponder-metadata@preview-feat-domain-ordering
pnpm add @ensnode/ponder-sdk@preview-feat-domain-ordering
pnpm add @ensnode/ponder-subgraph@preview-feat-domain-ordering
pnpm add @ensnode/ens-referrals@preview-feat-domain-ordering
pnpm add @ensnode/namehash-ui@preview-feat-domain-ordering

# Or install specific version
pnpm add @ensnode/ensnode-sdk@0.0.0-preview-feat-domain-ordering-20260210042144

Docker Images:

docker pull ghcr.io/namehash/ensnode/ensindexer:preview-feat-domain-ordering-618d7a8d
docker pull ghcr.io/namehash/ensnode/ensadmin:preview-feat-domain-ordering-618d7a8d
docker pull ghcr.io/namehash/ensnode/ensapi:preview-feat-domain-ordering-618d7a8d
docker pull ghcr.io/namehash/ensnode/ensrainbow:preview-feat-domain-ordering-618d7a8d

Build Info:

  • 🎯 Target: 📦 NPM packages + 🐳 Docker images
  • 📦 Version: 0.0.0-preview-feat-domain-ordering-20260210042144
  • 📝 Commit: 618d7a8d
  • 🌿 Branch: feat/domain-ordering
  • ⏰ Built: 2026-02-10 04:27:08 UTC
  • 🔗 Workflow Run

🤖 This comment will be updated on subsequent publishing of release previews from the branch associated with this PR

Note: Preview packages are managed by changesets. NPM dist-tags can be cleaned up manually using npm dist-tag rm @ensnode/ensnode-sdk preview-feat-domain-ordering

@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io February 10, 2026 04:04 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io February 10, 2026 04:04 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io February 10, 2026 04:04 Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ENSv2 Domain Search/Filters

1 participant