49 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 6f80c0ce4e fix(explore): the explorer's own token sheet is the umbrella's
styles/tokens.css was a 494-line FORK of @luxfi/ui/tokens.css, which is how it
drifted its own browns: --color-status-warn #B45309 / #FBBF7A and the whole
Chakra orange + yellow badge ramp (#FEEBCB #FFFAF0 #DD6B20 #FFFFF0 #D69E2E
#FEFCBF #B7791F #C05621 #7B341E #744210 #FAF089). It imports the umbrella now
and adds nothing of its own.

next.config.js hand-listed SEVEN of the engine's 55 packages in
transpilePackages and deduped none of them, which is how this app's store holds
seven physical copies of @hanzogui/popper (3.0.0, 3.0.1, 3.0.2 x3, 7.3.0 x2). A
context published at module scope is per-copy, so PopperAnchor read the empty
default and called refs.setReference on undefined once per tooltip trigger. It
uses withLuxUi now — the one place that wiring lives.

47 files reached for Tailwind's chromatic ramps directly (108 occurrences).
They resolve through tokens now, under short semantic names registered in the
@theme block: text-good / text-bad / text-warn, where warn is ACHROMATIC —
attention in Lux is the loudest neutral, not a hue. The Quasar certificate
tooltip stops naming colours it no longer paints ("BLS (green)", "Corona
(blue)", "ML-DSA (purple)") — copy that describes a palette has to change with
it.

Measured on the rendered pages: warm 0%, tinted-neutral 0.0003%, mean chroma
0.004 (/) and 0.003 (/txs) at 1440x900, 0.000 at 390x844, both modes; zero
uncaught setReference errors.

Two pre-existing defects surfaced because lint-staged now lints these files and
are fixed here rather than skipped: `Box` was used but never imported in
AddressEntity.pw.tsx, and eight lines already exceeded the 160-column limit.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-27 19:14:51 -07:00
zeekay 2abb742d55 feat(explore): fee burn + staking rewards panel, from one balance
creditTxFee credits floor(fee/2) to the fee reward vault 0x0100..0002 and leaves
the rest credited to no account at all. The vault has no code and no key, so its
balance only grows, and it is BOTH counters at once: rewards accrued exactly, and
supply burned to within one wei per transaction. One eth_getBalance is the whole
data set — no indexer, no event log, no receipts. That is the panel.

Reads are one batched JSON-RPC round trip (vault balance, coinbase balance, head
block, eth_getChainConfig), polled every 30s.

Decimals: the divisor is 10^18, NOT 10^9. nLUX is the P-Chain staking unit; this
is a C-Chain EVM balance from eth_getBalance, i.e. wei, and it goes through the
one canonical path (NativeCoinValue -> config.chain.currency.decimals). Pinned by
a test against live mainnet: the coinbase holds 3867543864740765677447 wei =
3,867.54 LUX. At 10^9 it would print 3.87 trillion LUX, about double the supply.
Same class of bug as 1b6e86a16, one billion times larger.

Honest about the zero. Mainnet's config has no feeSplitTimestamp, so the split has
never fired and nothing is deflationary. The panel says exactly that, tags itself
"Not active", and shows where the fees really go: the coinbase 0x0100..0000, which
has no code and no key either, so its 3,867 LUX is stranded, not burned.

Two traps the tests pin:
  - The gate reads the HEAD BLOCK's timestamp, mirroring IsFeeSplit(blockTime).
    Devnet's feeSplitTimestamp has passed in wall-clock terms while its C-Chain
    sits at height 0 — wall clock would report a burn that never happened.
  - Burn is zero before activation, never the raw vault balance. The vault is a
    plain account; anyone can transfer into it, and calling that "burned" invents
    the deflation this panel exists to report honestly. Unverifiable state prints
    a dash, never a zero.

It lives on the home overview, not /stats: guards.stats 404s the whole /stats
route when the stats microservice is not configured, and burn is a chain fact that
owes nothing to an indexer. Not gated on the primary network either — it reads
whichever chain it is pointed at and reports that chain's own state.

Chart: the vault balance sampled once per new block, deduplicated on block number
and capped at 240 points. There is no cheaper honest source — the nodes prune, so
eth_getBalance one block back already answers "missing trie node", and
api-explore.lux.network serves 404 for every path including /.

next.config.js: `next dev` runs Turbopack, which never read the webpack() block, so
every `import Icon from 'icons/*.svg'` resolved to a static-image object and React
threw "Element type is invalid ... but got: object" — Hint, ChartWidget,
toolkit/next/link and BackToButton all import SVGs directly, so the dev server had
been rendering an error page instead of the app. Same loader, declared for both
bundlers.

Verified against live mainnet 96369 in a real browser, not by HTTP status:
  panel renders "Not active", "LUX burned 0", "Staking rewards accrued 0",
  "Held by the fee coinbase 3,867.5496 LUX", "read at block #1,098,193";
  exactly one batched RPC call carrying all four methods; 0px mobile overflow.
The active and scheduled branches, which mainnet cannot exercise, were driven with
a stubbed RPC: "Active" copy, both counters at the vault balance, coinbase card
correctly hidden, and the chart drawing after three samples.

17 unit tests, 288 in the suite, all green. Typecheck unchanged at 223
pre-existing errors, none in these files.
2026-07-27 12:25:48 -07:00
zeekay 3813d03918 feat: explorer FE — stateless SSR, chain selector, localnet, registry cleanup 2026-03-01 18:00:00 -08:00
zeekay 7049344343 Switch from yarn to pnpm, clean up dependency tree
- Replace yarn v1 with pnpm 10.11.0 across all build configs
- Move misplaced deps to devDependencies (cspell, esbuild, @openzeppelin/contracts, @next/bundle-analyzer, @types/papaparse, @types/react-scroll)
- Remove stale @types/[email protected] override — use correct React 19 types (fixes 22 type errors)
- Convert yarn resolutions to pnpm.overrides
- Update Dockerfile, Dockerfile.lux, CI workflows, and all shell scripts
- Add .npmrc with shamefully-hoist for Next.js compatibility
- Add outputFileTracingRoot to next.config.js
2026-02-24 17:35:30 -08:00
tom goriunovandGitHub 401dc58402 Smart wallet auth (#3220)
* basic login button implementation

* refactoring and add dynamic auth button to the other pages

* connect wallet without authenticating an user

* login and logout user in blockscout account

* refactoring and RPC overrides

* authenticate user with connected wallet

* add ENS to profile button

* override evm chains and fix contract write with waas wallet

* disconnect wallet and fix docker build

* add dynamic imports to components that use web3 wallet packages

* refactor user profile directory

* clean up

* tweaks

* update pw ci script

* fix "connect wallet" button behavior

* handle linking email to profile with dynamic provider

* fix test

* async loading web3 hooks and remove dynamic loading from components that use them

* fix pw tests

* add account navigation in horizontal layout when auth provider is dynamic

* fix address verification modal

* review fixes

* spelling fixes
2026-02-18 19:42:44 +01:00
tom goriunovandGitHub 16eec7ea54 Bump up Next.js, typescript and other packages (#2988)
bump up Next.js, typescript and other packages
2025-08-29 15:39:53 +02:00
tom goriunovandGitHub b9b3733ef3 Page meta tags are not generated on the server (#2731)
* Page meta tags are not generated on the server

Fixes #2730

* suppress warnings about critical dependencies in Next.js logs
2025-05-15 18:24:55 +02:00
tom goriunovandGitHub da6b2f2b87 Migrate from Sentry.io to Rollbar monitoring solution (#2403)
* basic Rollbar setup

* remove sentry code

* add rollback env to values for demo

* [skip ci] adjust instance name

* fix validator

* don't log errors from API by default and change error levels

* [skip ci] change default value for environment property

* [skip ci] do not log api errors of address endpoint
2024-11-29 15:25:59 +01:00
tom 57092de7c2 update nextjs version 2024-11-12 13:41:23 +01:00
tom 55e020e564 disable next.js turbo mode 2024-06-21 13:15:14 +02:00
tom goriunovandGitHub 811ba0a437 Move generated assets into separate folder inside the public folder (#1930)
* add build-time ENV to explicitly enable Open Telemetry

* generate svg-sprite before next build

* move envs.js to assets folder

* move favicon bundle to assets folder

* move external configs to configs folder

* fix envs validator
2024-05-20 13:17:33 +02:00
tom goriunovandGitHub b8eef4b1dc bump Next.js version to v14.2.3 (#1885) 2024-05-03 18:48:06 +02:00
tom dd6ea462db fix provider configuration 2023-12-18 11:35:35 +04:00
tom f957058428 [skip ci] public source maps 2023-11-16 12:14:06 -03:00
eb8c788b5e OpenTelemetry and minor perf fixes (#1343)
* OT init

* add bundle analyzer and change external scripts load strategy

* exporters for prod

* update discord icon and lazy load metamask package

* Fixing opentelemetry url

* add logs and url schema

* Testing NODE_ENV and opentelemetry

* Using jaeger as opentelemetry trace collector

* move envs to build time

* Fixing opentelemetry URL

* fix trace exporter for span processor

* ENV configuration

* filter out incoming requests

* describe feature in docs

* clean up

* Changing otlp endpoint

* fix tests

---------

Co-authored-by: Nick Zenchik <[email protected]>
2023-11-14 12:27:56 -03:00
996356ef9d Upload source maps to Sentry (#1280)
* create workflow for source maps uploading

* Fixing secret vars for sentry

* try the newest tag

* integrate workflow into release process

---------

Co-authored-by: Nick Zenchik <[email protected]>
2023-11-02 10:27:17 -03:00
tom a50b4b8aa3 [skip ci] move next.js api config to proxy route 2023-10-13 18:47:55 -03:00
tom goriunovandGitHub 9056762d04 bump up Next.js version (#1290)
* bump up Next.js version

* [skip ci] fix release workflow for hotfix tag
2023-10-13 16:15:44 -03:00
tom goriunovandGitHub 05945f6cf7 refactor page layout components (#1087)
* update csv export text

* fix pw tests

* base layout and customization for home page and search results page

* refactor rest of the pages

* refactor AppError

* move header padding to layout

* move nextjs utils to separate folder

* combine PageServer and Page

* make useQueryClientConfig hook

* add tests

* remove unused var

* fix envs for pw

* fix pw tests
2023-08-15 19:28:00 -04:00
tom 322bd382de update wagmi and web3modal versions 2023-05-30 13:37:27 -03:00
isstuev c9c8982d3e swagger-ui 2023-02-21 19:23:28 -05:00
tom 8826cfa5b2 Merge branch 'main' of github.com:blockscout/frontend into verification-redesign 2023-02-17 17:35:46 -05:00
tom c6c1906e13 fix big files upload issue 2023-02-15 13:24:58 -05:00
tom b3059bb2ea base implementation 2023-02-10 16:30:22 -05:00
tom 935e282eea migrate to svgr webpack loader 2022-11-09 14:07:46 +03:00
tom 441e49a660 init sentry at run time 2022-09-30 13:35:12 +03:00
tom 3c335d937c fix headers and rewrites 2022-09-16 16:55:31 +03:00
tom 6db021460a replace build envs 2022-09-15 17:26:25 +03:00
tom 4f54de2aaa redirect from account if there is no cookie 2022-09-13 17:00:50 +03:00
tom 7832a9309c use api token from cookie 2022-09-13 16:00:48 +03:00
tom 8b2e73f30f warning handeling 2022-09-13 10:47:09 +03:00
isstuev 8beddec758 fix 2022-09-09 09:49:24 +03:00
isstuev e933040fe2 logo and networks without subtype 2022-09-09 09:16:39 +03:00
tom goriunovandGitHub e2755f4dd2 Merge branch 'main' into lighthouse-report-fixes 2022-09-06 17:14:20 +03:00
tom 54208a632c Merge branch 'main' of github.com:tom2drum/block-scout into csp 2022-09-06 16:38:37 +03:00
tom 67eeb9c970 webpack plugin option 2022-09-06 12:32:58 +03:00
tom e79a379d60 add sentry to api routes 2022-09-05 17:19:01 +03:00
tom 894953fe43 base policies 2022-09-02 17:21:07 +03:00
tom a0edda9bc5 Merge branch 'main' of github.com:tom2drum/block-scout into sentri 2022-08-29 21:58:26 +03:00
tom 40800aaa0a store network info in cookies 2022-08-25 21:49:50 +03:00
tom 2a9e88a4bf sentry setup 2022-08-22 21:50:58 +03:00
tom 438d1ee087 simple docker file 2022-08-20 13:25:24 +03:00
tom 32374ea077 new route trees 2022-08-13 14:25:56 +03:00
tom f1d105ce3f always semi rule 2022-08-08 17:24:02 +03:00
tom 3853130d7f more fixes 2022-07-18 20:59:16 +03:00
tom 48419422a4 ooops 2022-07-18 19:15:13 +03:00
tom 2fc3e1f732 fix errors 2022-07-18 19:09:09 +03:00
Natalia Stus bd603d45d2 icons 2022-06-17 10:56:04 +03:00
tom 952bbad8f1 Initial commit from Create Next App 2022-05-31 20:36:01 +03:00