Skip to content

Conversation

@AugustoL
Copy link
Collaborator

@AugustoL AugustoL commented Dec 12, 2025

Summary

Major release with 222 files changed (+34,803 / -21,046 lines) introducing a complete UI overhaul, new features, and architectural improvements.

New Features

  • Home page search bar with ENS support
  • Subdomain routing (e.g., ethereum.openscan.io → /1)
  • ENS integration - resolve names, display records, reverse lookups
  • Profile pages for networks, apps, and organizations
  • Supporters page
  • Subscriptions page with payment contract integration
  • NFT token detail pages for ERC721/ERC1155
  • Decoded transaction input data and events for verified contracts
  • Message Signer in DevTools
  • Drag-and-drop RPC reordering with Chainlist fetch button
  • About page redesign with vision, principles, and GitHub stats

Architecture

  • New adapter system - Network-specific adapters (Arbitrum, Base, Optimism, Polygon, BNB, EVM)
  • MetadataService - Load network configs from external metadata repository
  • ENSService - Dedicated ENS resolution service
  • Refactored page structure - Pages organized into dedicated directories

Testing & Quality

  • Playwright E2E tests for blocks, transactions, addresses, and tokens
  • Biome linting integrated into CI
  • Bug report template added

UI/UX

  • CSS theme system with variables (removed .light-theme overrides)
  • Consolidated styles into base utilities
  • Theme toggle moved to navbar
  • Background animated blocks (configurable)
  • Improved settings page layout

AugustoL and others added 30 commits November 29, 2025 10:28
  Split the PR preview workflow into two separate workflows to handle
  fork PRs that don't have access to repository secrets:

  1. deploy-pr-preview.yml - Builds the PR and uploads artifacts
     (runs in fork context, no secrets needed)

  2. deploy-pr-preview-netlify.yml - Downloads artifacts and deploys
     (runs via workflow_run in base repo context with secrets access)

  This fixes: "Resource not accessible by integration" error
…ying

The networks were not showing because `getEnabledNetworks()` was called
synchronously during render before the async network data had loaded.

- Derive `enabledNetworks` from `networks` state using useMemo in AppContext
- Update Home.tsx to use `useNetworks()` hook from context
- Add loading state while networks are being fetched
- Add pay() function for subscription payments with event emission
- Add donate() function with message stored in calldata for moderation
- Add executeCall() for owner to recover funds/tokens
- Include comprehensive test suite covering all functionality
- Add contract to TestSuite ignition deployment module
Add a new tool for signing messages and transactions:
- Personal Sign (EIP-191) for plain text messages
- Typed Data (EIP-712) for structured data signing
- Send Transaction for signing and broadcasting raw transactions

Includes wallet connection status, copy buttons, and error handling.
Add toggle to switch between EIP-191 personal sign verification and
raw/pre-hashed message verification. Fixes incorrect address recovery
when verifying signatures of hex strings that were signed as messages.

Also fixes EIP-712 verification by removing EIP712Domain from types.
When viewing a verified contract address, display a Method column showing:
- Decoded function name (green) when matched against ABI
- Function selector (gray) when not decodable
- "Transfer" (blue) for plain ETH transfers

Also centers all table cells for consistent alignment.
Add subscriptions page and fix PR preview
- Add inputDecoder utility for decoding function calls and events with ABI
- Fetch contract data from Sourcify/local artifacts in TransactionDisplay
- Show decoded function name and parameters below raw input data
- Decode events from tx.to using contract ABI with fallback to standard lookup
- Add ABI badge indicator when events are decoded using contract ABI
feat(networks): load network configs from external metadata repository
- Add visual guide with collapsible help images for payment process
- Add paymentHelp1, paymentHelp2, paymentHelp3 images showing steps
- Update subscription steps (payment, sign tx, submit PR/issue, verify)
- Change navbar subscriptions icon from heart to star
- Add subscribe link in footer
- Use OPENSCAN_PAYMENT_ADDRESS constant for contract links
- Style links in help image wrappers with white color
- Resolved conflicts in AddressDisplay.tsx, SearchBox.tsx, Address.tsx
- Added ENS support to Navbar search
- Fixed TypeScript errors and linting issues
- Add networks.json with bundled network configurations
- Update networks.ts to import from local JSON file
- Update MetadataService.ts fetchNetworks to return local data
- Remove clearNetworksCache function (no longer needed)
refactor: use local networks.json instead of fetching from metadata
docs: add contributing guide and PR template
Improve e2e test reliability by increasing retries and adding
incremental timeout on each retry (+20s per attempt).

- Add custom test fixture with timeout that increases on retries
- Increase retries to 3 in CI, 1 locally
- Update all spec files to use the custom fixture
Add comprehensive e2e test suite for Base network (chain ID 8453):

Blocks:
- Genesis block, early blocks, pre/post-upgrade blocks
- Real data from blocks 0, 1M, 10M, 25M
- Gas details, size, fee recipient verification

Transactions:
- Aerodrome DEX swap (swapExactTokensForTokens)
- USDC transfer (transferWithAuthorization)
- Input data and attributes verification

Addresses:
- ERC20 tokens: USDC, USDbC, WETH, AERO
- Aerodrome Router DEX contract
- OP Stack predeploys: SequencerFeeVault, L1Block,
  GasPriceOracle, L2StandardBridge, L2CrossDomainMessenger

