15 Commits
Author SHA1 Message Date
zeekayandHanzo Dev d1a4ed1411 Typecheck on the native compiler, keep 6 for the tools
typescript 7.0.2 is the native compiler and exports no JavaScript API, so
@glint/core cannot read it. It comes in aliased as tsgo and does the
typechecking; typescript stays on the 6 line for glint.

jsconfig.json is the only program here — it has no .ts files, and jsconfig
implies checkJs, so the check runs over the .js and .gjs the paths map. 172
diagnostics, the same set on 6.0.3 and on 7.0.2.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-17 10:25:14 -07:00
zeekayandHanzo Dev 9cc4dfea4e Install the dependencies this repo declares
The committed lockfile could not be installed: it still carried a patch entry for
@ember-compat/tracked-built-ins that pnpm-workspace.yaml no longer declares, so
pnpm refused a frozen install outright, and it held typescript 5.6.3 against a
catalog that declared 7.0.2. Nothing had ever installed that pin.

typescript 7 is the native compiler and exports no JavaScript API. @glint/core
loads that API, and glint is the only thing typechecking this repo, so the
declared 7.0.2 would have taken glint out the moment anyone installed it. The
catalog holds typescript on the 6 line, and the lockfile now reproduces the
ranges around it.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-17 10:24:10 -07:00
zeekay 8aead114f8 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-09-11 13:47:31 -07:00
zeekayandHanzo Dev ed15f68edf 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-09-11 13:47:30 -07:00
zeekayandHanzo Dev a92d333eb0 Name the reusable at the path v1 has
Co-authored-by: Hanzo Dev <[email protected]>
2026-09-09 00:28:14 -07:00
zeekay fa179cd6f1 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 13:53:10 -07:00
zeekay f4e005afb9 ci: remove the workflows this forge has never collected
The forge takes a repo's workflows from the first of its search paths that
exists, and .hanzo/workflows comes before .github/workflows. This repo has
carried .hanzo/workflows/cicd.yml since it adopted the canonical lane, so
everything under .github/workflows has been inert since that day. The run
history says the same: of eight runs, four are the live cicd lane and the other
four — linting, licenses and two stale-pr-closer — were all cancelled, queued
against ubuntu-latest and debian-12, labels no runner here answers.

So this deletes dead files rather than migrating live ones, and nothing is
revived:

- check-pr-body, labeler, stale-pr-closer and dependabot-pnpm-dedupe are
  GitHub-platform automation: a dependabot body rewrite, a pull request
  labeller, a stale closer, and a lockfile dedupe on branches that do not exist
  here.
- linting, licenses, migration-tests and tests hold the real value, and all four
  want the same harness — a discourse_test container, a bundle install of the
  whole Gemfile, a pnpm install of a monorepo this size, and for the suites a
  Postgres and a Redis. hanzo.yml already records why that is a harness rather
  than a push gate, and this repo's gate stays what it says it is: every tracked
  Ruby file parses.
- release-notes turned bin/rake release_note:generate into a step summary and an
  artifact. The rake task is untouched and still runs by hand.

What goes with them, none of which has run since the lane moved: rubocop,
syntax_tree, eslint, prettier, ember template lint, stylelint, glint, the i18n
lint, the RubyGems and JS licence checks, and the rspec, qunit and migration
suites.
2026-08-13 21:13:14 -07:00
zeekayandHanzo Dev 9611fcff21 ci: parse Ruby with the parser, not the loader
`ruby -c` resolves a script the way the loader does, so a first line
naming another interpreter makes it hunt for a `#!...ruby` line. Rakefile
says `#!/usr/bin/env rake`; ruby finds no ruby line and reports "no Ruby
script found in input" on a file that parses fine. That was the red.

parse_file reads the file as source, which is the fact the gate asserts,
and one interpreter replaces 5851 process spawns.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-09 23:44:45 -07:00
zeekayandHanzo Dev 0b31493965 ci: fix the gate to assert the code, not the runner image
kv named the wrong server binary (kv-server, not valkey-server) and assumed a C
compiler the reusable installs only for Go callers; forum assumed a ruby the
reusable never provisions; rocm-rs left gpu-sort on, whose nested nightly
build-std step no stock runner can do; insights-rs asked for --all-features,
which selects the live-endpoint e2e feature.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-06 02:39:50 -07:00
zeekayandHanzo Dev d64131dced ci: canonical pair — hanzo.yml + forge caller
github.com has no runner for hanzo-build-linux-amd64, so a caller under
.github/workflows is a gate that can never be scheduled. This is the ~7-line
caller on the plane that can (git.hanzo.ai git-runner fleet), pinned @v1.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-06 02:31:33 -07:00
zeekay d65a80ac74 docs(readme): say this is a tracking fork, not a product
The README was Discourse's, verbatim: their logo, their mission, their team,
their accessibility contact — and a hosting pitch linking to
discourse.org/pricing, which sent anyone landing here to a third party's
checkout. Read as ours it claims a community platform we do not run;
forum.hanzo.ai 404s and the only Hanzo commits on the fork are CI, a hero
banner and agent docs.

Now says what it is: a tracking fork of Discourse with nothing built on top,
nothing deployed, where to go for Discourse and where to go for Hanzo. Kept
the upstream dev-setup links, which are the ones that actually apply. Lineage
and GPL-2.0 attribution kept and made explicit.
2026-08-01 13:39:38 -07:00
zeekay fdfe779f40 ci: drop the Gitea mirror-sync nudge
Superseded: the Hanzo GitHub App pushes a webhook, so the forge tracks GitHub
without a per-repo workflow. This file called git.hanzo.ai/api/v1/.../mirror-sync
— a Gitea API for a system we no longer drive — and would sit inert in every repo.

One mechanism, in one place, instead of ~350 copies of a cron.
2026-07-27 10:31:21 -07:00
zeekay e82e8a246e ci: nudge git.hanzo.ai to pull on push
git.hanzo.ai mirrors this repo by PULL on a ~10-minute interval, and arcd runs
CI/CD there — so every push waited out that interval before anything built.
This asks Gitea to pull HEAD immediately.

Latency only: the repo already mirrors via the App webhook, so a missing
HANZO_GIT_TOKEN or a failed curl is non-fatal and never fails the push.
Idempotent (mirror-sync just pulls HEAD) and concurrency-coalesced.
2026-07-27 08:16:39 -07:00
zeekay ffd6a29d56 docs(brand): add hero banner 2026-06-28 20:21:03 -07:00
zeekay a993bed99f chore(brand): dynamic hero banner 2026-06-28 20:21:02 -07:00