The magnifying glass was drawn over the leading "S" of the placeholder. The cause is not the search bar: @luxfi/ui's InputGroup measures its adornments correctly and then throws the measurement away, because the clone is guarded on `displayName === 'FieldInput'` — a component that does not exist in the package — and the props it would have set (`ps`/`pe`) are Chakra style props that the Tailwind/gui Input spreads onto the DOM and ignores. Both halves are leftovers of the Chakra→Tailwind port, so EVERY InputGroup in the app is unpadded; the header is just the one you look at every day. Patched at the primitive (patches/@[email protected]) rather than hand-tuning padding at one call site: the offset is the measured width of the actual adornment, so it stays right when the adornment changes, and FilterInput / revoke's SearchInput / the showcase are fixed by the same change. Measured at 1440x900: the icon overlapped the text by 24px and the kbd chip by 52px; both are now 0. The measurement also moves to a layout effect and stops blanking value and placeholder on first render. That blanking was inert while the guard swallowed the clone; with the clone live it flips the field from controlled to uncontrolled on mount, which React warns about and which can eat a keystroke. ClearButton spread `className` over its own visibility classes, so a caller passing one clobbered `invisible` — the header showed a clear button on an empty field. Merged instead, at the component. Placeholder is now "Search or ask anything", and Cmd/Ctrl-K opens an assistant. Nothing in this repo, @luxfi/ui or @hanzo/gui ships a command palette or chat (no cmdk, no palette, one dialog primitive), so this is the smallest thing that works: the existing Dialog, one global listener, and a server-side proxy that holds the credential. The key is deliberately not NEXT_PUBLIC_, so a deployment without one gets a dialog that says exactly that instead of failing silently. Off unless NEXT_PUBLIC_AI_ASSISTANT_ENABLED is set — Ctrl+K is the browser's address-bar shortcut and claiming it to show an error would be worse than not claiming it. Validators read 5 on a network running 20. useCurrentValidators asks ONE P-Chain, the one this deployment points at, but Lux, Hanzo, Zoo and Pars are each sovereign L1s with their own P-Chain and their own validator set — measured 2026-08-06, five each, with four disjoint NodeID sets. The registry gains the node origin per chain; absence of it is the signal that a chain has no publicly reachable node (SPC and Osage are in-cluster only), and those are reported `unavailable` rather than counted as zero. Stake is deliberately NOT summed: each chain bonds its own currency. The proxy resolves `?chain=` through the registry and never from the request, so it cannot be pointed at an arbitrary origin. The new envs are registered with the envs-validator and documented in ENVS.md — the schema rejects unknown NEXT_PUBLIC_* variables and runs at container start, so an undeclared one stops the pod from booting. Co-authored-by: Hanzo Dev <[email protected]>
DEPRECATED — see ~/work/lux/explorer/
The standalone Next.js frontend in this repo is no longer deployed. Its build output is embedded directly into the Lux Explorer Go binary (
ghcr.io/luxfi/explorer:1.2.1) viago:embed. Run that single binary in production.This repo is preserved as the source of the embedded SPA assets. Updates to the UI ship via a rebuild of the explorer image, not by deploying this Next.js app separately.
Canonical deploy:
~/work/lux/explorer/(Go binary, single process, indexer + GraphQL + SPA, port 8090).
Lux Explore frontend (legacy)
Frontend application for Lux Network blockchain explorer
Running and configuring the app
App is distributed as a docker image. Here you can find information about the package and its recent releases.
You can configure your app by passing necessary environment variables when starting the container. See full list of ENVs and their description here.
docker run -p 3000:3000 --env-file <path-to-your-env-file> ghcr.io/blockscout/frontend:latest
Alternatively, you can build your own docker image and run your app from that. Please follow this guide.
For more information on migrating from the previous frontend, please see the frontend migration docs.
Contributing
See our Contribution guide for pull request protocol. We expect contributors to follow our code of conduct when submitting code or comments.
Resources
- App ENVs list
- Contribution guide
- Making a custom build
- Frontend migration guide
- Manual deployment guide with backend and microservices
License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.