Conversation
… enrichment Adds a TX Analyser panel (super user mode) to the transaction details page. - Adds getAnalyserCallTrace / getAnalyserPrestateTrace to all network adapters (EVM, Arbitrum, Optimism, Base, BNB, Polygon) using debug_traceTransaction with callTracer / prestateTracer; Arbitrum falls back to arbtrace_transaction - New CallNode / PrestateTrace types in NetworkAdapter - New callTreeUtils: normalizeGethCallTrace, normalizeParityCallTrace, countCalls, countReverts, countByType, collectAddresses, hexToGas - New contractLookup utility: fetches contract name + ABI from Sourcify (Etherscan fallback when key configured); session-level cache - New useCallTreeEnrichment hook: enriches all call tree addresses in parallel, aborts on tree change - TxAnalyser component: Call Tree tab with expandable nodes, decoded function calls, contract names, per-type summary; State Changes tab with balance/nonce/storage/code diffs and contract names - Collapsible TX Analyser section in TransactionDisplay (super users only) - Translations for all 5 locales (en, es, ja, pt-BR, zh) - All CSS styles for analyser, call tree, and state change components
ENS names searched on Bitcoin network resolved to Ethereum addresses and navigated to an invalid BTC address page showing all zeroes. Now shows a clear error message when ENS is used on non-EVM networks. Closes #291
…puts OP_RETURN outputs were shown as a static "OP_RETURN (Data)" label without displaying the actual payload. Now decodes the scriptPubKey hex, parsing push data opcodes and attempting UTF-8 decoding. Shows readable text when valid, falls back to raw hex otherwise. Closes #294
fix(search): block ENS resolution on non-EVM networks
Invalid network segments like /undefined/txs silently fell back to Ethereum mainnet, showing misleading data. Now validates the network param against enabled networks and redirects to the home page with a warning notification when the network is not recognized. Closes #290
… under navbar Warning notifications now have a yellow background tint and border. Notifications are positioned sticky under the navbar instead of fixed overlapping it, with rounded borders (12px).
…icate Notification container is now fixed at top 70px (under navbar), centered, max 520px wide. Warning style uses yellow tint. Added ref guard to prevent duplicate notifications from React Strict Mode.
fix(routing): redirect to home with warning for invalid network URLs
Add openscan-groq provider that proxies AI requests through a Cloudflare Worker, allowing users to use AI analysis without configuring their own API key. Worker: Hono app with CORS origin allowlist, per-IP rate limiting (10 req/min), payload validation, and Groq API forwarding. Frontend: new openscan-groq provider (first in priority order), callOpenScanProxy method in AIService, keyless resolution in useAIAnalysis hook, filtered from Settings API key UI. Closes #269
Netlify previews use -- separator (pr-306--openscan.netlify.app), not subdomain dots. Update wildcard pattern and matching logic.
Move Super User toggle to a fixed position after Theme toggle (before Settings). Remove the conditional SUPER USER badge that caused layout shift. DevTools button now appears to the left of the fixed icons when Super User mode is enabled. Fixes #298
- Replace rpcsSynced boolean flag with timestamp-based check (openScan_lastRpcSyncTime in localStorage) - On app start, re-sync if 24+ hours have passed or no timestamp exists - Remove rpcsSynced from UserSettings type (no longer needed) - Clear cache now removes the sync timestamp instead of setting a flag - Add Alchemy Bitcoin mainnet and testnet4 RPC auto-add when Alchemy key is saved, matching existing EVM auto-add behavior Closes #295, Closes #293
fix(nav): Super User toggle button layout shift
feat(ai): free Groq AI analysis via Cloudflare Worker proxy
fix(bitcoin): decode and display OP_RETURN payload in transaction outputs
feat(rpc): auto-sync RPCs every 24h & Alchemy Bitcoin endpoints
chore: bump version to 1.2.4-alpha
Adds a Gas Profiler tab to the TX Analyser that shows how gas is spent across all operations in a transaction. Flattens the call tree into a sorted table with columns: type, contract, function, gas used (with percentage bar). Reuses existing call tree data — no additional RPC calls needed. Translations added for all 5 locales (en, es, ja, pt-BR, zh).
…it for contract enrichment Replace the table-based Gas Profiler with a Tenderly-style icicle/flame chart with click-to-zoom and breakdown panel. All analyser tabs now wait for contract ABI enrichment to complete before rendering, ensuring decoded function names are displayed instead of raw selectors.
In super user mode, event logs are now displayed inside the TX Analyser as a dedicated Events tab instead of a separate collapsible section. The Events tab leverages enriched contract ABIs from the call tree enrichment to decode events from all addresses, not just the tx recipient. Non-super-user mode retains the original collapsible event logs section.
In super user mode, raw and decoded input data are now displayed inside the TX Analyser as an Input Data tab. The tab also tries enriched ABIs from call tree enrichment as a fallback for decoding. Non-super-user mode retains the original input data rows in the transaction details.
Remove the collapsible toggle button — the TX Analyser section is now always visible when super user mode is active.
Fix race condition where call tree tabs rendered with empty contracts for one frame before the enrichment useEffect had a chance to run. Track a pendingEnrichment state to bridge the gap between when the call tree arrives and when the async enrichment effect fires.
Replace pendingEnrichment workaround with a simpler done-flag approach. enrichmentLoading is now true from the moment a call tree exists until all contract info has been fetched, eliminating any render gap.
Sourcify V2 API does not have a top-level 'name' field — the contract name is nested under compilation.name. Changed the request from ?fields=abi,name (which returned a 400 error) to ?fields=abi,compilation and extracted the name from compilation.name.
…Data tabs The TX Analyser is now always visible on transaction pages. Base users see Events and Input Data tabs. Super user mode unlocks Call Tree, Gas Profiler, and State Changes tabs. Trace fetching is skipped in base mode. Removed duplicate event logs and input data sections from TransactionDisplay since TxAnalyser now handles them for all users.
Base user tabs (Events, Input Data) use --text-primary when active. Super user tabs (Call Tree, Gas Profiler, State Changes) use --color-accent to visually signal the user is viewing advanced data.
feat(tx): TX Analyser — call tree, state changes, and contract enrichment
Wire through blob gas fields from RPC responses to the UI. Block pages now show Blob Gas Used, Excess Blob Gas, and derived Blob Count for post-Dencun blocks. Transaction pages show Max Fee Per Blob Gas, Blob Gas Price, Blob Gas Used, Blob Count, and Blob Versioned Hashes for Type 3 transactions, with purple accent styling. Closes #300
The normalizeMatch() function only recognized "exact_match" and "perfect" as valid verification states, but Sourcify V2 API returns "match" for verified contracts. This caused all Sourcify-verified contracts (e.g. USDT) to display as "not verified". Fixes #312
fix(address): Sourcify V2 verified contracts shown as not verified
feat(evm): display EIP-4844 blob metadata
feat(settings): add DevTools-style config tabs with autosave
Integrate export/import config buttons into dev's tabbed layout (advanced tab). Keep dev's tab structure and add import toast notifications from the feature branch.
The audit script was using || true which silenced all findings. Now npm audit will exit non-zero for moderate, high, and critical.
feat(settings): add export/import configuration
|
🚀 Preview: https://pr-318--openscan.netlify.app |
…dd spacing - Tab hydration useEffect re-ran on every tab change causing visible content refresh. Use a ref guard so hydration only runs once on mount. - Super user section in advanced tab is now always visible for all users. - Add spacing between cache limit and cache size items in super user section to match the cache & data section style.
Add a Super User Mode toggle in the advanced tab's super user section, mirroring the navbar toggle. Also add missing superUser i18n keys for ja, pt-BR, and zh locales.
When ABI decoding fails, attempt to decode the hex input as UTF-8 text. If ≥80% of characters are printable, show the decoded text above the raw hex in a readable pre-formatted block. This handles text messages embedded in transactions like the Ethereum Foundation mandate. Closes #311
fix(settings): prevent tab flicker and center advanced tab
fix(ci): fail audit on moderate+ severity
feat(tx): decode UTF-8 text in transaction input data
MatiasOS
approved these changes
Mar 16, 2026
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.4-alpha — includes new features, bug fixes, and improvements across EVM transaction analysis, settings, Bitcoin, routing, AI integration, and blob metadata.
Changes Made
Features
Bug Fixes
Style
Chore
Type of Change
Checklist