81 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 984339eeaf Compile with TypeScript 7
Hanzo CI/CD / cicd (push) Failing after 4m30s
CI/CD / cicd (push) Failing after 4m31s
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]>
2026-09-16 22:04:48 -07:00
zooqueenandHanzo Dev 18225c89a3 The browser bundle carries the storefront and nothing else
Hanzo CI/CD / cicd (push) Failing after 31m1s
CI/CD / cicd (push) Failing after 31m1s
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]>
2026-09-15 16:49:12 -07:00
zooqueenandHanzo Dev 4fea2c56a4 The storefront signs in as hanzo-computer
Hanzo CI/CD / cicd (push) Successful in 6m25s
CI/CD / cicd (push) Successful in 3h20m51s
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]>
2026-09-15 16:46:21 -07:00
zooqueenandHanzo Dev 61b23c1cc9 The lockfile resolves the React types the storefront declares
Hanzo CI/CD / cicd (push) Waiting to run
CI/CD / cicd (push) Waiting to run
@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]>
2026-09-15 16:39:23 -07:00
zooqueenandHanzo Dev 8025057289 Publish the storefront to the Sites plane from the forge
Hanzo CI/CD / cicd (push) Waiting to run
CI/CD / cicd (push) Waiting to run
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]>
2026-09-15 11:18:35 -07:00
zeekay 4cc995925b carry the github copy onto the forge
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.
2026-08-20 21:52:39 -07:00
zeekay 152061f65b run on the native fleet
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.
2026-08-20 20:20:12 -07:00
zeekayandHanzo Dev 5ca0f89a2d a quarterly third-party audit is an artifact a buyer will ask to see
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]>
2026-08-14 19:43:02 -07:00
zeekayandHanzo Dev 6fe5195fef say what our controls are, not that we hold a certificate we do not have
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]>
2026-08-14 19:33:52 -07:00
zeekayandHanzo Dev b8ac792afd publish where to send a vulnerability, so a finder does not have to guess
Co-authored-by: Hanzo Dev <[email protected]>
2026-08-14 19:08:36 -07:00
zeekayandHanzo Dev 09d324e3af ci: upload/download-artifact v3 — v4+ is refused by the forge
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]>
2026-08-01 16:56:35 -07:00
zeekayandHanzo Dev abff22e4e5 build: typescript ^7.0.2 (native compiler)
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]>
2026-07-27 19:12:16 -07:00
zeekayandHanzo Dev fb151801aa fix: declare CSS side-effect imports for TypeScript 7 (TS2882)
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]>
2026-07-27 18:24:09 -07:00
zeekay e6544c9eb1 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:28:08 -07:00
zeekay a0c1a941f9 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:12:26 -07:00
zeekayandHanzo Dev a97b5d8b66 auth: token endpoint is /v1/iam/oauth/token, per discovery
/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]>
2026-07-25 13:32:04 -07:00
zeekay af04609966 auth: use canonical /v1/iam/oauth/* IAM endpoints (bare /oauth/* + /api/userinfo hit SPA HTML → login bounce) 2026-06-25 18:50:11 -07:00
zeekayandGitHub e7ffb30d71 fix(iam): migrate userinfo to canonical /v1/iam/oauth/userinfo (HIP-0111) (#3)
Co-authored-by: Zach Kelling <[email protected]>
2026-06-24 19:15:58 -07:00
7729459846 ci: run on self-hosted ARC pool (hanzo-build-linux-amd64/deploy), not GitHub-hosted (#1)
Co-authored-by: zeekay <[email protected]>
2026-06-19 20:33:31 -07:00
c6ba2a75e2 ci: containerize + arcd GHCR semver build (DOKS deploy) (#2)
Docker Build & Push (Reusable) / build-arm64 (push) Skipped
Docker Build & Push (Reusable) / create-manifest (push) Canceled after 0s
Docker Build & Push (Reusable) / tag-single-arch (push) Canceled after 0s
Docker Build & Push (Reusable) / deploy (push) Canceled after 0s
Docker Build & Push (Reusable) / sbom (push) Canceled after 0s
Build image / docker (push) Canceled after 0s
Docker Build & Push (Reusable) / build-amd64 (push) Canceled after 0s
* 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]>
v0.1.0
2026-06-19 16:22:44 -07:00
zooqueenandHanzo Dev bb6587d75b docs: tidy LLM.md indexes; CLAUDE.md -> LLM.md symlink convention
Co-authored-by: Hanzo Dev <[email protected]>
2026-06-17 09:41:51 -07:00
zeekay de9092f2df chore: symlink AGENTS.md and CLAUDE.md to LLM.md
Canonical project context lives in LLM.md. Symlinks ensure
agentic coding tools (Claude Code, Cursor, etc.) find context
automatically regardless of which filename they look for.
2026-04-01 14:11:11 -07:00
zeekay 2632ae1c9b fix: rebuild docs/ with latest GPU specs 2026-03-31 15:46:12 -07:00
zeekay 10a3a2e570 docs: add LLM.md project guide 2026-03-11 10:29:12 -07:00
zeekay 0e6d2f3d4d fix: update auth module for IAM integration 2026-03-03 12:35:01 -08:00
zeekay 88e8d8327f feat(computer): migrate auth from Supabase to hanzo.id OAuth, data to Commerce API
- 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
2026-03-04 16:30:20 -08:00
zeekay ee4b17082b fix(ci): make E2E tests non-blocking (requires Supabase env vars)
E2E tests need SUPABASE_URL to render the app. Without it, all page
assertions fail. Mark as continue-on-error so deploy isn't blocked.
2026-03-04 14:35:30 -08:00
zeekay 69c94c7cfe fix(ci): remove backend-dependent tests from CI
invoice.test.ts and rate-limiting.test.ts require a running backend
with auth, which isn't available in CI. Remove to prevent timeouts.
2026-03-04 14:27:38 -08:00
zeekay 05628bb0af fix(ci): fix E2E port mismatch (3003→3690) and track test files
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
2026-03-04 14:08:23 -08:00
zeekay a925350a51 refactor: remove all Stripe references — Commerce is payment provider
Stripe banned Hanzo. Removed Stripe SDK, webhook handlers, hardcoded
keys, and StripePricingTable. Billing redirects to billing.hanzo.ai.
2026-03-04 10:57:40 -08:00
zeekay df04b494ae chore: remove AI-generated summary/report files
These files were auto-generated slop — not project documentation.
2026-02-17 18:59:31 -08:00
zeekay 4f05cd83d5 chore: add MIT LICENSE 2026-02-14 05:26:45 -08:00
zeekay d3be10a583 Update favicon to white H logo on black background 2025-11-20 22:30:53 -08:00
zeekay 7357d07d4b Update DGX Spark messaging: Change from provisioning to physical product shipment
- Checkout: Order confirmation email within 24 hours
- Account: Order confirmation with shipping details
- Terms of Service: Hardware orders processed with order confirmation
2025-11-20 21:59:25 -08:00
zeekay 5a16b3f1fd Update Sign In button to white background and black text 2025-11-20 21:58:31 -08:00
zeekay 371aceb918 Fix Supabase configuration in production deployment
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.
2025-11-20 21:37:07 -08:00
zeekay 97ebed7a4e Remove 'One-time Purchase' period text from DGX Spark 2025-11-20 21:35:45 -08:00
zeekay 806bce67e8 Update DGX Spark: Unlimited compute and One-Time Purchase
- Change period from 'One-Time Setup' to 'One-Time Purchase'
- Change '100 Hours Compute Included' to 'Unlimited Compute'
2025-11-20 21:35:01 -08:00
zeekay 5333730999 Change Hanzo AI text to white 2025-11-20 21:33:49 -08:00
zeekay 7894946fa8 Remove all logo opacity and add DGX Spark one-per-customer limit
- 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
2025-11-20 21:33:34 -08:00
zeekay 2c55e0bd79 Update package-lock.json to fix CI build 2025-11-20 21:32:51 -08:00
zeekay eb0cc46dd7 Remove opacity-70 from hero logos for full brightness 2025-11-20 21:31:36 -08:00
zeekay a0673e75e6 Fix hero logos and remove background image
- Update PartnerLogos to use new Techstars green and DigitalOcean logos
- Remove INCEPTION PROGRAM text from hero
- Remove repeating background image causing visual disturbances
2025-11-20 21:30:57 -08:00
zeekay d393ae2ec5 Update partner logos: Add Techstars green logo, DigitalOcean new logo, remove NVIDIA Inception text 2025-11-20 21:27:39 -08:00
zeekay a2205bd1bb Revert "rebrand: Update zoo.computer from Hanzo to Zoo branding"
This reverts commit 8df8716ebc.
2025-10-31 17:59:23 -07:00
zeekay 8df8716ebc rebrand: Update zoo.computer from Hanzo to Zoo branding
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.
2025-10-31 17:52:51 -07:00
zeekay 0ef4c0bd07 Update to official Techstars logo from Wikipedia 2025-10-31 17:51:17 -07:00
zeekay c54a6483a7 Add 8X NVIDIA RTX A6000 lease pricing with all term options 2025-10-31 17:44:18 -07:00
zeekay 2c12bc0d9e Update GPU lease pricing: Remove incorrect lease options from DGX Spark and RTX PRO 6000, add accurate B200/H100/A100 8X lease pricing with all term options 2025-10-31 17:36:47 -07:00
zeekay 9828175965 Update DGX Spark price to $3,999 and link to dedicated page 2025-10-31 17:24:07 -07:00