Includes upgrade timestamps for Canyon, Delta, Ecotone,
Fjord, Granite, Holocene, and Isthmus.
Add comprehensive e2e tests for Arbitrum One (chain ID 42161) covering
blocks, transactions, and addresses across network history including
Nitro upgrade and ArbOS versions.
Add comprehensive e2e tests for Optimism (chain ID 10) covering blocks,
transactions, and addresses across network history including Bedrock,
Ecotone, and Holocene upgrades. Tests include system transactions
(Type 126) and detailed value assertions for gas, nonce, and hashes.

Also fix strict mode violations in error handling locators across all
test files by adding .first() to prevent multiple element matches.
Add comprehensive e2e tests for BNB Smart Chain (BSC) network covering:

Blocks (43 tests total):
- Genesis block #0 with hash verification
- Block #10,000,000 (pre-Euler) with hash/parentHash
- Block #20,000,000 (post-Euler) with 321 transactions
- Block #30,000,000 (post-Luban, fast finality)
- Block #40,000,000 (post-Feynman, BNB Chain Fusion)
- Block #50,000,000 (post-Maxwell, 0.75s block time)
- More details section tests for all blocks

Transactions:
- Real transaction from block 20M with nonce/position verification
- DEX swap transaction from block 40M
- DEX aggregator transaction from block 50M
- Legacy Type 0 transaction verification

Addresses:
- BEP20 tokens (WBNB, USDT, BUSD, USDC, CAKE, DAI)
- DEX contracts (PancakeSwap Router v2, Factory v2, Universal Router)
- System contracts (ValidatorSet, SystemReward, TokenHub, StakeHub, Governor)
- Staking contracts (PancakeSwap Main Staking, Cake Pool)

Fixture data includes real on-chain block hashes, parent hashes,
and transaction data fetched from BSC mainnet RPC.
Add comprehensive e2e tests for Polygon PoS network covering:

Blocks (46 tests total):
- Genesis block #0 with hash verification
- Block #10,000,000 (early Polygon activity)
- Block #20,000,000 (growing DeFi activity)
- Block #30,000,000 (mature network)
- Block #38,189,056 (Delhi hard fork)
- Block #50,000,000 (high activity)
- Block #62,278,656 (Ahmedabad hard fork - MATIC to POL)
- Block #65,000,000 (post-Ahmedabad POL era)
- More details section tests for all blocks

Transactions:
- Legacy Type 0 NFT transfer from block 30M
- EIP-1559 DeFi swap from block 50M
- EIP-1559 contract interaction from block 65M
- Nonce and position verification

Addresses:
- ERC20 tokens (WPOL, USDC.e, USDC, USDT, WETH, DAI, AAVE, LINK)
- DEX contracts (QuickSwap Router, Uniswap V3, SushiSwap)
- NFT & Lending (OpenSea Storefront, Aave V3 Pool)
- System contracts (POL Token, StateReceiver)

Fixture includes real on-chain data with upgrade history:
- Mainnet launch (May 2020)
- EIP-1559 activation (March 2022)
- Delhi hard fork (January 2023)
- Napoli hard fork (March 2024)
- Ahmedabad hard fork (September 2024)
- Heimdall v2 (July 2025)
- Extract wait helpers to e2e/helpers/wait.ts with retry-aware timeouts
  (formula: 30s base + 10s × retryCount)
- Move mainnet tests to e2e/tests/mainnet/ directory for better organization
- Update all network tests to use shared helpers with testInfo parameter
- Fix Polygon fixture data against Polygonscan:
  - Block 10M/20M transaction counts
  - Block 38,189,056 (Delhi) and 62,278,656 (Ahmedabad) hashes and values
  - Transaction gas values and nonces
  - Transaction 0x1ed0c4... status (success → failed)
- Fix missing testInfo parameters in Optimism tests
- Fix genesis block parent hash locator in Polygon tests (use .first())
- Add DEFAULT_TIMEOUT constant (5s local, 10s CI)
- Update page objects to use DEFAULT_TIMEOUT * 3 for waitForLoad
- Replace hardcoded timeouts in all tests:
  - 5000ms → DEFAULT_TIMEOUT
  - 30000ms → DEFAULT_TIMEOUT * 3
  - 45000ms → DEFAULT_TIMEOUT * 5
- Add .first() to token error handling locator (matches 2 elements)
- Add .first() to Contract Details locator in Optimism test
- Split networks into mainnets and testnets on home page
- Testnets hidden by default with "Show testnets" button
- Button toggles to "Hide testnets" when testnets are visible
- Button centered below the network cards
- Add localhost network (31337) to networks.json for local development
- Hide localhost in production/staging (only visible in dev or when explicitly enabled)
- Simplify AppContext to use getEnabledNetworks() directly
- Rename mainnets/testnets to productionNetworks/testnetNetworks in home page
- Add npm build:production and build:staging scripts
- Update documentation with new build commands and localhost behavior
- Simplify about page: remove verbose sections, focus on core principles
- Update subtitle to "Trustless Blockchain Exploration"
- Condense features and principles to 4 items each
- Fix subscriptions benefits to match business plan:
  - Tokens Partner: add "Multiple network listing"
  - Tokens Ally: add "OpenScan subdomain"
  - Companies Partner: OpenScan subdomain (was direct communication)
  - Companies Ally: Direct communication (was subdomain)
Update about and subscriptions pages
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.

3 participants