19 Commits
Author SHA1 Message Date
zooqueenandHanzo Dev 31ad1f039e Team is its own repo now
apps/team moved to hanzo-apps/team with its history, and builds there
against the published @hanzo/gui. It leaves the workspace list, the
lockfile, and the Written-at-Hanzo list in every NOTICE (ten names
become nine).


Co-authored-by: Hanzo Dev <[email protected]>
2026-09-23 15:53:45 -07:00
zeekay ab754ba686 Every published package carries the license it is under
151 packages of Tamagui-derived code are on npm with no license text in
them. Checked four tarballs at 8.3.5 — @hanzogui/core, @hanzogui/web,
@hanzogui/shell and @hanzo/gui — and not one contains a LICENSE file.

MIT asks for one thing: "The above copyright notice and this permission
notice shall be included in all copies or substantial portions of the
Software." Shipping the code without it does not meet that.

The cause is mechanical rather than deliberate. npm includes a LICENSE
that sits in the package directory, and ours sits at the monorepo root,
where it reaches no tarball. So the license is now in each of the 153
publishable packages, and NOTICE beside it — that one npm will not take on
its own, so 152 manifests name it in `files`.

Verified by dry-run pack: 1.3kB LICENSE, 2.8kB NOTICE.

Already-published tarballs are immutable, so this corrects on the next
publish and not before.
2026-09-07 23:06:05 -07:00
zeekayandHanzo Dev 61e3c561a7 Restore the Tamagui attribution this repository dropped in August
This repository is Tamagui, continued. Its git history runs unbroken through
tamagui/tamagui mainline, and every package in the workspace except ten is
upstream's work carried under the MIT license the LICENSE file already
preserves.

A NOTICE saying so was added in July (61758e3cbc, 51bc03d148) and removed in
August by 2bb4f45f1f, which also rewrote LICENSE and stripped the README of
any statement of descent. Nothing about the facts changed in between, so the
attribution comes back, deliberately and in the house form: NOTICE carries the
whole of it, exact rather than approximate, and names the ten packages written
at Hanzo; the README carries one line of lineage pointing at it.

Five packages published under the @hanzogui scope still listed Nate Wienert as
"author", which claims he wrote a Hanzo package rather than crediting him for
Tamagui. That is worse than no credit. Their author is now Hanzo AI and the
derived-work credit lives in NOTICE, where it can say what it actually means.

LICENSE is untouched.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-07 23:02:05 -07:00
zeekay 2de0604a52 v8.3.5 2026-09-07 02:06:21 -07:00
zeekay b424fd5871 v8.3.4 2026-09-06 18:54:23 -07:00
zeekay c4074a9dd0 v8.3.3 2026-09-06 13:48:41 -07:00
zeekay 5a07cee3b1 v8.3.2 2026-09-05 03:11:37 -07:00
zeekayandHanzo Dev 278ded5f22 Refuse a CommonJS emit that declares what the wrapper provides
A top-level `const require` is legal in a script and a syntax error
inside Node's CommonJS wrapper, which is where the emit actually runs,
so the local createRequire alias is now `need` and the runner names
any file that declares require, module, exports, __filename or
__dirname.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-04 21:24:26 -07:00
zeekayandHanzo Dev 42bd70986b Ship source, ESM, CommonJS and types from each package
Every published manifest now states the same exports: types, the
native emit where the package builds one, ESM under import and
CommonJS under require, with src, types and dist in files. The nine
packages that read import.meta do so in one here.ts each, with a
here.cjs.ts sibling for the CommonJS emit; the stragglers on bun,
esbuild, plain tsc or hand-written shims build with the runner like
everything else, and the root-level .cjs shims that pointed at emits
no build produces are gone, as is the vite-plugin-cjs mirror.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-04 21:07:06 -07:00
zeekayandHanzo Dev fd796e3eb4 Emit CommonJS for every package
The CJS pass ran only where a manifest named a require entry, so an
ESM-only package could drift into the tree and a package marked
commonjs could carry ESM files. Now every package gets all three emits
from tsgo; a .cjs.ts sibling answers for the one file that needs
import.meta, and the CommonJS output is parsed as a script so a module
that cannot load there fails the build by name.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-04 21:07:03 -07:00
zeekay 0243d68060 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.
2026-08-29 18:13:47 -07:00
zeekay 56fc65d9ce v5 names what it re-exports, so the names survive
@hanzogui/config/v5 starred both @hanzogui/themes/v5 and ./v5-base, and
v5-base re-exports a dozen names it takes from themes/v5 — createThemes,
tokens, the palette helpers, the theme types. ESM calls a doubly-starred name
ambiguous and omits it rather than picking one, so every shared name silently
left the module: `import { tokens } from '@hanzogui/config/v5'` compiled and
resolved to undefined.

