typescript 7.0.2 is the native compiler and exports no JavaScript API. The ui and
docs projects have no consumer of that API — vite, and next 16, which reads its
own tsconfig setup — so they take the pin directly: 0 diagnostics before and
after in ui, 25 down to 3 in docs. The dashboard runs next 15, which cannot read
it, so 7.0.2 comes in aliased as tsgo and does the typechecking while typescript
stays on the 6 line: 3 diagnostics down to 1.
Co-authored-by: Hanzo Dev <[email protected]>
Ranges drift once nothing moves them: a caret that has not been rewritten
since it was written pins whatever was current that day, and an exact pin
cannot even take a patch. Both are updated here.
One line per package, so a surface reads the same components, the same
tokens and the same face as every other one.
Ranges drift once nothing moves them: a caret that has not been rewritten
since it was written pins whatever was current that day, and an exact pin
cannot even take a patch. Both are updated here.
One line per package, so a surface reads the same components, the same
tokens and the same face as every other one.
The docs layout named three different faces in one place: a binding called
`inter` or `geist`, constructed from next/font/google so it actually held Inter,
publishing `--font-geist-sans`, which @hanzo/font does not set. Whichever a
reader trusted, two were wrong.
It takes Zen and ZenMono from @hanzo/font — named `sans` and `mono` for the role
they fill, setting the properties the package publishes.
With the lockfile resynced the docs job got past install and failed at build:
Module not found: Can't resolve './.source' (from lib/source.ts)
.source is GENERATED and gitignored, and this package had no step that produced
it — `build` was a bare `next build` and there was no postinstall. It only ever
worked where a stale .source happened to be lying around, which is why a laptop
built it and a fresh checkout never could.
Three things, each found by making the previous one fail differently:
1. Nothing generated .source. Now `hanzo-mdx source.config.ts .source` runs in
both build and postinstall, the shape luxfi/consensus already uses.
2. `import { docs } from "@/.source"` is a DIRECTORY import and the generator
emits no index — it writes browser.ts / dynamic.ts / server.ts. consensus
imports "@/.source/server"; so does this now.
3. `docs.toFumadocsSource()` did not exist, and neither did `toSource()` — the
generated code targets `@hanzo/docs/mdx/runtime/server`, while lib/source.ts
pulled its loader from `fumadocs-core`, mixing two stacks. It resolved
@hanzo/docs 16.2.7 where consensus runs 16.4.x and works. Loader now comes
from `@hanzo/docs/core/source` with `toSource()`, and the range is pinned
^16.4.1 to match consensus rather than left to drift.
Verified as a fresh checkout would run it — node_modules and .source deleted
first:
pnpm install --frozen-lockfile OK
.source after install generated by postinstall
pnpm build OK
Only docs/ is touched; the dashboard/ work in this tree is left alone.
Co-authored-by: Hanzo Dev <[email protected]>
- Replace Inter with Geist Sans/Mono in docs site
- Add geist package to docs dependencies
- Round all buttons to rounded-lg in dashboard and login pages