Skip to content

v1.2.6-a#360

Open
AugustoL wants to merge 34 commits intomainfrom
dev
Open

v1.2.6-a#360
AugustoL wants to merge 34 commits intomainfrom
dev

Conversation

@AugustoL
Copy link
Copy Markdown
Collaborator

No description provided.

AugustoL added 29 commits April 1, 2026 09:39
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)
feat: add redundant worker deployments on Deno Deploy and Vercel
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 21, 2026

🚀 Preview: https://pr-360--openscan.netlify.app
📝 Commit: 4c05faf21f22ba6e3db5493ea929989153fc0b06

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
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.

1 participant