Conversation
Add support for Avalanche C-Chain, a standard EVM-compatible chain with high throughput. Implements network configuration, RPC client initialization (via direct EthereumClient instantiation since not in ClientFactory), and adapter routing. Closes #113. - Add Avalanche C-Chain entry to networks.json with CAIP-2 identifier and metadata - Update DataService to create EthereumClient for unsupported chains - Update AdapterFactory and NetworkAdapter to handle chain 43114 - Route to EVMAdapter (standard EVM implementation)
Consolidate scattered union types (SupportedChainId | 11155111 | 97 | 31337 | 43114) into a single AppChainId type, making it easier to add new networks.
…port Update @openscan/network-connectors to v1.4.0 which includes native AvalancheClient (43114). Remove the EthereumClient workaround for unsupported chains and use ClientFactory directly. Simplify AppChainId type since 43114 is now part of SupportedChainId.
Add a reusable helper tooltip infrastructure that provides contextual explanations for blockchain data fields across all explorer pages. Infrastructure: - HelperTooltip component: hover/focus/tap with a11y support - FieldLabel wrapper: knowledge-level-aware tooltip visibility - Settings UI: enable/disable toggle + beginner/intermediate/advanced selector - Navbar quick-switcher: cycle through levels with colored border indicator - New `tooltips` i18n namespace with content in all 5 languages Coverage: - EVM transaction page: all fields including L2 (Arbitrum, OP Stack) and blob fields - EVM block page: all fields including More Details (advanced-only) and Arbitrum fields - Address/contract pages: verification, proxy, read/write, balance, nonce, ENS, EIP-7702 - Token/NFT pages: standard, decimals, supply, token ID, owner, approved, metadata URI - Bitcoin transaction/block/address pages: all fields with BTC-specific content - Settings page: knowledge-level selector tooltip
…twork feat: add Avalanche C-Chain network support
Hardhat v3 does not support Geth's callTracer or prestateTracer options for debug_traceTransaction. Add struct log conversion utilities that reconstruct call trees and state diffs from opcode-level traces.
- Fix tooltip z-index clipping by rendering bubbles via React Portal to document.body, escaping all ancestor overflow containers - Enrich tooltip descriptions with EIP-1559, EIP-4844, UTXO model, Merkle tree, and proxy pattern explanations across all 5 locales - Fix Arbitrum difficulty tooltip and circular blob definition - Add missing tooltips: tx history table headers, account type, analyser tabs, finalized badge, contract details, Bitcoin confirmations, inputs/outputs columns, network stats, state changes - Reclassify knowledge levels: beginner=all tooltips, intermediate=hides basic fields, advanced=complex/chain-specific only - Update knowledge level descriptions in all locale settings files
Move coinbase and witness to left column, RBF to right column for better visual grouping of related fields.
Fetch block height from block header when displaying confirmed transactions. Block number is shown as plain text before the clickable block hash link.
Support all four directions (top, bottom, left, right) for tooltip bubbles. Use left placement for confirmation and finalized badges in the top-right corner. Add vertical viewport clamping.
Compute final pixel position for both axes before removing transform, so vertical translation is preserved when only horizontal clamping is needed and vice versa.
Render a CSS triangle arrow inside the tooltip bubble that points toward the trigger. Arrow position is dynamically calculated after viewport clamping to always aim at the trigger center.
Move raw opcode trace to a new tab in TX Analyser with paginated view, expandable stack/storage per step, and opcode color coding. Remove the old standalone debug trace section from TransactionDisplay. Hide TX Analyser entirely when no tabs have content to show.
- workflow: add dual strategy (patch PRs to dev, release branches for minor/major) - architecture: update to NetworkAdapter/AdapterFactory pattern, add Bitcoin and Hardhat - patterns: fix paths, update "add network" steps to new adapter structure - i18n: add 5 supported languages, tooltips namespace, update checklists - code-style: reference all 5 locales in i18n verification
Add /etherscan/verify route to the Cloudflare Worker that proxies contract verification requests to Etherscan V2 API using a shared API key. Frontend now uses the worker proxy as default fallback when no user key is configured, making verification free for all users. Closes #322
Remove hasEtherscanKey gate from useContractVerification so that Etherscan verification runs for all users via the worker proxy, not just those with a configured API key.
Detect Vyper contracts from Etherscan's CompilerVersion (vyper: prefix) and Sourcify's compilation.language field. Use correct .vy file extension instead of hardcoded .sol. Add CodeBlock component with Prism.js for syntax highlighting of Solidity (.sol) and Vyper (.vy) source files. Test with CRV token (Vyper, verified on Sourcify): 0xd533a949740bb3306d119cc777fa900ba034cd52
Add hardhat Traces support
feat(tooltips): add helper tooltip system with knowledge-level support
Add EIP-4844 blob data display by fetching from the Beacon Chain API. Super user mode only. Includes BeaconService for blob sidecar fetching, KZG commitment to versioned hash matching via Web Crypto SHA-256, configurable Beacon API endpoints in Settings, and blob viewer with hex/UTF-8 toggle. Block page shows all blobs in a collapsible section, transaction page adds a Blob Data tab in the TX Analyser. Default public Beacon API endpoints provided for Ethereum and Sepolia. Blob pruning (~18 days) handled gracefully with clear user messaging. i18n translations added for all 5 supported languages. Closes #301
feat(worker): add Etherscan API proxy for free contract verification
…l CSS Rename tx-analyser-* and analyser-* CSS classes to detail-panel-* for reuse across pages. Create BlockAnalyser tabbed panel for block details (More Details, Transactions, Withdrawals, Blob Data) mirroring the TxAnalyser pattern. Simplify BlockDisplay by replacing collapsible sections with the new BlockAnalyser component.
docs(claude): update rules to reflect current architecture and workflow
Merge openscan-explorer/dev into feat/beacon-blob-data, incorporating helper tooltips, knowledge levels, raw trace tab, FieldLabel component, Hardhat adapter, and Etherscan worker proxy alongside our beacon blob and block analyser changes.
…-blob-data # Conflicts: # .claude/rules/architecture.md # .claude/rules/patterns.md # src/components/pages/evm/block/BlockDisplay.tsx # src/components/pages/evm/tx/TxAnalyser.tsx # src/components/pages/evm/tx/analyser/types.ts # src/locales/en/settings.json # src/locales/es/settings.json # src/locales/ja/settings.json # src/locales/pt-BR/settings.json # src/locales/zh/settings.json # src/types/index.ts
|
🚀 Preview: https://pr-342--openscan.netlify.app |
…cilitators Add FieldLabel tooltips to FacilitatorInfoCard for Name, Base URL, Schemes, Assets, and Capabilities (visible for beginner/intermediate). Show x402 facilitators as "Account (EOA)" with an "x402 Facilitator" tag since they are primarily EOA accounts.
Reverse the merge order in getEffectiveRpcUrls() so builtin worker proxy URLs take priority over metadata RPC endpoints. Also fix the Bitcoin testnet network ID mismatch: align rpcStorage.ts and the worker OnFinality route to use the Testnet4 CAIP-2 ID (bip122:00000000da84f2bafbbc53dee25a72ae) matching networks.json. Closes #343
… RPC Add a Worker Proxy section in Settings > Network with two independent toggles: AI Analysis Proxy (hides/shows AIAnalysisPanel across all pages) and RPC Proxy (filters worker proxy URLs from effective RPC list). Both default to enabled. Settings persist in localStorage. Closes #340
…oding Remove x402-specific conditional from AddressHeader and pass "x402 Facilitator" via the existing tokenSymbol prop from X402FacilitatorDisplay. Keeps AddressHeader generic.
Shard eth-mainnet into 2 parallel jobs (3 tests each). Split EVM networks into 1 job per network (5 parallel jobs) instead of 2 shards.
Change e2e workflow triggers from pull_request on dev to main, so they run automatically for release PRs (dev→main). Keep workflow_dispatch so they can be triggered manually on any branch/PR against dev.
Add e2e-all.yml that dispatches eth-mainnet, evm-networks, and bitcoin workflows concurrently via workflow_call. Add workflow_call trigger to each child workflow to support reusable composition.
Add x402 facilitator display
Return empty array from getRPCUrls instead of throwing when a network has no configured endpoints. Keep networks with zero URLs in the filtered map so they remain visible but gracefully show error states instead of crashing the app.
Add REACT_APP_OPENSCAN_WORKER_URL to Vite define map so it is properly replaced at build time. Switch workerConfig.ts to dot notation for Vite compatibility. Guard isWorkerProxyUrl against empty string matching all URLs.
Add REACT_APP_OPENSCAN_WORKER_URL to Vite define map and switch workerConfig.ts to dot notation for proper build-time replacement. Guard isWorkerProxyUrl against empty string matching all URLs. Fix toggle knob alignment by adding flex-shrink: 0 and min-width to settings-toggle class.
…cing Concatenate metadata and builtin worker URLs per-network with deduplication instead of using object spread which replaced entire arrays. Worker proxy endpoints now supplement metadata RPCs as intended.
Stored user overrides were replacing default URLs entirely, causing worker proxy URLs to disappear after page reload. Now stored URLs are merged with defaults so builtin worker endpoints persist across sessions and are only removed by the excludeWorkerProxy filter.
Point the openscan-groq AI provider at OPENSCAN_WORKER_URL instead of the legacy openscan-groq-ai-proxy URL. This ensures AI requests go through the same worker proxy that already has the Netlify preview origin in its CORS allowlist. Remove unused REACT_APP_OPENSCAN_GROQ_AI_URL from Vite define map.
Always show the Analyze with AI button. When the AI proxy is disabled and no personal API keys are configured, show a warning message guiding the user to either enable the proxy or add their own keys. Users with their own API keys can still use AI analysis regardless of the proxy toggle.
When workerProxyAi is false, skip the openscan-groq provider in resolveProvider so it falls through to the user's configured API keys. Previously it always used the free proxy first regardless of the toggle setting.
fix: pre-1.2.5-a fixes (block details, BTC RPC priority, worker proxy toggles)
Collaborator
josealoha666
left a comment
There was a problem hiding this comment.
Release PR for v1.2.5-alpha — I've reviewed the individual PRs that compose this release (#326, #328, #331, #332, #333, #335, #338, #346) and the changes look good overall.
CI note: 4 E2E jobs are failing:
- arbitrum, optimism, polygon — strict mode violation:
.tx-labelfilter for 'Gas Price:' resolves to 2 elements (likely the new tooltip/FieldLabel refactor introduced a duplicate label). Needs.first()or a more specific selector. - eth-mainnet shard-a —
toBeVisiblefails with 'element(s) not found' on the transaction-with-input-data test (selector may need updating for the new TX Analyser UI).
Build, deploy, lint, audit, bitcoin E2E, and shard-b all pass ✅
These look like test selector issues rather than runtime bugs — the FieldLabel/tooltip changes likely duplicated visible label text. Worth fixing before merge.
MatiasOS
approved these changes
Mar 25, 2026
chore: bump version to 1.2.5-alpha
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Release v1.2.5-alpha — merges all changes from dev into main for the next production deployment.
Type of Change
Changes Made
New Features
Bug Fixes
CI/CD
Refactoring
Checklist
Additional Notes