ONE WAY ONLY: 'pkgs' is the canonical name for any directory holding
packages. The redundant 'pkgs/packages/' sub-level is dropped — every
package now lives at pkgs/<name>/ (with categorical sub-groups
pkgs/compiler/, pkgs/core/, pkgs/ui/ unchanged since they are
sub-systems, not just 'packages').
- mv pkgs/packages/* → pkgs/* (24 packages)
- rm pkgs/packages/hanzogui-dev-config (orphan: only had dist/ artifacts,
no source; gui-dev-config is the canonical @hanzogui/dev-config)
- package.json workspaces: drop pkgs/packages glob, add ./pkgs/*
- tsconfig.json: rewrite paths + 15 references entries
- apps/{demos,kitchen-sink,gui.hanzo.ai}/tsconfig.json: reference paths
- .github/workflows/publish-gui.yml: directory walk list
- pkgs/{get,recipes}/package.json: repository.directory
bun.lock will regenerate on next install.
1.6 KiB
@hanzogui/get
Install Hanzo GUI recipes — composable screens and widgets built on @hanzogui/* primitives — into your project with one command.
Usage
npx @hanzogui/get # interactive picker
npx @hanzogui/get add sign-in-form # install a single recipe
npx @hanzogui/get list # show all available recipes
npx @hanzogui/get init # write gui.config.json
After global install (npm i -g @hanzogui/get), the command is hanzo-gui-get.
Recipes are vendored into src/gui/ by default. Override the destination by adding a gui.config.json at the project root:
{ "installDir": "src/components" }
How it works
hanzo-gui-get reads recipes from Hanzo Base at ${HANZO_BASE_URL}/v1/base/collections/gui_recipes/records. Each recipe is a small, self-contained .tsx file (or set of files) that composes @hanzogui/* primitives. Recipes can depend on other recipes; transitive deps are pulled in automatically.
Override the registry host:
HANZO_BASE_URL=https://base.staging.hanzo.ai npx @hanzogui/get
You still need @hanzogui/* primitives installed normally.
Publishing a recipe
Recipes live in hanzoai/gui at recipes/<slug>/{recipe.json, files/**}. To seed Base:
HANZO_BASE_ADMIN_TOKEN=… bun run scripts/seed-recipes.ts
The seed script creates the gui_recipes collection on first run if it doesn't exist, then upserts each recipe by slug.
What this is not
@hanzogui/get is a plain Node CLI — no terminal-UI framework, no React, no ink. Just stdout + readline. If you want a Hanzo TUI for building richer CLI apps, use @hanzo/tui (separate package).