6235 Commits
Author SHA1 Message Date
zeekay da79f9e711 feat: rename @blockscout to @luxfi, monochrome theme, horizontal blocks
- Rename all @blockscout/* npm packages to @luxfi/* aliases (150+ files)
- Override blue accent colors to gray for monochrome theme
- Fix dropdown/menu/popover fonts to use Geist Sans
- Change Latest Blocks to horizontal scrolling layout
- Show dashes instead of zeros for validator stats on error
- Fix GHA deploy step to use correct deployment name
2026-03-02 12:28:15 -08:00
zeekay 84af44a4f5 fix: remove all user-visible Blockscout references
- Issue URL → github.com/luxfi/explore
- API docs links → docs.lux.network
- Contract verification → local route instead of vera.blockscout.com
- Discord link → discord.gg/luxnetwork
- JSON-LD script ID → lux-explorer-product-schema
- RPC API description → Lux Network branding
- Rollbar instance → .lux.network domain support
2026-03-02 10:43:36 -08:00
zeekay 1affde5938 feat: horizontal blocks layout, stats grid, network overview fallback chains
- 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)
2026-03-02 10:36:17 -08:00
zeekay ddb1fa2cd9 unify all sql images to :latest (PG18)
Single version policy: ghcr.io/hanzoai/sql:latest everywhere.
No version pinning, no backwards compat, always latest stable.
2026-03-01 21:09:09 -08:00
zeekay 388346c75f fix(validators): use weight field and correct uptime format for P-chain validators
- P-chain API returns weight not stakeAmount; fallback to weight when stakeAmount absent
- uptime from API is already 0-100 percentage, not 0-1 fraction; remove double-multiply
- mark connected and stakeAmount as optional to match actual API response shape
2026-03-01 12:45:34 -08:00
zeekay 3c49363dae brand: remove remaining Blockscout text references from UI
Replace user-visible "Blockscout" brand text with "Lux Explorer":
- AdminSupportText: [email protected] → [email protected]
- useSignInWithWallet: sign-in message rebrand
- ContractVerification (Hardhat/Foundry): remove "on Blockscout"
- ContractDetailsAlerts: "Blockscout DB" → "our database"
- ContractCustomAbiAlert: liability notice rebrand
- ContractDetailsAlertVerificationStatus: "Blockscout Bytecode Database" → "Bytecode Database"
- ApiKeys page: remove "Blockscout API key" reference
- VerifiedAddresses: "Blockscout" → "explorer"
- MarketplaceRatingTriggerButton: remove login-to-blockscout message
- AddressMultichainButton/GetGasButton/RollupStageBadge: utm_source blockscout → lux-explorer
- Monaco editor: rename blockscout-light/dark themes to lux-light/dark
2026-03-01 03:37:04 -08:00
zeekay 08cddc0fcb brand: remove all Blockscout branding, replace with Lux Explorer
- Gas tracker FAQ: Blockscout → Lux Explorer
- Chain config web3/chains.ts: explorer name → Lux Explorer
- Auth screens: Blockscout account → Lux account
- Contract verification: Blockscout supports → Lux Explorer supports
- API docs: Blockscout core API → Lux Explorer Core API
- Rewards/merits: Blockscout Merits → Lux Explorer Rewards
- Marketplace disclaimer and integration icons
- Address verification: [email protected] → [email protected]
- Chart export filenames: Blockscout chart/stats → Lux Explorer
- OTEL service name: blockscout_frontend → lux_explorer_frontend
- Dev container: blockscout dev → lux explorer dev
2026-02-27 22:17:37 -08:00
zeekay 62965a5f50 ci: simplify to single-arch amd64-only build on lux-build ARC runners
Drop arm64 + manifest jobs (cluster is amd64-only). All jobs now run
on lux-build self-hosted runners — no GitHub-hosted runners needed.
Build -> deploy in 2 jobs, no intermediate manifest step.
2026-02-27 19:48:32 -08:00
zeekay 8910959c6b ci: fix kubectl install path (non-root runner) 2026-02-27 19:44:25 -08:00
zeekay 233589eb65 ci: install kubectl in deploy job for ARC self-hosted runners
ARC runner image doesn't include kubectl. Install it via curl
before the deploy step so rollout restarts work correctly.
2026-02-27 19:34:53 -08:00
zeekay 12cae18a45 ci: use lux-build self-hosted DOKS runners for amd64 builds
Switches build-amd64, create-manifest, and deploy jobs from
ubuntu-latest to our native lux-build ARC runners on lux-k8s.
Eliminates QEMU emulation overhead for amd64 targets.
2026-02-27 16:13:35 -08:00
zeekay 008ef3d93e fix: SSR branding — use NEXT_PUBLIC_APP_HOST for correct per-chain logo/favicon
- getHostname() reads NEXT_PUBLIC_APP_HOST via getEnvValue during SSR
  so each explorer instance shows its own branding from first paint
- _document.tsx generates dynamic SVG favicon from chain branding
2026-02-27 14:48:03 -08:00
zeekay 26c519de84 fix: make deploy step resilient to missing subnet frontend deployments 2026-02-27 14:26:57 -08:00
zeekay 43edea1ca4 fix: deploy step restarts all 5 frontend pods, not just mainnet 2026-02-27 13:56:01 -08:00
zeekay cbe3f2adb2 fix: use real brand logos from each project's logo repo
- Lux: triangle from ~/work/lux/logo/
- Zoo: three overlapping circles from ~/work/zoo/logo/
- Hanzo: geometric H from ~/work/hanzo/logo/
- SPC: unicorn emoji per user request
- Pars: 8-pointed star from ~/work/pars/logo/
- Changed branding to multi-path SVGs (logoViewBox + logoContent)
2026-02-27 13:13:13 -08:00
zeekay d6fe894153 feat: per-chain branding — logo, favicon, brand name customizable
- Add ChainBranding interface with logoSvg, faviconSvg, brandName per chain
- Each chain (Lux, Zoo, Hanzo, SPC, Pars) gets distinct icon + brand name
- TopBar renders chain-specific logo and brand name from registry
- ChainSwitcher shows per-chain icons in dropdown items
- Dynamic favicon via useChainFavicon hook (swaps SVG favicon on mount)
- Page title uses chain branding via getNetworkTitle()
2026-02-27 13:04:06 -08:00
zeekay 58334edcf6 fix: replace Blockscout favicon with Lux triangle
All favicon files (PNG 16/32/48, ICO, SVG, apple-touch-icon, android-chrome)
now show the Lux triangle logo (black circle, white triangle) instead of the
Blockscout blue "h" logo.
2026-02-27 12:33:21 -08:00
zeekay 956029e7f1 fix: wait for networkidle before checking page title in E2E tests
Next.js sets document.title after hydration, not at domcontentloaded.
2026-02-27 12:27:06 -08:00
zeekay d1f7ed02e0 fix: polish header — cleaner nav, branded logo, compact selectors
- Logo shows "Lux Network" for C-Chain, chain name for subnets
- Blockchain items (Blocks, Txns, Tokens, Accounts, Contracts)
  grouped under a dropdown to reduce nav clutter
- Network selector: minimal pill with green dot, no outline button
- Chain switcher: compact bordered pill with chevron
- Smaller font sizes (xs), tighter spacing, rounded menus
- Consistent hover states across all interactive elements
2026-02-27 12:23:58 -08:00
zeekay 0e381fd911 feat: add all chain VM accessors and wire DEX/Bridge to luxnet SDK
- Add centralized chain accessor module (lib/api/luxnet/chains.ts) exposing
  all 14 chain VMs (C/X/P/A/B/D/G/I/K/O/Q/R/T/Z) plus utility APIs
- Refactor pchain/client.ts to re-export from centralized module
- Wire DEX page to use DexVMAPI (getStats, getPools, getMarkets) with
  demo data fallback when D-Chain RPC is unavailable
- Add B-Chain bridge API module (lib/api/bchain/) using BridgeVMAPI
  (getSignerSetInfo, getWaitlist) for signer set stats
- Update Bridge page to show live bridge signer count from B-Chain
- Fix stale E2E tests: use >= minimum thresholds instead of exact
  counts (block/tx counts grow over time), use describe blocks
2026-02-27 12:05:23 -08:00
zeekay 8bfc8f40bd feat: multi-tenant chain registry with hostname auto-detection
One image serves all chains — ChainSwitcher and NetworkSelector
auto-detect current chain/network from window.location.hostname.
Chain registry at configs/app/chainRegistry.ts defines all chains
across mainnet/testnet/devnet.
2026-02-27 11:33:08 -08:00
zeekay dc5479a2b1 feat: unified header bar with Lux Network branding
- Redesign TopBar as single unified header: logo + nav + controls
- Add NetworkSelector dropdown (Mainnet/Testnet/Devnet)
- Monochrome ChainSwitcher (kill blue panel)
- Connect wallet button via UserProfileDesktop in header
- Remove NavBar and SideBar (nav now in TopBar)
- Simplify HeaderDesktop to search bar only
2026-02-27 11:18:39 -08:00
zeekay 5fed458a21 feat: integrate luxnet SDK for P-chain API calls
Replace hand-rolled JSON-RPC fetch client with [email protected].0 SDK.
P-chain hooks now use PlatformVMAPI methods directly.
2026-02-27 10:55:58 -08:00
zeekay 2c4fcde2d2 feat: multichain explorer pages, chain switcher, indexer integration
- 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
2026-02-27 10:46:56 -08:00
zeekay 3725171b32 feat: add AI compute dashboard and DEX orderbook pages
- A-Chain (AI): dashboard with models, providers, attestations tabs
- D-Chain (DEX): markets, orderbook, trades, pools tabs
- API hooks with mock data (ready for indexer integration)
- Navigation items and route registration for /ai and /dex
2026-02-26 14:05:43 -08:00
zeekay 8c1f6b438b feat: update all chain definitions to 14 primary network chains
Add D-Chain (DexVM), G-Chain (GraphVM), I-Chain (IdentityVM),
O-Chain (OracleVM), R-Chain (RelayVM) to match ~/work/lux/node
vms_allvms.go. Fix VM names: ThresholdVM, BridgeVM, KeyVM.
Update chain count from 9 to 14 across all pages.
2026-02-26 11:10:12 -08:00
zeekay 2e8885d7de feat: redesign homepage, add chain switcher and chain detail page
- Redesign NetworkOverview homepage with Blockscout Stats, LatestBlocks,
  and LatestTxs alongside P-chain network stats and chain cards
- Add ChainSwitcher dropdown to TopBar for switching between C-Chain,
  Zoo, Hanzo, SPC, and Pars explorer instances
- Create /chains/[slug] chain detail page with chain info, validators,
  subnet chains, and stats (modeled after Avalanche L1 Details)
- Make ChainsPage rows clickable with links to chain detail pages
- Register /chains/[slug] route in all metadata/analytics files
2026-02-26 09:57:59 -08:00
zeekay f6eb142582 feat: add Bridge page and Network Stats to Stats page
- Add /bridge page with cross-chain transfer route tracker
- Show bridge routes between Primary Network chains and L1 subnets
- Add Network Stats section (validators, chains, stake, uptime) to Stats page
- Add Bridge to navigation menu
- Register /bridge route in nextjs-routes, metadata, and mixpanel
2026-02-26 00:47:24 -08:00
zeekay 2ade6a7320 feat: native multi-platform Docker builds (amd64 + arm64)
Replace slow single-platform build with parallel native builds:
- amd64 on ubuntu-latest, arm64 on ubuntu-24.04-arm
- Registry-based caching per platform
- Multi-platform manifest merge
- Auto-deploy to DOKS on push to main
2026-02-26 00:11:22 -08:00
zeekay 3c8d48e0e0 feat: unified multi-chain explorer with Network Overview, Chains, and Validators pages
- Replace single-chain homepage with Network Overview showing P-chain stats,
  primary chains (C/P/X/A/B/Q/T/Z/K), and L1 subnet chains
- Add Chains directory page with Primary Network / L1-L2-L3 tabs
- Add Validators page with Dashboard, Validators list, and Delegators tabs
- Add P-chain API hooks (useCurrentValidators, useBlockchains, useSubnets)
- Apply monochrome theme: replace all blue/purple/cyan/teal with gray
- Add Geist Mono font support
- Add Chains and Validators to navigation sidebar
- Update route types, metadata, analytics, and cspell for new pages
2026-02-25 22:53:10 -08:00
zeekay 39897c9458 feat: unify settings and wallet into single user menu
Move settings from standalone TopBar gear icon into the user profile
dropdown. The menu always renders (for settings access) and includes
wallet connect/disconnect when blockchain interaction is enabled.

- Remove Settings component from TopBar
- Integrate SettingsColorTheme, SettingsIdentIcon, SettingsAddressFormat,
  SettingsScamTokens, SettingsLocalTime into UserWalletMenuContent
- UserProfileDesktop always renders (no null fallback)
- UserWalletButton shows profile icon + "Menu" when no wallet connected
- Mobile header also always shows user menu
- Optimize Dockerfile.lux dependency layer
2026-02-25 12:28:17 -08:00
zeekay 2f0a103ddb fix: use yarn registry mirror in Dockerfile for npm 403 workaround 2026-02-25 11:14:28 -08:00
zeekay 8c2a10a579 fix: add npm fetch retries to handle transient registry 403 errors 2026-02-25 11:09:27 -08:00
zeekay 069792ee93 fix: correct font name from 'Geist Sans' to 'Geist' and add SVG favicon
Google Fonts registers the font as 'Geist', not 'Geist Sans'. The CSS
font-family mismatch caused the font to never load, falling back to
system sans-serif. Also adds an SVG favicon with the triangle icon
(SVG favicons take priority over PNG/ICO in modern browsers).
2026-02-25 11:05:29 -08:00
zeekay 82213f6b7b fix: remove hardcoded branding, use config-driven chain name everywhere
- Fix TS error in safeFormats plugin (use any for dayjsClass parameter)
- Replace hardcoded "Blockscout" with config.chain.name in DeFiDropdown
- Replace hardcoded "LUX" SVG text with config.chain.name in LogoFallback
- Use config.chain.name in NetworkIcon fallback aria-label
- Delete unused lux-logo.tsx (dead code with hardcoded branding)
2026-02-25 11:01:28 -08:00
zeekay 0cddfbf1ab fix: prevent dayjs crash when @reown/appkit-common changes global locale
@reown/appkit-common's DateUtil sets the global dayjs locale to
'en-web3-modal' which lacks a formats property. The localizedFormat
plugin crashes with "Cannot read properties of undefined (reading
'replace')" when lowercase format tokens (lll, llll) are used on
a locale without formats. Add a safety plugin that ensures formats
are always present on whichever locale the dayjs instance uses.
2026-02-25 10:49:18 -08:00
zeekay 675429cd30 Fix dayjs locale crash and modernize branding
- Preserve default dayjs locale formats (L, LL, LT, LTS, etc.) in
  updateLocale to prevent TypeError on format() calls
- Switch default font from Inter/Poppins to Geist Sans throughout
- Remove gas tracker stats and Add Network button from top bar
- Replace placeholder logo/icon fallbacks with Lux triangle branding
2026-02-25 07:47:30 -08:00
zeekay 992b7ac82c Add global .npmrc in Docker deps stage for deploy tool pnpm compat
Deploy tools install in separate directories without the app .npmrc,
causing strict pnpm resolution to break yup's tiny-case import in
envs-validator. Global /root/.npmrc with shamefully-hoist fixes this.
2026-02-24 19:27:25 -08:00
zeekay cd3619ae1b Remove bogus tsc package from feature-reporter, use direct bin commands
The `tsc` npm package (v2.0.4) is a warning shim, not the TypeScript
compiler. With pnpm, npx resolves it before the real tsc from the
typescript package. Fix by removing it and using direct bin names.
2026-02-24 18:48:02 -08:00
zeekay cda4e3c4e8 Add node-datachannel stub with polyfill subpath for next build
@libp2p/webrtc imports @ipshipyard/node-datachannel/polyfill which
requires native C++ compilation. Stub provides ESM+CJS exports for
both main and polyfill subpaths with no-op WebRTC classes. Also
ignores pnpm-lock.yaml in cspell and copies stubs dir in Dockerfiles.
2026-02-24 18:07:34 -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
zeekay a5bd2ab9f0 Apply monochrome theme — pure black/white/grey, no blue accents
Replace all Blockscout default blue accent colors with monochrome
grey/whiteAlpha values for Lux branding. Background changed from
#101112 to pure black #000000.
2026-02-24 14:00:02 -08:00
zeekay b1b63dd524 Fix import ordering for toolkit/chakra/link 2026-02-24 02:52:27 -08:00
zeekay f0c4b1f03b Use toolkit/chakra/link instead of next/link per project lint rules 2026-02-24 02:39:54 -08:00
zeekay eed3030cf8 Use NextLink instead of anchor tag to satisfy no-html-link-for-pages 2026-02-24 02:28:22 -08:00
zeekay 5708716dda Fix Chakra v3 Text component: use anchor tag instead of as="a" 2026-02-24 02:16:30 -08:00
zeekay a24014bb8a Fix TypeScript null check for feature.oidc in callback page 2026-02-24 02:03:26 -08:00
zeekay 5c6f0f470d Add /auth/callback to all route type dictionaries 2026-02-24 01:50:55 -08:00
zeekay c54e9b612e Add /auth/callback to OG type dict for type safety 2026-02-24 01:37:40 -08:00
zeekay d6ea3c8158 Fix ESLint errors in auth callback page
- Fix import order: PageNextJs before configs/app
- Fix operator-linebreak: place ? and : at end of line
2026-02-24 01:27:26 -08:00