37 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 2a5df6dad1 Workflows ask for the runner label that exists
One label per runner, spelled <os>-<arch>. The aliases these jobs named
were removed, and a job naming a label no runner carries waits instead of
failing.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 01:54:56 -07:00
zeekayandHanzo Dev 889ee1871c ci: tag releases as Zach Kelling
Release tags were made by the automation address as tagger instead of the owner.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-10 14:06:26 -07:00
zeekayandHanzo Dev 8e212f967a Give every package one version
Two thousand and twenty-one packages carried more than one spec across this
estate — eslint alone in a hundred and four forms — and a package resolved twice
is two copies at run time, which is how react-hook-form came to report "two
different types with this name" from files nobody had edited. None do now.

The number lives in the catalog: a manifest names the package, the workspace
names the version. Where a manifest cannot reach a catalog it still carries the
one version, because the table is the source either way.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 02:38:10 -07:00
zeekayandHanzo Dev b95005a3da State a version once
A version written into a manifest is written into every manifest that wants it,
which is how eslint came to exist in a hundred and four forms across this estate
and how a package came to resolve twice at run time. The catalog moves the number
out of the manifest: a manifest names the package, the workspace names the
version.

Four are held below their latest because the newer release cannot be used, and
the reason is recorded rather than the version alone: @noble/hashes 2 renamed
every subpath the web3 stack imports, @splinetool/runtime 2 depends on a package
that was never published, @dynamic-labs 5.4.1 the same, and react-resizable-panels
3 points its types condition at the bundle.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 02:38:10 -07:00
zeekayandHanzo Dev 167f55683c One version per package, on the current release
Every dependency on a @hanzo/@luxfi/@zooai package names the same version across
the repo: a catalog entry where pnpm supports one, an exact pin where it does
not, and a range only where a peer genuinely means one.

pnpm itself is pinned too — the estate ran eighteen different versions, five of
them too old to read a catalog.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 02:38:10 -07:00
zeekayandHanzo Dev 40b1764d59 no utility engine
Tailwind 4 out — the engine import, the `@custom-variant`, and the `@theme
inline` wrapper. The tokens inside it were always plain custom properties and
are untouched; what goes is the thing that was reading them.

Every class attribute now reaches a converter rather than the document: Box for
an element, css for an icon, the component itself for anything from @hanzo/ui.
The body's ground moves into the sheet, since <body> sits outside the provider
and reads no classes.

The library's sheets are imported from the LAYOUT rather than @import-ed from
the app's CSS: a bare package specifier does not resolve in this pipeline and
the failure is silent — the whole file is dropped, so every token goes missing
and the page renders on browser defaults.

Also on the current toolchain: React 19.2.8, Next 16.3.3, TypeScript 7.
Measured at 390px and 1280px: 4/4 page-widths clean, nothing unread.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 02:38:10 -07:00
zeekay 410f60029e the face is Zen, and it ships from @hanzo/font
One family. Font stacks name Zen and fall back to the native faces, tokens
name the role rather than a face, and the packages that used to supply a
face now point at @hanzo/font.

Self-hosted @font-face blocks are removed rather than renamed: rewriting the
family in one would leave a src pointing at a file this repo no longer ships.
@hanzo/font carries the binaries and declares the faces, so the local copies
go with the declaration that used them.

Comments naming a face we no longer use are deleted, not reworded.
2026-09-01 08:40:44 -07:00
zeekayandHanzo Dev 4ca6c8c2e9 the corporate name is Lux Industries Inc
Lux Partners Limited is not the entity behind this work. Every place the
old name stood — copyright lines, site footers, brand config, legal and
compliance text — now names the company that actually holds it.

lux.fund is the exception and is not renamed to match: that site belongs
to Lux Assets Management LLC, a different company, and it says so.

Two kinds of line were left for a person rather than rewritten. A dated
news item recording that Lux Partners Limited was established in the Isle
of Man is a historical fact, and renaming it would falsify the record. And
a sentence asserting that the company is domiciled in the Isle of Man is a
claim about a jurisdiction, not a name — an Inc or an LLC is not an Isle
of Man company, so swapping the name there would assert something untrue.

