Skip to content

Conversation

@AugustoL
Copy link
Collaborator

@AugustoL AugustoL commented Feb 9, 2026

Description

This PR merges release v1.2.0-alpha into main, bringing major new features and improvements.

Type of Change

  • New feature
  • Bug fix
  • Refactoring
  • Performance improvement
  • Documentation update

Changes Made

Bitcoin Network Support

  • Add Bitcoin mainnet and Testnet4 network configurations
  • Implement BitcoinAdapter for JSON-RPC communication
  • Add Bitcoin dashboard, block, transaction, address, and mempool pages
  • Add BTC price fetching via WBTC pools on Ethereum
  • Add fee estimates (fast/medium/slow) to dashboard
  • Add Bitcoin-specific e2e tests with separate CI workflow

NetworkId Migration (CAIP-2)

  • Migrate from chainId to networkId format (e.g., "eip155:1")
  • Update RPC storage to V3 with networkId-based keys
  • Add NetworkType and slug support for URL routing

Auto-Search Recent Transactions

  • Add exponential (galloping) search algorithm for finding recent activity
  • Add semaphore-based rate limiting (max 4 concurrent RPC calls)
  • Show live progress with block range indicators during search
  • Add AbortSignal support for canceling in-flight requests on navigation

Internationalization (i18n)

  • Add react-i18next infrastructure with English and Spanish translations
  • Translate all pages: Address, Block, Transaction, Settings, DevTools, etc.

Logger Utility

  • Add environment-aware logging (dev: all, staging: info+, prod: warn+)
  • Migrate all console statements to logger utility
  • Strip console.log in production builds via Vite pure_funcs

Super User Mode

  • Add toggle to show/hide advanced features (DevTools)
  • Terminal icon in navbar for quick access

SEO & Metadata

  • Add JSON-LD structured data (WebApplication + FAQPage)
  • Improve Open Graph and Twitter Card meta tags
  • Fix manifest.json icon references

E2E Test Improvements

  • Restructure tests into eth-mainnet and evm-networks folders
  • Add separate CI workflows for different test suites
  • Fix HashRouter URL handling and test reliability

UI/UX Improvements

  • Reorganize EVM pages into evm/ subfolder
  • Simplify navbar with network dropdown
  • Fix mobile layout for Settings page RPC badges

Checklist

  • Code has been formatted with npm run format:fix
  • Code has been linted with npm run lint:fix
  • TypeScript passes with npm run typecheck
  • Tests have been run
  • Documentation updated

AugustoL and others added 30 commits January 29, 2026 18:07
- Add Bitcoin network integration (Phase 1 - Dashboard only)
  - New BitcoinAdapter for JSON-RPC communication
  - Bitcoin dashboard with network stats and recent blocks
  - useBitcoinDashboard hook with 60s refresh interval
  - NetworkRouter component for network type routing

- Migrate from chainId to networkId (CAIP-2 format)
  - RPC storage now uses networkId as keys (e.g., "eip155:1")
  - Add networkResolver utility for network resolution
  - Extract chainId from networkId for EVM networks
  - Update settings page to use networkId-based storage
  - Bump RPC storage version to V3

- Add NetworkType and slug support
  - Networks now have "type" field ("evm" | "bitcoin")
  - Add "slug" field for URL routing (e.g., "btc", "eth")
  - getNetworkUrlPath prefers chainId for EVMs, slug for others

- Update all components to use networkId for RPC lookups
  - Address pages, token displays, contract interactions
  - Network dashboard, block indicator, devtools
Publish using OIDC and set npm registry for github acation
- Add BitcoinBlockDisplay/Page with navigation, stats, and tx list
- Add BitcoinTransactionDisplay/Page with inputs/outputs two-column layout
- Add BitcoinAddressDisplay/Page with balance and UTXO display
- Add BTC price fetching via WBTC pools on Ethereum
- Add fee estimates (fast/medium/slow) to dashboard
- Add USD values alongside BTC values in transaction display
- Add mempool transaction support with multiple RPC fallbacks
- Add Bitcoin address/txid pattern recognition in search
- Update navbar to hide blocks/txs links on Bitcoin networks
- Center search bar in navbar using absolute positioning
- Simplify dashboard stats to show only price, mempool, and fees
- Unify Bitcoin page styling with EVM pages (block-display-card)
- Add network dropdown for all networks (including Bitcoin) with links
  to network home, blocks, transactions, and OpenScan home
- Remove BLOCKS and TRANSACTIONS links from navbar (now in dropdown)
- Move search bar to left side next to network logo
- Move search button inside input with smaller icon
- Fix dropdown hover gap issue with padding approach
- Clean up duplicate CSS styles and unused code
- Add BitcoinBlocksPage for /btc/blocks route with pagination
- Add BitcoinTransactionsPage for /btc/txs route showing recent txs
- Add BlocksPageRouter and TxsPageRouter for network-aware routing
- Fix navbar dropdown links to use getNetworkUrlPath for correct URLs
Upgrade to v1.3.0 which includes the RaceStrategy implementation
using Promise.any() for first-resolved RPC provider selection.

Closes #192

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add race mode that queries all RPC endpoints simultaneously and
returns the first successful response, optimizing for latency.

Changes:
- Add "race" to RPCStrategy type, UserSettings, and RPCMetadata
- Extend DataService constructor to accept "race" strategy
- Apply maxParallelRequests limit for race mode in useDataService
- Add "Race (Fastest)" option to Settings UI with description
- Show max parallel requests control when race mode is active
- Update RPCIndicator with lightning bolt badge, winner highlight,
  response time sorting, and race-specific footer note

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fix two issues with transaction status on the address page:

1. Handle both "0x1"/"0x0" and "1"/"0" receipt status formats
   in TransactionHistory and AddressDetails components.

2. Add sequential retry for failed receipt fetches in
   AddressTransactionSearch. When using race/parallel strategies,
   the high concurrent request volume (batch_size × providers)
   can trigger RPC rate limiting, causing some receipts to fail.
   Failed receipts are retried one-at-a-time with delays to
   avoid the burst that caused the initial failure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create bitcoinFormatters.ts with formatting functions
- Create bitcoinUtils.ts with business logic functions
- Create bitcoinConstants.ts with shared constants
- Update all Bitcoin components to use shared utilities
- Remove ~230 lines of duplicated code
- Add explicit /btc/* routes before :networkId catch-all
- Remove NetworkRouter component (no longer needed)
- EVM routes use LazyChain directly
- Add Bitcoin Testnet4 network configuration (slug: tbtc)
- Add /tbtc/* routes for testnet4 pages
- Update Bitcoin page components to extract network slug from URL path
  instead of useParams (required since routes don't have :networkId param)
- Add Mempool link to navbar dropdown for Bitcoin networks
- Add BitcoinMempoolPage component showing pending transactions
- Add getMempoolSummary and getMempoolTransactions methods to BitcoinAdapter
- Paginate by 100 transactions per page for faster loading
- Fetch transaction details in parallel for current page only
- Show page indicator in header and clean pagination controls
- Auto-refresh every 30 seconds
- Add pagination-info CSS class
feat: implement race (first-resolved) RPC strategy
- Fix NetworkAwareRouters to extract network from URL path segment
  instead of only useParams (which was undefined for /btc/* routes)
- Fetch block header in parallel with block data for reliable nTx count
- Use header's nTx as primary source with fallbacks
…utes

- Remove NetworkAwareRouters.tsx - no longer needed
- Use lazy components directly in App.tsx routes
- Bitcoin routes (btc/*, tbtc/*) use Bitcoin-specific components
- EVM routes (:networkId/*) use EVM components
- Simpler and more explicit routing
- Move EVM-specific pages to pages/evm/: address, block, blocks,
  tx, txs, network, gastracker, tokenDetails, mempool
- Update all imports in LazyComponents.tsx
- Fix relative imports in moved files
- Keep shared pages (about, contact, home, etc.) at pages/ root
- Mirrors existing pages/bitcoin/ organization
- Add fixture data with real mainnet blocks, transactions, and addresses
- Test different eras: Genesis, SegWit (481824), Taproot (709632)
- Test all address types: Legacy (P2PKH), P2SH, SegWit (P2WPKH), Taproot (P2TR)
- Test transaction types: coinbase, legacy, SegWit, Taproot, OP_RETURN
- Add page object models for Bitcoin block, transaction, and address pages
- Add wait helpers for Bitcoin page content
- Create e2e-bitcoin.yml to run Bitcoin tests independently
- Update e2e.yml to exclude Bitcoin tests (--ignore-pattern)
Prevents 'No transactions found' flash while transactions are still loading
Update all Bitcoin pages to use truncateBlockHash for block hashes
- Add superUserMode setting to UserSettings with default false
- Add isSuperUser and toggleSuperUserMode to SettingsContext
- Add terminal icon toggle button in navbar (desktop and mobile)
- Conditionally render DevTools based on super user mode
- Add active state styling for toggle button
- Hide build warning icon in development environment

Closes #187
MatiasOS and others added 24 commits February 6, 2026 14:52
…ructure-with-react-i18next

130 feat implement i18n infrastructure with react i18next
- Create src/utils/logger.ts with debug, info, warn, error methods
- Environment-based filtering (dev: all, staging: info+, prod: warn+)
- Add unit tests for all log levels and environments
- Export logger from utils/index.ts
- Add pure_funcs to vite.config.ts to strip console.log in production

Closes #186
Replace console.log/warn/error with logger methods in utility files:
- artifactsStorage.ts
- devArtifacts.ts
- erc1155Metadata.ts
- erc721Metadata.ts
- rpcStorage.ts
- web3Security.ts
Replace console.log/warn/error with logger methods in:
- MetadataService.ts
- AddressTransactionSearch.ts
- All network adapters (EVM, Arbitrum, Optimism, Base, Polygon, BNB, Bitcoin)
- NetworkAdapter.ts
Replace console.log/warn/error with logger methods in:
- useENS.ts
- useProviderSelection.ts
- useSelectedData.ts
- useSourcify.ts
- useZipJsonReader.tsx
Replace console.warn/error with logger methods in:
- AppContext.tsx
- SettingsContext.tsx
Replace console.log/warn/error with logger methods in:
- ErrorBoundary.tsx
- LazyComponents.tsx
- NetworkBlockIndicator.tsx
- Address pages and displays
- Block/Transaction pages
- Token detail pages
- Bitcoin pages
- Settings page
- About page
Replace console.log with logger.debug in networks.ts
Add Logger Utility section to patterns.md with:
- Usage examples
- Log level guidelines
- Environment filtering table
- Build-time safety notes
…ity-with-environment-aware-log-levels

feat: Implement logging utility with environment aware log levels
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

🚀 Preview: https://pr-210--openscan.netlify.app
📝 Commit: 0b6412fbb0a43b1570b845f58813c1587130f581

@AugustoL AugustoL requested a review from MatiasOS February 9, 2026 15:32
Copy link
Member

@MatiasOS MatiasOS left a comment

Choose a reason for hiding this comment

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

🚢

@AugustoL AugustoL merged commit 11d8240 into main Feb 9, 2026
5 checks passed
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.

2 participants