Conversation
Replace all REACT_APP_* environment variables with OPENSCAN_* prefix and use import.meta.env instead of process.env for runtime access. Add envPrefix: "OPENSCAN_" to Vite config so OPENSCAN_* vars are auto-exposed without manual define entries. Only computed defaults (COMMIT_HASH, VERSION, ENVIRONMENT) remain in the define map. Closes #347
Add entry-deno.ts that sources env vars from Deno.env and passes them to the shared Hono app via app.fetch(request, env). All existing route handlers and middleware work unchanged. Add deno.json with sloppy-imports for Node-style resolution and npm import maps for the hono dependency. Ref #339
Add api/index.ts that sources env vars from process.env and passes them to the shared Hono app via app.fetch(request, env). All existing route handlers and middleware work unchanged. Add vercel.json with a catch-all rewrite to route all paths to the edge function handler. Ref #339
Add fetchWithWorkerFailover() that tries each worker URL in order (Cloudflare → Deno Deploy → Vercel) and falls through on network errors, 429, 502, and 503 responses. Update all direct worker proxy consumers (contractLookup, useEtherscan, AIService) to use the failover function. Update isWorkerProxyUrl to check against all worker URLs. Closes #339
The worker tsconfig only includes @cloudflare/workers-types, so process.env is unknown. Declare it locally instead of adding @types/node.
Document the worker proxy architecture, routes, environment variables, and step-by-step deployment instructions for Cloudflare Workers, Deno Deploy, and Vercel Edge Functions.
Deno Deploy entry point and config remain available for future use but are not included in the active failover chain until deployment is configured. Failover is now Cloudflare → Vercel.
Adds Solana as a third network type alongside EVM and Bitcoin, with dashboard, slots/blocks, transactions, accounts, SPL tokens, and validators views.
Bumps @openscan/network-connectors to 1.7 (which now ships SolanaClient), deletes the local SolanaClientTypes stub, replaces the inline JSON-RPC client in DataService with ClientFactory.createTypedClient, and updates SolanaAdapter and adaptersFactory to use the real types.
…kIndicator - Add public Solana RPC endpoints (mainnet-beta, devnet, testnet) to BUILTIN_RPC_DEFAULTS so the app can connect out of the box - Add Solana branch to NetworkBlockIndicator so the navbar shows the current slot for Solana networks instead of crashing with "At least one RPC URL must be provided"
Adds PublicNode, dRPC, Ankr, and Pocket Network as additional fallback RPCs for Solana mainnet, devnet, and testnet so the fallback strategy has more options when the official endpoints are rate-limited.
Refactors all Solana pages to use the same shared style classes and patterns established by the Bitcoin/EVM pages: - Wrap pages in container-wide / page-container-padded - Use Breadcrumb on every detail and list page - Use block-display-card, blocks-header, block-display-header, block-label, tx-details, tx-row, tx-value, tx-mono, tx-link - Use dash-table / table-wrapper / table-cell-* classes for tables - Use block-status-badge for status indicators - Use LoaderWithTimeout for loading states - Add CopyButton to addresses, signatures, mints, blockhashes - Skeleton placeholders match the Bitcoin loading pattern New display components extracted (mirroring BitcoinBlockDisplay pattern): - SolanaSlotDisplay - SolanaTransactionDisplay - SolanaAccountDisplay
- SolanaTransactionsPage and SolanaAccountDisplay now use the shared table-status-badge / table-status-success / table-status-failed classes (matching EVM TransactionHistory) so the success/failed pills render with rounded corners. - Add a block-status-failed CSS rule next to block-status-finalized and block-status-pending so the SolanaTransactionDisplay header badge has the correct red rounded style.
…ldings Wrap the account details and token holdings inside btc-tx-details-grid so they render side-by-side, mirroring the BTC/EVM address page layout. The address row stays full-width on top, then the left column holds the account metadata (balance, owner, executable, data size, rent) and the right column holds the SPL token holdings table.
…s as section header - Move the address row into its own tx-details block outside the two-column grid so it spans the full card width. - Replace the 'Token Holdings:' tx-row label with a proper block-display-section-title header inside the right column, so the token table has its own section heading like the rest of the app.
The custom tx-link class doesn't exist — replace all occurrences in SolanaTransactionDisplay, SolanaSlotDisplay, and SolanaAccountDisplay with link-accent tx-mono, matching how BTC/EVM detail pages render their block/slot/account/tx links.
Replace the Transactions stat card (which showed the cumulative transaction count) with a Version stat card. The cumulative count isn't useful at a glance and was taking up a prominent dashboard slot.
Remove the Version stat card so the Solana dashboard header only shows SOL Price, Current Slot, and Epoch.
Replace the table-based collapsible transactions section in SolanaSlotDisplay with the tx-list / tx-list-item / tx-list-index / tx-list-hash pattern used by EVM BlockAnalyser and BTC BitcoinBlockDisplay, toggled via a more-details-toggle button. The signatures now render as a numbered list of full hashes with link-accent styling, matching how EVM and BTC blocks display their transaction lists.
…te-prefix refactor: migrate REACT_APP_ env vars to OPENSCAN_ prefix
Replace the bare <pre> with nonexistent log-output class with the shared more-details-toggle / more-details-content / detail-row pattern. Logs now render as a numbered list inside the styled container, matching how EVM raw traces and block details display expandable content.
Merge dev into feat/worker-multi-platform-deploy and resolve the workerConfig.ts conflict. The primary worker URL now reads from import.meta.env.OPENSCAN_WORKER_URL (matching the REACT_APP_ → Vite env migration already on dev) while keeping the failover array and fetchWithWorkerFailover logic from this branch.
- Add 15s AbortController timeout per request so a hanging worker doesn't block the entire failover chain - On 429 (rate limited): wait Retry-After header (capped at 10s, default 3s) and retry once on the same worker before failing over - 502/503 still trigger immediate failover to the next worker - Extracted fetchWithTimeout helper for clean abort handling
Regenerate bun.lock to pass --frozen-lockfile check in CI. Add axios >=1.15.0 override to resolve critical SSRF/header injection vulnerabilities in transitive dependency from @coinbase/cdp-sdk.
feat(solana): add Solana network support (Mainnet, Devnet, Testnet)
…-multi-platform-deploy
feat: add redundant worker deployments on Deno Deploy and Vercel
|
🚀 Preview: https://pr-360--openscan.netlify.app |
Bumps @openscan/metadata to 1.2.1-alpha.0 and registers Arbitrum Sepolia (421614), Optimism Sepolia (11155420), Base Sepolia (84532), Polygon Amoy (80002), and Avalanche Fuji (43113). Each new chain ID is mapped to its L1 family adapter (Arbitrum, OP, Base, Polygon, EVM) in AdapterFactory. Since @openscan/network-connectors does not yet register these testnet chain IDs in its ClientFactory, DataService instantiates the L1 family client directly for them. The L2 adapter constructors and AppChainId are widened to accept the new testnet chain IDs.
Types EVM_TESTNET_CLIENTS to return the client union instead of unknown so AdapterFactory.createAdapter can keep its strict client union without `| unknown`. Also narrows PolygonAdapter's constructor from SupportedChainId to `137 | 80002` to match sibling L2 adapters.
feat(networks): add 5 EVM testnets from metadata v1.2.1-alpha.0
Renames the ambiguous "Gas" column header to "Gas Left" and adds HelperTooltip hints on PC, Opcode, Gas Left, Cost, and Depth via the existing FieldLabel component. Column labels and tooltip content are translated across all 5 supported locales (en, es, ja, pt-BR, zh). Closes #350
fix(tx): add tooltips to raw-trace table headers
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.
No description provided.