Co-authored-by: Hanzo Dev <[email protected]>
v1.0.4
2026-08-28 13:00:45 -07:00
zeekay d93ee2f366 carry the github copy onto the forge
github.com held commits this host lacked, which refuses the mirror push
("fetch first") and stops github receiving anything at all. Merging rather
than overwriting, so the mirror is a fast-forward again and neither side's
work is dropped.
2026-08-20 21:54:39 -07:00
zeekay acacf29f00 run on the native fleet
Adds .hanzo/workflows/cicd.yml calling the canonical pipeline and drops the
GitHub-hosted workflows it replaces. Lands here because this is where the repo
is written — git.hanzo.ai is upstream and github.com is its push mirror, so the
same change made on github.com never reaches the runner fleet.
2026-08-20 20:12:28 -07:00
zeekay 9494d1e1e9 track the name agents read, so a clone documents itself
LLM.md is the source and stays the source; CLAUDE.md is a symlink to it, so there is
one file and it cannot drift from itself. What changes is that the link is committed
rather than left for each checkout to recreate.

Left untracked, the doc was conditional on a step outside the repo: a fresh clone had
no CLAUDE.md, nothing loaded LLM.md, and an agent worked here having never read what
this repo already explains. Most of the estate already tracks theirs; this is the rest
agreeing with them.
mirror/main-bbfb5ca
2026-08-20 16:15:03 -07:00
zeekayandHanzo Dev 54daac0463 ci: the smoke rejected basePath apps for an asset that was present
A Next.js app served at /forum emits /forum/_next/... into index.html while the
image holds /_next/... — the prefix is added by the router, not by the layer. The
check resolved only the literal path, so it failed forum and help on assets that
were in the image all along, and it also asserted that a bare href="/forum" — a
navigation link, not a file — existed on disk.

Now: only references naming a file are checked, and each resolves either
directly or with the leading basePath segment stripped. A genuinely absent
chunk still fails, which was the point of the check.

Co-authored-by: Hanzo Dev <[email protected]>
v1.0.3
2026-08-06 18:10:49 -07:00
zeekayandHanzo Dev 260abb43ba ci: build on our own runners — this workflow ran nowhere at all
publish.yml asked for `runs-on: ubuntu-latest`. The git-runner behind
git.hanzo.ai advertises ~28 labels and that is not one of them, so the job was
never picked up here — it is one of 44 jobs sitting in `waiting` for exactly
that label. On GitHub it was equally stuck, because the luxfi org has zero
registered runners. Addressed to a runner that exists in neither place, it was
not a build; it was a queue entry.

Also removed, both GitHub-only assumptions:
  - ghcr login via github.actor + secrets.GITHUB_TOKEN. On this forge
    GITHUB_TOKEN is minted by git.hanzo.ai and ghcr.io answers `denied: denied`.
    GHCR_USER/GHCR_TOKEN are luxfi org-level secrets here.
  - cache-from/to: type=gha, which addresses the GitHub Actions cache service.

The v1.x.x bump is untouched: feat/BREAKING/type! to minor, else patch, never
a major. What changes is that the tag push now goes to github.com rather than
to the forge — this repo is a pull-mirror here and refuses receive-pack, so the
old `|| echo "tag push skipped"` had been silently tagging nothing.

Adds the checks node's release.yml learned the hard way: smoke the image before
it is allowed to exist at the registry, prove the pushed manifest resolves, and
stamp revision/ref/source labels. The smoke checks what a static-server image
cannot check itself — index.html exists and every asset it references is really
in the layer — so a hollow build cannot serve a white page with a 200.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-06 17:51:14 -07:00
zeekayandHanzo Dev 970f9f8061 route npm through pkg.hanzo.ai
point the registry at our verdaccio, which proxies and caches all of npm
alongside our own scoped packages. lockfiles are untouched: npm and pnpm
both honor .npmrc at fetch time, so no re-resolution is needed.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-04 16:51:06 -07:00
zeekayandHanzo Dev 8a4d072f0d build: migrate tsconfig to TypeScript 7 (native compiler)
TypeScript 7 is the native Go compiler and removes `baseUrl` and
`moduleResolution: node|node10`. Both appear here, so `tsc` from TS7
refuses the config outright (TS5102 / TS5108) and cannot typecheck.

