typescript 7.0.2 is the native compiler, so this is a pin and not a second
toolchain. tsc --noEmit on tsconfig.json: 15 diagnostics before and after, the
same pre-existing set on both compilers.
TypeScript 7 checks strictly by default, which surfaced 24 real gaps this
tsconfig had been hiding. No compiler setting moved to quiet them: the query
callbacks in adminAnalytics and adminInvoiceActions now name the row each select
projects, request headers are a Record<string, string> rather than a HeadersInit
that cannot be indexed, an optional amountPaid is checked before it is read, a
quote passes undefined rather than null for its optional columns, and sign-up no
longer probes an identities field that IAM never returns.
Co-authored-by: Hanzo Dev <[email protected]>
src/lib/email.ts is the server half: it imports a mail transport that is in no
dependency list, so pulling it into the client graph fails resolution during
the build. email-client.ts wants five type names from it and now says so.
vite.config.ts also defined process.env.API_KEY and GEMINI_API_KEY from the
environment. No module reads either, so the defines only put a third-party key
into the bundle when one is set.
Co-authored-by: Hanzo Dev <[email protected]>
A client id is <org>-<app>, and hanzo.id answers 400 for app-computer, so
/signin, /account and /dashboard could not reach the authorize endpoint.
Co-authored-by: Hanzo Dev <[email protected]>
@types/react and @types/react-dom are devDependencies of package.json and had
no entry in package-lock.json, so `npm ci` refuses the tree and the build stops
before vite runs.
Co-authored-by: Hanzo Dev <[email protected]>
hanzo.yml declares the site: each push to main builds dist/ and
publishes it as project `computer`, which serves computer.hanzo.ai.
.hanzo/workflows/cicd.yml imports hanzoai/ci and is the only workflow.
Removed with it: the GitHub Pages and image workflows, the Dockerfile,
and docs/, a committed Pages build. The FAQ and Solutions copy name
HIPAA without a certification claim, which the certclaims gate refuses.
Co-authored-by: Hanzo Dev <[email protected]>
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.
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.
The trust page asserted "third-party security audits quarterly". That is
the same shape of claim as the SOC 2 certification just removed from this
repo: it names an external assessor and a cadence, so procurement verifies
it by asking for the last report. Nothing in the estate names a security
assessor or holds an assessment on any cadence.
Reworded to the internal control review that does describe how we operate,
matching the wording already used in the privacy policy so the two pages
say the same thing.
Co-authored-by: Hanzo Dev <[email protected]>
We hold no SOC 2 Type II report and no ISO 27001 certificate: there is no
auditor, no attestation letter, no trust center. Every page that said
"certified" or "compliant" about one of those told a buyer a report exists,
and the same words sat in the Terms of Service and the Privacy Policy, where
a false claim is a term of the contract rather than a headline.
So the pages now describe the controls we actually run — encryption in
transit and at rest, role-based access control, audit logging — and say
plainly that formal certification, SOC 2 Type II, ISO 27001, HIPAA with a
BAA, is scoped per enterprise engagement. That is not a retreat: the
compliance work is still what an enterprise buys, and asking what their
procurement needs opens the conversation that a badge closes.
The Privacy Policy's audit line now says internal control review, because no
external audit has happened. GDPR and CCPA are laws rather than
certificates and are left as they were.
Uptime figures come off the marketing pages and are replaced by the
redundancy that earns them. The 99.9% SLA with service credits stays in the
Terms of Service, which is the one place an uptime promise belongs.
Co-authored-by: Hanzo Dev <[email protected]>
These jobs run on git.hanzo.ai, which presents as GHES. The v4 action refuses
outright:
GHESNotSupportedError: @actions/artifact v2.0.0+ is not currently
supported on GHES
so the build succeeds, the artifact is produced, and the last step throws it
away -- a successful build that reads as a failed run. The release job then has
nothing to download.
Found by checking every .hanzo/workflows file in the tree against the failure
modes this forge already has a history of, rather than waiting for each repo to
surface it one at a time.
Co-authored-by: Hanzo Dev <[email protected]>
TypeScript 7 is the native Go compiler; the npm package is a thin shim
that resolves a platform-specific native binary.
Safe here because the build does not emit through tsc — the bundler does,
so tsc is typecheck-only and the built artifact is unaffected. Gated on a
measured comparison of both compilers against this same config: TS7
introduces no errors TS 5.9 did not already report.
typescript now ~5.8.2
Co-authored-by: Hanzo Dev <[email protected]>
TypeScript 7 reports TS2882 for a stylesheet side-effect import with no type
declaration; TS 5.x accepted them silently. Bundlers resolve stylesheets through
their own loaders, so the import never reaches the TypeScript module resolver —
this declares them legitimate rather than giving them a shape.
MEASURED, not assumed: this repo reports TS2882 under tsc 7 without the file and
zero with it. Repos where a framework already ships ambient CSS declarations
(Next's next-env.d.ts) were left alone — the declaration is inert there and was
not added.
Co-authored-by: Hanzo Dev <[email protected]>
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.
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.
/v1/iam/oauth/access_token answers identically but is not what
/.well-known/openid-configuration advertises; one name for one endpoint.
Co-authored-by: Hanzo Dev <[email protected]>
* ci: containerize + arcd GHCR semver build (DOKS deploy)
Add multi-stage Dockerfile (npm Vite build -> minimal node:22-slim static
server via serve, no nginx/caddy, port 3000) and .github/workflows/build.yml
that builds+pushes ghcr.io/hanzoai/computer on v* tags via the canonical
hanzoai/.github docker-build reusable workflow on the self-hosted arcd fleet.
Ships only the static SPA (api/ Vercel functions excluded). Semver-only tags.
* ci: serve via canonical hanzoai/spa (static SPA, one way)
---------
Co-authored-by: hanzo-dev <[email protected]>
- Replace Supabase auth with hanzo.id OAuth 2.0 PKCE flow (src/lib/auth.ts)
- Replace Supabase database queries with Commerce API client (src/lib/commerce.ts)
- Add OAuth callback page (src/pages/AuthCallback.tsx)
- Update all 19 files importing from supabase to use auth/commerce modules
- Remove @supabase/supabase-js dependency from package.json
- Delete src/lib/supabase.ts (422 lines)
- Update .env.example with IAM and Commerce API vars
- Build verified: zero Supabase imports remain
Playwright was waiting for port 3003 but Vite serves on 3690.
Also .gitignore excluded tests/ so CI had zero test files.
- Fix baseURL and webServer.url to port 3690 in playwright.config.ts
- Increase webServer timeout to 180s for CI
- Track test spec files (ignore only tests/screenshots/)
- Fix hardcoded port 3003 URLs in all test files
- Checkout: Order confirmation email within 24 hours
- Account: Order confirmation with shipping details
- Terms of Service: Hardware orders processed with order confirmation
Add environment variables to GitHub Actions build:
- VITE_SUPABASE_URL
- VITE_SUPABASE_ANON_KEY
- VITE_STRIPE_PUBLISHABLE_KEY
- VITE_SITE_URL
These need to be configured as GitHub Secrets in repository settings.
- Remove opacity-60 from Hanzo and NVIDIA logos in Partners
- Add 'Limit: One Per Customer' to DGX Spark features
- Update DGX Spark description to mention customer limit
- Update PartnerLogos to use new Techstars green and DigitalOcean logos
- Remove INCEPTION PROGRAM text from hero
- Remove repeating background image causing visual disturbances
Replace all Hanzo branding with Zoo branding across zoo.computer site:
- Update page title and meta tags to "Zoo Computer"
- Change header/footer logos from "Hanzo" to "Zoo"
- Update footer ecosystem links to point to other Zoo apps (localhost ports)
- Change copyright to "Zoo Labs Foundation"
- Update social media links to @zoo, zoo-labs
- Fix vite.config.ts port from 3690 to 3007 (matches Makefile)
All 6 Zoo ecosystem apps now properly branded and cross-linked.