Adds .hanzo/workflows/cicd.yml calling the canonical pipeline and drops the
GitHub-hosted workflows it replaces. Lands here because this is where the repo
is written — git.hanzo.ai is upstream and github.com is its push mirror, so the
same change made on github.com never reaches the runner fleet.
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]>
* 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
* page layout
* add interval filter
* fix navigation
* value formatting and test
* fix: correct empty state message from 'pools' to 'hot contracts'
* update screenshots
* add disabled state to tag select and fix some bugs
* fix screenshot
* update select texts
* first part of transition
* second part of transition
* remove jest
* bump up node version and playwright version
* update all screenshots because of the new playwright version
* fix tests
* one more screenshot update
* fail the app start if multichain config or essential dapps config were not generated properly
* add timeouts for essential dapps and multichain config generators
* fix "add to wallet" button in address tokens table
* [skip ci] update docs
* fix tx tables when there are no fee and value columns
* add support for promoted multichain provider
* fixes
* change action button logic
* fix tests
* fix
* hide "add network" button for multichain
* shorten the amount of txs on multichain homepage
* change name formatting for multichain button
* add bright color variants and lg size for badges
* fix y-axis margin calculation for chart with custom tick formatter
* superchain bug fixes
* bump versions of react and nextjs
* update screenshot
* bump dappscout-iframe
---------
Co-authored-by: Max Alekseenko <[email protected]>
* 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]>
* redesign "add chain" button
* fix wallet detection
* [skip ci] update default value for ENV
* fix tests
* return button to the footer and add source to mixpanel event
* regcred from helmfile for review
* [skip ci] remove wallets env from values for demo stand
* use react-query to cache detection result
* add cookie to hide button in the topbar
* add prefix to svg ids to fix rabby icon
* update screenshot
* remove unnecessary comment
---------
Co-authored-by: Nick Zenchik <[email protected]>
* UI/UX: Dropdown DeFi button fixes
Resolves#3104
* move chain menu to the right of the topbar
* add list mode to chains menu
* rollback price diff on mobile
* fix links in approvals list
* pass check-summed hash to safe API call
* make tx hash optional for token transfers
* fix multiple public tag submission
* update screenshots
* use DataListDisplay for revoke
* force to send credential only with general API requests
* prefer formatted date label over date default formatting when saving chart data as csv
* add abort failed status for zeta chain CCTX
* update specify sdk
* rename ENV for native token address
* add ENV to hide native coin price in topbar
* rename routes for name services
* fix chart csv export file
* fix tests
---------
Co-authored-by: Max Alekseenko <[email protected]>
Co-authored-by: isstuev <[email protected]>
* MegaETH: uptime dashboard
Fixes#2906
* basic implementation of mini-blocks
* update socket url and time format
* update mega eth preset
* customize flashblocks name
* clean up
* update color theme variable for mega eth
* [skip ci] don't show alert "scanning new mini-blocks"
* 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]>