`paths` targets resolve relative to `baseUrl` when it is set and relative
to the tsconfig file otherwise. Every `baseUrl` folded here already
pointed at the config's own directory, so dropping it moves nothing and
the targets are left byte-identical. Where a baseUrl pointed elsewhere,
each affected target was rewritten as join(baseUrl, target).

`moduleResolution` was chosen from the declared `module`: commonjs ->
node16, esnext/preserve -> bundler. Configs whose `module` is unset or
exotic were left alone rather than guessed at.

The result is accepted by BOTH toolchains, so nothing has to upgrade
TypeScript in lockstep. Verified on hanzo/chat packages/api: tsc 5.9
779 -> 778 errors (no regression), and tsc 7.0.2 now runs the project
in 2s where it previously refused the config.

Co-authored-by: Hanzo Dev <[email protected]>
v1.0.2
2026-07-27 14:18:49 -07:00
zeekayandGitHub 3bfb2ead01 docs: add LICENSING.md pointer to canonical IP/licensing strategy (#1) v1.0.1 2026-05-15 17:34:13 -07:00
zeekay 6d8e4e382a ci: cap at v1.x.x — no major bumps v1.0.0 2026-04-20 21:03:04 -07:00
zeekay 0230d1848e ci: use GITHUB_TOKEN for tag push + persist-credentials v0.1.2 2026-04-20 21:00:25 -07:00
zeekay 9b3552efb5 ci: auto-bump semver tags on main push v0.1.1 2026-04-20 20:58:46 -07:00
zeekay 1c6c8bedda ci: amd64-only first pass (arm64 later via native runners) 2026-04-19 01:09:38 -07:00
zeekay 6fca46afc8 fix(docker): COPY . . before install so postinstall finds source config 2026-04-19 00:33:56 -07:00
zeekay dca1334ced fix(docker): Next static export outputs to /app/out 2026-04-19 00:28:53 -07:00
zeekay 0cb5a8f226 ci: standardize Vite 8 + ghcr.io/hanzoai/spa 2026-04-19 00:28:35 -07:00
zeekay c21f39b523 build: hanzoai/spa static container 2026-04-18 23:38:14 -07:00
zeekay 146efb712a chore: add BSD-3-Clause LICENSE v0.1.0 2026-02-14 07:09:00 -08:00
zeekay 2b163ac000 style: vercel design system 2026-01-26 20:54:44 -08:00
zeekay 8295c1497e refactor: shadcn monochrome design
- Replace purple/cyan color scheme with pure monochrome
- Use shadcn CSS variables (--background, --foreground, --muted, --border)
- Dark theme: hsl(240 10% 3.9%) background, hsl(0 0% 98%) foreground
- Remove gradients and colored accents
- Primary button: white bg/black text
- Secondary button: transparent with border
- Subtle gray borders and muted foreground for secondary text
- Clean minimal design matching shadcn docs aesthetic
2026-01-26 20:50:00 -08:00
zeekay 679be298c6 Fix CNAME 2026-01-26 20:09:03 -08:00
zeekay 2ed87581fd feat: Add beautiful help center page with dark theme design
- Dark theme (#0a0a0f) with purple/cyan accents
- Hero section with search bar
- 6 category cards: Getting Started, Wallet, Transactions, Staking, Developers, Security
- Popular articles list
- Contact section with Discord, Email, Twitter buttons
- Responsive mobile-first design
- CNAME set to lux.help
2026-01-26 20:08:24 -08:00
zeekay 4bcd30d62a Add custom domain CNAME 2026-01-26 18:34:51 -08:00
zeekay 901f5e5007 docs: add LLM.md for AI assistant documentation 2025-12-24 18:10:38 -08:00
zeekay e03c2e8303 chore: force rebuild 2025-12-19 07:50:21 -08:00
zeekay 498268af5f fix: add basePath for GitHub Pages subdirectory deployment 2025-12-19 07:48:40 -08:00
zeekay 68d1218759 Add README 2025-12-19 07:24:47 -08:00
zeekay bd66f27e0d Fix: remove pnpm version conflict in workflow 2025-12-19 07:21:52 -08:00
zeekay 02430bd6a1 Add GitHub Pages deployment workflow 2025-12-19 07:20:40 -08:00
zeekay 5e702b9df4 Initial commit: Lux Help Center site 2025-12-19 07:19:17 -08:00