mirror of
https://github.com/hanzoai/extension.git
synced 2026-11-02 00:29:00 +00:00
main
The answer page drew its own composer: a textarea showing the browser's resize grip and focus outline, mode tabs and @source buttons inside the box, and a boxed Auto Router select beside a dim send. It now draws @hanzo/ui 8.29.40's Composer, the one hanzo.ai draws: one 16px frame with an even 1px edge, send only once there is text, and under the frame one quiet line: the sources as chips, the model as `mind` and the mode as `mode`, whose list shows each mode's note. Toolbar.tsx is gone; its lists live in answer/modes.ts. The composer's paint is CSS in @hanzo/ui's glass.css, so newtab.ts imports theme.css and the page's own newtab.css, and esbuild writes one newtab.css beside newtab.js. The page reads @hanzo/ui/primitives, not the root barrel, whose root.js imports the 355KB styles.css. newtab.css now speaks @hanzo/design tokens only: it used to redeclare --border, --surface-2, --glass and --radius*, which the composer's edge and gui's $hover read. The theme follows the device through @hanzo/appearance, as on hanzo.ai, so the page has a light theme. Top stories are cut from the composer's material: its ground, its edge, radius 12, the column's width, a step of ink on hover, no shadow. The catalog no longer serves `families`, so the picker had offered Auto alone. It answers the gateway's rows, so @hanzo/ui/models reads them (fetchModelCatalog, can(m, 'chat')) and defaultModel picks Enso. ModelSelector left @hanzo/ui at 8.27.61, so the sidebar's composer takes the model as `mind` and RAG and Tab as chips. Its peers come in at the versions hanzo.ai pins: @hanzo/composer 0.2.0, @hanzo/voice 0.1.19, @hanzo/i18n 0.5.4; @hanzo/appearance at 0.2.13, which 8.29.40 depends on. newtab.js and sidebar.js grow to 1084 and 1080KB; the budget file says where, by metafile. Version 1.9.71: 1.9.70 is already published.
Hanzo extensions
Hanzo AI inside every browser, editor and work app. One pnpm workspace; every
build lands in dist/.
make install
make build # everything
make build target=chrome # one target
make test
make check # the CI gate: build, test, bundle budget, e2e
Browser
| Target | Source | Load |
|---|---|---|
| Chrome, Edge, Brave | packages/browser |
chrome://extensions → Developer mode → Load unpacked → dist/chrome |
| Firefox | packages/browser |
about:debugging#/runtime/this-firefox → Load Temporary Add-on → dist/firefox/manifest.json |
| Safari | packages/browser |
dist/safari-xcode (built on macOS with Xcode) |
Everything else
| Kind | Packages |
|---|---|
| Editors, notebooks | vscode, jetbrains (Gradle), jupyter |
| Desktop | desktop, dxt (Claude Desktop) |
| Documents, email | office (Word, Excel, PowerPoint), outlook, gworkspace (Docs, Sheets, Slides, Gmail), notion, pdf |
| Design | figma, sketch, canva |
| Chat, meetings | slack, teams, meetings (Zoom, Meet) |
| Code hosts | github, gitlab |
| Business apps | salesforce, hubspot, zendesk, shopify, quickbooks, workday, docusign, clio, imanage, procore, epic, canvas-lms |
| Shared libraries | auth, cards, aci, mcp |
| Download site | apps/site |
Each lives at packages/<name> with its own README; its build is linked at
dist/<name>.
Release
Bump packages/browser/package.json (patch only) and merge to main. The
publish workflow ships a version npm does not have yet to the Chrome Web Store,
Firefox Add-ons and npm.
Languages
TypeScript
87.1%
JavaScript
5.2%
HTML
3%
CSS
2%
Kotlin
1.2%
Other
1.4%