11 Commits
Author SHA1 Message Date
Hanzo AI 86bc401545 feat(consent): insights + opt-in training contribution, account-canonical
publish / publish (push) Failing after 32s
ci / build (push) Successful in 27s
ci / test (push) Successful in 28s
- shared/consent.ts: ONE consent value. Signed in → the Hanzo account is the
  source of truth (GET/PUT /v1/iam/consent); signed out → local, pushed on next
  sign-in. Two switches: anonymous usage insights (default on, no query text) +
  opt-in training contribution (share your own searches/answers; off until asked).
- Onboarding on new install (background onInstalled → onboarding.html) explicitly
  ASKS consent; settings toggles in the popup mirror the same value.
- Answer engine instrumented: anonymous answer_search/answer_shown events +
  contributeTrainingSample (no-op unless opted in). All fail-soft.
- release: browser-extension 1.9.36
2026-07-26 11:12:06 -07:00
Hanzo AI a4fd6b1557 release: browser-extension 1.9.35 — answer engine (fixed build path)
ci / build (push) Successful in 26s
publish / publish (push) Failing after 1m11s
ci / test (push) Successful in 41s
Ships the Hanzo AI answer engine (new-tab landing + address-bar search over the
@hanzo/ai search primitive) with the newtab out()-path fix. v1.9.34 was the
pre-fix tag; this is the buildable release.
2026-07-26 10:35:24 -07:00
Hanzo AI a5a8a79a17 fix(build): newtab.js compiles to the out() root, matching the copy step
The answer-engine's esbuild wrote newtab.js to a literal dist/browser-extension/
path while every other bundle + the copy step use out() (=<root>/dist), so the
per-browser copy would miss it. Unify on out('newtab.js'). Build verified: Chrome/
Firefox/Safari bundles + newtab.js produced.
2026-07-26 10:34:30 -07:00
Hanzo AI 9a9b1cacfe fix(build): resolve @hanzo/ai + @hanzo/usage from npm, not sibling paths → 1.9.34
The @hanzo/usage sibling-path alias pointed at /…/usage that doesn't exist on
CI, breaking every release build. Both are now published deps resolved from
node_modules — CI build works. Bump 1.9.33→1.9.34 (1.9.33 store build failed here).
2026-07-26 10:32:50 -07:00
Hanzo AI 054dbd8ae8 feat(answer-engine): Hanzo AI answer engine — new-tab landing + address-bar search
New-tab landing + omnibox/address-bar search + default search provider,
streaming source-cited answers via @hanzo/ai search primitive (api.hanzo.ai),
live news, model switcher from /v1/models, popup embedded search. v1.9.33.

- src/answer/: AnswerEngine (React18) + news + model-catalog + markdown
- newtab.{html,css,ts}; chrome_url_overrides.newtab + search_provider (Chrome);
  omnibox 'hanzo' + background handler (Firefox); popup embedded search
- @hanzo/ai@0.2.3 resolved from npm (lockfile updated)
2026-07-26 10:32:50 -07:00
Hanzo AI 69310a0445 ci: .gitea/workflows -> .hanzo/workflows
ci / test (push) Successful in 41s
ci / build (push) Failing after 20s
De-brand the native-CI dir to the Hanzo convention. .hanzo is the highest-
priority WORKFLOW_DIR on git.hanzo.ai and GitHub ignores it exactly as it
ignored .gitea, so this is behavior-neutral on GitHub and canonical on the
native runner.
2026-07-25 18:39:56 -07:00
Hanzo AI 6edd326615 ci: align to Hanzo native forge — Gitea CI/CD + KMS secrets, GitHub → mirror
Git of record moves to git.hanzo.ai; GitHub becomes a mirror.

- .gitea/workflows/{ci,publish}.yml — native pipeline on hanzo-build-linux-amd64
  act_runners. publish.yml pulls Chrome Web Store + Firefox AMO + npm creds from
  KMS via the machine identity (no store cred in any Actions secret store).
- deploy/kms/extension-publish-kms-sync.yaml — KMSSecret CR; canonical KMS path
  hanzo:/extension-publish (env prod) for the store creds.
- .github/workflows/sync.yml — mirror main+tags to git.hanzo.ai (the only thing
  GitHub does as system of record; no-op until HANZO_GIT_TOKEN seeded).
- .github/workflows/publish.yml — remove store-publish steps (CWS/AMO/VSCE/OVSX/
  JetBrains — all no-ops today, those secrets never existed on GitHub). Keep the
  live npm publish (interim) + the downloadable GitHub Release.
- docs: PUBLISHING.md + LLM.md rewritten to the native topology.

Non-breaking: npm publish (@hanzo/browser-extension) untouched. No store publish
in this pass. Gated on operator: seed KMS store values, Gitea secrets, mirror.
2026-07-24 23:33:15 -07:00
Hanzo AI 967297f2dc Usage panel: Claude + Codex session/weekly usage in popup
Add an AI Usage card to the action popup showing Claude and Codex
session/weekly % used + reset time, a refresh button, and a link to
console.hanzo.ai/ai-accounts.

- shared/usage.ts: browser UsageHost (fetch with credentials:'include',
  no-op fs) running the @hanzo/usage engine in the background context,
  where host permissions attach live claude.ai/chatgpt.com cookies and
  bypass CORS. Claude via the package web strategy (empty cookieHeader
  passes its gate; real cookie rides credentials:'include'); Codex via a
  local fetch to /backend-api/wham/usage mapped onto the package's public
  UsageSnapshot/RateWindow types (its provider only ships an auth.json
  OAuth lane, unusable without disk).
- background.ts + background-firefox.ts: usage.fetch message handler.
- popup: AI Usage card + renderer, refresh, accounts link.
- build.js: alias @hanzo/usage to the sibling repo's built ESM for both
  background bundles (same pattern as the @hanzo/gui shim).
- manifests: host_permissions for claude.ai + chatgpt.com (Chrome MV3 +
  Firefox).
- version 1.9.31 -> 1.9.32 (patch).
2026-07-07 15:14:45 -07:00
Hanzo Dev a2c014b777 feat(canvas-lms): Hanzo AI for Canvas LMS — OAuth + API-proxy app
@hanzo/canvas-lms: an embedded-app panel + OAuth/API-proxy service over the
Canvas REST API, built on @hanzo/ai (api.hanzo.ai /v1) and @hanzo/iam, mirroring
packages/procore.

- Canvas OAuth2 Authorization-Code (server-side secret + non-rotating refresh)
- Pure Canvas REST v1 wrappers (courses/assignments/submissions/discussions/
  pages/modules/enrollments) + RFC 5988 Link-header pagination + HTML->text
- Course-context windowing with honest truncation
- Five AI actions: summarize course, draft feedback, generate questions,
  summarize submissions, draft announcement; gated write-backs (submission
  comment via PUT, announcement via POST)
- 119 vitest tests; tsc --noEmit clean; esbuild build green
- Registered in pnpm-workspace.yaml
2026-07-04 01:53:47 -07:00
Hanzo AIandhanzo-dev 42bf555a4e fix(extension): login client_id app-hanzo→hanzo-browser (dead client since v1.8.0) — v1.9.25 2026-07-02 23:58:30 -07:00
Hanzo AI 1c2b9f7915 kms: clarify upstream API path note 2026-06-24 10:51:37 -07:00