Commit Graph
30 Commits
Author SHA1 Message Date
zeekay d4e0db1673 feat(analytics): docs send through @hanzo/event and the tag manager; the GA4, Pixel, Insights and analytics scripts leave every layout; the one consent banner 2026-09-30 07:15:43 -07:00
zeekayandHanzo Dev ebb4ddba95 The bot docs render again, on the base-ui chrome and with brand marks that exist
Every page of apps/bot-docs answered 500: its root layout took
TreeContextProvider from @hanzo/docs/ui, which now re-exports @hanzo/docs-gui's
contexts, a module with no provider and no 'use client'. The app imports the
chrome from @hanzo/docs-base-ui, as docs does. The home page drew lucide's
GithubIcon and ChromeIcon, which lucide 1.x no longer ships; they are
@hanzo/ui's brand marks now. The OpenClaw migration guide renders with the
rest.


Co-authored-by: Hanzo Dev <[email protected]>
2026-09-25 23:58:52 -07:00
zeekayandHanzo Dev 0b4a161972 The bot docs carry the Migrate from OpenClaw guide, linked from the docs home and the landing page
install/migrate-from-openclaw and cli/migrate are converted from hanzoai/bot's docs (branch migrate-openclaw) with the converter that copies the bot's words as written, and sit in the Installation and CLI Reference nav. The docs home's Start here and the landing page's quickstart point OpenClaw users at the guide.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-25 21:26:08 -07:00
zeekayandHanzo Dev 5a779c7088 Pricing reads come from api.hanzo.ai
cloud computes the catalog in Go and serves it at /v1/pricing, so the
docs apps and the zen-models package read the endpoint directly rather
than a host that forwards to it. The Base page links to the pricing page
a reader can actually open.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 23:53:10 -07:00
zeekayandHanzo Dev 5313260909 Every docs site wears the same chrome
One app carried the Hanzo shell and twenty did not, so a reader crossing from
base.hanzo.ai to zen.hanzo.ai left the ecosystem and landed somewhere that only
resembled it. Five of those twenty had hand-rolled a footer of their own —
sixteen lines of copyright and a repo link, written five separate times.

Each app now loads the brand tokens before its own sheet, reports through
docs-analytics under its own product name, and renders HanzoFooter from
@hanzogui/shell — the same 6-column ecosystem footer, defined once, that
apps/docs already used.

A footer written inside a layout was chrome pretending to be content, and it is
gone. A footer written inside a page is content pretending to be chrome: those
keep their words and become sections, so each page has one contentinfo landmark
instead of two.

Three manifests listed @hanzo/font twice in the same object.

Builds verified across the four shapes this repo has: a static export, a
next.config.mjs app, a single-page app with no route groups, and one that
already reported analytics. Every one renders exactly one footer.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-29 14:29:19 -07:00
zeekay f50ba007b5 Merge remote-tracking branch 'origin/main'
Co-authored-by: Hanzo Dev <[email protected]>
2026-08-29 13:28:54 -07:00
zeekay 7218bcd39c fix(type): every app and every template a customer generates starts on Zen
Thirteen shipped apps and every scaffold in packages/create-app pulled their
face from Google at request time — Inter through next/font/google in the
examples and the four Next templates, Geist and Geist_Mono in the apps, and in
the seven react-router roots a bare <link> to fonts.googleapis.com. That last
one never even applied what it fetched: nothing in those trees set a family, so
the browser downloaded Inter, spent two preconnects on it, and rendered
system-ui. So `create-app` handed a customer a new docs site whose first act was
a third-party font request for a face that is not ours.

The apps read the family back through --font-sans and --font-mono, which are
next/font's handles rather than names of anything, so those follow the binding
over to --font-zen-sans and --font-zen-mono. Eight of them had only ever bound
the mono and were leaning on Tailwind's default for the text face; they now name
both, or swapping the binding would have dropped the body copy to system-ui
without a word.

Zen and ZenMono are built faces, not constructors — subsetting, display: swap
and fallback metrics are already in them — so the call and its options go away.
2026-08-28 11:30:07 -07:00
zeekay 3c7a7d6a03 feat(font): replace Geist with Zen 2026-08-23 13:33:43 -07:00
zooqueen 38d1dbf0f7 the Discord link points at the invite that resolves
discord.gg/hanzo and discord.gg/hanzoai are not registered vanity
invites; discord.gg/CJCyAsm9Vr is the one the rest of the fleet uses.
2026-08-19 21:15:10 -07:00
3e50fd8abc docs asserted certifications and a PCI level nobody issued us
Across the cloud, insights, bot, engine, ml and router sites the copy read
"SOC 2 compliance", "SOC 2 ready" and "HIPAA / SOC2 ready"; the vault skill
page and its card led with "PCI DSS Level 1" and "PCI DSS-compliant". Hanzo
holds none of these — no report, no auditor, no attestation letter — and
hanzo.ai/trust already says so, so the docs were contradicting our own trust
page. Vault's architecture is the part that was true and it stays: card
tokenization inside an isolated cardholder data environment, which is what
keeps a customer's PCI scope small. The 99.9% uptime SLA on the cloud stat
row goes too; it was a guarantee with no contract under it.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-19 21:15:10 -07:00
zeekayandHanzo Dev bd5f994a05 wip: preserve agent work interrupted by session limit
(cherry picked from commit e7522b71172874f6624eb45e09a78f013f287270)

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-04 18:39:19 -07:00
zeekayandHanzo Dev 409784ec52 docs: stop describing our own models as someone else's
Zen and enso are Hanzo's own families. Several surfaces described them by
whose API they imitate, or filed them under a competitor's namespace.

- zen-docs embeddings: drop the "Upstream: text-embedding-3-large by OpenAI"
  row that presented zen-embedding as a rebadge; correct dimensions to the
  1024 the gateway actually returns.
- zen-docs pricing: Zen was priced as "3x the upstream Fireworks inference
  cost", with a claim that every model page discloses its upstream model and
  provider. Rates are per model; state that instead. Same framing removed
  from platform pricing.
- bot-docs gateway config: "anthropic/zen5" -> "hanzo/zen5"; hanzo is the
  provider id Bot actually uses (src/commerce/tier-model.ts).
- zen-docs: curl and the Hanzo SDKs lead; upstream-SDK samples move below a
  labelled wire-compatibility section. Anthropic Messages page keeps its
  substance, loses the drop-in framing.
- Marketing sites: replace provider/model resell counts used as positioning
  with what the product is. Our families lead the model grid; third-party
  rows stay, since those integrations are real.
- Neutral placeholder for a proxy key in our own samples.

Provider lists Bot genuinely connects to (LM Studio, vLLM, LiteLLM) are left
alone, as is the zen5 expert-pool table, which is real architecture lineage.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-01 16:09:01 -07:00
zeekay c28fad9afc fix(docs): every published quickstart was dead on arrival
Two independent defects made every documented 'first API call' fail:

1. FICTIONAL MODEL IDS. `zen-omni` and `zen-coder` appear ZERO times in the
   live catalog (api.hanzo.ai/v1/models, 440 models). Every SDK sample -
   python, typescript, go, cpp, swift, kotlin - told the customer to call a
   model that does not exist, so even a correct request 400s. Corrected to the
   real ids: zen5 and zen5-coder.

2. DEAD HOST + STALE PINNED MODEL. llm.hanzo.ai is retired and 301s (a POST
   returns the literal string 'Permanent Redirect', not a completion), and
   `claude-sonnet-4-5-20250929` is long superseded. Both removed: the host is
   gone from customer-facing docs entirely rather than documented as retired,
   and pinned upstream ids give way to our own current zen5.

50 files. Verified against the live catalog, not assumed.
2026-07-25 16:11:04 -07:00
zeekayandHanzo Dev eec172cbc2 feat(analytics): every docs site on the ONE /v1/event door, not the Umami tag
The <script src="analytics.hanzo.ai/script.js" data-website-id> tag is a shim:
it talks to a read LENS instead of the one ingestion front door, so a docs site
could only ever produce pageviews — no errors, no product events, and a separate
per-site id to keep in sync. Replaced across all 12 sites with @hanzo/event
POSTing api.hanzo.ai/v1/event, which Cloud fans server-side into the web
(analytics), product (insights) and error (sentry) lenses. `product` is the only
per-site knob; Cloud resolves the tenant, so no site carries an id any more.

One implementation, not twelve: packages/analytics (@hanzo/docs-analytics)
mounts the provider, adds a pageview per client-side route change, and honors
Global Privacy Control / Do-Not-Track by disabling the client outright. The main
hub's inline Insights snippet goes too — that lens is already fed by the one
stream.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-25 13:34:22 -07:00
zeekay 8e231e92ee fix(brand+serve): docs is not an AI gateway; pin canonical static v0.5.1
Our own docs branded a Hanzo product as an 'AI Gateway' (/docs/llm title+H1,
skills index, and ~90 files across docs/bot-docs/cloud). Renamed to 'AI API'
to match hanzo.ai/app/bot. Third-party product names are facts about someone
else's product and are NOT rewritten: 'Vercel AI Gateway' restored verbatim
(same carve-out as LiteLLM); HanzoBot's own 'Gateway' transport untouched.

Pins ghcr.io/hanzoai/static 0.4.1 -> v0.5.1: only v0.5.1 carries 79ac4f9
(serve directory index in place), so docs was the last host 301ing /docs/x/
-> /docs/x/index.html, which poisons Next's router into prefetching
.../index.html/__next._tree.txt — 8 failed requests per page load.
2026-07-25 12:56:52 -07:00
zeekayandHanzo Dev 2f166e678c docs(brand): reframe "LLM Gateway"/LiteLLM copy → Hanzo AI Gateway; canonical SDK links
Purge "LLM gateway" / "unified proxy" / vs-LiteLLM framing across all
Hanzo-authored docs, marketing, and skill copy per SDK-ARCHITECTURE brand
rules. Hanzo is a full AI SDK / AI cloud, not a proxy.

- "LLM Gateway" → "AI Gateway"; hero/positioning copy → "one API for every
  model". "unified proxy"/"unified gateway" removed from Hanzo copy.
- Drop "Fork of LiteLLM" / LiteLLM-as-backbone positioning. Keep genuine
  third-party LiteLLM integration docs, the bot's own WebSocket Gateway
  protocol, and functional config keys (litellm_params, LITELLM_MASTER_KEY)
  intact.
- SDK links → canonical homes: zen-docs API table (go get
  github.com/hanzo-go/sdk, pip install hanzo, npm i @hanzo/ai, cargo add
  hanzo); org preset SDK entries point js-sdk→hanzo-js/sdk,
  python-sdk→hanzoai/python-sdk (flagship).

Generated/synced trees (apps/spec/content/docs HIP corpus and
projects/hanzoai/bot, both gitignored) are out of this repo's committable
scope — their brand fix belongs in the source repos.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-24 12:56:00 -07:00
zooqueen a2b0427e6d merge: incorporate main branch zen-docs/zenlm changes into dev
Resolves conflicts between search integration (dev) and
zen-docs/zenlm package additions (main).
2026-03-02 14:01:53 -08:00
zooqueen 5ead143672 feat: add Hanzo Search + AI chat integration to bot-docs
Wire up full-text search and RAG chat for docs.hanzo.bot using the
Hanzo Search cloud-api endpoints with store=bot-docs. Includes search
dialog, page tree jump-to, and direct browser-to-API chat transport.
2026-03-02 11:36:03 -08:00
zeekay fc278dffc2 fix(docs): neutralize amber warning colors and force dark fd- vars across all apps
- Add --color-fd-warning/idea/info/error/success: hsl(0,0%,96%) to all 7 apps
  to override neutral.css @theme static amber (oklch 76.9% 0.188 70.08)
- base-docs, zap-docs, zt-docs: add full dark :root { color-scheme: dark; --color-fd-* }
  block (were missing dark fumadocs variable overrides, defaulted to light)
- bot-docs, dev-docs, platform, visor: amber fix only (already had dark overrides)
- Fix base-docs sitemap.ts: add export const dynamic = 'force-static' for static export
2026-02-28 18:24:37 -08:00
zeekay 49e891b461 feat: add Hanzo Analytics tracking to all docs apps 2026-02-28 11:33:04 -08:00
zeekay 42f167196d Make all model pricing dynamic via pricing.hanzo.ai API
Replace hardcoded model prices across all docs surfaces with
client-side fetches from pricing.hanzo.ai/v1/pricing. Static
fallback values remain in zen-models for SSR/build time.

Changes:
- zen-models: fix 10 wrong static prices, add fetchPricing() API
- zen-docs: new DynamicModelTable component for MDX pages
- zen-docs: pricing.mdx, models.mdx, api/models.mdx, index.mdx
  all use dynamic tables instead of hardcoded price columns
- platform: extract DynamicAiModels component, remove static array
- bot-docs: extract DynamicTokenPricing, fetch live per-1K rates
2026-02-27 11:44:28 -08:00
zooqueen 2e75b0f163 feat(bot-docs): add marketplace, bot wallets, and confidential computing to landing page
New sections: AI Capacity Marketplace (buy/sell compute, bot wallets, auto-purchase
rules, confidential computing), updated Why Hanzo Bot with wallet and TEE cards,
updated ecosystem links with Marketplace and Commerce, updated pricing tiers with
marketplace features.
2026-02-26 21:52:14 -08:00
zooqueenandzeekay d4f047fe25 feat(bot-docs): add Login button to nav, move GitHub to footer
Replace the GitHub icon in the main nav with a Login link pointing to
app.hanzo.bot. Add a footer with copyright and GitHub link.
2026-02-22 14:56:04 -08:00
zeekay 8ea998df5d fix: remove papers deploy workflow, sync workspace packages for CI
- Remove deploy-papers.yml (papers app already removed)
- Update bot-docs with AI chat deps (ai-sdk, remark, etc.)
- Rename zen-docs models from zen/zen2 to zen3/zen4 naming
- Add chat and services docs content
- Add .code/ to gitignore
2026-02-22 14:56:03 -08:00
zeekay 07056a4bda feat(bot-docs): add Solutions and Platform pages, update nav
Add 7 solution pages (index, customer-support, sales, engineering,
marketing, operations) and platform overview page. Update navigation
to show Solutions, Platform, Pricing, Docs, GitHub.
2026-02-16 09:41:12 -08:00
zeekay 84f56142e0 feat(bot-docs): add billing flow, pricing comparison, get-started page
- Pricing page: 3-tier cards, 15-row feature comparison table, usage-based pricing section
- Get-started page: plan selection, setup steps, quick install commands
- Billing FAQ: 11 questions covering plans, payment methods (Square/crypto/wire), credits
- Payment methods note: Visa/MC/Amex/Discover via Square, BTC/ETH/SOL/USDC, wire transfers
- All signup links point to app.hanzo.bot/auth/signup?plan=X
- Zero TODOs, zero placeholder content
2026-02-14 12:32:12 -08:00
zeekay 3965e65293 fix(bot-docs): mobile responsive - fix text overflow and heading scale
- Add overflow-hidden to prevent horizontal scroll on mobile
- Scale heading from text-3xl (mobile) to text-6xl (desktop)
- Reduce padding on mobile (px-4 vs px-6)
- Scale body text from text-base (mobile) to text-lg (desktop)
2026-02-14 11:57:07 -08:00
zeekay 32e5036104 feat(bot-docs): revamp landing page with ninja hero, pricing, and H logo
- Add ninja emoji poof animation cycling through team roles (devops, reviewer, etc.)
- Update hero copy: "Your AI Team. In a Box." with compelling value props
- Add pricing section (Free/$5 Cloud/$25 Cloud Pro) with feature comparison
- Create dedicated /pricing page with FAQ and enterprise CTA
- Replace BotIcon with Hanzo H logo in navigation
- Add Pricing link to nav alongside Skills, Integrations, Showcase, Docs
- Add Hanzo ecosystem section linking to LLM Gateway, MCP, Dev, etc.
- Full responsive design for mobile/tablet/desktop
2026-02-14 11:35:15 -08:00
zeekay e6f6b5d1a6 chore: update bot-docs, cloud, SDKs, and project index
Sync uncommitted changes across bot-docs, cloud, and docs apps.
Add SDK documentation and project registry.
2026-02-14 07:13:19 -08:00
zeekay d936a062bc feat: add bot-docs app — Hanzo Bot documentation site
Fumadocs-based docs site migrated from OpenClaw (285 MDX files, 15 categories).
Rebranded to Hanzo Bot with red theme, landing page, CI workflow.

- 261 static pages (install, concepts, CLI, channels, providers, tools, gateway, etc.)
- Mintlify compatibility components (CardGroup, Card, Info, Warning, Note)
- CI: deploy-bot-docs.yml builds + pushes to GHCR + deploys to K8s
- Static export via nginx:alpine Docker image
- Deploys to docs.hanzo.bot
2026-02-13 12:20:57 -08:00