Follow-up to 18f2af90: the package-name normalization covered JS/TS imports +
package.json but missed four other surfaces that name the same phantom packages,
relocating the breakage from 'pnpm install' to 'next/vite/astro build':
- H1: 46 CSS @import strings (@hanzo/docs-{base-ui,ui,openapi}/css/*) → real pkgs
(preserved legit @hanzo/docs-{twoslash,story} CSS)
- H2: examples/astro .astro imports (base-ui/mdx→fumadocs-ui/mdx, docs-core/toc→fumadocs-core/toc)
- L1: .changeset/config.json fixed-array lockstep names
- L2: removed apps/docs/next.config.mts dead phantom→phantom self-alias + dup keys
Found by adversarial red review of 18f2af90.
The fumadocs-fork rebrand left ~13 apps + examples referencing packages under
names that don't exist in the workspace (in BOTH directions: some kept
fumadocs-*, some became @hanzo/docs-*). pnpm install failed outright. Mapped
every reference (deps + imports, 607 source + 61 package.json) to the package
that actually exists, by suffix:
@hanzo/docs-{core,mdx,ui,base-ui} → fumadocs-{core,mdx,ui} / @fumadocs/base-ui
@fumadocs/{story,cli,mdx-remote,tailwind} → @hanzo/docs-{story,cli,...}
fumadocs-{docgen,epub,twoslash,typescript} → @hanzo/docs-{...}
drop phantom eslint-config-custom
Guarded @hanzo/docs-mdx vs -mdx-remote. Also fixes a pre-existing cli bug
(createConfigSchema referenced undefined isSrc) that blocked the package build.
Verified: pnpm install resolves clean (46.8s, was broken); package dist
regenerates phantom-free from the corrected source (hanzo-docs 430→0). Full
app build-green is blocked only by a node v26 toolchain bug in fumadocs-mdx's
config loader (repo targets node >=24.14; CI node builds it).
Replaces all ghcr.io/hanzoai/<svc>:latest pins with the latest published
semver tag for each service. Per CLAUDE.md auto-bump policy: mutable
branch tags (:latest, :main, :dev) are deprecated for cluster pins —
only immutable semver permitted.
Bulk update across services with published v* tags. Services without a
published semver remain on :latest until their release pipeline cuts a
v* tag.
- Fix 6 wrong model prices in zen-docs pricing.mdx to match Go billing
controller (zen4-ultra, zen4-max, zen4-pro, zen4-coder-flash,
zen3-nano, zen3-guard)
- Fix zen-models compute tiers to match marketing (Nano $5 through
Power $49, not the old PaaS internal pricing)
- Fix platform AI model prices to include 1.2x third-party markup
(Claude Sonnet $3.60/$18, GPT-5 $1.50/$12, etc.)
- Update base-docs pricing to use marketing tiers matching
platform/visor ($5/$6/$12/$24/$36/$49 instead of PaaS $6-$384)
Replace hardcoded 3-tier pricing with dynamic fetch from
pricing.hanzo.ai/v1/pricing/cloud/plans. Shows all 6 canonical
PaaS compute tiers (Starter $6 through Enterprise $384) with
real vCPU/RAM/disk specs and hourly rates. Static fallback
ensures the page renders even when the API is unreachable.
New docs site for Hanzo Base following the monorepo docs framework pattern:
- Landing page with feature grid, quick start, and architecture highlights
- 9 documentation sections: getting-started, collections, auth, realtime,
file-storage, cloud-functions, SDK (JS + Go), and deployment
- K8s manifests for base.hanzo.ai (static docs) and api.base.hanzo.ai
(multi-tenant Base platform with IAM/KMS integration)
- Dockerfile with nginx for static export serving
- Monochrome Hanzo theme via neutral.css + Geist fonts