Commit Graph
36 Commits
Author SHA1 Message Date
zeekay a14d73f4dd fix(brand): RootLayout brand also detected from Host header
generateMetadata() already used the host header, but RootLayout itself
read only process.env.BRAND with a hard-coded "bootnode" fallback. That
made the body theme/SSR brand drift from the metadata brand on per-host
deploys. Make RootLayout async and reuse the host detection so both
paths agree.
2026-05-01 20:29:24 -07:00
zeekay 8c26e7cc93 fix(brand): add missing zoo logo SVGs to public/logo
The zoo brand config in web/lib/brand.ts references /logo/zoo-icon.svg,
/logo/zoo-logo.svg, /logo/zoo-logo-white.svg but only the references
existed — the files were missing, producing 404s on web3.zoo.ngo and
zoo.cloud. Added the canonical Zoo CMYK Venn mark from
zoo.industries/public/zoo-logo.svg.
2026-05-01 20:14:38 -07:00
zeekay b4341e1f0e fix(brand): remove hardcoded Bootnode leaks (terms, navbar, ai-chat, region-data, wallets sdk sample) + zoo IAM → zoolabs.id
- web/lib/brand.ts: zoo iam.url + iam.domain → zoolabs.id (zoo.id is NXDOMAIN)
- web/components/navbar.tsx: brand-aware `npm i {sdk}` snippet
- web/components/ai-chat.tsx: brand-namespaced localStorage keys
- web/components/lux/region-data.ts: brand-namespaced localStorage keys
- web/app/products/wallets/page.tsx: brand-aware SDK class + package in sample
- web/app/terms/page.tsx: BOOTNODE → {brand.name.toUpperCase()} in legal text
- web/lib/sdk-package.ts: shared brand→pkg/client map (single source of truth)
2026-04-30 00:24:49 -07:00
zeekay 7d8147cbb3 feat(brand): SSR also detects zoo.cloud as zoo brand 2026-04-29 15:39:30 -07:00
zeekay d1757172a2 feat(brand): route zoo.cloud through bootnode-web-zoo
- web/lib/brand.ts: detect zoo.cloud as zoo brand (alongside zoo.ngo, zoo.network)
- infra/k8s/ingress.yaml: add zoo.cloud + www.zoo.cloud as additional hosts on
  bootnode-zoo-ingress (TLS SAN via cert-manager, rules → bootnode-web-zoo:3001)

Makes zoo.cloud serve the same Bootnode platform as web3.zoo.ngo with Zoo brand.
2026-04-29 15:37:15 -07:00
zeekay 555e55648a fix: ingressClassName is 'ingress' not 'hanzo' 2026-03-26 22:57:39 -07:00
zeekay 7eb2a5162c fix: SSR title uses Host header for brand detection
NEXT_PUBLIC_BRAND gets baked at build time by Next.js, always resolving
to the Dockerfile default ("bootnode"). Use headers() + Host-based
detection in generateMetadata() so cloud.lux.network shows "Lux Cloud"
at request time, not "Bootnode".
2026-03-24 23:10:48 -07:00
zeekay f62ba98e30 fix: add /api/health endpoint, fix web pod probes and resources
- Add lightweight /api/health Next.js route for K8s probes
- Increase readiness probe: initialDelaySeconds 5→15, timeout 5s, failureThreshold 5
- Increase liveness probe: initialDelaySeconds 10→30, periodSeconds 15
- Bump memory limit 512Mi→1Gi for Next.js SSR cold start
- Bump CPU request 100m→200m, limit 500m→1000m
2026-03-12 17:02:54 -07:00
zeekay 89933bfc5a feat: hanzo.ai-style mega-menu navbar with Products/Solutions dropdowns
Replace NavigationMenu with custom NavMenu hover dropdowns:
- Products: 3 featured hero cards (Node/Explorer/MPC) + 5-column category grid + SDK footer
- Solutions: Enterprise/Startup panels + Use Cases/By Role/By Chain columns
- Hover-to-open on desktop (150ms close delay), click on mobile
- Full-viewport-width backdrop-blur dropdowns matching hanzo.ai pattern

Also fix API deployment: increase probe timeouts, add ENVIRONMENT=staging
2026-03-12 16:11:50 -07:00
zeekay b65fb6b77c feat: add Explorer + MPC product pages, fleet management, operator, Helm charts, and CI/CD
- Add Explorer product page with branded block explorer deployment, contract
  verification, Etherscan-compatible API, and multi-chain support
- Add MPC product page with deep Lux MPC integration: CGGMP21 (ECDSA),
  FROST (EdDSA), LSS resharing, 15+ chain support, threshold signing API
- Update landing page with 6-product grid (Node, Data, Wallets, Explorer,
  MPC, Rollups) and 8 API cards including Explorer API and MPC Signing
- Update navbar and command menu with Explorer and MPC products
- Add Lux fleet management dashboard, observability, and services pages
- Add AI chat component and unified navigation with org switcher
- Add Kubernetes operator (Rust) for multi-chain node lifecycle management
- Add Lux Helm charts with genesis configs for devnet/testnet/mainnet
- Add docker-release.yml CI/CD pipeline for automated DOKS deployment
- Add monitoring, network policies, web deployments, and ingress updates
- Refactor API: fleet management, billing tracker, observability endpoints
- Update brand config, API client, and infrastructure manifests
2026-03-12 14:48:40 -07:00
zeekay 9e02248725 fix: update IAM auth integration for bootnode 2026-03-09 23:27:10 -07:00
zeekay 003c10899e feat: add billing management page with tier comparison + checkout
- Create /dashboard/organization/billing page with plan comparison
- Wire up disabled "Manage Subscription" button to new billing page
- Fix analytics nav billing link to point to organization/billing
- Shows current plan, usage stats, and upgrade via Commerce checkout
- All 4 tiers displayed: Free, PAYG, Growth, Enterprise
2026-02-12 11:43:33 -08:00
zeekay c7a20c1732 fix: replace all hardcoded localhost URLs with env var in dashboard
All dashboard pages now use NEXT_PUBLIC_API_URL with localhost fallback
for local dev. Fixes tokens, volumes, storage, clusters, monitoring,
infrastructure, and usage pages for production deployment.
2026-02-12 11:24:10 -08:00
zeekay 30ae134cf3 fix: production billing hardening + Stripe→Commerce migration
- Replace eval() with json.loads() in usage tracker (security fix)
- Webhook verification fails-closed in production when secret missing
- Add Commerce env vars to K8s deployment (URL, API key, webhook secret)
- Expose ZAP port 9999 in Dockerfile and K8s service
- Replace Stripe env vars with Square in compose.yml
- Update privacy/terms pages: Stripe→Square via Hanzo Commerce
- Add full billing API client module to web/lib/api.ts (17 endpoints)
- Fix hardcoded localhost URLs in dashboard/analytics/organization pages
- Add production webhook rejection test (57 tests passing)
2026-02-12 11:22:03 -08:00
zeekay 46e0472971 fix: brand IAM URLs and auth provider detection
- Fix Lux brand IAM URL: lux.id → iam.lux.network (matches actual deployment)
- Use getBrand().iam.url for IAM URL in HanzoLoginButton (brand-aware auth)
- Fix missing newline at EOF in unified-navigation.tsx
- Update LLM.md with Commerce billing and IAM documentation
2026-02-12 10:21:27 -08:00
zeekay 284eb6906c refactor: rename domain bootnode.dev → bootno.de
Update K8s manifests (Ingress hosts, CRD API groups, CORS origins),
ZAP schemas, pyproject.toml URLs, SDK docs import paths, e2e test
emails, and K8s annotations to use the canonical bootno.de domain.
2026-02-12 10:20:22 -08:00
zeekay 37d5391a38 fix: multi-network OAuth login for all cloud portals
- OAuth callback accepts redirect_uri from frontend to derive correct
  IAM client_id per network (all use lux-web3 shared app)
- Token verification accepts tokens from any known IAM app audience
- Frontend sends redirect_uri in callback POST body
- Login page uses proper /login/oauth/authorize URL with client_id
- Brand configs unified to use lux-web3 IAM app for all networks
- Removed dead code (duplicate get_current_user, unreachable methods)
- IAM init data updated with cloud redirect URIs for pars/zoo/hanzo
2026-02-11 18:44:57 -08:00
zeekay 4f4afe3fd0 Add pars brand and fix lux triangle icon
- Add pars brand config to brand.ts (persian blue + gold, cloud.pars.network)
- Add pars domain detection in getBrandKey()
- Add pars to server-side brand map in layout.tsx
- Replace lux-icon.svg wordmark with upside-down triangle (from @luxfi/logo)
- Add pars logo assets (8-pointed star icon, logo, white variant)
2026-02-11 10:03:20 -08:00
zeekay fcd8a5e08c fix: dark theme, local auth redirect, and monitoring page
- Dashboard and navigation use dark-mode-aware CSS vars (bg-background,
  bg-sidebar, border-border) instead of hardcoded bg-gray-50/bg-white
- isProductionMode() now recognizes 127.0.0.1 and private IPs as local
  so login no longer redirects to lux.id on localhost
- Add /dashboard/infrastructure/monitoring page with node health
  summary cards, CPU/memory/disk usage bars, 15s auto-refresh
- Quick login button uses [email protected] / admin credentials
2026-02-10 14:56:14 -08:00
zeekay 6ad79bde75 fix: dark black theme and real LUX production wordmark
- Dark theme: pure black background (oklch 0 0 0), monochrome chart colors
- LUX logos: replaced simplified polygons with production wordmark from @luxfi/logo
- Sidebar: near-black (#0d0d0d), monochrome primary colors
2026-02-10 14:50:56 -08:00
zeekay 8f618ba2dd feat: add Lux validator fleet management system
Full-stack fleet lifecycle management for Lux blockchain validators
deployed via Helm to DOKS clusters.

Backend (Python/FastAPI):
- HelmDeployer: async helm/kubectl CLI wrapper with temp file cleanup,
  per-release locking, and command injection protection
- LuxFleetManager: fleet CRUD, scale, rolling restart, node health
  probes via luxd RPC (health + C-chain block height)
- Fleet API: authenticated REST endpoints (ApiKeyDep) with RFC 1123
  input validation, kubeconfig error sanitization
- Pydantic models: 3 networks (mainnet/testnet/devnet), fleet status
  enums, helm values translation
- 110 unit tests (0.30s, all passing)

Frontend (TypeScript/Next.js):
- Fleet dashboard: cluster selector, stats banner, fleet cards with
  scale/restart/destroy operations, node status table, create dialog
- Interactive SVG world map: zero-dep Mercator projection with DOKS
  region markers, pulsing animations, P2P mesh lines, click-to-zoom
- DOKS region data: 11 regions with coordinates and API client
- Dark theme throughout
2026-02-10 13:40:28 -08:00
zeekay aeea477fb3 fix: cloud.lux.network uses lux.id for IAM, not hanzo.id 2026-02-10 09:28:16 -08:00
zeekay df10ab5f5e fix: runtime API URL resolution and pin Docker base image
- Add apiUrl/wsUrl to brand config for runtime resolution
- Auth and OAuth callback now use brand's apiUrl instead of baked env var
- Pin node:22-alpine to specific digest for supply chain security
2026-02-09 20:48:43 -08:00
zeekay e708a40f4b refactor: replace React.useState/useEffect with destructured imports
Consistent with rest of codebase - use named imports instead of namespace.
2026-02-09 20:36:06 -08:00
zeekay 3da0fa6fb2 feat: white-label branding with Cmd+K, ecosystem footer, and auth fix
- Add runtime brand detection (single Docker image for all brands)
- Add Cmd+K command palette with brand-specific ecosystem links
- Add brand-specific footer ecosystem column with external links
- Fix login page React hook violation (useBrand called after return)
- Use brand IAM URL for auth redirect (all brands → hanzo.id)
- Add Lux Cloud brand logos
- Unify CI to build single universal web image
2026-02-09 20:05:27 -08:00
zeekay 3bb6aa7a89 fix: add bootnode brand to metadata, set as default
The layout.tsx was missing bootnode case in brand switch,
causing it to fall through to Hanzo. Added bootnode and
changed default from Hanzo to Bootnode.
2026-02-05 21:06:13 -08:00
zeekay f8fc5042a9 chore: trigger fresh build 2026-02-04 23:30:31 -08:00
zeekay 58870c4d2a fix: redirect /login to hanzo.id in production
Instead of showing a login page with multiple identity providers,
redirect directly to hanzo.id for a cleaner authentication flow.
2026-02-04 23:09:42 -08:00
zeekay 7f1ba0733f fix: add CDN cache headers to prevent stale content
- Add CDN-Cache-Control header (60s) for HTML pages
- Keep long cache (1 year) for immutable static assets
- Prevents Cloudflare from serving stale branded content
2026-02-04 11:48:10 -08:00
zeekay a127eca83d chore: update bootnode domain to bootno.de
- Change bootnode brand domain from bootnode.dev to bootno.de
- Update status URL and domain detection
2026-02-04 11:37:43 -08:00
zeekay 288b1567a2 fix: set NEXT_PUBLIC_BRAND=hanzo in Dockerfile
Ensures web3.hanzo.ai builds with Hanzo branding:
- Set NEXT_PUBLIC_BRAND=hanzo at build time
- Update client ID to hanzo-web3
2026-02-04 11:28:33 -08:00
zeekay f99ded3c30 fix: update branding from bootnode.dev to hanzo.ai
- Fix code-demo.tsx brand name check (Hanzo Web3 vs Hanzo)
- Update RPC domains to rpc.web3.hanzo.ai
- Replace assets.bootnode.dev with assets.web3.hanzo.ai
- Replace ipfs.bootnode.dev with ipfs.web3.hanzo.ai
- Update demo email from [email protected] to [email protected]
2026-02-04 11:14:28 -08:00
zeekay 3f83c83598 feat: implement Alchemy-style billing and pluggable deployments
Billing System:
- Add compute unit costs for 100+ RPC methods (1-100 CU)
- Implement pricing tiers: Free (30M CU), PAYG ($0.40/M), Enterprise
- Real-time usage tracking with Redis + ClickHouse analytics
- Subscription model with billing cycles
- Billing API endpoints: /usage, /subscription, /invoices, /tiers

Hanzo Commerce Integration:
- HanzoCommerceClient for subscriptions and invoices
- Usage sync worker for PAYG metered billing
- Webhook handler for subscription lifecycle events
- HMAC signature verification for webhooks

Pluggable Deployment Targets:
- Abstract DeployTarget interface
- DockerDeployer - Docker Compose management
- ProcessDeployer - Local dev with subprocesses
- KubernetesDeployer - K8s deployments via python client
- Factory pattern with caching
- Infrastructure API: /services, /scale, /logs

Pricing Page:
- Updated to match Alchemy pricing structure
- Three tiers with feature comparison table
- FAQ section with compute unit explanation

ClickHouse Schema:
- billing_usage_daily with SummingMergeTree
- billing_usage_monthly materialized view
- cu_by_method for analytics dashboard
- rate_limit_events tracking
2026-02-04 09:44:50 -08:00
zeekay 0549865535 fix: update branding to Hanzo for production deployment
- Update layout.tsx with brand-aware metadata (title, OG, icons)
- Change default brand from bootnode to hanzo in brand.ts
- Update homepage, product pages with brand-aware text
- Replace api.bootnode.dev URLs with api.hanzo.ai
- Update llms.txt route to use brand system
- Update security, privacy pages with Hanzo branding
- Update code-demo, unified-navigation with brand logos
- Update footer status link to status.hanzo.ai
2026-02-03 22:34:09 -08:00
zeekay e6ffd5bc87 feat: comprehensive bootnode platform updates
- Add brand assets and logos
- Add KMS integration for secure key management
- Add infrastructure configs (cloud providers, monitoring)
- Add indexer service with documentation
- Update K8s deployments and ingress
- Enhance dashboard pages (analytics, assets, infrastructure)
- Update auth and API components
- Add .gitignore for embedded repos
2026-02-03 12:48:01 -08:00
zeekay 73a3d23053 feat: production deployment with shared Hanzo infrastructure
- Add k8s configs for production deployment
- Use shared postgres/datastore in hanzo namespace
- Fix image registry to ghcr.io/hanzoai/bootnode
- Add deploy script with shared infra support
- Simplify compose.yml for local development
2026-02-02 16:39:52 -08:00