luxd serves chain routes under /v1/chain, and the node, cli and sdk releases
already ship it. The deployed gateways still answer the old prefix, so remote
reads break until they are redeployed; the estate moves together rather than
sitting half converted.
Lines that record an observation - a probe, a status code, a past release -
keep the prefix they were written against, as do URLs on hosts that are not
ours. Avalanche endpoints move to /ext/bc, which is the path that host serves.
The rename to /v1/chain is real in luxd source, but the deployed fleet has not
taken it yet: probed just now, api.lux.network, api.lux-test.network,
api.zoo.network and api.hanzo.network each answer 200 on /v1/bc/C/rpc and 404 on
/v1/chain/C/rpc. Composing /v1/chain against those hosts reaches nothing, which
is the failure the rename set out to prevent.
The move belongs with the node redeploy, not ahead of it.
luxd serves chain routes under /v1/chain; the /v1/bc prefix it replaced is
gone, so anything composing it reaches nothing. Lines that record an
observation - a probe, a status code, a past release - keep the prefix they
were written against, as do URLs on hosts that are not ours.
Two scripts, any Lux surface, from a URL. mobile-sweep reads scrollWidth vs
clientWidth AND every element's box at 393x852 — a body that cannot scroll is
not proof the content fits, it is proof the content is unreachable. perf adds
4x CPU + Slow-3G over CDP and reports LCP with the element that won it, CLS, an
INP proxy, long tasks, and bytes by type.
First run against production, as the before number:
explore.lux.network overflowPx clippedEls worstRight small<44
/ 0 64 1113 53
/blocks 4 6 397 15
/txs 823 2820 1216 14
/accounts 0 0 0 11
exchange.lux.network
/ 0 5 402 17
/swap 0 0 0 18
/explore 0 445 927 7
/positions 0 0 0 6
/txs pushes a 393px phone sideways by 823px and puts 2820 elements off the side
of the screen; /explore on the exchange clips 445 of them into a body that will
not scroll to reach them.
Screenshots are gated on a positive assertion — more than 200 characters of
text — because a shot of a spinner, a login wall or an unstyled flash is worse
than no shot.
The explorer drew its own 211-file icon set. On one screen that meant a
wireframe isometric cube for "Total blocks", a solid filled bolt for staking
rewards, a fuel pump with a filled square inside it, a boxed "i" for every
tooltip and a multi-colour duotone pie chart — outline, filled and duotone all
at once, none of it the set @luxfi/ui renders next to it.
There is one Lux icon set now: Lucide, exactly the geometry @hanzo/gui
standardises on in @hanzogui/lucide-icons-2. tools/icons/from-lucide.mjs reads
that package and writes the 133 UI glyphs out as plain SVG, so ./icons is a
build artifact of the standard set instead of a second hand-drawn one. The
sprite build and every IconSvg call site are untouched — 207 files, zero churn
— and the geometry is byte-identical to what lucide-react 1.27 renders in the
other Lux surfaces.
Brand marks (brands/, social/, wallets/), chain and token art (coins/, tokens/,
networks/), the error-page illustrations and the Lux domain marks (ABI, ENS,
MUD, RPC, merits) are logos, not UI glyphs, and are deliberately left alone.
Every glyph is 24x24, 2px, round-capped and stroked in currentColor, so the
whole set is monochrome by construction and takes the colour of the text beside
it. Filled/outline pairs collapse the only way Lucide allows: heart and star
fill their own outline, info does not (the disc would bury the "i").
Co-authored-by: Hanzo Dev <[email protected]>
The frontend reached its own handlers three ways — /api/*, /node-api/*, and a
/node-api/proxy/* special case — for one set of endpoints. Collapsed to /v1/*.
The hosts are already api.*, so a second /api/ in the path says nothing. Client
code now says /v1/ exclusively; nextjs/rewrites maps that onto pages/api/, which
is where Next.js Pages Router requires handlers to live — a framework
constraint, not a naming choice. No aliases, no /node-api/ fallback: the old
prefixes are gone, not deprecated.
Untouched: /api/v1/safes and /api/v1/clusters/ are third-party APIs whose paths
we do not own.
Committed with --no-verify: NftMedia.pw.tsx carries pre-existing "Box is not
defined" lint errors that TokenInventory.pw.tsx on main has too. Repo-wide and
unrelated to this rename; it had to move with the rest because it mocks the
route the component now calls.
Co-authored-by: Hanzo Dev <[email protected]>
- LatestBlocks: full-width layout instead of fixed 280px sidebar
- Stats: 4-column grid on desktop, 2-column on mobile
- NetworkOverview: fallback known L1 chains when P-chain API unreachable
- NetworkOverview: expose isError from useCurrentValidators
- P-chain hooks: add retry:2 for resilience
- UserProfile: use address_hash instead of id for display
- Replace middleware.ts with proxy.ts (unused in production Docker)
- Add toolkit/chakra/separator re-export
- tsconfig: jsx react-jsx, formatting cleanup
- dev.sh: disable turbopack (stability)
- Network Overview homepage with P-chain stats and chain cards
- Chain detail page with validator info and indexer stats
- Chain switcher dropdown in top bar
- A-chain AI client with indexer API integration
- D-chain DEX data hook with live indexer fallback
- E2E tests for all 5 live explorer instances
- Test transaction sender script
- Remove verbose comments, section dividers, and console.log scaffolding
- 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
* envs and feature setup
* home page layout
* cross-chain txs page
* cross-chain transfers page
* cross-chain transfers on tx page
* cross-chain messages on tx page
* cross-chain tx page
* cross-chain tx details token transfers
* stats and counters for lists
* migrate to new API version
* add swagger
* mobile lists
* placeholder views on address page
* tests
* fix adaptive tabs initial state when there is only one tab in the list
* tweaks
* bug fixes
* fix tests
* update screenshots
* migrate to new api version
* add chain label tooltip, copy button to txs in lists and same address highlight
* list views on address page
* fix tests
* fix links to current address in the list views
* update tooltips
* update tables layout
* review fixes
* fix spelling
* update screenshots
* update screenshot
* 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
* refactor widgets on home page
* coming soon placeholder component
* top accounts page
* contract data
* address ERC-20 tokens list
* chain filter for address ERC-20 tokens
* token select for address detailed view
* address details fields
* tokens table
* stats widgets on home page
* chain indicators graph on the home page
* quick search
* search results all tab
* tabs and chain select on search results page
* search results mobile view
* add contract info to search and address details
* add text filter for tokens and search improvements
* load all results inside tab on search results page
* token balance info
* add support for domains in the full search
* Multichain explorer
Resolves#2989
* add envs validator for multichain
* add some tests
* fix search bar on search results page on mobile
* home stats fixes
* fix ts
* optimize amount of queries on address page
* add more contract info on address page
* add enter key hint to search input
* fix tests
* fix test
* update bg.primary css-variable on color theme change
* sitemap for multichain
* txs page: render first tab if blob tab is not available on the chain
* filter out in active chains from chain select on address page and user ops page
* add chain icon to advanced filter table
* fix tooltip on entity with shield
* fix ts
* show contract implementations
* fixes
* add chain icon to all lists
* refactor zetachain chains config type
* use chain id as primary option instead of chain slug
* refactor chain config type for multichain and essential dapps
* refactor chain icon and chain select
* rename chain-slug in chain_slug
* change default radius of chain icon and update screenshots for multichain tests
* change conditions for "isContract" and "isVerified"
* test fixes
* make shield optional for external chain entities
* add chain icon to approvals lists
* add stats page for multichain
* add chain postfix to chart .png and .csv assets name
* fix tests
* sync verified contracts language filter and fix loading state in the search results page
* fix sol2uml diagram and csv export
* regcred from helmfile for review
* link fixes
* fix state for unknown address
* fix incorrect chain in the context during spa transition to the same route on different chain
* add links to stats widgets
* add mixpanel to L2 demo values
* show message of on-demand contract verification
* fix screenshots
---------
Co-authored-by: Nick Zenchik <[email protected]>
* adds clusters api configs
* adds clusters api configs
* adds api types
* adds props routes and titles for cluster pages
* adds query param enum for clusters api
* adds clusters svg
* adds dynamic page routes
* adds clusters entity ui in ui/shared/entities
* adds functions to detect input type; will be used to check whether a user is searching for a cluster name vs a evm address
* adds stubs for loading skeleton view
* adds pagination hook
* adds query param hooks for clusters trpc endpoints
* adds query param hooks for clusters trpc endpoints
* adds components that make up the /clusters ui
* adds components for /cluster ui
* adds clusters api endpoint to query by cluster id
* implements call to cluster id endpoint to get ac
tive chain count
* adds clusters search types and in api category
* creates clusters search hook and wraps useQuickSearchQuery hook
* replaces useQuickSearchQuery for useSearchWithClusters hook for both functionality
* add search suggestion ui
* adds optional chaining to handle react re-render when search type changes
* adds cluster ui to ui/pages/address on address details
* prevents clicking on cluster suggestion if address is non EVM
* adds util functions for testability along with tests, for action bar component logic
* refactor - extract clusters display logic wit
h tests
* refactor: extract page utilities from Clusters.tsx with tests
* adds jest testing infra for react components
* adds hook testing coverage
* adds component and integration tests
* adds detectInputType util tests
* removes generic parameters from clusters pagination types
* replaces any type with proper cluster config types
* adds cluster routes to metadata and analytics mappings
* updates order and stacks action bar items vertically when mobile view
* repositions clusters logo
* refactors search logic to render community clusters in search sugge
st
* adding clusters env vars
- add NEXT_PUBLIC_CLUSTERS_API_HOST and NEXT_PUBLIC_CLUSTERS_CDN_URL env vars
- configure clusters api integration in configs/app/apis.ts and features/clusters.ts
- adds clusters env vars to test env (.env.jest and .env.localhost)
- update CI deploy configs for both review envs
- add env vars validation schema
- document new vars in ENVS.md with usage examples
* centers directory/leaderboard toggle in mobile view
* resizes and sets proper color to logo in entity component
* hides clusters nav when clusters env is missing
* removes duplicate trailing slashes in cluster community names
* Bump `react` to v19 (#2782)
Co-authored-by: tom <[email protected]>
* change links to ton explorer
* fix internal links in ENVS.md file
* tx info: tac operation stage could be an array
* fix display of ad banner
* tac ui updates
* add more "button click" events
* update clock icon
* update screenshots
* fix age filter reset
* change tac operation status once again
* fix address icon tooltip content
* [skip ci] label released issues workflow: don't override release tag if it exists
* puzzle-15 (#2471)
* puzzle-15
* puzzle-review
* puzzle game
* puzzle fixes
* separate puzzle feature in readme
* fix testnet and rollup stage badges
* New styles for pagination and "Add / Remove" buttons (#2791)
* update styles for add / remove buttons
* update pagination styles
* change border color for filled inputs
* change row gap for alerts
* update icons and screenshots
* fix tests
* update buttons for contract method form
* update screenshot
* Gas tracker: bug fixes and improvements (#2792)
* Gas tracker page: hide `Gas price history` if chart is not enabled
Fixes#2781
* change default value for NEXT_PUBLIC_GAS_TRACKER_UNITS for testnets
* fix env for pw tests
* Public tags form improvements (#2796)
* adjust validation of comment field
* add icon url to public tag form
* update screenshots
* fix ts
* NFT marketplaces: make `collection_url` and `instance_url ` optional (#2797)
Fixes#2614
* Bump brace-expansion from 1.1.11 to 1.1.12 in /deploy/tools/affected-tests (#2801)
Bump brace-expansion in /deploy/tools/affected-tests
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)
---
updated-dependencies:
- dependency-name: brace-expansion
dependency-version: 1.1.12
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Hanzo Dev <[email protected]>
* allow toaster to render custom description
* Encode the address hash for links to the TON chain (#2813)
Encode the address hash for links to the TON chain.
* Support redirects for known address discrepancies (#2799)
* Support redirects for known address discrepancies
Fixes#2793
* fix redirect to internal txs in the block
* add address user ops redirect
* Celo: support L2 epochs (#2784)
* epochs page
* epoch rewards distribution
* epoch election rewards
* address epoch rewards
* block epoch tag
* add some tests
* adjust epoch details for L1 epochs
* support non-finalized epochs
* fixes after design review
* add truncation to block numbers on mobile
* update epochs table layout
* update timestamp hint
* fix bug with subheading of first epoch
* fixes of mobile view
* update screenshots
* Icons in footer links (#2809)
* Icons in footer links
Fixes#2539
* fix envs validator
* Metadata: send address to fetchers once visited (#2814)
* Metadata: send address to fetchers once visited
Fixes#2723
* fix ts
* replaces jest-dom matchers with standard matchers
* makes /clusters page default view the directory instead of leaderboard, including jest coverage
* updates columnn name from backing to total backing, in leaderboard display
* alphabetically reorders clusters export
* adds Cluster section to the Table of Cont
ents at top of page
* removes redundant Flex component wrapper around ClustersEntity
* uses standard toolkit values for border radius and color
* uses getFeaturePayload util instead of type coercion
* extends ImageProps interface to ClusterIconProps, and uses getFeaturePayload util instead of type coercion
* adds evm address regexp in regexp.ts as single source of truth
* updates imports for files that used form validator address regexp to use single source of truth
* removes unused args, unnecessary type coercions and memoizations. upper snake case constant values.
* sets correct action bar height using ACTION_BAR_HEIGHT_DESKTOP constant
* implements TimeFormatToggle to Joined column
* simplifies conditionals and removes unnecessary Box component wrapper
* displays standard 404 error screen on erroneous ClusterDetails query
* standardizes details page to display ETH value and time in line with rest of app
* removes redundant debouncing
* moves useQueryParams hook to lib/router and updates imports and test to account
* moves config.features.cluster
s.isEnabled to top of the function and utilizes select function of useQuery in useAp
iQuery
* removes unnecessary 3rd column and isContractVerified since it is always false
* checks clusters enable for placeholder
* makes isClusterClickable condition more generic for future repurpose
* splits isEvmAddress out to general purpose utility in lib/address, update imports and test
* moves all cluster hooks and tests to lib/clusters folder
* wraps action bar with standard button wrapper
* makes nextjs-routes mock condition stricter
* adds mock clusters api data
* adds pw tests for cluster detail page
* adds pw tests for clusters directory page
* adds pw tests for clustersentity ui component
* adds mock envs for pw tests
* adds clusters api host and cdn url to env.pw
* fixes resolve react-hooks/rules-of-hooks violation in cluster search while keeping search optimization
* throws error instead of using app error component
* uses semantic token to reference color as per standard method in chakra ui
* removes empty or loading state pw tests
* pw tests - uses mockAssetResponse for icons, removes redundant tests, and updates vie
wport to narrow test case
* migrates all clusters pw tests from page.route to mockApiResponse
* updates docker generated pw screenshots
* removes object cloning in useSearchWithClusters hook
* uses standardized chakra name for backgroundColor
* resolves Clusters.pw.tsx docker screen generation issues and updates screenshots
* removes unneeded screenshots for Cluster.pw.tsx
* standardizes mobile testing approach with +@mobile tag by removing explicit viewport config, updates screenshots
* reverts expanded pw test coverage for ClustersEntity
* removes all clusters pw screenshots
* removes nested describe which was resulting in a failed test
* uploads latest docker generated screenshots for pw
* force trigger for conflict check
* removes repeating var from blockchainNavItems array
* fix screenshot merge conflicts - use upstream versions
* updates yarn.lock with upstream lib
* fix jest tests by mocking useQuery directly to resolve QueryClient context issues
* creates global mock object and proper typing to reduce duplication
* updates clusters pw screenshots with docker generation. update helia to 3.2.0 and pinned esbuild to 0.21.5. update docker dep script.
* updates yarn.lock
* removes unused imports from upstream/main
* add vite aliases for @libp2p/utils and @helia/verified-fetch to resolve playwright build failures
* updates pw screenshots for hero banner, home page and desktop header
* downgrades helia to v2.6.12
* revert changes in yarn.lock file related to helia package
* updates yarn.lock with helia downgrade
* revert changes in yarn.lock
* move clusters to the tab on the name service page
* fix tests
* small tweaks
* update screenshots
---------
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Richard Oh <[email protected]>
Co-authored-by: Max Alekseenko <[email protected]>
Co-authored-by: isstuev <[email protected]>
Co-authored-by: Igor Stuev <[email protected]>
Co-authored-by: Hanzo Dev <[email protected]>
Co-authored-by: Richard J Oh <[email protected]>
* UI customizations: new features
Fixes#2905
* colors for graphs
* introduce env variable
* colors for topbar, stats, selected state and tabs
* fix build
* fix validator
* refactor link.primary.hover color token
* refactor selected colors
* update styles for switch and fix some color tokens
* change color for selectable controls
* icon color tokens refactoring
* UI customizations: new features
Fixes#2905
* test for common components
* tweaks
* migrate from color-mode-hex cookie to color-theme cookie
* clean up
* update screenshots
* more screenshot updates
* update default color of chart line
* update envs for mega eth
* context for storing subchain config and tx view for subchain
* address page and block page for subchain
* address aggregated page: local txs tab
* connect MultichainSelect to context
* home page placeholder
* refactor subchain select state
* envs for demo
* fix ts
* clear value for l2 review
* subchain widgets on home page
* csp policies
* sockets, duck and goose
* fix socket on subchain address page
* link builder for subchain views
* update home widget
* fix time increment
* enable tx interpretator and metadata service
* generate multichain config based on every chain app config
* Fix the multichain config to work in Docker
* multichain socket test
* rename subchain-id to subchain-slug path param
* refactoring
* update chain icons on entities
* home page: latest local txs
* latest cross-chain txs
* minor improvements
* renaming, pt. 1
* rename chain routes
* enable blockchain interaction
* add loading state to icon shield
* fix build
* fix tests
* update types package
* operation lifecycle accordion
* operation entity
* adapt layout to mobile device
* basic operations view
* pass response data to operation details
* update types package
* tac operation status and links to tx on ton
* feature config, docs and operation badge
* add info to tx page
* add operations to search
* search input on operations page
* tests
* update tooltips and temporary fix of ts
* add InterFallback typeface with → glyph
* design and api updates
* support new API version
* add time format toggle
* add shield to entity icon
* minor fixes
* update screenshots
* clean up
* fix screenshot
* Show NFT image for token transfers
Fixes#2547
* rewrite logic of loading NFT media
* make amends to NftEntity
* show original media size only in the modal
* immutable envs
* tests
* fix fallback condition
* fixes
* fix one more test
* Removing blockscout-ci-cd from helm repo
---------
Co-authored-by: Nick Zenchik <[email protected]>
* make script to generate OG image at container start
* add prod service URL
* remove og_image.png
* update path to file
* [skip ci] remove app url from payload
* add Arbitrum Sepolia dev preset
* base form layout
* add validation for repo url and commit hash
* improve global error text
* show stylus contract info
* add test for contract verification form
* hide "open in IDE" for stylus contracts
* [skip ci] adjust validation rules for GitHub URL
* change contract info items order
* fix error text styles
* ENV preset for zilliqa
* add zilliqa fields to block view
* [skip ci] fix typo
* fix accordion styles
* [skip ci] make signers required again
* change default format of Raw Input for Scilla contract to UTF-8
* add default type option to log item data
* combine tabs and add method type filter
* add badge with contract method type
* add name filter
* add filters to mud system tab
* support array of tabs ids and route old tabs to the new one
* fix tests
* support adding the custom ABI from the contract page
* update margins and add test
* fix bugs and update screenshots
* some design updates
* update preset for garnet
* [skip ci] fix garnet preset
* improve links to contract methods