You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,6 +58,8 @@
58
58
59
59
- Large **refactor and dead-code sweep**: unified tool-call ID generation, extracted a shared `useWizardForm` hook, consolidated session-override managers, added message-factory helpers, deduped config loaders / git exec / command dispatch / conversation-loop flush, extracted `StyledSelectInput` and `makeSimpleToolFormatter`, and deleted several dead modules and orphaned exports (including `fetch-local-models` orphaned by an earlier removal).
60
60
61
+
- Added **image attachments on user messages**. Paste an image from the clipboard with **Ctrl+V** (via `osascript` on macOS, `wl-paste`/`xclip` on Linux, PowerShell on Windows), drag an image file into the terminal, or type a path — quoted, unquoted, and macOS backslash-escaped paths are all recognised, and `http(s)` URLs are left untouched. Attachments (PNG/JPEG/GIF/WebP, ≤10 MB) show above the input box and **Ctrl+X** removes the last one; references are stripped from the text and sent as image parts to vision-capable models. A missing clipboard tool now logs a debug breadcrumb instead of silently no-op'ing. Thanks to @ragini-pandey. Closes #572.
62
+
61
63
- Updated the **Nanocoder Battlemap** competitive comparison and refreshed the README and docs.
62
64
63
65
- Dependency updates: `ai` 6.0.174 -> 6.0.193, `@ai-sdk/openai`, `@ai-sdk/openai-compatible`, `@ai-sdk/anthropic`, `@agentclientprotocol/sdk` 0.22.1 -> 0.25.0, `undici`, `esbuild`, `@biomejs/biome` 2.5.0, `lint-staged` 17, `@types/node`, `@types/vscode`, and other transitive bumps tracked through the lockfile. Added `clipboardy ^5.3.1` for `/copy`.
description: "Attach screenshots and images to your messages so vision-capable models can see them"
4
+
sidebar_order: 12
5
+
---
6
+
7
+
# Image Attachments
8
+
9
+
Nanocoder can send images alongside your text so a vision-capable model can look at a screenshot, a diagram, or a design mockup. Attachments are gathered as you compose a message and sent with the next prompt you submit.
10
+
11
+
## Attaching an Image
12
+
13
+
There are three ways to attach an image:
14
+
15
+
| Method | How |
16
+
|--------|-----|
17
+
| Clipboard paste | Copy an image, then press **Ctrl+V** in the input |
18
+
| Drag and drop | Drag an image file into the terminal |
19
+
| File path | Type or paste a path to an image file |
20
+
21
+
For drag-and-drop and typed paths, the path can be **quoted, unquoted, or backslash-escaped**. macOS terminals drop a dragged screenshot in as an unquoted path with escaped spaces (e.g. `Screenshot\ 2026-06-21\ at\ 10.04.32.png`) — that form is recognised without you needing to add quotes. The image reference is stripped from your message text before it's sent, so the model receives the picture rather than a file path.
22
+
23
+
Remote `http(s)://` URLs that end in an image extension are left as plain text — they are not fetched or treated as local files.
24
+
25
+
## Managing Attachments
26
+
27
+
Pending attachments are listed just above the input box:
-**Ctrl+X** removes the most recently added attachment.
34
+
- Attachments are cleared once the message is submitted.
35
+
36
+
## Supported Formats
37
+
38
+
PNG, JPEG, GIF, and WebP are accepted (`.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`). Each image must be **10 MB or smaller**; larger files are skipped.
39
+
40
+
Whether the image is actually understood depends on the model — attach images only when your provider/model supports vision. If a model can't accept images, it will report or error on its own.
41
+
42
+
## Clipboard Requirements by Platform
43
+
44
+
Clipboard paste (**Ctrl+V**) shells out to a platform tool to read the image. If the tool isn't installed, the paste is a no-op and a one-line note is written to the debug log naming the missing command.
45
+
46
+
| Platform | Required tool |
47
+
|----------|---------------|
48
+
| macOS |`osascript` (built in) |
49
+
| Linux (Wayland) |`wl-paste`|
50
+
| Linux (X11) |`xclip`|
51
+
| Windows | PowerShell |
52
+
53
+
On a minimal Linux container without `wl-paste` or `xclip` — common in dev containers and CI — clipboard paste won't work; attach by drag-and-drop or file path instead, or install one of the tools.
54
+
55
+
## See Also
56
+
57
+
-[Keyboard Shortcuts](keyboard-shortcuts.md) — full shortcut reference, including the image bindings.
Copy file name to clipboardExpand all lines: docs/features/index.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,6 +41,10 @@ Prefix any command with **`!`** to run it directly in your shell without leaving
41
41
!npm test
42
42
```
43
43
44
+
### Attaching Images
45
+
46
+
Press **Ctrl+V** to paste an image from your clipboard, or drag an image file into the terminal, to send it to a vision-capable model. Pending attachments show above the input box; **Ctrl+X** removes the last one. See [Image Attachments](image-attachments.md) for supported formats and platform requirements.
Copy file name to clipboardExpand all lines: docs/features/keyboard-shortcuts.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,6 +50,15 @@ This page covers the main chat input and common interactive views. Some speciali
50
50
51
51
When typing `@` for file mentions or `/` for commands, Tab accepts the current suggestion. If there are multiple command matches, the first Tab shows the completion list and pressing Tab again accepts the first result.
52
52
53
+
## Image Attachments
54
+
55
+
| Action | Shortcut |
56
+
|--------|----------|
57
+
| Paste image from clipboard | Ctrl+V |
58
+
| Remove last attached image | Ctrl+X |
59
+
60
+
Ctrl+V pulls an image off the system clipboard and adds it as an attachment. You can also attach an image by typing, pasting, or dragging an image file path into the input — quoted, unquoted, and macOS backslash-escaped paths (e.g. `Screenshot\ 2026.png`) are all recognised. Attachments appear above the input box as `[image #1: …]`; Ctrl+X drops the most recently added one. See [Image Attachments](image-attachments.md) for the full feature, including supported formats and platform requirements.
0 commit comments