zeekay
369b525882
fix(tools): a screenshot arrives downscaled, with the full capture on disk
2026-08-27 08:45:44 -07:00
zeekay
1a7ec1bad0
fix: Windows + WSL compatibility across python-sdk
...
Make uvloop fully opt-in (performance extra only, not a hard dep).
Add Windows native support: shell resolution (pwsh/cmd), signal
handling (SIGKILL guard), platform-appropriate paths, chmod guards.
Changes:
- hanzo-mcp: move uvloop from hard dep to [performance] extra
- hanzo-tools-shell: resolve pwsh/powershell/cmd on Windows,
use correct invocation flags (cmd /c, pwsh -Command)
- hanzo-tools-shell: guard signal.SIGKILL (doesn't exist on Windows)
- hanzo-tools-computer: replace HOME=/tmp fallback with Path.home()
- hanzo-mcp cli: platform-appropriate socket path default
- hanzoai auth: skip os.chmod on Windows
- hanzo install: skip os.chmod on Windows
- Add .github/workflows/test-windows.yml (native + WSL2 matrix)
Versions bumped: hanzo-mcp 0.12.7, hanzo-async 0.1.2,
hanzo-tools-shell 0.6.2, hanzo-tools-computer 0.5.4
2026-03-09 20:50:55 -07:00
zeekay
30fb202cf0
fix(screen): write captures to file instead of returning inline base64
...
Screenshots and session frames are now saved to ~/.hanzo/screen/ and
the tool returns the file path. Prevents blowing up context with ~52K
chars of base64 per capture.
2026-03-06 04:18:32 -08:00
zeekay
8c05bf99d6
fix(ci): pin black <26.1 to avoid internal error, lower requires-python to 3.12
...
Black 26.1.0 crashes on multiple exception types in parentheses.
The requires-python bump to 3.14 broke CI which runs Python 3.12.
2026-03-01 16:01:16 -08:00
zeekay
6c376a4d13
[chore] bump all packages to Python 3.14+
...
Update requires-python to >=3.14 in all 46 pkg/ pyproject.toml files
and the root pyproject.toml (47 files total).
2026-02-28 12:43:10 -08:00
zeekay
dac3d6e1c6
chore: bump versions for consolidated computer/screen tools
...
- hanzo-tools-computer: 0.5.2
- hanzo-mcp: 0.10.39
2026-01-11 22:06:11 -08:00
zeekay
55703b869c
fix(computer): use Claude's actual 2000px limit for multi-image
2026-01-11 20:13:05 -08:00
zeekay
9144211873
feat(computer): add ScreenTool for unified screen recording and Claude interpretation
...
New 'screen' tool provides one-shot recording → analysis → compression:
screen(action="session", duration=30) # Record 30s, return compressed frames
ACTIONS:
- session: ONE-SHOT record → analyze → compress → return for Claude
- capture: Single screenshot (optimized)
- record: Start background recording
- stop: Stop and process recording
- analyze: Process existing video file
HARD LIMITS (Claude API constraints):
- Max 1568px per dimension (Claude 2000px limit for multi-image)
- Max 100 images per request
- Max 32MB payload
DEFAULT SETTINGS:
- 768px max dimension (good quality, safe margin)
- 60% JPEG quality (aggressive compression)
- 30 target frames per session
- Activity detection @ 0.02 threshold
USAGE:
screen(action="session") # 30s → ~30 frames → ~500KB
screen(action="capture") # Single screenshot
screen(action="analyze", path="recording.mp4") # Process existing
ENV VARS:
HANZO_SCREEN_DURATION=30
HANZO_SCREEN_TARGET_FRAMES=30
HANZO_SCREEN_MAX_SIZE=768
HANZO_SCREEN_QUALITY=60
Bump hanzo-tools-computer to v0.5.0
2026-01-11 20:07:08 -08:00
zeekay
dbd18eca93
feat(computer): add intelligent video slicing with activity detection
...
MediaTool v0.4.0 - Smart video compression for Claude interpretation:
NEW ACTIONS:
- analyze: Detect activity segments (movement, scene changes)
- slice: Extract frames ONLY at activity points
- compress_session: Full pipeline for computer use sessions
ACTIVITY DETECTION:
- Frame differencing (PIL + numpy) for movement detection
- FFmpeg scene change detection for major transitions
- Activity clustering into segments with scores
- Configurable sensitivity thresholds
COMPRESSION:
- 512px max dimension for session frames (vs 768px default)
- 60% JPEG quality for aggressive compression
- Target 30 frames per 60-second session
- ~15KB per frame, ~450KB total for typical session
NEW ENV VARS:
HANZO_MEDIA_ACTIVITY_THRESHOLD=0.02
HANZO_MEDIA_SCENE_THRESHOLD=0.3
HANZO_MEDIA_SESSION_MAX_DURATION=60
HANZO_MEDIA_SESSION_TARGET_FRAMES=30
HANZO_MEDIA_SESSION_QUALITY=60
Usage:
media(action="compress_session", path="recording.mp4")
# Returns compressed keyframes + activity analysis
# Perfect for Claude to interpret computer use sessions
Added numpy>=1.26.0 dependency for frame differencing.
2026-01-11 19:52:05 -08:00
zeekay
e940ca5f1a
feat(computer): add MediaTool with configurable limits (100 images, 32MB)
...
- Add MediaTool for native image/video support with configurable limits
- MediaLimits dataclass configurable via HANZO_MEDIA_* env vars
- Actions: load, load_batch, optimize, resize, extract_frames, info, limits, status
- Hard caps enforced: 100 images, 32MB payload, 4096px max resolution
- Default optimal targets: 768px, 85% JPEG quality
- Fixed requires-python to >=3.12 (was >=3.11)
- Bump hanzo-tools-computer to v0.3.0
Environment variables:
HANZO_MEDIA_MAX_IMAGES=100 # Max images per batch
HANZO_MEDIA_MAX_PAYLOAD_MB=32 # Max total payload in MB
HANZO_MEDIA_MAX_RESOLUTION=1568 # Max image dimension
HANZO_MEDIA_OPTIMAL_SIZE=768 # Target size for optimization
HANZO_MEDIA_JPEG_QUALITY=85 # JPEG quality (1-100)
2026-01-11 19:30:45 -08:00
zeekay
a9769ebb28
refactor: merge hanzo-tools-core into hanzo-tools
...
- hanzo-tools now contains core infrastructure (BaseTool, ToolRegistry, etc.)
- hanzo-tools-core becomes a thin backwards-compat wrapper
- All tool packages now depend on hanzo-tools>=0.3.0
- Reduces package count and simplifies dependency tree
2025-12-26 16:53:58 -08:00
zeekay
44e505abf2
feat(hanzo-tools-computer): v0.2.0 - comprehensive Mac automation
...
- Add window management: get_active_window, list_windows, focus_window
- Add screen management: get_screens, screen_size, current_screen
- Add region abstractions: define_region, region_screenshot, region_locate
- Add image utilities: locate_all, wait_for_image, wait_while_image
- Add pixel operations: pixel, pixel_matches with tolerance
- Add timing controls: set_pause, set_failsafe, countdown
- Add input helpers: write (with clear), key_down/key_up, move_relative
- Add batch operations: run multiple actions in one call
- Performance: thread pool executor, cached screen info, faster polling
- All operations non-blocking with async-first design
2025-12-26 06:45:07 -08:00
zeekay
7ff34ba5bf
feat(hanzo-tools): v0.10.17 - modular tool packages + computer control
...
- Add hanzo-tools-computer package for pyautogui Mac automation
- Fix hanzo-tools-agent imports to use new package structure
- Add get_read_only_*_tools() helpers to filesystem/jupyter
- Remove BatchTool (replaced by dag - one tool per capability)
- Remove hanzo-persona dependency (not published yet)
- Simplify pyproject.toml for local development
Packages ready for PyPI:
- hanzo-tools-core
- hanzo-tools-filesystem
- hanzo-tools-shell
- hanzo-tools-browser
- hanzo-tools-memory
- hanzo-tools-todo
- hanzo-tools-reasoning
- hanzo-tools-lsp
- hanzo-tools-refactor
- hanzo-tools-database
- hanzo-tools-agent
- hanzo-tools-jupyter
- hanzo-tools-editor
- hanzo-tools-computer (NEW)
2025-12-26 06:37:28 -08:00