v1.2.9
What's in this release
Feature/patch release — Coding image paste & click-to-preview, Design handoff/Spec flow polish, workspace history stability.
Added
- Coding image paste (Chat + Terminal OrchestratorBar): Clipboard/attach images from Clutch composers (not xterm). Chat always sends multimodal first; on vision soft-refuse / API reject, retries with local OCR/palette analysis. Local CLI agents (Mimo / Claude Code, …) get workspace file refs (
@path/[file:]) instead of base64 on argv. Terminal uploads to.clutch/attachments/with*gitignore + size-triggered GC; send button Loading during upload. - Click-to-preview artifacts: Chat paths /
[file:]/@path/ fenced code blocks open the App preview overlay (large content uses plain<pre>; images open as media). Terminal xterm + dispatch history linkify paths/filenames with workspace resolve (exact → unique basename fuzzy); missing/ambiguous shows toast. Terminal Overview shows attachment image thumbnails on dispatch records (click to enlarge). - Pillow + pytesseract: Declared orchestrator dependencies for local image analysis / OCR fallback (system
tesseractbinary still required for OCR text).
Changed
- Design Spec→UI continuous by default (D40): Prompt generates Spec then screens in one run — no confirm CTA. Opt-in pause with
CLUTCH_DESIGN_SPEC_CONFIRM=1(awaiting_spec_confirm+ Confirm Spec & Generate UI). - Design handoff SSOT (D39/D41): Preview Demo → Coding stepped flow. Generate is a deterministic HTML→React export (no LLM redraw): real per-screen
.tsx, prototype Tailwind CDN theme, contract Links in source. Preview scaled-to-fit + open full size → Approve → Send to Coding (wire APIs next). - Design Spec soft-confirm + flow discipline (D40): Soft-confirm is opt-in (
CLUTCH_DESIGN_SPEC_CONFIRM=1); brief enhance before Spec; declared iterate modes (Edit / Add / Variant / Revise Spec); async iterate + confirm-spec; HTML prompts allow semantic buttons/data-clutch-idfor IUE.
Fixed
- Chat Thinking bubble height: Typing indicator no longer mirrors the last user bubble (image messages made a huge empty box). Uses normal agent-bubble width +
min-h-9(single-line reply height), not aw-fitpill. - Design “New Design” not at top of sidebar: Clicking New Design reused an old empty draft (kept its
started_at/ history position). Always create a fresh session at the top and delete prior empty New Design drafts. - Design iterate stuck “Generating…” overlay: Async Edit/Pick iterate left
drawingtrue and round pin on after poll reachedready, so the artboard kept the spinner and could show stale HTML. Clear overlay + unpin to latest round when the session finishes. - Workspace list / session history desync (D43): Project ids are now path-stable (
sha256of resolved path); legacy random ids migrate on load and remaphistory.json.workspaces.jsonuses atomic replace. Default store refuses ephemeral/tmp-style authorize (tests must setCLUTCH_STORAGE_DIR/CLUTCH_E2E_SANDBOX). Desktop E2E passesCLUTCH_STORAGE_DIRintotauri:e2eso sandboxes cannot wipeclutch_dev. - Coding/Design image try-first: Attached images are always sent to the LLM as multimodal first. Only when the model soft-refuses vision or the API rejects image input do we retry with local OCR/palette analysis (Coding uses a chat-specific fragment without Design hex mandates).
- Agnes 2.0 Flash chat vision: Agnes chat models are treated as vision-capable; clipboard pastes are attempted multimodally (no preemptive
data:downgrade). - Chat vision history:
_history_for_llmno longer flattens multimodal user turns to[image omitted]when vision is enabled for the turn. - Sidebar session history for all workspaces: Hydrate/load history for every project in the sidebar, not only the active one.
Install
macOS (Apple Silicon only):
curl -fsSL https://raw.githubusercontent.com/fancy1108/Clutch/main/scripts/install.sh | bashOr Homebrew:
brew tap fancy1108/clutch
brew install --cask clutchWindows:
irm https://raw.githubusercontent.com/fancy1108/Clutch/main/scripts/install.ps1 | iexOr download *-setup.exe / *.msi from Assets on this page.
Full guide: docs/INSTALL.md · docs/PACKAGE_MANAGERS.md
Upgrade
| Situation | Action |
|---|---|
| macOS v1.0.0 / v1.0.1 | Install v1.0.2+ DMG manually once — older builds lack the in-app updater |
| macOS v1.0.2+ | Follow the in-app update banner, or reinstall from Assets |
| Homebrew | brew upgrade --cask clutch |
| Windows | Download and run the new installer (no in-app updater yet) |
Details: docs/UPDATES.md · docs/INSTALL.md §3
macOS: first launch (unsigned app)
Clutch is unsigned (no Apple notarization yet — see D31). Gatekeeper warnings are expected, not malware or a corrupt download.
You may see: “cannot verify developer”, “Clutch is damaged”, or double-click does nothing.
Fix (pick one):
- Finder: Applications → right-click
Clutch.app→ Open → Open again. - Terminal (one-time):
xattr -cr /Applications/Clutch.app && open -a Clutch
More: docs/INSTALL.md §2–§4 · docs/DATA_AND_PRIVACY.md
Windows
Windows 10/11 x64 MSI and NSIS (.exe) may appear under Assets (since v1.0.2).
| Item | Note |
|---|---|
| CI | Built by GitHub Actions; pytest and packaging checks pass |
| Smoke test | Maintainers have not completed full manual smoke on physical Win10/11 (#23) |
| Code signing | None — SmartScreen may warn; verify SHA-256 and Release source first |
Report issues: GitHub Issues (include installer filename and Windows version).
Verify download
Checksum (recommended):
shasum -a 256 -c SHA256SUMS.txt(Run in the folder where you downloaded the DMG and SHA256SUMS.txt.)
After launch (~5 s):
curl -s http://127.0.0.1:8123/healthExpected: {"status":"ok"}