Skip to content

feat(role-manager): enable full ENS with mainnet L1 fallback on testnets#127

Open
pasevin wants to merge 4 commits into
mainfrom
feat/ens-mainnet-l1-fallback
Open

feat(role-manager): enable full ENS with mainnet L1 fallback on testnets#127
pasevin wants to merge 4 commits into
mainfrom
feat/ens-mainnet-l1-fallback

Conversation

@pasevin

@pasevin pasevin commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Bump OZ UI/adapter dependency floors to the 003 ENS release (ui-types/ui-utils 3.3.0, ui-components 3.5.0, ui-react 3.2.0, ui-renderer 3.3.0, adapter-evm 2.3.0) and align pnpm-workspace.yaml overrides to a single ui-types 3.3.0 graph.
  • Wire full ENS: NameResolverBridge (forward resolution in AddressField), ResolvedAddressDisplay + AddressNameResolutionProvider (reverse name + avatar), and enableNameResolution on the Address Book widget.
  • Statically opt in to enableMainnetL1MissFallback: true via RUNTIME_CREATION_OPTIONS threaded through getRuntimeRuntimeProvider.resolveRuntime, so Sepolia rows resolve mainnet ENS names with the default amber cross-network disclaimer.

ENS coverage

Forward resolution (NameResolverBridgeAddressField)

  • AssignRoleDialog, TransferOwnershipDialog, TransferAdminDialog
  • AddContractForm contract-address inputs via DynamicFormField
  • Address Book widget (enableNameResolution={true})

Reverse resolution (ResolvedAddressDisplay)

  • Authorized Accounts table + ManageRolesDialog
  • Roles page account rows + revoke/transfer dialogs
  • Dashboard contract card + pending transfer rows
  • Role Changes account column
  • Mutation ghost previews (GhostAccountRow, GhostPendingTransfer)
  • Add-contract success state
  • Sidebar ContractSelector (per-contract networkId)

Mainnet L1 fallback (003 opt-in)

  • Always on via RUNTIME_CREATION_OPTIONS — no user toggle
  • Cross-network disclaimer left at default (showCrossNetworkFallbackDisclaimer on)

Intentionally excluded (not account addresses)

  • ChangeRow transaction hash column
  • RoleNameDisplay / RoleIdentifiersTable (role identifier hashes, not wallets)

Test plan

  • pnpm install (lockfile clean — no local-link contamination)
  • pnpm --filter @openzeppelin/role-manager-app typecheck
  • pnpm --filter @openzeppelin/role-manager-app lint
  • pnpm --filter @openzeppelin/role-manager-app build
  • pnpm --filter @openzeppelin/role-manager-app test (1183 tests passed)
  • Manual: connect wallet on Sepolia, open Authorized Accounts — mainnet ENS names should appear with amber disclaimer
  • Manual: type vitalik.eth in an AddressField — forward resolution should resolve inline
  • Manual: Address Book add/edit flows resolve names when enableNameResolution is on
  • Manual: sidebar ContractSelector shows reverse ENS on contract address rows when applicable

Bump OZ UI/adapter floors to 003 and statically opt in to
enableMainnetL1MissFallback so Sepolia rows resolve mainnet ENS names
with the default cross-network disclaimer.

Co-authored-by: Cursor <cursoragent@cursor.com>
pasevin and others added 3 commits July 17, 2026 21:12
Contract addresses in the sidebar picker were the last account-style
display still using plain AddressDisplay. Use ResolvedAddressDisplay
with per-contract networkId so reverse ENS applies consistently.

Co-authored-by: Cursor <cursoragent@cursor.com>
The incidental bump to pnpm@11.12.0 caused pnpm/action-setup to fail
during self-install with "Cannot use 'in' operator to search for
'integrity' in undefined". Revert to the main-branch packageManager pin.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bump @openzeppelin/ui-components to ^3.6.0 for showForwardResolutionSuccessAnnouncer.
Add rich ENS preview below AddressField in role dialogs via AddressFieldWithResolvedPreview,
with contract-runtime fallback for reverse resolution. Uses the real UIKit prop — no shim.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant