Skip to content

Commit 9e0b8fb

Browse files
v0.6.0
# v0.6.0 — Built-in Browser, Document Tools & Multi-Panel --- ## Integrated Browser Craft Agent now has a full built-in browser — no extensions, no external tools. The agent can browse the web, fill forms, extract data, and take screenshots, all from within the app. - **In-app browser panes** — Browser windows open as panels alongside your conversation, so you can watch the agent navigate in real time - **Privileged execution approval** — Sensitive browser actions require explicit approval, keeping you in control - **Smart screenshots** — JPEG by default for faster, smaller captures with proper DPI scaling - **Full CLI command set** — Navigate, click, fill, scroll, screenshot, evaluate JS, manage downloads, and more ### Why it's cool This unlocks true end-to-end automation. Connect any data source and let the agent act on it — fill out forms, submit reports, navigate dashboards, and complete multi-step workflows entirely hands-free. Combine browser actions with your connected sources: "pull this week's metrics from Amplitude, fill out the weekly report form in our internal tool, and post the summary to Slack." The browser closes the gap between data and action. ## Document Tools Built-in tools for working with PDF, Word, Excel, PowerPoint, images, and more — no Python packages or external dependencies needed. - **markitdown** — Universal document-to-markdown converter (docx, xlsx, pptx, pdf, html, ipynb) - **pdf-tool** — Extract text, merge, split, and inspect PDF files - **xlsx-tool** — Read, write, and export Excel spreadsheets - **docx-tool** — Create and edit Word documents - **pptx-tool** — Inspect and work with PowerPoint files - **img-tool** — Resize, convert, and extract metadata from images - **doc-diff** — Compare two documents side by side - **ical-tool** — Read and parse calendar files ### Why it's cool No more "install pandas" or "pip install python-docx" — document manipulation just works. Ask the agent to "merge these 5 PDFs into one", "convert this Word doc to markdown", "resize all images in this folder to 800px wide", or "compare these two contracts and highlight differences." Combine with sources for workflows like "download the latest report from Google Drive, extract the data table, and create a Linear issue for each action item." ## Branching & Multi-Panel Layout The workspace now supports branching conversations and viewing multiple panels simultaneously. - **Session branching** — Fork a conversation at any point to explore different approaches without losing your original thread - **Multi-panel view** — Open browser, documents, and conversations side by side - **New session list design** — Cleaner, more organized session management ### Why it's cool Explore two different implementation strategies in parallel, keep a browser panel open while coding, or compare outputs side by side. Branching means you never have to worry about "going down the wrong path" — just branch and try both. ## Model Updates - **Sonnet 4.6** — Migrated all Sonnet 4.5 connections to Sonnet 4.6 automatically - **Copilot model matching** — Fixed model ID resolution for GitHub Copilot connections - **Connection compatibility** — Fixed `anthropic_compat` connections rejecting bare model names ## Improvements - **Explore mode safety baseline** — Default allowlist now includes common typecheck commands (`bun run typecheck`, `tsc --noEmit`, etc.) alongside existing read-only search commands - **Session tool reliability** — Aligned tool listing and execution across all backends (Claude, Pi, session-mcp-server) to prevent drift - **Permission mode handling** — Improved session-state tracking for permission mode transitions - **Workspace scoping** — Source and skill broadcasts are now scoped to the active workspace - **Automations discoverability** — Added "Learn More" and "Add Automation" to empty automations state, plus Help menu link - **Feature flag robustness** — Runtime-safe evaluation prevents import-order issues in debug sessions - **Typecheck coverage** — `typecheck:all` now includes `session-tools-core` ## Bug Fixes - **Oversized images** — Prevented oversized images from permanently breaking sessions - **Image resize** — Hardened image resize with better error scoping and metadata stripping - **Tool input history** — Stripped `_displayName`/`_intent` metadata from session history display - **Window drag region** — Fixed TopBar drag area - **Noisy logging** — Cleaned up debug logging; downgraded `readFile` ENOENT to debug level - **Duplicate models** — Fixed duplicate model entries during connection migration - **Git Bash (Windows)** — Fixed onboarding check that was skipped since v0.5.0
1 parent 7c5d9d4 commit 9e0b8fb

File tree

502 files changed

+33965
-35159
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

502 files changed

