Skip to content

v1.2.4-a#318

Merged
AugustoL merged 61 commits intomainfrom
dev
Mar 16, 2026
Merged

v1.2.4-a#318
AugustoL merged 61 commits intomainfrom
dev

Conversation

@AugustoL
Copy link
Copy Markdown
Collaborator

@AugustoL AugustoL commented Mar 16, 2026

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

  • Blob transaction accent (purple) for EIP-4844 rows
  • Differentiated base vs super user tab highlights in TX Analyser
  • Yellow warning notification style with rounded borders

Chore

  • Bump version to 1.2.4-alpha

Type of Change

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

Checklist

  • I have run npm run format:fix and npm run lint:fix
  • I have run npm run typecheck with no errors
  • I have run tests with npm run test:run
  • I have tested my changes locally
  • My code follows the project's architecture patterns

AugustoL added 30 commits March 6, 2026 11:17
… 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
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.
AugustoL and others added 19 commits March 13, 2026 17:29
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
@AugustoL AugustoL requested a review from MatiasOS March 16, 2026 15:08
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 16, 2026

🚀 Preview: https://pr-318--openscan.netlify.app
📝 Commit: 1426f3b51da9918362040de93063d683c7ce7688

…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
@AugustoL AugustoL merged commit f958124 into main Mar 16, 2026
6 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.

3 participants