It ships as a patch in at least one consumer, which is the wrong home for it —
a fix in a patch file is a fix exactly one app gets, and only until its
overrides drift. So v5 now names the nine things themes/v5 carries that
v5-base does not, and everything they share arrives through v5-base, which is
the module that already curates it.

8.3.1.
2026-08-28 14:23:46 -07:00
zeekay f0fc7f0a04 v8.3.0 2026-08-27 08:06:19 -07:00
zeekay e83cb58508 v8.2.1 2026-08-25 13:28:47 -07:00
zeekayandHanzo Dev ffb28707a2 v8.2.0
Co-authored-by: Hanzo Dev <[email protected]>
2026-08-24 11:47:43 -07:00
zeekayandHanzo Dev 89b9132c26 v8.1.1
Co-authored-by: Hanzo Dev <[email protected]>
2026-08-05 19:27:01 -07:00
Gui Release 85519508c8 v8.1.0 2026-08-05 02:20:37 +00:00
zeekayandHanzo Dev 8556db6732 release: converge the gui lineage on 8.0.0
Aligns @hanzogui/* and the four unscoped gui packages with @hanzo/ui@8,
which is already on the 8.x line. @hanzo_network/* and @hanzo/booker keep
their own version streams — they are not part of this framework's lineage.

The lockfile is regenerated deliberately: bun resolves workspace:* from it
at publish time, so bumping versions without re-resolving would have
published 8.0.0 packages whose deps pin 2.6.0 — versions never published
under this scope, so every install would 404.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-30 19:56:20 -07:00
zeekayandHanzo Dev 69c6e860d7 transplant onto tamagui v2.6.0, brand as a re-runnable transform
This repo could never sync. There was NO merge-base with tamagui — 372 commits
here against 15,791 there, unrelated histories — because it began as a
copy-paste rebrand with a flattened layout. Every "sync" since was a hand
re-application that drifted, which is why the tree sat on 7.3.1 while upstream
shipped fixes we then rediscovered by hand.

This commit's PARENT IS TAMAGUI. A future sync is `git merge tama/main` then
`node scripts/rebrand.mjs` — a real merge, because the history is now shared.

174 packages: 166 upstream, our 8 restored (chrome, shell, telemetry, recipes,
get, font-geist-{sans,mono}, @hanzo/booker), bento-get gained. 170/170 build.

Our patches to files UPSTREAM ALSO OWNS are carried, which the package-level
delta missed and which was where the value actually was:
  - useMedia's server snapshot (`initState ?? getMedia()`). Upstream still
    returns undefined there, so every Tamagui Dialog kills a prerender — the
    exact crash hanzo.app spent a day on.
  - data-slot on web host nodes, absent upstream entirely.
Both applied ONTO upstream's newer files (it rewrote useMedia +150/-63 and
createComponent +160/-55), marked `PATCH (ours, carried across the transplant)`.

Seven traps are encoded in scripts/rebrand.mjs, each found by a gate:
skip itself and lockfiles; special-case the double-branded names in BOTH scoped
and bare form; map path strings, not just paths; drop a level for the flattened
group; check disk rather than a stale index.

Rust build artifacts are NOT committed. An earlier draft of this commit swept
apps/desktop/src-tauri/target/debug in via `git add -A` — 3,859 files including
a 272MB .a, over GitHub's 100MB cap, so the push could never have landed. They
are gitignored now.

Co-Authored-By: Hanzo Dev <[email protected]>
2026-07-30 18:25:06 -07:00