+33965
-35159
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ bun run electron:start
182182
# Type checking
183183
bun run typecheck:all
184184

185-
# Debug logging (writes to ~/Library/Logs/Craft Agents/)
185+
# Debug logging (writes to ~/Library/Logs/@craft-agent/electron/)
186186
# Logs are automatically enabled in development
187187
```
188188

apps/electron/.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,9 @@ vendor/
33
packages/
44
release/
55
node_modules/@anthropic-ai/
6+
7+
# Platform-specific uv binaries (downloaded during build)
8+
resources/bin/darwin-arm64/
9+
resources/bin/darwin-x64/
10+
resources/bin/win32-x64/
11+
resources/bin/linux-x64/

apps/electron/electron-builder.yml

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,31 @@ files:
2727
- packages/shared/src/unified-network-interceptor.ts
2828
- packages/shared/src/interceptor-common.ts
2929
- packages/shared/src/feature-flags.ts
30+
- packages/shared/src/interceptor-request-utils.ts
31+
# Include CLI tool Python scripts (platform-independent)
32+
- resources/scripts/**/*
33+
# Include CLI tool shell wrappers (platform-independent, both Unix and Windows)
34+
- resources/bin/markitdown
35+
- resources/bin/markitdown.cmd
36+
- resources/bin/pdf-tool
37+
- resources/bin/pdf-tool.cmd
38+
- resources/bin/xlsx-tool
39+
- resources/bin/xlsx-tool.cmd
40+
- resources/bin/doc-diff
41+
- resources/bin/doc-diff.cmd
42+
- resources/bin/img-tool
43+
- resources/bin/img-tool.cmd
44+
- resources/bin/docx-tool
45+
- resources/bin/docx-tool.cmd
46+
- resources/bin/pptx-tool
47+
- resources/bin/pptx-tool.cmd
48+
- resources/bin/ical-tool
49+
- resources/bin/ical-tool.cmd
50+
# Include bundled uv binary (platform-specific, only the relevant one ships per build)
51+
- resources/bin/darwin-arm64/**/*
52+
- resources/bin/darwin-x64/**/*
53+
- resources/bin/win32-x64/**/*
54+
- resources/bin/linux-x64/**/*
3055
# Include bundled Bun runtime (platform-specific, set by build script)
3156
- vendor/bun/**/*
3257
# Include bundled Codex binary (platform-specific, downloaded by build script)
@@ -87,6 +112,8 @@ mac:
87112
- "!**/vendor/codex/win32-*/**"
88113
- "!**/vendor/copilot/linux-*/**"
89114
- "!**/vendor/copilot/win32-*/**"
115+
- "!**/resources/bin/win32-*/**"
116+
- "!**/resources/bin/linux-*/**"
90117
# Use predictable naming for macOS packages (applies to zip; dmg uses its own config below)
91118
artifactName: "Craft-Agent-${arch}.${ext}"
92119
# Code signing & notarization (disabled by default for local builds)
@@ -128,14 +155,17 @@ win:
128155
- "!**/vendor/codex/linux-*/**"
129156
- "!**/vendor/copilot/darwin-*/**"
130157
- "!**/vendor/copilot/linux-*/**"
131-
# WORKAROUND: Exclude bun, codex, and copilot from regular files on Windows.
158+
- "!**/resources/bin/darwin-*/**"
159+
- "!**/resources/bin/linux-*/**"
160+
# WORKAROUND: Exclude bun, codex, copilot, and uv from regular files on Windows.
132161
# electron-builder's npm node module collector causes EBUSY errors when copying
133162
# .exe files because it scans/locks files while simultaneously trying to copy them.
134163
# Moving them to extraResources avoids this by copying before the collector runs.
135164
# See: https://github.com/electron-userland/electron-builder/issues/8250
136165
- "!vendor/bun/**/*"
137166
- "!vendor/codex/**/*"
138167
- "!vendor/copilot/**/*"
168+
- "!**/resources/bin/win32-x64/**"
139169
# Copy executables as extraResources to avoid EBUSY file locking (see comment above)
140170
extraResources:
141171
- from: node_modules/@anthropic-ai/claude-agent-sdk
@@ -152,6 +182,8 @@ win:
152182
to: app/vendor/codex/win32-x64
153183
- from: vendor/copilot/win32-x64
154184
to: app/vendor/copilot/win32-x64
185+
- from: resources/bin/win32-x64
186+
to: app/resources/bin/win32-x64
155187

156188
nsis:
157189
oneClick: true
@@ -183,3 +215,5 @@ linux:
183215
- "!**/vendor/codex/win32-*/**"
184216
- "!**/vendor/copilot/darwin-*/**"
185217
- "!**/vendor/copilot/win32-*/**"
218+
- "!**/resources/bin/darwin-*/**"
219+
- "!**/resources/bin/win32-*/**"

apps/electron/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@craft-agent/electron",
3-
"version": "0.5.1",
3+
"version": "0.6.0",
44
"description": "Electron desktop app for Craft Agents",
55
"main": "dist/main.cjs",
66
"private": true,
@@ -18,12 +18,13 @@
1818
"build:main": "source ../../.env 2>/dev/null || true; esbuild src/main/index.ts --bundle --platform=node --format=cjs --outfile=dist/main.cjs --external:electron --define:process.env.GOOGLE_OAUTH_CLIENT_ID=\\\"${GOOGLE_OAUTH_CLIENT_ID:-}\\\" --define:process.env.GOOGLE_OAUTH_CLIENT_SECRET=\\\"${GOOGLE_OAUTH_CLIENT_SECRET:-}\\\" --define:process.env.SLACK_OAUTH_CLIENT_ID=\\\"${SLACK_OAUTH_CLIENT_ID:-}\\\" --define:process.env.SLACK_OAUTH_CLIENT_SECRET=\\\"${SLACK_OAUTH_CLIENT_SECRET:-}\\\" --define:process.env.MICROSOFT_OAUTH_CLIENT_ID=\\\"${MICROSOFT_OAUTH_CLIENT_ID:-}\\\"",
1919
"build:main:win": "esbuild src/main/index.ts --bundle --platform=node --format=cjs --outfile=dist/main.cjs --external:electron",
2020
"build:preload": "esbuild src/preload/index.ts --bundle --platform=node --format=cjs --outfile=dist/preload.cjs --external:electron",
21+
"build:preload-toolbar": "esbuild src/preload/browser-toolbar.ts --bundle --platform=node --format=cjs --outfile=dist/browser-toolbar-preload.cjs --external:electron",
2122
"build:interceptor": "esbuild ../../packages/shared/src/unified-network-interceptor.ts --bundle --platform=node --format=cjs --outfile=dist/interceptor.cjs",
2223
"build:renderer": "vite build",
2324
"build:copy": "bun scripts/copy-assets.ts",
2425
"build:validate": "bun scripts/validate-assets.ts",
25-
"build": "bun run lint && bun run build:main && bun run build:preload && bun run build:interceptor && bun run build:renderer && bun run build:copy && bun run build:validate",
26-
"build:win": "bun run build:main:win && bun run build:preload && bun run build:interceptor && bun run build:renderer && bun run build:copy && bun run build:validate",
26+
"build": "bun run lint && bun run build:main && bun run build:preload && bun run build:preload-toolbar && bun run build:interceptor && bun run build:renderer && bun run build:copy && bun run build:validate",
27+
"build:win": "bun run build:main:win && bun run build:preload && bun run build:preload-toolbar && bun run build:interceptor && bun run build:renderer && bun run build:copy && bun run build:validate",
2728
"start": "bun run build && electron .",
2829
"start:win": "bun run build:win && electron .",
2930
"dev": "vite dev",
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/sh
2+
exec "$CRAFT_UV" run --python 3.12 "$CRAFT_SCRIPTS/doc_diff.py" "$@"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@echo off
2+
"%CRAFT_UV%" run --python 3.12 "%CRAFT_SCRIPTS%\doc_diff.py" %*
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/sh
2+
exec "$CRAFT_UV" run --python 3.12 "$CRAFT_SCRIPTS/docx_tool.py" "$@"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@echo off
2+
"%CRAFT_UV%" run --python 3.12 "%CRAFT_SCRIPTS%\docx_tool.py" %*
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/sh
2+
exec "$CRAFT_UV" run --python 3.12 "$CRAFT_SCRIPTS/ical_tool.py" "$@"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@echo off
2+
"%CRAFT_UV%" run --python 3.12 "%CRAFT_SCRIPTS%\ical_tool.py" %*

0 commit comments

Comments
 (0)