136 Commits
Author SHA1 Message Date
zeekay 583ef11ffa feat(zap): @hanzo/zap 1.1.0 — track @zap-proto/zap 1.1.0 native runtime
@zap-proto/zap moved from the old MCP-misnamed Cap'n Proto package to
the native ZAP wire runtime, and rejoined the 1.x line at 1.1.0. The
new canonical surface has a single root export (builder, client/
ZapClient, envelope, pipeline, view, wire) and NO ./protocol, ./transport,
or ./rpc subpaths — and no Client/Server/BatchClient/MessageType symbols.

The wrapper's prior src (protocol/transport/rpc/client/server/types/error
re-exporting those now-nonexistent symbols and subpaths) no longer
compiles against it. Collapse the wrapper to its honest shape: a single
`export * from "@zap-proto/zap"` root re-export. ZapClient flows through
natively, so the old `Client as ZapClient` alias is dropped (it aliased
a symbol the canonical package no longer exports; ZapClient is now the
canonical name).

- dep: @zap-proto/zap ^1.0.0 -> ^1.1.0
- version: 1.0.0 -> 1.1.0 (minor; matches the underlying line, no major break)
- build: single-entry tsup (drop the dead multi-entry subpath build)
- exports: drop ./protocol ./transport ./rpc (canonical has no such subpaths)
- repository.directory: correct to hanzo-dev/zap/sdk/typescript
- test: --passWithNoTests (pure re-export; nothing of its own to test)
2026-06-15 19:39:28 -07:00
zeekay 21c825e4ff cleanup: remove AI-slop summary / status / plan / report files
Reverts violations of the durable rule that current-state docs belong
in LLM.md and history belongs in git log. Removed files were session
handoffs, agent-style "complete success" / "1000%" reports, dated
audit dumps, and stub NOTES.
2026-06-07 13:34:06 -07:00
zeekay ae2f901ec0 merge: just-every/code upstream/main (preserve Hanzo brand)
# Conflicts:
#	.github/pull_request_template.md
#	.github/workflows/Dockerfile.bazel
#	.github/workflows/bazel.yml
#	.github/workflows/cargo-deny.yml
#	.github/workflows/ci.yml
#	.github/workflows/close-stale-contributor-prs.yml
#	.github/workflows/codespell.yml
#	.github/workflows/issue-deduplicator.yml
#	.github/workflows/issue-labeler.yml
#	.github/workflows/rust-ci-full.yml
#	.github/workflows/rust-ci.yml
#	.github/workflows/rust-release-prepare.yml
#	.github/workflows/rust-release-windows.yml
#	.github/workflows/rust-release-zsh.yml
#	.github/workflows/rust-release.yml
#	.github/workflows/sdk.yml
#	.vscode/extensions.json
#	.vscode/settings.json
#	AGENTS.md
#	AGENTS.md~upstream_main
#	NOTICE
#	code-rs/app-server-protocol/schema/json/DynamicToolCallParams.json
#	code-rs/app-server-protocol/schema/json/v2/ErrorNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ItemCompletedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ItemStartedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadRollbackResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json
#	code-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json
#	code-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json
#	code-rs/app-server-protocol/schema/typescript/CodexErrorInfo.ts
#	code-rs/app-server-protocol/schema/typescript/DynamicToolCallRequest.ts
#	code-rs/app-server-protocol/schema/typescript/TurnItem.ts
#	code-rs/app-server-protocol/schema/typescript/v2/CodexErrorInfo.ts
#	code-rs/app-server-protocol/schema/typescript/v2/DynamicToolCallParams.ts
#	code-rs/app-server-protocol/schema/typescript/v2/DynamicToolSpec.ts
#	code-rs/app-server-protocol/schema/typescript/v2/ThreadItem.ts
#	code-rs/app-server-protocol/schema/typescript/v2/ToolsV2.ts
#	code-rs/app-server-protocol/src/protocol/thread_history.rs
#	code-rs/code-version/Cargo.toml
#	code-rs/core/src/http_client.rs
#	code-rs/tui/src/bottom_pane/auto_drive_settings_view.rs
#	codex-cli/scripts/build_npm_package.py
#	docs/contributing.md
#	hanzo-dev/chatgpt/src/chatgpt_token.rs
#	hanzo-dev/tui/src/clipboard_copy.rs
#	scripts/codex_package/archive.py
#	scripts/codex_package/cargo.py
#	scripts/codex_package/cli.py
#	scripts/codex_package/layout.py
#	scripts/codex_package/test_cargo.py
#	scripts/codex_package/v8.py
#	scripts/stage_npm_packages.py
2026-06-01 18:52:56 -07:00
zeekayandGitHub 13bfc19da5 ci: upstream-sync workflow + ZAP duplex port 9999 (#1)
* infra: standardize ZAP duplex port to 9999

ZAP binary protocol duplex RPC standardizes on :9999 across every
service. Lux validator staking/RPC ports (9630/9631 mainnet, 9650/9651
devnet) are unchanged — those are luxd network protocol ports, not ZAP.

One ZAP port everywhere (was a mix of 9651/9652/9653/9633/9900).

* ci: upstream-sync workflow — auto-merge clean, issue on conflict

Periodic sync from just-every/code (the canonical upstream Hanzo dev tracks).
Every 6h: fetches upstream, attempts merge, opens PR with automerge label
if clean, otherwise opens an issue listing conflicting paths. Bot does not
resolve content conflicts.

* ci: upstream-sync drafts only, one workflow (drop upstream-merge)

- delete upstream-merge.yml (1106 lines, auto-merge, polled every 30 min)
  in favour of single upstream-sync workflow
- upstream points to openai/codex (matches LLM.md), not just-every/code
- weekly cron Mon 06:00 UTC (was every 6h)
- branch named upstream-sync/<UTC-date>
- always opens draft PR, never auto-merges
- on conflict, commits markers in place and opens draft PR labelled conflict
  so the branch is checkoutable for human resolution
- LLM.md documents the new flow

One way: there is now exactly one upstream-sync entry point.
2026-04-26 17:45:10 -07:00
zeekay 0426fb29a1 feat: add hanzo-sse, hanzo-backoff, hanzo-md-render crates + /loop + oauth refresh
New crates ported from claw-code architectural patterns:
- hanzo-sse: zero-dep SSE parser replacing eventsource-stream (11 tests)
- hanzo-backoff: overflow-safe exponential retry (4 tests)
- hanzo-md-render: streaming markdown renderer + syntax highlighting + spinner (3 tests)

New core modules:
- loop_runner: /loop slash command parsing (interval + command)
- oauth_refresh: token expiry detection + auto-refresh utility

Wired:
- hanzo-backoff integrated into core/util.rs (all 5 retry call sites)
- hanzo-sse replaces eventsource-stream in client.rs + chat_completions.rs

Also merges 23 commits from openai/codex upstream (clean, no conflicts).
2026-03-31 21:13:15 -07:00
zeekay 6925a2f794 fix: revert release to hanzo-dev workspace + disable upgrade banner
codex-rs depends on v8 (via code-mode) which has no musl prebuilt,
breaking CI builds. Revert release workflow to hanzo-dev workspace
which doesn't have this dependency.

Also disable the ★ Upgrade Available ★ banner — updates are handled
via CI/CD releases, not in-TUI upgrade prompts.
2026-03-31 19:32:10 -07:00
zeekay 0ed410bce9 fix: resolve post-merge compile errors across both workspaces
- Remove duplicate multi_agents.rs (dir-based mod.rs is canonical)
- Sync hanzo-dev protocol with upstream: add ToolSearchCall,
  ToolSearchOutput, namespace field on FunctionCall
- Add RequestError type to hanzo-dev backend-client
- Fix pattern matches for new CustomToolCallOutput name field
2026-03-30 21:48:32 -07:00
zeekay 418706435a Merge remote-tracking branch 'just-every-local/main'
# Conflicts:
#	.github/workflows/bazel.yml
#	.github/workflows/cargo-deny.yml
#	.github/workflows/ci.yml
#	.github/workflows/cla.yml
#	.github/workflows/close-stale-contributor-prs.yml
#	.github/workflows/codespell.yml
#	.github/workflows/issue-deduplicator.yml
#	.github/workflows/issue-labeler.yml
#	.github/workflows/rust-ci-full.yml
#	.github/workflows/rust-ci.yml
#	.github/workflows/rust-release-prepare.yml
#	.github/workflows/rust-release-windows.yml
#	.github/workflows/rust-release.yml
#	.github/workflows/sdk.yml
#	AGENTS.md
#	codex-cli/package.json
#	codex-rs/core/src/tools/handlers/multi_agents.rs
#	docs/config.md
#	docs/prompts.md
#	docs/release-notes/RELEASE_NOTES.md
#	hanzo-dev/backend-client/src/client.rs
#	hanzo-dev/core/src/codex.rs
#	hanzo-dev/core/src/codex/streaming.rs
#	hanzo-dev/core/src/default_client.rs
#	hanzo-dev/core/src/http_client.rs
#	hanzo-dev/core/src/model_provider_info.rs
#	justfile
#	package.json
#	sdk/python/src/codex_app_server/generated/v2_all.py
#	sdk/typescript/README.md
#	sdk/typescript/src/exec.ts
#	sdk/typescript/tests/run.test.ts
#	sdk/typescript/tests/runStreamed.test.ts
2026-03-30 21:28:11 -07:00
zeekay 1324ddfe32 fix: post-merge fixes + native HanzoId login support
Post-merge fixes after upstream 319-commit merge (tui consolidation,
core extraction):

- Fix from_api_key_with_client → from_api_key (login crate)
- Restore explicit_env_overrides parameter in shell snapshot wrapper
- Fix multi_agents → collab module rename in TUI chatwidget
- Update all snapshot tests for branding changes

Add native HanzoId login as first-class sign-in option alongside
ChatGPT and API key:

- Add HanzoId variant to SignInOption, LoginAccountParams, LoginAccountResponse
- HanzoId is the default highlighted option in onboarding
- Route HanzoId login through hanzo.id OAuth (browser flow)
- Update IAM client ID from hanzo-app to hanzo-dev (<org>-<app> convention)
- Brand all login error pages as "Hanzo Dev"
2026-03-29 15:04:37 -07:00
zeekay 5e14e86583 fix(auth): correct IAM clientId from app-hanzo to hanzo-app
The IAM init_data.json uses <org>-<app> naming convention.
The actual provisioned app is "hanzo-app" (clientId=hanzo-app),
not "app-hanzo" which was never deployed. All IAM apps use
empty secrets (public clients with PKCE).
2026-03-21 01:34:16 -07:00
zeekay 21582f97d2 chore: bump version to 0.6.83 — review fixes applied 2026-03-21 01:30:24 -07:00
zeekay 56abc532f1 fix: replace silent native-tls fallbacks with expect()
Review finding: unwrap_or_else(|_| reqwest::Client::new()) silently
reverts to native-tls if rustls builder fails, defeating the TLS fix.
Replace with expect() since rustls builder should never fail in
practice. Also includes linter cleanups.
2026-03-21 01:16:50 -07:00
zeekay 4e0eda644f fix: comprehensive branding cleanup, TUI warnings, CI modernization
Branding (39 files):
- Remove all remaining "Codex" product references in user-facing strings
- "Codex Cloud" → "Hanzo Cloud" in TUI, MCP server, cloud-tasks
- "codex login/cloud" → "hanzo login/cloud" in CLI, error messages
- "Dark - Codex" theme → "Dark - Hanzo"
- MCP tool descriptions: "Codex conversation" → "Hanzo Dev conversation"

TUI warnings (10 files):
- Remove unused imports, unreachable match arms
- Add #[allow(dead_code)] for brand assets and future-use utilities
- hanzo-tui now compiles with zero warnings

CI modernization (6 workflows):
- actions/checkout v4 → v6 (Node.js 24)
- actions/setup-node v4 → v6
- actions/upload-artifact v4 → v7
- actions/download-artifact v4 → v7
- softprops/action-gh-release v1 → v2
- Node.js 20 → 22 in workflow runners
2026-03-21 01:09:50 -07:00
zeekay ae1ff90517 fix(security): replace HANZO_CLIENT_SECRET with HANZO_PUBLISHABLE_KEY; fix Codex branding leaks
Security:
- Rename HANZO_CLIENT_SECRET → HANZO_PUBLISHABLE_KEY (public key, safe to embed)
- Update all references in both codex-rs and hanzo-dev workspaces

Branding (user-facing strings):
- error.rs: Remove "Codex" from context window error, replace ChatGPT URLs
- tooltips.rs: Rebrand "Codex App" → "Hanzo Dev", openai/codex → hanzoai/dev
- onboarding/auth.rs: "Sign in with Hanzo" not "ChatGPT"
- voice.rs: "hanzo login" not "codex login"
- cloud-tasks: "hanzo login/cloud" not "codex login/cloud"
- login/server.rs: "Hanzo Dev" not "Codex" in workspace messages
2026-03-21 00:48:59 -07:00
zeekay 2c38b88cfd chore: bump version to 0.6.82 2026-03-18 02:28:43 -07:00
zeekay b9ad991340 fix: extend assistant message background to full terminal width
The assistant bg tint was only painted within the content area (minus
padding), leaving 1-column gaps on the left and right edges. Now paints
the tint across the full history_area width so assistant messages have
edge-to-edge background color.
2026-03-18 02:28:31 -07:00
zeekay 158d47a13e chore: bump version to 0.6.81 2026-03-18 01:59:53 -07:00
zeekay 779853542c fix: strip <think> tags from zen model output + boost assistant bg contrast
Zen models (qwen3-based) emit <think>...</think> blocks inline in the
answer stream. These were rendered as raw text in both the TUI and CLI.

Added ThinkTagFilter that handles streaming deltas where tags can span
multiple chunks. Applied to both:
- TUI streaming controller (push_and_maybe_commit + apply_final_answer)
- CLI event processor (AgentMessageDelta + AgentMessage)

Also increased assistant message background tint from 5% to 12% — the
original value was nearly invisible on dark/black terminals (resulted in
RGB ~(6,10,13) which looked identical to pure black).
2026-03-18 01:59:53 -07:00
zeekay 8b69ac1888 chore: update Cargo.lock for v0.6.80 2026-03-17 12:24:46 -07:00
zeekay b2a3312a52 chore: bump version to 0.6.80 2026-03-17 12:20:49 -07:00
zeekay eef31451ad fix: force rustls TLS backend on all reqwest clients
When both rustls-tls and native-tls features are compiled in (via
chromiumoxide → reqwest default features), reqwest silently defaults to
native-tls. On macOS this is SecureTransport, which fails TLS handshake
against Go crypto/tls servers (Traefik ingress) with "bad protocol
version".

Fix: explicitly call .use_rustls_tls() on every reqwest::Client::builder()
to ensure consistent TLS behavior across all platforms.

Also reverts the earlier native-tls experiment in Cargo.toml files back
to rustls-tls and removes temporary TLS diagnostic logging.
2026-03-17 12:17:25 -07:00
zeekay ec7c2b0ed7 Merge upstream openai/codex (152ac6d01): tui_app_server, realtime v2, plugin marketplace
Major upstream additions:
- New tui_app_server crate (complete TUI via app-server protocol)
- Realtime websocket v2 split (methods_v1/v2/common)
- Remote app-server client
- Plugin marketplace install/uninstall
- Windows sandbox refactor (conpty, elevated runners, IPC)
- Linux sandbox bwrap improvements
- Guardian approval system enhancements
- Argument comment lint improvements

Conflict resolution:
- Kept Hanzo branding in error.rs (401/403 messages)
- Kept hanzo-dev paths in CI/release workflows
- Adopted upstream's /*param_name*/ argument comments
- Adopted upstream's change-detection CI structure
- Kept dev-deduplicate label naming
2026-03-17 01:14:04 -07:00
zeekay 27d28e1551 fix(tui): anchor input box to bottom in zen mode
When footer_height is 0 (zen mode), the input area was stretching
to fill all available height. Now it uses input_height and anchors
to the bottom of the available area, giving a compact input bar.
2026-03-15 14:39:18 -07:00
zeekay 15c65df18c fix(tui): use input_background for textarea rendering
The textarea was painting its rows with the main background() color
instead of input_background(), causing the input area to show as
pure black instead of the subtle gray set by the Block. This broke
the contiguous background appearance of the input area.
2026-03-15 14:09:27 -07:00
zeekay 5d6943ab34 fix: rebrand all @just-every/code references to @hanzo/dev
- Replace codex-cli with dev-cli in pnpm workspace
- Rebrand codex-cli/package.json to @hanzo/dev
- Update README install instructions to @hanzo/dev
- Update release notes to @hanzo/dev
- Add @hanzo/dev-bridge compat check in bridge_client.rs
- Regenerate pnpm lockfile without upstream deps
2026-03-14 02:49:02 -07:00
zeekay 3c23177223 feat: multi-provider login (Hanzo ID, ChatGPT, Claude) + auth error handling
Login screen now offers 5 options:
1. Sign in with Hanzo ID (default, via hanzo.id OAuth)
2. Sign in with ChatGPT (OpenAI OAuth)
3. Sign in with Claude (keychain auto-detect + claude.ai OAuth fallback)
4. Provide your own API key
5. Sign in with Device Code (headless)

CLI: `hanzo login --provider hanzo|openai|claude`

Auth error handling:
- 401/403 responses are no longer retryable (stops "Reconnecting..." loop)
- Clear error message: "Authentication failed (401). Run `hanzo login` to sign in."
- Maps to CodexErrorInfo::Unauthorized for frontend handling

Fixes:
- Remove duplicate test functions from merge (chatwidget/tests.rs)
- Fix SessionTelemetry::new() calls missing originator parameter (otel tests)
2026-03-14 00:47:42 -07:00
zeekay e60ff6752d feat: Claude Code login support, zen theme refinements, security dep updates
- Add Claude Code OAuth login (issuer: claude.ai, token: platform.claude.com)
- Auto-detect Claude Code keychain tokens on macOS (sk-ant-oat01-* fallback)
- Claude client_id: 9d1c250a-e61b-44d9-88ed-5944d1962f5e
- Scopes: user:inference, user:profile, user:sessions:claude_code, user:mcp_servers
- Add CLI functions: run_login_with_claude_keychain, run_login_with_claude_browser
- ServerOptions.with_issuer() builder for custom OAuth issuers
- Fix quinn-proto HIGH severity DoS (RUSTSEC-2026-0037): 0.11.13 → 0.11.14
- Update 159 packages to latest compatible versions
- Zen theme: refine DarkMonochrome defaults, zen mode enabled by default
2026-03-13 17:16:16 -07:00
zeekay 51aea6411e feat: multi-provider auth (Hanzo, Claude, ChatGPT) + rebrand TUI to Hanzo Dev
Auth changes:
- HANZO_API_KEY has highest priority, then CODEX_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY
- Default OAuth issuer changed to hanzo.id (Casdoor)
- Skip API key exchange for non-OpenAI issuers (Casdoor uses access_token directly)
- RefreshRequest includes client_secret for Casdoor compat
- id_token_or_access() fallback for Casdoor token refresh
- Login status detects provider from key prefix (sk-hanzo-, sk-ant-, sk-)
- Hanzo client credentials (app-hanzo) for OAuth flow

Branding:
- Welcome screen: "Hanzo Dev — AI development in the terminal"
- All user-facing "Codex" → "Hanzo Dev"
- Update URLs point to github.com/hanzoai/dev
- npm package: @hanzo/dev
- Windows toast: "Hanzo Dev"
2026-03-13 02:50:33 -07:00
zeekay 7565b2ea62 Merge upstream openai/codex: realtime v2, code mode, plugins, connectors, guardian approvals
Major upstream features merged:
- Realtime v2 event parser and transcription mode
- Code mode with exec tools and yield timeout
- Plugin discovery, installation, and tool_suggest
- Connectors crate for GPT connector management
- Guardian approval MVP with delegated review
- Bubblewrap as default Linux sandbox
- Theme-aware diff rendering
- Multi-agent improvements (spawn metadata, fanout)
- Custom CA certificate support for enterprise proxies
- Request permissions tool
- Cloud requirements enforcement
- Hooks upgraded to HookResult/HookResponse API
2026-03-13 02:39:14 -07:00
zeekay 5dabdb4e05 feat: @hanzo/zap is now a thin re-export wrapper over @zap-proto/zap
Replace 1000+ lines of copied code with re-exports from @zap-proto/zap.
Add sub-path exports: ./protocol, ./transport, ./rpc, ./error, ./types.
2026-03-12 23:17:29 -07:00
zeekay b39c98c4d4 feat: rebrand npm to @hanzo/dev, wire ZT transport into tunnel protocol
- rust-release.yml: change npm scope from @openai to @hanzo, remove
  openai.com deploy trigger
- build_npm_package.py: rebrand all @openai/codex references to
  @hanzo/dev, rename platform packages (codex-* → hanzo-dev-*)
- stage_npm_packages.py: update tarball naming to match hanzo-dev-npm-*
- cloud.rs: complete ZT wiring — zt:// URLs now authenticate via ZT
  fabric, dial service, create TunnelConnection from channels, spawn
  ZT frame transport, and run standard dispatch loop
- zt/tunnel.rs: add run_zt_transport() — newline-delimited JSON frame
  protocol over ZtConnection (AsyncRead+AsyncWrite) with heartbeat
- Bump hanzo-tunnel dep to v0.1.1 (adds from_channels constructor)
- Add zt-tunnel feature combining zt + tunnel + hanzo-zt/tunnel
2026-03-12 00:33:29 -07:00
zeekay a023f456d2 fix: replace all external path deps with crates.io versions
- hanzo-zt: zap-schema path dep (../../../../zap/zap) → crates.io v1.0
- hanzo-zt: enable hanzo-tunnel dep from crates.io v0.1
- hanzo-zt: activate full feature (zap + tunnel)
- No more external path deps that break CI
2026-03-11 20:46:36 -07:00
zeekay 9d251b3ec4 fix: publish hanzo-tunnel to crates.io, gate tunnel behind feature flag, fix CI
- hanzo-tunnel v0.1.0 published to crates.io (was path dep to ../../../tunnel)
- cli: tunnel + tunnel-bridge deps now optional behind `tunnel` feature flag
- cli: cloud module (ZT + relay) gated with #[cfg(feature = "tunnel")]
- tunnel-bridge: all hanzo_tunnel usage gated behind `tunnel` feature
- CI: fix prettier by scoping JS globs, excluding symlinked CLAUDE.md
- CI: format all workflows and docs with prettier
- Workspace compiles clean without tunnel feature (CI default)
- Local builds with `--features tunnel` still work with crates.io dep
2026-03-11 20:28:33 -07:00
zeekay b79ca332e8 fix: add version to all path-only workspace deps for crates.io
Per-crate Cargo.toml files had path-only deps that get stripped
during publish. Added version = "0.6.74" to all workspace deps.
2026-03-09 19:09:47 -07:00
zeekay a8c726bdc2 chore: add version specs to all workspace dependencies
Required for crates.io publishing - path-only deps get their
path stripped, leaving no version constraint.
2026-03-09 18:46:51 -07:00
zeekay f5e97dea34 chore: add crates.io metadata to all workspace crates
Add description, license, and repository fields required for
publishing to crates.io.
2026-03-09 18:30:51 -07:00
zeekay 3a22216b47 fix: resolve all compile errors after upstream merge
- Remove McpServerTransportConfig::Zap (variant removed upstream)
- Fix ratatui 0.29 Color type conversions (ratatui::Color vs crossterm::Color)
- Fix Cell<u16> scroll_offset API in layout_scroll.rs
- Add missing modules (intro_art_variants, request_user_input_view, external_editor)
- Fix zen field type (bool → Option<ZenThemeConfig>)
- Add GutterMode::next() method
- Remove deleted SlashCommand::Rename, add Provider/Share stubs
- Fix schedule_cli_prompt signature (3 args, store overrides on controller)
- Fix ModelInfoUpgrade field access and default_reasoning_level Option handling
- Align cloud-tasks deps with workspace (ratatui 0.29, throbber-widgets-tui 0.8)
- Add missing auth constants and version functions
- Replace wire_api with dynamic_tools in ConfigOverrides
- Add end_turn/phase fields to ResponseItem::Message
- Fix format_with_separators to accept i64
2026-03-09 17:49:47 -07:00
zeekay 3247e56e84 Merge remote-tracking branch 'just-every-local/main'
# Conflicts:
#	.github/workflows/Dockerfile.bazel
#	.github/workflows/bazel.yml
#	.github/workflows/ci.yml
#	.github/workflows/issue-deduplicator.yml
#	.github/workflows/rust-ci.yml
#	.github/workflows/rust-release-windows.yml
#	.github/workflows/rust-release.yml
#	.github/workflows/shell-tool-mcp.yml
#	.vscode/settings.json
#	AGENTS.md
#	CHANGELOG.md
#	README.md
#	code-rs/app-server-protocol/schema/json/ClientRequest.json
#	code-rs/app-server-protocol/schema/json/CommandExecutionRequestApprovalParams.json
#	code-rs/app-server-protocol/schema/json/EventMsg.json
#	code-rs/app-server-protocol/schema/json/ExecCommandApprovalParams.json
#	code-rs/app-server-protocol/schema/json/ServerNotification.json
#	code-rs/app-server-protocol/schema/json/ServerRequest.json
#	code-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json
#	code-rs/app-server-protocol/schema/json/v1/ForkConversationParams.json
#	code-rs/app-server-protocol/schema/json/v1/ForkConversationResponse.json
#	code-rs/app-server-protocol/schema/json/v1/GetUserSavedConfigResponse.json
#	code-rs/app-server-protocol/schema/json/v1/NewConversationParams.json
#	code-rs/app-server-protocol/schema/json/v1/ResumeConversationParams.json
#	code-rs/app-server-protocol/schema/json/v1/ResumeConversationResponse.json
#	code-rs/app-server-protocol/schema/json/v1/SendUserTurnParams.json
#	code-rs/app-server-protocol/schema/json/v1/SessionConfiguredNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ConfigReadResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ConfigRequirementsReadResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ModelListResponse.json
#	code-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadForkParams.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadStartParams.json
#	code-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json
#	code-rs/app-server-protocol/schema/json/v2/TurnStartParams.json
#	code-rs/app-server-protocol/schema/typescript/AskForApproval.ts
#	code-rs/app-server-protocol/schema/typescript/ClientRequest.ts
#	code-rs/app-server-protocol/schema/typescript/EventMsg.ts
#	code-rs/app-server-protocol/schema/typescript/ExecApprovalRequestEvent.ts
#	code-rs/app-server-protocol/schema/typescript/ExecCommandApprovalParams.ts
#	code-rs/app-server-protocol/schema/typescript/FunctionCallOutputContentItem.ts
#	code-rs/app-server-protocol/schema/typescript/ResponseItem.ts
#	code-rs/app-server-protocol/schema/typescript/index.ts
#	code-rs/app-server-protocol/schema/typescript/v2/AskForApproval.ts
#	code-rs/app-server-protocol/schema/typescript/v2/CommandExecutionRequestApprovalParams.ts
#	code-rs/app-server-protocol/schema/typescript/v2/Model.ts
#	code-rs/app-server-protocol/schema/typescript/v2/index.ts
#	code-rs/app-server-protocol/src/protocol/common.rs
#	code-rs/app-server-protocol/src/protocol/v1.rs
#	code-rs/app-server-protocol/src/protocol/v2.rs
#	code-rs/app-server/src/code_message_processor.rs
#	code-rs/app-server/src/lib.rs
#	code-rs/app-server/src/message_processor.rs
#	code-rs/protocol/src/approvals.rs
#	code-rs/protocol/src/config_types.rs
#	code-rs/protocol/src/models.rs
#	code-rs/protocol/src/openai_models.rs
#	code-rs/protocol/src/prompts/permissions/approval_policy/on_request_rule.md
#	code-rs/protocol/src/protocol.rs
#	code-rs/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_open.snap
#	code-rs/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_section_open.snap
#	codex-cli/package.json
#	docs/agents.md
#	docs/config.md
#	docs/faq.md
#	docs/install.md
#	docs/release-notes/RELEASE_NOTES.md
#	docs/slash-commands.md
#	hanzo-dev/Cargo.lock
#	hanzo-dev/code-auto-drive-core/src/auto_compact.rs
#	hanzo-dev/code-auto-drive-core/src/auto_drive_history.rs
#	hanzo-dev/core/src/agent_tool.rs
#	hanzo-dev/core/src/chat_completions.rs
#	hanzo-dev/core/src/client.rs
#	hanzo-dev/core/src/client_common.rs
#	hanzo-dev/core/src/codex.rs
#	hanzo-dev/core/src/codex/compact.rs
#	hanzo-dev/core/src/codex/compact_remote.rs
#	hanzo-dev/core/src/codex/session.rs
#	hanzo-dev/core/src/codex/streaming.rs
#	hanzo-dev/core/src/config.rs
#	hanzo-dev/core/src/config/sources.rs
#	hanzo-dev/core/src/config/validation.rs
#	hanzo-dev/core/src/config_profile.rs
#	hanzo-dev/core/src/config_types.rs
#	hanzo-dev/core/src/event_mapping.rs
#	hanzo-dev/core/src/exec_command/exec_command_params.rs
#	hanzo-dev/core/src/external_agent_config.rs
#	hanzo-dev/core/src/memories/citations.rs
#	hanzo-dev/core/src/memories/mod.rs
#	hanzo-dev/core/src/memories/storage.rs
#	hanzo-dev/core/src/model_family.rs
#	hanzo-dev/core/src/openai_tools.rs
#	hanzo-dev/core/src/protocol.rs
#	hanzo-dev/core/src/remote_models/mod.rs
#	hanzo-dev/core/src/rollout/policy.rs
#	hanzo-dev/core/src/slash_commands.rs
#	hanzo-dev/exec/src/lib.rs
#	hanzo-dev/protocol/src/mcp_protocol.rs
#	hanzo-dev/tui/Cargo.toml
#	hanzo-dev/tui/src/app/events.rs
#	hanzo-dev/tui/src/app_event.rs
#	hanzo-dev/tui/src/bottom_pane/chat_composer.rs
#	hanzo-dev/tui/src/bottom_pane/memories_settings_view.rs
#	hanzo-dev/tui/src/bottom_pane/mod.rs
#	hanzo-dev/tui/src/bottom_pane/model_selection_view.rs
#	hanzo-dev/tui/src/bottom_pane/settings_overlay.rs
#	hanzo-dev/tui/src/chatwidget.rs
#	hanzo-dev/tui/src/chatwidget/agent_summary.rs
#	hanzo-dev/tui/src/chatwidget/settings_overlay.rs
#	hanzo-dev/tui/src/history_cell/plain.rs
#	hanzo-dev/tui/src/lib.rs
#	hanzo-dev/tui/src/memory_citation.rs
#	hanzo-dev/tui/src/streaming/controller.rs
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_closed.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_help_overlay_section_closed.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_overlay_overview_layout.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_overlay_overview_truncates.snap
#	hanzo-dev/tui/tests/snapshots/vt100_chatwidget_snapshot__settings_overview_hints_clean.snap
#	hanzo-dev/tui/tests/ui_smoke.rs
2026-03-09 12:02:13 -07:00
zeekay 1f9149381d feat(zap): implement native ZAP binary transport in dev CLI
Real luxfi/zap wire protocol — no HTTP fallback, no stubs.
TLS 1.3 connect → ZAP handshake → MsgType 100 Call → parse response.

- zap_wire.rs: Builder, Message, Object, frame I/O, handshake helpers
- zap_client.rs: ZapCloudClient with TLS, Call RPC, stream_zap()
- client.rs: WireApi::Zap arm uses native binary transport
- model_provider_info.rs: WireApi::Zap variant added
- zap/transport: TLS 1.3 support via rustls
- All match arms updated across CLI, TUI, exec, MCP server
2026-03-03 23:25:04 -08:00
zeekay f41500a5f4 feat(zt): add hanzo-zt crate for zero-trust networking with ZAP transport
New crate at hanzo-dev/zt/ providing ZT overlay networking:
- ZtContext: authenticate, dial, listen, service discovery via ZT controller REST API
- HanzoJwtCredentials: Hanzo IAM JWT resolution from env/auth file
- BillingGuard: Commerce API balance check + usage recording (no free tier)
- ZtTransport: ZAP Transport trait impl for zt:// URL scheme
- CLI integration: cfg-gated zt:// support in cloud.rs
- 9 tests passing, 0 warnings
2026-02-19 14:26:40 -08:00
zeekay 8e91514bb4 feat(cloud): use connect_and_register for session URL display and add integration tests
Switch from connect() to connect_and_register() so the CLI receives the
session URL from the bot gateway and displays it to the user. Add three
integration tests for the tunnel-bridge: connect+register flow,
reconnection, and graceful failure on unreachable gateway.
2026-02-19 00:20:15 -08:00
zeekay f9cfc06068 feat(cloud): add cloud tunnel integration for remote management
Add --cloud flag (or HANZO_CLOUD=1 env) to connect dev instances to the
Hanzo cloud relay at wss://api.hanzo.ai/v1/relay, making them remotely
manageable from app.hanzo.bot.

New crates:
- tunnel-bridge: translates cloud commands (chat.send, exec.approve) to
  app-server JSON-RPC and app-server notifications back to cloud events
- cli/cloud.rs: CLI integration with clap args, auth resolution, and
  background tunnel dispatch loop

Supports two modes:
- Cloud relay (default): wss://api.hanzo.ai/v1/relay
- Local gateway: --cloud local → ws://127.0.0.1:18789/v1/tunnel
2026-02-18 20:58:20 -08:00
zeekay 163ce89652 chore(release): 0.6.74
Sync latest from openai/codex and just-every/code upstreams.
2026-02-18 13:52:07 -08:00
zeekay 4ce2b579c3 feat(zap): split transport into module with HTTP/SSE support
Refactor transport.rs into transport/ module directory:
- transport/mod.rs: existing TCP/TLS/Unix transport (ZapTransport)
- transport/http.rs: new HTTP/SSE transport (HttpTransport) for
  environments without raw TCP (browsers, serverless, proxied infra)
- Re-export HttpTransport from lib.rs
2026-02-18 13:16:57 -08:00
zeekay af234bc908 chore(release): 0.6.72 2026-02-16 12:39:34 -08:00
zeekay 18b2b56c2a chore(core): refine zen model wording and cleanup comments 2026-02-16 12:18:38 -08:00
zeekay dc8f2477e1 chore(release): 0.6.71 [skip ci] 2026-02-15 12:28:12 -08:00
zeekay b285fbce1e feat(core): add zen model presets and zap native tool bridging 2026-02-15 12:28:08 -08:00
zeekay fbaaffadea chore(release): 0.6.70 2026-02-14 12:52:48 -08:00
zeekay d3be6f6871 feat(tui/auth): polish account flows and refresh zap integration 2026-02-14 12:33:54 -08:00