Babel and esbuild were never here for TypeScript. Babel carried the static
optimizing compiler and one plugin that appended extensions to esbuild's
emitted imports; source now names its own extensions and the compiler rewrites
them on emit. A sixty-line runner replaces the tool: an ESM emit with
declarations, a CommonJS emit where a manifest states a require entry, and a
native emit where a .native sibling takes its sibling's name. The compiler
packages keep Babel as their own substrate; nothing else runs over the code.
Eighteen packages still carry type errors the previous tool never checked.
The transplant rebuilt the tree on upstream tamagui and carried our own
packages forward by hand, which silently lost seven @hanzo_network/*
packages and apps/team — 735 files with no other home in the workspace.
They are back at the tip of the old lineage's content.
pkgs/ai is NOT restored: @hanzo/ai is published from hanzo-js/ai, so a
copy here would be the duplicate we are trying to avoid.
templates/expo-router is NOT restored: apps/starters/expo-router already
declares that exact package name upstream.
Also fixes a rebrand defect: the blanket tamagui->hanzogui rule rewrote
upstream's GitHub path into github.com/hanzogui/hanzogui, a repo that has
never existed, and it shipped in repository.url for every published
package. The transform now maps the remote to hanzoai/gui and repairs a
tree already branded wrong, so a future sync cannot reintroduce it.
Co-authored-by: Hanzo Dev <[email protected]>
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]>
BREAKING CHANGE: @tamagui/lucide-icons renamed to @tamagui/lucide-icons-2
due to npm registry metadata limit (100MB, 1400+ versions). Update imports:
- import { X } from '@tamagui/lucide-icons'
+ import { X } from '@tamagui/lucide-icons-2'
Also disables skipPublishIfUnchanged on all leaf packages to avoid
version mismatches where deps point to unpublished versions.
peerDeps with "*" caused bun to install non-canary versions during canary
releases. Move font-size, font-inter, font-silkscreen, core etc back to
regular dependencies. Add "skipPublishIfUnchanged": true field to leaf
packages (fonts, icons) and update release script to use that instead of
the dependency-graph heuristic.
The native-ci tool already skips native tests in CI (handled by
separate workflow), but the release script wasn't propagating the
CI env var to child processes when --ci was passed.
- Format all files with oxfmt
- Remove stale rome.json symlinks
- Fix duplicate View import in webAlignment.web.test.tsx
- Fix optional parameter order in UIManager measureLayout
- Replace yarn with bun for package management
- Update all CI workflows to use bun
- Update Dockerfile to use bun
- Replace yarn.lock with bun.lock
- Update all scripts in package.json to use bun
- Remove yarn plugins and config files
- Add bunfig.toml configuration
Closes#3811